]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/Notifier.php
spelling: intended
[friendica.git] / src / Worker / Notifier.php
index 473721fb7b1be29ed8e86b453b891ceffcd6eff4..3f5b0fa82900eaaf5974ff7d856f267633cebd22 100644 (file)
@@ -114,6 +114,7 @@ class Notifier
                        // find ancestors
                        $condition = ['id' => $target_id, 'visible' => true];
                        $target_item = Post::selectFirst(Item::DELIVER_FIELDLIST, $condition);
+                       $target_item = Post\Media::addHTMLAttachmentToItem($target_item);
 
                        if (!DBA::isResult($target_item) || !intval($target_item['parent'])) {
                                Logger::info('No target item', ['cmd' => $cmd, 'target' => $target_id]);
@@ -169,13 +170,15 @@ class Notifier
                // Deliver directly to a forum, don't PuSH
                $direct_forum_delivery = false;
 
+               $only_ap_delivery = false;
+
                $followup = false;
                $recipients_followup = [];
 
                if (!empty($target_item) && !empty($items)) {
                        $parent = $items[0];
 
-                       $fields = ['network', 'author-id', 'author-link', 'author-network', 'owner-id'];
+                       $fields = ['network', 'private', 'author-id', 'author-link', 'author-network', 'owner-id'];
                        $condition = ['uri' => $target_item['thr-parent'], 'uid' => $target_item['uid']];
                        $thr_parent = Post::selectFirst($fields, $condition);
                        if (empty($thr_parent)) {
@@ -188,6 +191,11 @@ class Notifier
                                $apdelivery = self::activityPubDelivery($cmd, $target_item, $parent, $thr_parent, $a->getQueueValue('priority'), $a->getQueueValue('created'), $owner);
                                $ap_contacts = $apdelivery['contacts'];
                                $delivery_queue_count += $apdelivery['count'];
+                               if (($thr_parent['network'] == Protocol::ACTIVITYPUB) && ($thr_parent['private'] == Item::PRIVATE)) {
+                                       $only_ap_delivery   = true;
+                                       $public_message     = false;
+                                       $diaspora_delivery  = false;
+                               }
                        }
 
                        // Only deliver threaded replies (comment to a comment) to Diaspora
@@ -212,7 +220,7 @@ class Notifier
                        // if $parent['wall'] == 1 we will already have the parent message in our array
                        // and we will relay the whole lot.
 
-                       $localhost = str_replace('www.','', DI::baseUrl()->getHostname());
+                       $localhost = str_replace('www.','', DI::baseUrl()->getHost());
                        if (strpos($localhost,':')) {
                                $localhost = substr($localhost,0,strpos($localhost,':'));
                        }
@@ -420,7 +428,9 @@ class Notifier
                }
 
                if (empty($delivery_contacts_stmt)) {
-                       if ($followup) {
+                       if ($only_ap_delivery) {
+                               $recipients = $ap_contacts;
+                       } elseif ($followup) {
                                $recipients = $recipients_followup;
                        }
                        $condition = ['id' => $recipients, 'self' => false, 'uid' => [0, $uid],
@@ -517,7 +527,11 @@ class Notifier
 
                foreach ($contacts as $contact) {
                        // Direct delivery of local contacts
-                       if (!in_array($cmd, [Delivery::RELOCATION, Delivery::SUGGESTION, Delivery::DELETION, Delivery::MAIL]) && $target_uid = User::getIdForURL($contact['url'])) {
+                       if (!in_array($cmd, [Delivery::RELOCATION, Delivery::SUGGESTION, Delivery::MAIL]) && $target_uid = User::getIdForURL($contact['url'])) {
+                               if ($cmd == Delivery::DELETION) {
+                                       Logger::info('No need to deliver deletions internally', ['uid' => $target_uid, 'guid' => $target_item['guid'], 'uri-id' => $target_item['uri-id'], 'uri' => $target_item['uri']]);
+                                       continue;
+                               }
                                if ($target_item['origin'] || ($target_item['network'] != Protocol::ACTIVITYPUB)) {
                                        if ($target_uid != $target_item['uid']) {
                                                $fields = ['protocol' => Conversation::PARCEL_LOCAL_DFRN, 'direction' => Conversation::PUSH, 'post-reason' => Item::PR_DIRECT];
@@ -839,7 +853,11 @@ class Notifier
 
                        if ((count($receivers) == 1) && Network::isLocalLink($inbox)) {
                                $contact = Contact::getById($receivers[0], ['url']);
-                               if (!in_array($cmd, [Delivery::RELOCATION, Delivery::SUGGESTION, Delivery::DELETION, Delivery::MAIL]) && ($target_uid = User::getIdForURL($contact['url']))) {
+                               if (!in_array($cmd, [Delivery::RELOCATION, Delivery::SUGGESTION, Delivery::MAIL]) && ($target_uid = User::getIdForURL($contact['url']))) {
+                                       if ($cmd == Delivery::DELETION) {
+                                               Logger::info('No need to deliver deletions internally', ['uid' => $target_uid, 'guid' => $target_item['guid'], 'uri-id' => $target_item['uri-id'], 'uri' => $target_item['uri']]);
+                                               continue;
+                                       }
                                        if ($target_item['origin'] || ($target_item['network'] != Protocol::ACTIVITYPUB)) {
                                                if ($target_uid != $target_item['uid']) {
                                                        $fields = ['protocol' => Conversation::PARCEL_LOCAL_DFRN, 'direction' => Conversation::PUSH, 'post-reason' => Item::PR_BCC];