]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/APDelivery.php
Prevent permissionset foreign key constraint
[friendica.git] / src / Worker / APDelivery.php
index 0c2c0ca9c487c59aa775418c0f102344adc58dd7..9f0af133e67aae6563d5bf2a827e4a0a784b8264 100644 (file)
@@ -24,6 +24,7 @@ namespace Friendica\Worker;
 use Friendica\Core\Logger;
 use Friendica\Core\Worker;
 use Friendica\Model\Contact;
+use Friendica\Model\GServer;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Protocol\ActivityPub;
@@ -47,7 +48,7 @@ class APDelivery
                if (ActivityPub\Transmitter::archivedInbox($inbox)) {
                        Logger::info('Inbox is archived', ['cmd' => $cmd, 'inbox' => $inbox, 'id' => $item_id, 'uid' => $uid]);
                        if (in_array($cmd, [Delivery::POST])) {
-                               $item = Item::selectFirst(['uri-id'], ['id' => $item_id]);
+                               $item = Post::selectFirst(['uri-id'], ['id' => $item_id]);
                                Post\DeliveryData::incrementQueueFailed($item['uri-id'] ?? 0);
                        }
                        return;
@@ -80,8 +81,9 @@ class APDelivery
                }
 
                // This should never fail and is temporariy (until the move to the "post" structure)
-               $item = Item::selectFirst(['uri-id'], ['id' => $item_id]);
+               $item = Post::selectFirst(['uri-id'], ['id' => $item_id]);
                $uriid = $item['uri-id'] ?? 0;
+               $gsid = null;
 
                foreach ($receivers as $receiver) {
                        $contact = Contact::getById($receiver);
@@ -89,6 +91,8 @@ class APDelivery
                                continue;
                        }
 
+                       $gsid = $gsid ?: $contact['gsid'];
+
                        if ($success) {
                                Contact::unmarkForArchival($contact);
                        } else {
@@ -96,6 +100,10 @@ class APDelivery
                        }
                }
 
+               if (!empty($gsid)) {
+                       GServer::setProtocol($gsid, Post\DeliveryData::ACTIVITYPUB);
+               }
+
                if (!$success && !Worker::defer() && in_array($cmd, [Delivery::POST])) {
                        Post\DeliveryData::incrementQueueFailed($uriid);
                } elseif ($success && in_array($cmd, [Delivery::POST])) {