]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/Delivery.php
Merge branch 'develop' of https://github.com/friendica/friendica into develop
[friendica.git] / src / Worker / Delivery.php
index 3c6b8775b8cef459d5d4844e83c16b42e144050a..db7b8c26a5352cea62941e6bac699a954dd734fb 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2021, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -35,6 +35,8 @@ use Friendica\Util\Network;
 use Friendica\Core\Worker;
 use Friendica\Model\Conversation;
 use Friendica\Model\FContact;
+use Friendica\Model\Item;
+use Friendica\Model\Post;
 use Friendica\Protocol\Relay;
 
 class Delivery
@@ -49,9 +51,9 @@ class Delivery
        const REMOVAL       = 'removeme';
        const PROFILEUPDATE = 'profileupdate';
 
-       public static function execute($cmd, $target_id, $contact_id)
+       public static function execute(string $cmd, int $post_uriid, int $contact_id, int $sender_uid = 0)
        {
-               Logger::info('Invoked', ['cmd' => $cmd, 'target' => $target_id, 'contact' => $contact_id]);
+               Logger::info('Invoked', ['cmd' => $cmd, 'target' => $post_uriid, 'sender_uid' => $sender_uid, 'contact' => $contact_id]);
 
                $top_level = false;
                $followup = false;
@@ -59,30 +61,32 @@ class Delivery
 
                $items = [];
                if ($cmd == self::MAIL) {
-                       $target_item = DBA::selectFirst('mail', [], ['id' => $target_id]);
+                       $target_item = DBA::selectFirst('mail', [], ['id' => $post_uriid]);
                        if (!DBA::isResult($target_item)) {
                                return;
                        }
                        $uid = $target_item['uid'];
                } elseif ($cmd == self::SUGGESTION) {
-                       $target_item = DBA::selectFirst('fsuggest', [], ['id' => $target_id]);
+                       $target_item = DBA::selectFirst('fsuggest', [], ['id' => $post_uriid]);
                        if (!DBA::isResult($target_item)) {
                                return;
                        }
                        $uid = $target_item['uid'];
                } elseif ($cmd == self::RELOCATION) {
-                       $uid = $target_id;
+                       $uid = $post_uriid;
                        $target_item = [];
                } else {
-                       $item = Model\Post::selectFirst(['parent'], ['id' => $target_id]);
+                       $item = Model\Post::selectFirst(['id', 'parent'], ['uri-id' => $post_uriid, 'uid' => $sender_uid]);
                        if (!DBA::isResult($item) || empty($item['parent'])) {
+                               Logger::warning('Post not found', ['uri-id' => $post_uriid, 'uid' => $sender_uid]);
                                return;
                        }
+                       $target_id = intval($item['id']);
                        $parent_id = intval($item['parent']);
 
-                       $condition = ['id' => [$target_id, $parent_id], 'visible' => true, 'moderated' => false];
+                       $condition = ['id' => [$target_id, $parent_id], 'visible' => true];
                        $params = ['order' => ['id']];
-                       $itemdata = Model\Post::select([], $condition, $params);
+                       $itemdata = Model\Post::select(Item::DELIVER_FIELDLIST, $condition, $params);
 
                        while ($item = Model\Post::fetch($itemdata)) {
                                if ($item['verb'] == Activity::ANNOUNCE) {
@@ -179,7 +183,7 @@ class Delivery
                }
 
                if (empty($items)) {
-                       Logger::log('No delivery data for  ' . $cmd . ' - Item ID: ' .$target_id . ' - Contact ID: ' . $contact_id);
+                       Logger::notice('No delivery data', ['command' => $cmd, 'uri-id' => $post_uriid, 'cid' => $contact_id]);
                }
 
                $owner = Model\User::getOwnerDataById($uid);
@@ -217,7 +221,7 @@ class Delivery
                        $contact['network'] = Protocol::DFRN;
                }
 
-               Logger::notice('Delivering', ['cmd' => $cmd, 'target' => $target_id, 'followup' => $followup, 'network' => $contact['network']]);
+               Logger::notice('Delivering', ['cmd' => $cmd, 'uri-id' => $post_uriid, 'followup' => $followup, 'network' => $contact['network']]);
 
                switch ($contact['network']) {
                        case Protocol::DFRN: