X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FAPDelivery.php;h=a25977372a3a2edd3168c0d2d2fe427d5c7c6123;hb=e4e9a20ac8a8a7896c3d2e4136237d399c664dd6;hp=625ed5f2cb42f7c48d4277ef126b6625ec949aa4;hpb=0a152225765a5080bc81ce430c30ec4ccca55a79;p=friendica.git diff --git a/src/Worker/APDelivery.php b/src/Worker/APDelivery.php index 625ed5f2cb..a25977372a 100644 --- a/src/Worker/APDelivery.php +++ b/src/Worker/APDelivery.php @@ -1,20 +1,37 @@ . + * */ + namespace Friendica\Worker; -use Friendica\BaseObject; use Friendica\Core\Logger; use Friendica\Core\Worker; -use Friendica\Model\ItemDeliveryData; +use Friendica\Model\Item; +use Friendica\Model\Post; use Friendica\Protocol\ActivityPub; use Friendica\Util\HTTPSignature; -class APDelivery extends BaseObject +class APDelivery { /** - * @brief Delivers ActivityPub messages + * Delivers ActivityPub messages * * @param string $cmd * @param integer $target_id @@ -25,7 +42,16 @@ class APDelivery extends BaseObject */ public static function execute($cmd, $target_id, $inbox, $uid) { - Logger::log('Invoked: ' . $cmd . ': ' . $target_id . ' to ' . $inbox, Logger::DEBUG); + if (ActivityPub\Transmitter::archivedInbox($inbox)) { + Logger::info('Inbox is archived', ['cmd' => $cmd, 'inbox' => $inbox, 'id' => $target_id, 'uid' => $uid]); + if (in_array($cmd, [Delivery::POST])) { + $item = Item::selectFirst(['uri-id'], ['id' => $target_id]); + Post\DeliveryData::incrementQueueFailed($item['uri-id'] ?? 0); + } + return; + } + + Logger::info('Invoked', ['cmd' => $cmd, 'inbox' => $inbox, 'id' => $target_id, 'uid' => $uid]); $success = true; @@ -48,14 +74,17 @@ class APDelivery extends BaseObject $data = ActivityPub\Transmitter::createCachedActivityFromItem($target_id); if (!empty($data)) { $success = HTTPSignature::transmit($data, $inbox, $uid); - if ($success && in_array($cmd, [Delivery::POST])) { - ItemDeliveryData::incrementQueueDone($target_id, ItemDeliveryData::ACTIVITYPUB); - } } } - if (!$success) { - Worker::defer(); + // This should never fail and is temporariy (until the move to the "post" structure) + $item = Item::selectFirst(['uri-id'], ['id' => $target_id]); + $uriid = $item['uri-id'] ?? 0; + + if (!$success && !Worker::defer() && in_array($cmd, [Delivery::POST])) { + Post\DeliveryData::incrementQueueFailed($uriid); + } elseif ($success && in_array($cmd, [Delivery::POST])) { + Post\DeliveryData::incrementQueueDone($uriid, Post\DeliveryData::ACTIVITYPUB); } } }