]> git.mxchange.org Git - friendica.git/commitdiff
Profile update is now done via APDelivery
authorMichael <heluecht@pirati.ca>
Mon, 1 Oct 2018 05:44:56 +0000 (05:44 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 1 Oct 2018 05:44:56 +0000 (05:44 +0000)
src/Protocol/ActivityPub.php
src/Worker/APDelivery.php
src/Worker/Delivery.php
src/Worker/ProfileUpdate.php

index 5bad98eb4c934c60beca99640cfdc4b150c5f72c..4c77c8dff92a43dc76da30a2f81c985e8ed11635 100644 (file)
@@ -437,7 +437,7 @@ class ActivityPub
         *
         * @return array of follower inboxes
         */
-       private static function fetchTargetInboxesforUser($uid)
+       public static function fetchTargetInboxesforUser($uid)
        {
                $inboxes = [];
 
@@ -732,11 +732,12 @@ class ActivityPub
        }
 
        /**
-        * @brief Transmits a profile change to the followers
+        * @brief Transmits a profile change to a given inbox
         *
         * @param integer $uid User ID
+        * @param string $inbox Target inbox
         */
-       public static function transmitProfileUpdate($uid)
+       public static function transmitProfileUpdate($uid, $inbox)
        {
                $owner = User::getOwnerDataById($uid);
                $profile = APContact::getByURL($owner['url']);
@@ -750,17 +751,12 @@ class ActivityPub
                        'to' => [$profile['followers']],
                        'cc' => []];
 
-               logger('Sending profile update to followers for user ' . $uid, LOGGER_DEBUG);
-
                $signed = LDSignature::sign($data, $owner);
 
-               $inboxes = self::fetchTargetInboxesforUser($uid);
-
-               foreach ($inboxes as $inbox) {
-                       logger('Deliver profile update for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
-                       HTTPSignature::transmit($signed, $inbox, $uid);
-               }
+               logger('Deliver profile update for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
+               HTTPSignature::transmit($signed, $inbox, $uid);
        }
+
        /**
         * @brief Transmits a given activity to a target
         *
@@ -1403,7 +1399,7 @@ class ActivityPub
         *
         * @return 
         */
-       private static function processObject(&$object)
+       private static function processObject($object)
        {
                if (empty($object['id'])) {
                        return false;
index 943238a7b41ecdc90e6328f2e32ae1a40673c3a7..eb0b3d9b15625f303dde8146efdf55f05724c9da 100644 (file)
@@ -18,6 +18,8 @@ class APDelivery extends BaseObject
                if ($cmd == Delivery::MAIL) {
                } elseif ($cmd == Delivery::SUGGESTION) {
                } elseif ($cmd == Delivery::RELOCATION) {
+               } elseif ($cmd == Delivery::PROFILEUPDATE) {
+                       ActivityPub::transmitProfileUpdate($uid, $inbox);
                } else {
                        $data = ActivityPub::createActivityFromItem($item_id);
                        if (!empty($data)) {
index 3a93d92f7b37366047dfc551e4c792081c9fb65e..3585b39989d0cefbef1e0c1b6617db5fc2278350 100644 (file)
@@ -22,13 +22,14 @@ require_once 'include/items.php';
 
 class Delivery extends BaseObject
 {
-       const MAIL =       'mail';
-       const SUGGESTION = 'suggest';
-       const RELOCATION = 'relocate';
-       const DELETION =   'drop';
-       const POST =       'wall-new';
-       const COMMENT =    'comment-new';
-       const REMOVAL =    'removeme';
+       const MAIL          = 'mail';
+       const SUGGESTION    = 'suggest';
+       const RELOCATION    = 'relocate';
+       const DELETION      = 'drop';
+       const POST          = 'wall-new';
+       const COMMENT       = 'comment-new';
+       const REMOVAL       = 'removeme';
+       const PROFILEUPDATE = 'profileupdate';
 
        public static function execute($cmd, $item_id, $contact_id)
        {
index 9123f77e0630000816700af15f2d947dc7e1d4eb..7fab86cbfdb0f941aa7e860f35821a3cf6d9eb05 100644 (file)
@@ -6,8 +6,10 @@
 
 namespace Friendica\Worker;
 
+use Friendica\BaseObject;
 use Friendica\Protocol\Diaspora;
 use Friendica\Protocol\ActivityPub;
+use Friendica\Core\Worker;
 
 class ProfileUpdate {
        public static function execute($uid = 0) {
@@ -15,7 +17,16 @@ class ProfileUpdate {
                        return;
                }
 
-               ActivityPub::transmitProfileUpdate($uid);
+               $a = BaseObject::getApp();
+
+               $inboxes = ActivityPub::fetchTargetInboxesforUser($uid);
+
+               foreach ($inboxes as $inbox) {
+                       logger('Profile update for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
+                       Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
+                               'APDelivery', Delivery::PROFILEUPDATE, '', $inbox, $uid);
+               }
+
                Diaspora::sendProfile($uid);
        }
 }