X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fthreads.php;h=61bc5292ff7621fba0c3f96d653d6c4ae8794db8;hb=c69d60644f46246978a7b52da79e7e58c74e31e6;hp=28bf87f4dae97a7a1ee650a7d022145ff235b876;hpb=22ae03c1a3fed1e4793a46124f183c8c62f2b7f3;p=friendica.git diff --git a/include/threads.php b/include/threads.php index 28bf87f4da..61bc5292ff 100644 --- a/include/threads.php +++ b/include/threads.php @@ -1,7 +1,12 @@ $data) - if ($field != "uri") { - if ($sql != "") + if (!in_array($field, ["guid", "title", "body", "rendered-html", "rendered-hash"])) { + if ($sql != "") { $sql .= ", "; + } $sql .= "`".$field."` = '".dbesc($data)."'"; } $result = q("UPDATE `thread` SET ".$sql." WHERE `iid` = %d", intval($itemid)); - logger("update_thread: Update thread for item ".$itemid." - ".print_r($result, true)." ".print_r($item, true), LOGGER_DEBUG); + logger("Update thread for item ".$itemid." - guid ".$item["guid"]." - ".print_r($result, true)." ".print_r($item, true), LOGGER_DEBUG); // Updating a shadow item entry - $items = q("SELECT `id`, `title`, `body`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, - `moderated`, `visible`, `spam`, `starred`, `bookmark`, `deleted`, `origin`, `forum_mode`, `network` - FROM `item` WHERE `uri` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item["uri"])); + $items = q("SELECT `id` FROM `item` WHERE `guid` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item["guid"])); - if (!$items) + if (!DBM::is_result($items)) { return; + } - $item = $items[0]; - - $result = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `network` = '%s' WHERE `id` = %d", + $result = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `rendered-html` = '%s', `rendered-hash` = '%s' WHERE `id` = %d", dbesc($item["title"]), dbesc($item["body"]), - dbesc($item["network"]), - intval($item["id"]) + dbesc($item["rendered-html"]), + dbesc($item["rendered-hash"]), + intval($items[0]["id"]) ); - logger("update_thread: Updating public shadow for post ".$item["id"]." Result: ".print_r($result, true), LOGGER_DEBUG); - - /* - $sql = ""; - - foreach ($item AS $field => $data) - if ($field != "id") { - if ($sql != "") - $sql .= ", "; - - $sql .= "`".$field."` = '".dbesc($data)."'"; - } - //logger("update_thread: Updating public shadow for post ".$item["id"]." SQL: ".$sql, LOGGER_DEBUG); - $result = q("UPDATE `item` SET ".$sql." WHERE `id` = %d", intval($item["id"])); - logger("update_thread: Updating public shadow for post ".$item["id"]." Result: ".print_r($result, true), LOGGER_DEBUG); - */ + logger("Updating public shadow for post ".$items[0]["id"]." - guid ".$item["guid"]." Result: ".print_r($result, true), LOGGER_DEBUG); } function delete_thread_uri($itemuri, $uid) { $messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid)); - if(count($messages)) - foreach ($messages as $message) - delete_thread($message["id"]); + if (DBM::is_result($messages)) { + foreach ($messages as $message) { + delete_thread($message["id"], $itemuri); + } + } } -function delete_thread($itemid) { - $item = q("SELECT `uri`, `uid` FROM `thread` WHERE `iid` = %d", intval($itemid)); +function delete_thread($itemid, $itemuri = "") { + $item = q("SELECT `uid` FROM `thread` WHERE `iid` = %d", intval($itemid)); - $result = q("DELETE FROM `thread` WHERE `iid` = %d", intval($itemid)); + if (!DBM::is_result($item)) { + logger('No thread found for id '.$itemid, LOGGER_DEBUG); + return; + } + + // Using dba::delete at this time could delete the associated item entries + $result = dba::e("DELETE FROM `thread` WHERE `iid` = ?", $itemid); logger("delete_thread: Deleted thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG); - if (count($item)) { - $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND NOT (`uid` IN (%d, 0))", - dbesc($item["uri"]), + if ($itemuri != "") { + $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND NOT `deleted` AND NOT (`uid` IN (%d, 0))", + dbesc($itemuri), intval($item["uid"]) ); - if (!count($r)) { - $r = q("DELETE FROM `item` WHERE `uri` = '%s' AND `uid` = 0)", - dbesc($item["uri"]) - ); - logger("delete_thread: Deleted shadow for item ".$item["uri"]." - ".print_r($result, true), LOGGER_DEBUG); + if (!DBM::is_result($r)) { + dba::delete('item', ['uri' => $itemuri, 'uid' => 0]); + logger("delete_thread: Deleted shadow for item ".$itemuri, LOGGER_DEBUG); } } } - -function update_threads() { - global $db; - - logger("update_threads: start"); - - $messages = $db->q("SELECT `id` FROM `item` WHERE `id` = `parent`", true); - - logger("update_threads: fetched messages: ".count($messages)); - - while ($message = $db->qfetch()) - add_thread($message["id"]); - $db->qclose(); -} - -function update_threads_mention() { - $a = get_app(); - - $users = q("SELECT `uid`, `nickname` FROM `user` ORDER BY `uid`"); - - foreach ($users AS $user) { - $self = normalise_link($a->get_baseurl() . '/profile/' . $user['nickname']); - $selfhttps = str_replace("http://", "https://", $self); - $parents = q("SELECT DISTINCT(`parent`) FROM `item` WHERE `uid` = %d AND - ((`owner-link` IN ('%s', '%s')) OR (`author-link` IN ('%s', '%s')))", - $user["uid"], $self, $selfhttps, $self, $selfhttps); - - foreach ($parents AS $parent) - q("UPDATE `thread` SET `mention` = 1 WHERE `iid` = %d", $parent["parent"]); - } -} - - -function update_shadow_copy() { - global $db; - - logger("start"); - - $messages = $db->q(sprintf("SELECT `iid` FROM `thread` WHERE `uid` != 0 AND `network` IN ('', '%s', '%s', '%s') - AND `visible` AND NOT `deleted` AND NOT `moderated` AND NOT `private` ORDER BY `created`", - NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS), true); - - logger("fetched messages: ".count($messages)); - while ($message = $db->qfetch()) - add_thread($message["iid"], true); - - $db->qclose(); -} -?>