]> git.mxchange.org Git - friendica.git/commitdiff
Preparations for a relocation message / fix for notice
authorMichael <heluecht@pirati.ca>
Fri, 2 Nov 2018 21:57:06 +0000 (21:57 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 2 Nov 2018 21:57:06 +0000 (21:57 +0000)
src/Model/APContact.php
src/Protocol/ActivityPub.php
src/Protocol/ActivityPub/Transmitter.php
src/Util/JsonLD.php

index c7cf54b7209e2d60188bd5f352abcce2dc19c5a4..917e0895dcb1ff8020c069fd970d0057a136a49c 100644 (file)
@@ -106,6 +106,10 @@ class APContact extends BaseObject
 
                $compacted = JsonLD::compact($data);
 
+               if (empty($compacted['@id'])) {
+                       return false;
+               }
+
                $apcontact = [];
                $apcontact['url'] = $compacted['@id'];
                $apcontact['uuid'] = JsonLD::fetchElement($compacted, 'diaspora:guid');
index e6701074c65e2a8f4ed94ba20a9b93a83a344ae2..107cc423a6b88f9344576f0dcb5e1f09fbe35248 100644 (file)
@@ -40,6 +40,7 @@ class ActivityPub
        const PUBLIC_COLLECTION = 'https://www.w3.org/ns/activitystreams#Public';
        const CONTEXT = ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1',
                ['vcard' => 'http://www.w3.org/2006/vcard/ns#',
+               'dfrn' => 'http://purl.org/macgirvin/dfrn/1.0/',
                'diaspora' => 'https://diasporafoundation.org/ns/',
                'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
                'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag']];
index d3043c530b850f7bc17731b62b2290d632c20c40..64b98e17e70038c5439dcdca9fda94056cf9c256 100644 (file)
@@ -1000,11 +1000,10 @@ class Transmitter
        public static function sendContactSuggestion($uid, $inbox, $suggestion_id)
        {
                $owner = User::getOwnerDataById($uid);
-               $profile = APContact::getByURL($owner['url']);
 
                $suggestion = DBA::selectFirst('fsuggest', ['url', 'note', 'created'], ['id' => $suggestion_id]);
 
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
                        'type' => 'Announce',
                        'actor' => $owner['url'],
@@ -1020,6 +1019,34 @@ class Transmitter
                return HTTPSignature::transmit($signed, $inbox, $uid);
        }
 
+       /**
+        * Transmits a profile relocation to a given inbox
+        *
+        * @param integer $uid User ID
+        * @param string $inbox Target inbox
+        *
+        * @return boolean was the transmission successful?
+        */
+       public static function sendProfileRelocation($uid, $inbox)
+       {
+               $owner = User::getOwnerDataById($uid);
+
+               $data = ['@context' => ActivityPub::CONTEXT,
+                       'id' => System::baseUrl() . '/activity/' . System::createGUID(),
+                       'type' => 'dfrn:relocate',
+                       'actor' => $owner['url'],
+                       'object' => $owner['url'],
+                       'published' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
+                       'instrument' => ['type' => 'Service', 'name' => BaseObject::getApp()->getUserAgent()],
+                       'to' => [ActivityPub::PUBLIC_COLLECTION],
+                       'cc' => []];
+
+               $signed = LDSignature::sign($data, $owner);
+
+               Logger::log('Deliver profile relocation for user ' . $uid . ' to ' . $inbox . ' via ActivityPub', Logger::DEBUG);
+               return HTTPSignature::transmit($signed, $inbox, $uid);
+       }
+
        /**
         * Transmits a profile deletion to a given inbox
         *
@@ -1031,9 +1058,8 @@ class Transmitter
        public static function sendProfileDeletion($uid, $inbox)
        {
                $owner = User::getOwnerDataById($uid);
-               $profile = APContact::getByURL($owner['url']);
 
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
                        'type' => 'Delete',
                        'actor' => $owner['url'],
@@ -1062,7 +1088,7 @@ class Transmitter
                $owner = User::getOwnerDataById($uid);
                $profile = APContact::getByURL($owner['url']);
 
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
                        'type' => 'Update',
                        'actor' => $owner['url'],
@@ -1091,7 +1117,7 @@ class Transmitter
 
                $owner = User::getOwnerDataById($uid);
 
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
                        'type' => $activity,
                        'actor' => $owner['url'],
@@ -1117,7 +1143,7 @@ class Transmitter
                $profile = APContact::getByURL($target);
 
                $owner = User::getOwnerDataById($uid);
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
                        'type' => 'Accept',
                        'actor' => $owner['url'],
@@ -1145,7 +1171,7 @@ class Transmitter
                $profile = APContact::getByURL($target);
 
                $owner = User::getOwnerDataById($uid);
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
                        'type' => 'Reject',
                        'actor' => $owner['url'],
@@ -1174,7 +1200,7 @@ class Transmitter
                $id = System::baseUrl() . '/activity/' . System::createGUID();
 
                $owner = User::getOwnerDataById($uid);
-               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+               $data = ['@context' => ActivityPub::CONTEXT,
                        'id' => $id,
                        'type' => 'Undo',
                        'actor' => $owner['url'],
index feaf3e62f53fc1dd49de342b1fe09b712f3b77ca..bed7a67d60a01eeccf58bc6a312f6f363541f4b6 100644 (file)
@@ -85,11 +85,12 @@ class JsonLD
 
                $context = (object)['as' => 'https://www.w3.org/ns/activitystreams#',
                        'w3id' => 'https://w3id.org/security#',
+                       'ldp' => (object)['@id' => 'http://www.w3.org/ns/ldp#', '@type' => '@id'],
                        'vcard' => (object)['@id' => 'http://www.w3.org/2006/vcard/ns#', '@type' => '@id'],
-                       'ostatus' => (object)['@id' => 'http://ostatus.org#', '@type' => '@id'],
+                       'dfrn' => (object)['@id' => 'http://purl.org/macgirvin/dfrn/1.0/', '@type' => '@id'],
                        'diaspora' => (object)['@id' => 'https://diasporafoundation.org/ns/', '@type' => '@id'],
-                       'dc' => (object)['@id' => 'http://purl.org/dc/terms/', '@type' => '@id'],
-                       'ldp' => (object)['@id' => 'http://www.w3.org/ns/ldp#', '@type' => '@id']];
+                       'ostatus' => (object)['@id' => 'http://ostatus.org#', '@type' => '@id'],
+                       'dc' => (object)['@id' => 'http://purl.org/dc/terms/', '@type' => '@id']];
 
                $jsonobj = json_decode(json_encode($json, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));