. * */ namespace Friendica\Worker; use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\DI; use Friendica\Protocol\ActivityPub; use Friendica\Protocol\ActivityPub\Queue; use Friendica\Protocol\ActivityPub\Receiver; class FetchMissingActivity { /** * Fetch missing activities * @param string $url Contact URL * * @return void */ public static function execute(string $url, array $child = [], string $relay_actor = '', int $completion = Receiver::COMPLETION_MANUAL) { Logger::info('Start fetching missing activity', ['url' => $url]); $result = ActivityPub\Processor::fetchMissingActivity($url, $child, $relay_actor, $completion); if ($result) { Logger::info('Successfully fetched missing activity', ['url' => $url]); } elseif (!Worker::defer()) { Logger::info('Activity could not be fetched', ['url' => $url]); // recursively delete all entries that belong to this worker task $queue = DI::app()->getQueue(); if (!empty($queue['id'])) { Queue::deleteByWorkerId($queue['id']); } } else { Logger::info('Fetching deferred', ['url' => $url]); } } }