]> git.mxchange.org Git - friendica.git/commitdiff
Contact reject does work now as well
authorMichael <heluecht@pirati.ca>
Sat, 15 Sep 2018 22:25:58 +0000 (22:25 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 15 Sep 2018 22:25:58 +0000 (22:25 +0000)
mod/dfrn_confirm.php
src/Model/Contact.php
src/Protocol/ActivityPub.php

index 4abaf978fb7f99d0e319690258f6f07f9952f973..90d3d8990c87873658bd81d077015ba855871072 100644 (file)
@@ -356,7 +356,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
                        $new_relation = $contact['rel'];
                        $writable = $contact['writable'];
 
-                       if ($network === Protocol::DIASPORA) {
+                       if (in_array($network, [Protocol::DIASPORA, Protocol::ACTIVITYPUB])) {
                                if ($duplex) {
                                        $new_relation = Contact::FRIEND;
                                } else {
@@ -393,6 +393,10 @@ function dfrn_confirm_post(App $a, $handsfree = null)
 
                Group::addMember(User::getDefaultGroup($uid, $contact["network"]), $contact['id']);
 
+               if ($network == Protocol::ACTIVITYPUB && $duplex) {
+                       ActivityPub::transmitActivity('Follow', $contact['url'], $uid);
+               }
+
                // Let's send our user to the contact editor in case they want to
                // do anything special with this new friend.
                if ($handsfree === null) {
index 1e61c0d10d2ed5e7a211348117e17bc57e4bdebd..ae42030952c8a2cada748dca3d9788d08dc35046 100644 (file)
@@ -557,7 +557,11 @@ class Contact extends BaseObject
                } elseif ($contact['network'] == Protocol::DIASPORA) {
                        Diaspora::sendUnshare($user, $contact);
                } elseif ($contact['network'] == Protocol::ACTIVITYPUB) {
-                       ActivityPub::transmitContactUndo($contact['url'], '', $user['uid']);
+                       ActivityPub::transmitContactUndo($contact['url'], $user['uid']);
+
+                       if ($dissolve) {
+                               ActivityPub::transmitContactReject($contact['url'], $contact['hub-verify'], $user['uid']);
+                       }
                }
        }
 
index df6b0342be0aa871ff53f22548d91e306f346f3f..19407b825be04bd288a86d1c65d8ae59db713895 100644 (file)
@@ -230,17 +230,32 @@ class ActivityPub
                return self::transmit($data,  $profile['notify'], $uid);
        }
 
-       public static function transmitContactUndo($target, $id, $uid)
+       public static function transmitContactReject($target, $id, $uid)
        {
                $profile = Probe::uri($target, Protocol::ACTIVITYPUB);
 
-               if (empty($id)) {
-                       $id = System::baseUrl() . '/activity/' . System::createGUID();
-               }
-
                $owner = User::getOwnerDataById($uid);
                $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
                        'id' => System::baseUrl() . '/activity/' . System::createGUID(),
+                       'type' => 'Reject',
+                       'actor' => $owner['url'],
+                       'object' => ['id' => $id, 'type' => 'Follow',
+                               'actor' => $profile['url'],
+                               'object' => $owner['url']]];
+
+               logger('Sending reject to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG);
+               return self::transmit($data,  $profile['notify'], $uid);
+       }
+
+       public static function transmitContactUndo($target, $uid)
+       {
+               $profile = Probe::uri($target, Protocol::ACTIVITYPUB);
+
+               $id = System::baseUrl() . '/activity/' . System::createGUID();
+
+               $owner = User::getOwnerDataById($uid);
+               $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
+                       'id' => $id,
                        'type' => 'Undo',
                        'actor' => $owner['url'],
                        'object' => ['id' => $id, 'type' => 'Follow',
@@ -1150,8 +1165,14 @@ class ActivityPub
                }
 
                $fields = ['pending' => false];
-               $condition = ['id' => $cid, 'pending' => true];
-               DBA::update('comtact', $fields, $condition);
+
+               $contact = DBA::selectFirst('contact', ['rel'], ['id' => $cid]);
+               if ($contact['rel'] == Contact::FOLLOWER) {
+                       $fields['rel'] = Contact::FRIEND;
+               }
+
+               $condition = ['id' => $cid];
+               DBA::update('contact', $fields, $condition);
                logger('Accept contact request from contact ' . $cid . ' for user ' . $uid, LOGGER_DEBUG);
        }