]> git.mxchange.org Git - friendica.git/commitdiff
Unneeded stuff removed, only fetch needed records
authorMichael <heluecht@pirati.ca>
Thu, 26 Apr 2018 06:23:01 +0000 (06:23 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 26 Apr 2018 06:23:01 +0000 (06:23 +0000)
src/Worker/Delivery.php

index b65eff731ec2bee7dd017d1c5bcba2bd0322013a..85de82099c50beaa06b55b7e8306c6c3b74b9cfc 100644 (file)
@@ -61,14 +61,18 @@ class Delivery {
                        $parent_id = intval($target_item['parent']);
                        $uid = $target_item['cuid'];
 
-                       $items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
-                               FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id`
-                               WHERE `parent` = %d AND visible = 1 AND moderated = 0 ORDER BY `id` ASC",
-                               intval($parent_id)
-                       );
-
-                       if (!DBM::is_result($items)) {
-                               return;
+                       if ($parent_id != $item_id) {
+                               $parent = dba::fetch_first("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
+                                                               FROM `item`
+                                                               LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id`
+                                                               WHERE `item`.`id` = ? AND `visible` AND NOT `moderated`", $parent_id);
+                               if (!DBM::is_result($parent)) {
+                                       return;
+                               }
+                               $items = [$parent, $target_item];
+                       } else {
+                               $parent = $target_item;
+                               $items = [$target_item];
                        }
 
                        // avoid race condition with deleting entries
@@ -81,13 +85,11 @@ class Delivery {
                        // When commenting too fast after delivery, a post wasn't recognized as top level post.
                        // The count then showed more than one entry. The additional check should help.
                        // The check for the "count" should be superfluous, but I'm not totally sure by now, so we keep it.
-                       if ((($items[0]['id'] == $item_id) || (count($items) == 1)) && ($items[0]['uri'] === $items[0]['parent-uri'])) {
+                       if ((($parent['id'] == $item_id) || (count($items) == 1)) && ($parent['uri'] === $parent['parent-uri'])) {
                                logger('Top level post');
                                $top_level = true;
                        }
 
-                       $parent = $items[0];
-
                        // This is IMPORTANT!!!!
 
                        // We will only send a "notify owner to relay" or followup message if the referenced post
@@ -193,23 +195,13 @@ class Delivery {
                } elseif ($cmd == DELIVER_RELOCATION) {
                        $atom = DFRN::relocate($owner, $owner['uid']);
                } elseif ($followup) {
-                       $msgitems = [];
-                       $msgitems[] = $target_item;
+                       $msgitems = [$target_item];
                        $atom = DFRN::entries($msgitems, $owner);
                } else {
                        $msgitems = [];
                        foreach ($items as $item) {
-                               if (!$item['parent']) {
-                                       return;
-                               }
-
-                               // private emails may be in included in public conversations. Filter them.
-                               if ($public_message && $item['private']) {
-                                       return;
-                               }
-
                                // Only add the parent when we don't delete other items.
-                               if ($target_item['id'] == $item['id'] || (($item['id'] == $item['parent']) && ($cmd != DELIVER_DELETION))) {
+                               if (($target_item['id'] == $item['id']) || ($cmd != DELIVER_DELETION)) {
                                        $item["entry:comment-allow"] = true;
                                        $item["entry:cid"] = ($top_level ? $contact['id'] : 0);
                                        $msgitems[] = $item;
@@ -266,6 +258,7 @@ class Delivery {
                                self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);
                                return;
                        }
+               } else {
                        $deliver_status = DFRN::deliver($owner, $contact, $atom);
                }