diff --git a/database.sql b/database.sql index afd5ad4d1a..b55353994a 100644 --- a/database.sql +++ b/database.sql @@ -499,7 +499,6 @@ CREATE TABLE IF NOT EXISTS `item` ( `deleted` boolean NOT NULL DEFAULT '0' COMMENT '', `origin` boolean NOT NULL DEFAULT '0' COMMENT '', `forum_mode` tinyint NOT NULL DEFAULT 0 COMMENT '', - `last-child` boolean NOT NULL DEFAULT '1' COMMENT '', `mention` boolean NOT NULL DEFAULT '0' COMMENT '', `network` varchar(32) NOT NULL DEFAULT '' COMMENT '', `rendered-hash` varchar(32) NOT NULL DEFAULT '' COMMENT '', diff --git a/include/api.php b/include/api.php index d4007564f3..b4fdb646f9 100644 --- a/include/api.php +++ b/include/api.php @@ -4713,7 +4713,6 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f $arr['allow_gid'] = $allow_gid; $arr['deny_cid'] = $deny_cid; $arr['deny_gid'] = $deny_gid; - $arr['last-child'] = 1; $arr['visible'] = $visibility; $arr['origin'] = 1; diff --git a/include/conversation.php b/include/conversation.php index d93b744d91..a6edf0d577 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -430,7 +430,6 @@ These Fields are not added below (yet). They are here to for bug search. `item`.`deleted`, `item`.`origin`, `item`.`forum_mode`, -`item`.`last-child`, `item`.`mention`, `item`.`global`, `item`.`gcontact-id`, diff --git a/include/event.php b/include/event.php index 76044cf981..d4c97c750c 100644 --- a/include/event.php +++ b/include/event.php @@ -386,7 +386,6 @@ function event_store($arr) { $item_arr['deny_cid'] = $arr['deny_cid']; $item_arr['deny_gid'] = $arr['deny_gid']; $item_arr['private'] = $arr['private']; - $item_arr['last-child'] = 1; $item_arr['visible'] = 1; $item_arr['verb'] = ACTIVITY_POST; $item_arr['object-type'] = ACTIVITY_OBJ_EVENT; diff --git a/include/items.php b/include/items.php index 6f93f78b31..e99799ad66 100644 --- a/include/items.php +++ b/include/items.php @@ -487,7 +487,6 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f $arr['wall'] = 1; $arr['type'] = 'wall'; $arr['origin'] = 1; - $arr['last-child'] = 1; $arr['network'] = NETWORK_DFRN; $arr['protocol'] = PROTOCOL_DFRN; @@ -624,7 +623,6 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f $arr['title'] = ((x($arr, 'title')) ? trim($arr['title']) : ''); $arr['location'] = ((x($arr, 'location')) ? trim($arr['location']) : ''); $arr['coord'] = ((x($arr, 'coord')) ? notags(trim($arr['coord'])) : ''); - $arr['last-child'] = ((x($arr, 'last-child')) ? intval($arr['last-child']) : 0 ); $arr['visible'] = ((x($arr, 'visible') !== false) ? intval($arr['visible']) : 1 ); $arr['deleted'] = 0; $arr['parent-uri'] = ((x($arr, 'parent-uri')) ? notags(trim($arr['parent-uri'])) : $arr['uri']); @@ -1112,18 +1110,6 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f create_tags_from_item($current_post); Term::createFromItem($current_post); - /* - * If this is now the last-child, force all _other_ children of this parent to *not* be last-child - * It is done after the transaction to avoid dead locks. - */ - if ($arr['last-child']) { - q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d AND `id` != %d", - dbesc($arr['uri']), - intval($arr['uid']), - intval($current_post) - ); - } - if ($arr['parent-uri'] === $arr['uri']) { Item::addShadow($current_post); } else { diff --git a/include/like.php b/include/like.php index 27832896a5..f89b7a82e6 100644 --- a/include/like.php +++ b/include/like.php @@ -238,7 +238,6 @@ EOT; 'deny_gid' => $item['deny_gid'], 'visible' => 1, 'unseen' => 1, - 'last-child' => 0 ]; $new_item_id = item_store($new_item); diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 8baacf0931..eca16a9e6c 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -432,8 +432,6 @@ function dfrn_confirm_post(App $a, $handsfree = null) $arr['object'] .= xmlify('' . "\n"); $arr['object'] .= '' . "\n"; - $arr['last-child'] = 1; - $arr['allow_cid'] = $user['allow_cid']; $arr['allow_gid'] = $user['allow_gid']; $arr['deny_cid'] = $user['deny_cid']; @@ -696,8 +694,6 @@ function dfrn_confirm_post(App $a, $handsfree = null) $arr['object'] .= xmlify('' . "\n"); $arr['object'] .= '' . "\n"; - $arr['last-child'] = 1; - $arr['allow_cid'] = $user['allow_cid']; $arr['allow_gid'] = $user['allow_gid']; $arr['deny_cid'] = $user['deny_cid']; diff --git a/mod/item.php b/mod/item.php index 19d56638ce..96e289a844 100644 --- a/mod/item.php +++ b/mod/item.php @@ -738,7 +738,6 @@ function item_post(App $a) { $datarray['gcontact-id'] = GContact::getId(["url" => $datarray['author-link'], "network" => $datarray['network'], "photo" => $datarray['author-avatar'], "name" => $datarray['author-name']]); $datarray['object'] = $object; - $datarray['last-child'] = 1; /* * These fields are for the convenience of plugins... diff --git a/mod/photos.php b/mod/photos.php index f399c3ae80..6183ed60b6 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -510,7 +510,6 @@ function photos_post(App $a) $arr['allow_gid'] = $p[0]['allow_gid']; $arr['deny_cid'] = $p[0]['deny_cid']; $arr['deny_gid'] = $p[0]['deny_gid']; - $arr['last-child'] = 1; $arr['visible'] = $visibility; $arr['origin'] = 1; @@ -687,7 +686,6 @@ function photos_post(App $a) $arr['allow_gid'] = $p[0]['allow_gid']; $arr['deny_cid'] = $p[0]['deny_cid']; $arr['deny_gid'] = $p[0]['deny_gid']; - $arr['last-child'] = 1; $arr['visible'] = 1; $arr['verb'] = ACTIVITY_TAG; $arr['object-type'] = ACTIVITY_OBJ_PERSON; @@ -924,7 +922,6 @@ function photos_post(App $a) $arr['allow_gid'] = $str_group_allow; $arr['deny_cid'] = $str_contact_deny; $arr['deny_gid'] = $str_group_deny; - $arr['last-child'] = 1; $arr['visible'] = $visible; $arr['origin'] = 1; @@ -1513,7 +1510,7 @@ function photos_content(App $a) } if (!DBM::is_result($r)) { - if (($can_post || can_write_wall($owner_uid)) && $link_item['last-child']) { + if (($can_post || can_write_wall($owner_uid))) { $comments .= replace_macros($cmnt_tpl, [ '$return_path' => '', '$jsreload' => $return_url, @@ -1552,7 +1549,7 @@ function photos_content(App $a) $dislike = format_like($conv_responses['dislike'][$link_item['uri']], $conv_responses['dislike'][$link_item['uri'] . '-l'], 'dislike', $link_item['id']); } - if (($can_post || can_write_wall($owner_uid)) && $link_item['last-child']) { + if (($can_post || can_write_wall($owner_uid))) { $comments .= replace_macros($cmnt_tpl,[ '$return_path' => '', '$jsreload' => $return_url, @@ -1625,7 +1622,7 @@ function photos_content(App $a) '$comment' => $comment ]); - if (($can_post || can_write_wall($owner_uid)) && $item['last-child']) { + if (($can_post || can_write_wall($owner_uid))) { $comments .= replace_macros($cmnt_tpl, [ '$return_path' => '', '$jsreload' => $return_url, diff --git a/mod/poke.php b/mod/poke.php index 8b36b17dce..a8410b17d2 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -117,7 +117,6 @@ function poke_init(App $a) { $arr['allow_gid'] = $allow_gid; $arr['deny_cid'] = $deny_cid; $arr['deny_gid'] = $deny_gid; - $arr['last-child'] = 1; $arr['visible'] = 1; $arr['verb'] = $activity; $arr['private'] = $private; diff --git a/mod/profiles.php b/mod/profiles.php index f8d77e27d8..32ed24346f 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -593,7 +593,6 @@ function profile_activity($changed, $value) { $arr['object'] .= '' . xmlify('' . "\n"); $arr['object'] .= xmlify('' . "\n"); $arr['object'] .= '' . "\n"; - $arr['last-child'] = 1; $arr['allow_cid'] = $a->user['allow_cid']; $arr['allow_gid'] = $a->user['allow_gid']; diff --git a/mod/subthread.php b/mod/subthread.php index 20405ba2d4..037e2982e7 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -144,7 +144,6 @@ EOT; $arr['deny_gid'] = $item['deny_gid']; $arr['visible'] = 1; $arr['unseen'] = 1; - $arr['last-child'] = 0; $post_id = item_store($arr); diff --git a/mod/tagger.php b/mod/tagger.php index 90fd2414b8..60eafa865f 100644 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -139,7 +139,6 @@ EOT; $arr['deny_gid'] = $item['deny_gid']; $arr['visible'] = 1; $arr['unseen'] = 1; - $arr['last-child'] = 1; $arr['origin'] = 1; $post_id = item_store($arr); diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index 91a8ffdaf5..973098d460 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -1175,7 +1175,6 @@ class DBStructure { "deleted" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "origin" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "forum_mode" => ["type" => "tinyint", "not null" => "1", "default" => "0", "comment" => ""], - "last-child" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => ""], "mention" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => ""], "network" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""], "rendered-hash" => ["type" => "varchar(32)", "not null" => "1", "default" => "", "comment" => ""], diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index ab1074ac1d..c05b5b3d63 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -997,7 +997,7 @@ class DFRN // "comment-allow" is some old fashioned stuff for old Friendica versions. // It is included in the rewritten code for completeness if ($comment) { - XML::addElement($doc, $entry, "dfrn:comment-allow", intval($item['last-child'])); + XML::addElement($doc, $entry, "dfrn:comment-allow", 1); } if ($item['location']) { @@ -2117,23 +2117,6 @@ class DFRN Worker::add(PRIORITY_HIGH, "Notifier", "comment-import", $current["id"]); } } - - // update last-child if it changes - if ($item["last-child"] && ($item["last-child"] != $current["last-child"])) { - $r = q( - "UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` IN (0, %d)", - dbesc(datetime_convert()), - dbesc($item["parent-uri"]), - intval($importer["importer_uid"]) - ); - $r = q( - "UPDATE `item` SET `last-child` = %d , `changed` = '%s' WHERE `uri` = '%s' AND `uid` IN (0, %d)", - intval($item["last-child"]), - dbesc(datetime_convert()), - dbesc($item["uri"]), - intval($importer["importer_uid"]) - ); - } return $changed; } @@ -2459,7 +2442,7 @@ class DFRN $item["edited"] = $xpath->query("atom:updated/text()", $entry)->item(0)->nodeValue; $current = q( - "SELECT `id`, `uid`, `last-child`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + "SELECT `id`, `uid`, `edited`, `body` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($item["uri"]), intval($importer["importer_uid"]) ); @@ -2523,7 +2506,6 @@ class DFRN // We don't need the content element since "dfrn:env" is always present //$item["body"] = $xpath->query("atom:content/text()", $entry)->item(0)->nodeValue; - $item["last-child"] = $xpath->query("dfrn:comment-allow/text()", $entry)->item(0)->nodeValue; $item["location"] = $xpath->query("dfrn:location/text()", $entry)->item(0)->nodeValue; $georsspoint = $xpath->query("georss:point", $entry); @@ -2747,22 +2729,6 @@ class DFRN $parent_uri = $r[0]["parent-uri"]; } - if (!$is_like) { - $r1 = q( - "UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d", - dbesc(datetime_convert()), - intval($importer["importer_uid"]), - intval($r[0]["parent"]) - ); - - $r2 = q( - "UPDATE `item` SET `last-child` = 1, `changed` = '%s' WHERE `uid` = %d AND `id` = %d", - dbesc(datetime_convert()), - intval($importer["importer_uid"]), - intval($posted_id) - ); - } - if ($posted_id && $parent && ($entrytype == DFRN_REPLY_RC)) { logger("Notifying followers about comment ".$posted_id, LOGGER_DEBUG); Worker::add(PRIORITY_HIGH, "Notifier", "comment-import", $posted_id); @@ -2928,28 +2894,7 @@ class DFRN create_tags_from_itemuri($uri, $importer["uid"]); Term::createFromItemURI($uri, $importer["uid"]); update_thread_uri($uri, $importer["importer_uid"]); - if ($item["last-child"]) { - // ensure that last-child is set in case the comment that had it just got wiped. - q( - "UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` IN (0, %d)", - dbesc(datetime_convert()), - dbesc($item["parent-uri"]), - intval($item["uid"]) - ); - // who is the last child now? - $r = q( - "SELECT `id` FROM `item` WHERE `parent-uri` = '%s' AND `type` != 'activity' AND `deleted` = 0 AND `moderated` = 0 AND `uid` = %d - ORDER BY `created` DESC LIMIT 1", - dbesc($item["parent-uri"]), - intval($importer["uid"]) - ); - if (DBM::is_result($r)) { - q( - "UPDATE `item` SET `last-child` = 1 WHERE `id` = %d", - intval($r[0]["id"]) - ); - } - } + // if this is a relayed delete, propagate it to other recipients if ($entrytype == DFRN_REPLY_RC) { diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 350fd4eb5b..9d42d32124 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -2409,8 +2409,6 @@ class Diaspora $arr["object"] = self::constructNewFriendObject($contact); - $arr["last-child"] = 1; - $user = dba::selectFirst('user', ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid'], ['uid' => $importer["uid"]]); $arr["allow_cid"] = $user["allow_cid"]; diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php index b629c4ecb9..dc4548b3ea 100644 --- a/src/Protocol/Feed.php +++ b/src/Protocol/Feed.php @@ -198,11 +198,6 @@ class Feed { $header["contact-id"] = $contact["id"]; - if (!strlen($contact["notify"])) { - // one way feed - no remote comment ability - $header["last-child"] = 0; - } - if (!is_object($entries)) { logger("There are no entries in this feed.", LOGGER_DEBUG); return; diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 3c7df172ab..293cd265e2 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -531,11 +531,6 @@ class OnePoll $stored_item = item_store($datarray); - $condition = ['parent-uri' => $datarray['parent-uri'], 'uid' => $importer_uid]; - dba::update('item', ['last-child' => false], $condition); - - dba::update('item', ['last-child' => true], ['id' => $stored_item]); - switch ($mailconf['action']) { case 0: logger("Mail: Seen before ".$msg_uid." for ".$mailconf['user'].". Doing nothing.", LOGGER_DEBUG);