]> git.mxchange.org Git - friendica.git/blob - src/Worker/APDelivery.php
2fabb4a4eb99fda461ee671db8d60021a4967097
[friendica.git] / src / Worker / APDelivery.php
1 <?php
2 /**
3  * @file src/Worker/APDelivery.php
4  */
5 namespace Friendica\Worker;
6
7 use Friendica\BaseObject;
8 use Friendica\Core\Logger;
9 use Friendica\Core\Worker;
10 use Friendica\Model\ItemDeliveryData;
11 use Friendica\Protocol\ActivityPub;
12 use Friendica\Model\Item;
13 use Friendica\Util\HTTPSignature;
14
15 class APDelivery extends BaseObject
16 {
17         /**
18          * @brief Delivers ActivityPub messages
19          *
20          * @param string  $cmd
21          * @param integer $target_id
22          * @param string  $inbox
23          * @param integer $uid
24          */
25         public static function execute($cmd, $target_id, $inbox, $uid)
26         {
27                 Logger::log('Invoked: ' . $cmd . ': ' . $target_id . ' to ' . $inbox, Logger::DEBUG);
28
29                 $success = true;
30
31                 if ($cmd == Delivery::MAIL) {
32                 } elseif ($cmd == Delivery::SUGGESTION) {
33                         $success = ActivityPub\Transmitter::sendContactSuggestion($uid, $inbox, $target_id);
34                 } elseif ($cmd == Delivery::RELOCATION) {
35                 } elseif ($cmd == Delivery::REMOVAL) {
36                         $success = ActivityPub\Transmitter::sendProfileDeletion($uid, $inbox);
37                 } elseif ($cmd == Delivery::PROFILEUPDATE) {
38                         $success = ActivityPub\Transmitter::sendProfileUpdate($uid, $inbox);
39                 } else {
40                         $data = ActivityPub\Transmitter::createCachedActivityFromItem($target_id);
41                         if (!empty($data)) {
42                                 $success = HTTPSignature::transmit($data, $inbox, $uid);
43                         }
44
45                         if ($success && in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
46                                 ItemDeliveryData::incrementQueueDone($target_id);
47                         }
48                 }
49
50                 if (!$success) {
51                         Worker::defer();
52                 }
53         }
54 }