]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/Delivery.php
BBCode - fixed syntax error
[friendica.git] / src / Worker / Delivery.php
index c6d24657e5aad2fe6c54f17434c5429b41d5f22d..8e9b649c7b57556da982a6e7e82a4e95d2c85a83 100644 (file)
@@ -13,6 +13,7 @@ use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
+use Friendica\Model\ItemDeliveryData;
 use Friendica\Model\Queue;
 use Friendica\Model\User;
 use Friendica\Protocol\DFRN;
@@ -32,9 +33,9 @@ class Delivery extends BaseObject
        const REMOVAL       = 'removeme';
        const PROFILEUPDATE = 'profileupdate';
 
-       public static function execute($cmd, $item_id, $contact_id)
+       public static function execute($cmd, $target_id, $contact_id)
        {
-               Logger::log('Invoked: ' . $cmd . ': ' . $item_id . ' to ' . $contact_id, Logger::DEBUG);
+               Logger::log('Invoked: ' . $cmd . ': ' . $target_id . ' to ' . $contact_id, Logger::DEBUG);
 
                $top_level = false;
                $followup = false;
@@ -42,28 +43,28 @@ class Delivery extends BaseObject
 
                $items = [];
                if ($cmd == self::MAIL) {
-                       $target_item = DBA::selectFirst('mail', [], ['id' => $item_id]);
+                       $target_item = DBA::selectFirst('mail', [], ['id' => $target_id]);
                        if (!DBA::isResult($target_item)) {
                                return;
                        }
                        $uid = $target_item['uid'];
                } elseif ($cmd == self::SUGGESTION) {
-                       $target_item = DBA::selectFirst('fsuggest', [], ['id' => $item_id]);
+                       $target_item = DBA::selectFirst('fsuggest', [], ['id' => $target_id]);
                        if (!DBA::isResult($target_item)) {
                                return;
                        }
                        $uid = $target_item['uid'];
                } elseif ($cmd == self::RELOCATION) {
-                       $uid = $item_id;
+                       $uid = $target_id;
                        $target_item = [];
                } else {
-                       $item = Item::selectFirst(['parent'], ['id' => $item_id]);
+                       $item = Item::selectFirst(['parent'], ['id' => $target_id]);
                        if (!DBA::isResult($item) || empty($item['parent'])) {
                                return;
                        }
                        $parent_id = intval($item['parent']);
 
-                       $condition = ['id' => [$item_id, $parent_id], 'moderated' => false];
+                       $condition = ['id' => [$target_id, $parent_id], 'moderated' => false];
                        $params = ['order' => ['id']];
                        $itemdata = Item::select([], $condition, $params);
 
@@ -71,7 +72,7 @@ class Delivery extends BaseObject
                                if ($item['id'] == $parent_id) {
                                        $parent = $item;
                                }
-                               if ($item['id'] == $item_id) {
+                               if ($item['id'] == $target_id) {
                                        $target_item = $item;
                                }
                                $items[] = $item;
@@ -79,12 +80,12 @@ class Delivery extends BaseObject
                        DBA::close($itemdata);
 
                        if (empty($target_item)) {
-                               Logger::log('Item ' . $item_id . "wasn't found. Quitting here.");
+                               Logger::log('Item ' . $target_id . "wasn't found. Quitting here.");
                                return;
                        }
 
                        if (empty($parent)) {
-                               Logger::log('Parent ' . $parent_id . ' for item ' . $item_id . "wasn't found. Quitting here.");
+                               Logger::log('Parent ' . $parent_id . ' for item ' . $target_id . "wasn't found. Quitting here.");
                                return;
                        }
 
@@ -93,7 +94,7 @@ class Delivery extends BaseObject
                        } elseif (!empty($target_item['uid'])) {
                                $uid = $target_item['uid'];
                        } else {
-                               Logger::log('Only public users for item ' . $item_id, Logger::DEBUG);
+                               Logger::log('Only public users for item ' . $target_id, Logger::DEBUG);
                                return;
                        }
 
@@ -107,7 +108,7 @@ class Delivery extends BaseObject
                        // 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 ((($parent['id'] == $item_id) || (count($items) == 1)) && ($parent['uri'] === $parent['parent-uri'])) {
+                       if ((($parent['id'] == $target_id) || (count($items) == 1)) && ($parent['uri'] === $parent['parent-uri'])) {
                                Logger::log('Top level post');
                                $top_level = true;
                        }
@@ -148,7 +149,7 @@ class Delivery extends BaseObject
                }
 
                if (empty($items)) {
-                       Logger::log('No delivery data for  ' . $cmd . ' - Item ID: ' .$item_id . ' - Contact ID: ' . $contact_id);
+                       Logger::log('No delivery data for  ' . $cmd . ' - Item ID: ' .$target_id . ' - Contact ID: ' . $contact_id);
                }
 
                $owner = User::getOwnerDataById($uid);
@@ -180,10 +181,18 @@ class Delivery extends BaseObject
 
                        case Protocol::DFRN:
                                self::deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);
+
+                               if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
+                                       ItemDeliveryData::incrementQueueDone($target_id);
+                               }
                                break;
 
                        case Protocol::DIASPORA:
                                self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);
+
+                               if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
+                                       ItemDeliveryData::incrementQueueDone($target_id);
+                               }
                                break;
 
                        case Protocol::OSTATUS:
@@ -221,6 +230,8 @@ class Delivery extends BaseObject
         * @param boolean $public_message Is the content public?
         * @param boolean $top_level      Is it a thread starter?
         * @param boolean $followup       Is it an answer to a remote post?
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        private static function deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup)
        {
@@ -290,7 +301,7 @@ class Delivery extends BaseObject
                // Se we transmit with the new method and via Diaspora as a fallback
                if (!empty($items) && (($items[0]['uid'] == 0) || ($contact['uid'] == 0))) {
                        // Transmit in public if it's a relay post
-                       $public_dfrn = ($contact['contact-type'] == Contact::ACCOUNT_TYPE_RELAY);
+                       $public_dfrn = ($contact['contact-type'] == Contact::TYPE_RELAY);
 
                        $deliver_status = DFRN::transmit($owner, $contact, $atom, $public_dfrn);
 
@@ -342,11 +353,13 @@ class Delivery extends BaseObject
         * @param boolean $public_message Is the content public?
         * @param boolean $top_level      Is it a thread starter?
         * @param boolean $followup       Is it an answer to a remote post?
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        private static function deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup)
        {
                // We don't treat Forum posts as "wall-to-wall" to be able to post them via Diaspora
-               $walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != Contact::ACCOUNT_TYPE_COMMUNITY);
+               $walltowall = $top_level && ($owner['id'] != $items[0]['contact-id']) & ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
 
                if ($public_message) {
                        $loc = 'public batch ' . $contact['batch'];
@@ -405,6 +418,8 @@ class Delivery extends BaseObject
         * @param array  $contact     Contact record of the receiver
         * @param array  $owner       Owner record of the sender
         * @param array  $target_item Item record of the content
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        * @throws \ImagickException
         */
        private static function deliverMail($cmd, $contact, $owner, $target_item)
        {