The whole contact handling does work now, yeah ...

This commit is contained in:
Michael 2018-09-15 20:31:05 +00:00
parent 6a8ebc8639
commit 86bd283705
3 changed files with 26 additions and 9 deletions

View file

@ -337,7 +337,7 @@ function dfrn_confirm_post(App $a, $handsfree = null)
); );
} else { } else {
if ($network == Protocol::ACTIVITYPUB) { if ($network == Protocol::ACTIVITYPUB) {
ActivityPub::transmitContactActivity('Accept', $contact['url'], $contact['hub-verify'], $uid); ActivityPub::transmitContactAccept($contact['url'], $contact['hub-verify'], $uid);
$pending = true; $pending = true;
} else { } else {
$pending = false; $pending = false;

View file

@ -557,7 +557,7 @@ class Contact extends BaseObject
} elseif ($contact['network'] == Protocol::DIASPORA) { } elseif ($contact['network'] == Protocol::DIASPORA) {
Diaspora::sendUnshare($user, $contact); Diaspora::sendUnshare($user, $contact);
} elseif ($contact['network'] == Protocol::ACTIVITYPUB) { } 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; return;
} }
$url = $pub_contact['url']; $url = defaults($datarray, 'author-link', $pub_contact['url']);
$name = $pub_contact['name']; $name = $pub_contact['name'];
$photo = $pub_contact['photo']; $photo = $pub_contact['photo'];
$nick = $pub_contact['nick']; $nick = $pub_contact['nick'];
@ -1848,7 +1848,7 @@ class Contact extends BaseObject
} }
if ($contact['network'] == Protocol::ACTIVITYPUB) { 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? // send email notification to owner?

View file

@ -213,7 +213,24 @@ class ActivityPub
return self::transmit($data, $profile['notify'], $uid); 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); $profile = Probe::uri($target, Protocol::ACTIVITYPUB);
@ -224,13 +241,13 @@ class ActivityPub
$owner = User::getOwnerDataById($uid); $owner = User::getOwnerDataById($uid);
$data = ['@context' => 'https://www.w3.org/ns/activitystreams', $data = ['@context' => 'https://www.w3.org/ns/activitystreams',
'id' => 'https://pirati.ca/activity/' . System::createGUID(), 'id' => 'https://pirati.ca/activity/' . System::createGUID(),
'type' => $activity, 'type' => 'Undo',
'actor' => $owner['url'], 'actor' => $owner['url'],
'object' => ['id' => $id, 'type' => 'Follow', 'object' => ['id' => $id, 'type' => 'Follow',
'actor' => $owner['url'], 'actor' => $owner['url'],
'object' => $profile['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); return self::transmit($data, $profile['notify'], $uid);
} }
@ -1099,10 +1116,10 @@ class ActivityPub
$contact = false; $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); Contact::addRelationship($owner, $contact, $item);
$cid = Contact::getIdForURL($activity['owner'], $uid); $cid = Contact::getIdForURL($activity['owner'], $uid);
if (empty($cid)) { if (empty($cid)) {
return; return;