From 86bd28370525a4fb6d4a55ea48cb509ef58ce5ff Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 15 Sep 2018 20:31:05 +0000 Subject: [PATCH] The whole contact handling does work now, yeah ... --- mod/dfrn_confirm.php | 2 +- src/Model/Contact.php | 6 +++--- src/Protocol/ActivityPub.php | 27 ++++++++++++++++++++++----- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 2a872dd41..4abaf978f 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -337,7 +337,7 @@ function dfrn_confirm_post(App $a, $handsfree = null) ); } else { if ($network == Protocol::ACTIVITYPUB) { - ActivityPub::transmitContactActivity('Accept', $contact['url'], $contact['hub-verify'], $uid); + ActivityPub::transmitContactAccept($contact['url'], $contact['hub-verify'], $uid); $pending = true; } else { $pending = false; diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 2bcb86327..1e61c0d10 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -557,7 +557,7 @@ class Contact extends BaseObject } elseif ($contact['network'] == Protocol::DIASPORA) { Diaspora::sendUnshare($user, $contact); } elseif ($contact['network'] == Protocol::ACTIVITYPUB) { - ActivityPub::transmitContactActivity('Undo', $contact['url'], '', $user['uid']); + ActivityPub::transmitContactUndo($contact['url'], '', $user['uid']); } } @@ -1834,7 +1834,7 @@ class Contact extends BaseObject return; } - $url = $pub_contact['url']; + $url = defaults($datarray, 'author-link', $pub_contact['url']); $name = $pub_contact['name']; $photo = $pub_contact['photo']; $nick = $pub_contact['nick']; @@ -1848,7 +1848,7 @@ class Contact extends BaseObject } if ($contact['network'] == Protocol::ACTIVITYPUB) { - ActivityPub::transmitContactActivity('Accept', $contact['url'], $contact['hub-verify'], $importer['uid']); + ActivityPub::transmitContactAccept($contact['url'], $contact['hub-verify'], $importer['uid']); } // send email notification to owner? diff --git a/src/Protocol/ActivityPub.php b/src/Protocol/ActivityPub.php index 78d5d44da..73d5231d7 100644 --- a/src/Protocol/ActivityPub.php +++ b/src/Protocol/ActivityPub.php @@ -213,7 +213,24 @@ class ActivityPub return self::transmit($data, $profile['notify'], $uid); } - public static function transmitContactActivity($activity, $target, $id, $uid) + public static function transmitContactAccept($target, $id, $uid) + { + $profile = Probe::uri($target, Protocol::ACTIVITYPUB); + + $owner = User::getOwnerDataById($uid); + $data = ['@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://pirati.ca/activity/' . System::createGUID(), + 'type' => 'Accept', + 'actor' => $owner['url'], + 'object' => ['id' => $id, 'type' => 'Follow', + 'actor' => $profile['url'], + 'object' => $owner['url']]]; + + logger('Sending accept to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG); + return self::transmit($data, $profile['notify'], $uid); + } + + public static function transmitContactUndo($target, $id, $uid) { $profile = Probe::uri($target, Protocol::ACTIVITYPUB); @@ -224,13 +241,13 @@ class ActivityPub $owner = User::getOwnerDataById($uid); $data = ['@context' => 'https://www.w3.org/ns/activitystreams', 'id' => 'https://pirati.ca/activity/' . System::createGUID(), - 'type' => $activity, + 'type' => 'Undo', 'actor' => $owner['url'], 'object' => ['id' => $id, 'type' => 'Follow', 'actor' => $owner['url'], 'object' => $profile['url']]]; - logger('Sending ' . $activity . ' to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG); + logger('Sending undo to ' . $target . ' for user ' . $uid . ' with id ' . $id, LOGGER_DEBUG); return self::transmit($data, $profile['notify'], $uid); } @@ -1099,10 +1116,10 @@ class ActivityPub $contact = false; } - $item = ['author-id' => Contact::getIdForURL($activity['owner'])]; + $item = ['author-id' => Contact::getIdForURL($activity['owner']), + 'author-link' => $activity['owner']]; Contact::addRelationship($owner, $contact, $item); - $cid = Contact::getIdForURL($activity['owner'], $uid); if (empty($cid)) { return;