X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fitems.php;h=c36b842b4b149b638a62063ab1287b3d5a496145;hb=cb3077b7a9023a65b6dc13df065bfbbe7f7633fb;hp=5eac12d8914df6300969614a304dda8d214e04e5;hpb=9ff4fed7d2dce7efe8f17f428a83070daca718e8;p=friendica.git diff --git a/include/items.php b/include/items.php index 5eac12d891..c36b842b4b 100644 --- a/include/items.php +++ b/include/items.php @@ -4,7 +4,8 @@ * @file include/items.php */ -use \Friendica\ParseUrl; +use Friendica\App; +use Friendica\ParseUrl; require_once 'include/bbcode.php'; require_once 'include/oembed.php'; @@ -339,7 +340,7 @@ function add_page_info_to_body($body, $texturl = false, $no_photos = false) { * Adds a "lang" specification in a "postopts" element of given $arr, * if possible and not already present. * Expects "body" element to exist in $arr. - * + * * @todo Add a parameter to request forcing override */ function item_add_language_opt(&$arr) { @@ -500,6 +501,20 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f } } + if ($notify) { + $guid_prefix = ""; + } elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) { + $arr['guid'] = uri_to_guid($arr['plink']); + } elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) { + $arr['guid'] = uri_to_guid($arr['uri']); + } else { + $parsed = parse_url($arr["author-link"]); + $guid_prefix = hash("crc32", $parsed["host"]); + } + + $arr['guid'] = ((x($arr, 'guid')) ? notags(trim($arr['guid'])) : get_guid(32, $guid_prefix)); + $arr['uri'] = ((x($arr, 'uri')) ? notags(trim($arr['uri'])) : item_new_uri($a->get_hostname(), $uid, $arr['guid'])); + // Store conversation data $arr = store_conversation($arr); @@ -584,20 +599,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f item_add_language_opt($arr); - if ($notify) { - $guid_prefix = ""; - } elseif ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) { - $arr['guid'] = uri_to_guid($arr['plink']); - } elseif ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) { - $arr['guid'] = uri_to_guid($arr['uri']); - } else { - $parsed = parse_url($arr["author-link"]); - $guid_prefix = hash("crc32", $parsed["host"]); - } - $arr['wall'] = ((x($arr, 'wall')) ? intval($arr['wall']) : 0); - $arr['guid'] = ((x($arr, 'guid')) ? notags(trim($arr['guid'])) : get_guid(32, $guid_prefix)); - $arr['uri'] = ((x($arr, 'uri')) ? notags(trim($arr['uri'])) : item_new_uri($a->get_hostname(), $uid, $arr['guid'])); $arr['extid'] = ((x($arr, 'extid')) ? notags(trim($arr['extid'])) : ''); $arr['author-name'] = ((x($arr, 'author-name')) ? trim($arr['author-name']) : ''); $arr['author-link'] = ((x($arr, 'author-link')) ? notags(trim($arr['author-link'])) : ''); @@ -950,8 +952,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f logger('item_store: ' . print_r($arr,true), LOGGER_DATA); - q("COMMIT"); - q("START TRANSACTION;"); + dba::transaction(); $r = dbq("INSERT INTO `item` (`" . implode("`, `", array_keys($arr)) @@ -973,7 +974,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f } } else { // This can happen - for example - if there are locking timeouts. - q("ROLLBACK"); + dba::rollback(); // Store the data into a spool file so that we can try again later. @@ -998,7 +999,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f if ($current_post == 0) { // This is one of these error messages that never should occur. logger("couldn't find created item - we better quit now."); - q("ROLLBACK"); + dba::rollback(); return 0; } @@ -1013,7 +1014,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f if (!dbm::is_result($r)) { // This shouldn't happen, since COUNT always works when the database connection is there. logger("We couldn't count the stored entries. Very strange ..."); - q("ROLLBACK"); + dba::rollback(); return 0; } @@ -1022,13 +1023,13 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f logger('Duplicated post occurred. uri = ' . $arr['uri'] . ' uid = ' . $arr['uid']); // Yes, we could do a rollback here - but we are having many users with MyISAM. - q("DELETE FROM `item` WHERE `id` = %d", intval($current_post)); - q("COMMIT"); + dba::delete('item', array('id' => $current_post)); + dba::commit(); return 0; } elseif ($r[0]["entries"] == 0) { // This really should never happen since we quit earlier if there were problems. logger("Something is terribly wrong. We haven't found our created entry."); - q("ROLLBACK"); + dba::rollback(); return 0; } @@ -1108,7 +1109,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f update_thread($parent_id); } - q("COMMIT"); + dba::commit(); /* * Due to deadlock issues with the "term" table we are doing these steps after the commit. @@ -1377,10 +1378,7 @@ function tag_deliver($uid, $item_id) { // mmh.. no mention.. community page or private group... no wall.. no origin.. top-post (not a comment) // delete it! logger("tag_deliver: no-mention top-level post to communuty or private group. delete."); - q("DELETE FROM item WHERE id = %d and uid = %d", - intval($item_id), - intval($uid) - ); + dba::delete('item', array('id' => $item_id)); return true; } return; @@ -2236,23 +2234,6 @@ function drop_item($id, $interactive = true) { // ignore the result } - - // clean up item_id and sign meta-data tables - - /* - /// @TODO Old code - caused very long queries and warning entries in the mysql logfiles: - - $r = q("DELETE FROM item_id where iid in (select id from item where parent = %d and uid = %d)", - intval($item['id']), - intval($item['uid']) - ); - - $r = q("DELETE FROM sign where iid in (select id from item where parent = %d and uid = %d)", - intval($item['id']), - intval($item['uid']) - ); - */ - // The new code splits the queries since the mysql optimizer really has bad problems with subqueries // Creating list of parents