X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FProtocol.php;h=25955abd5090d21d3387e75cc02d98d00bc20bf5;hb=82972744a9cb77ca3d2f8db289e97fee2709ebd7;hp=5687fa623d4d62cbe258040898bcc2c5b2eeb6eb;hpb=b2042253c45f7925d515d8c6b8fdd4a73c2ee784;p=friendica.git diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php index 5687fa623d..25955abd50 100644 --- a/src/Core/Protocol.php +++ b/src/Core/Protocol.php @@ -1,6 +1,6 @@ Activity::FOLLOW, - 'gravity' => GRAVITY_ACTIVITY, + 'gravity' => Item::GRAVITY_ACTIVITY, 'follow' => $contact['url'], 'body' => '', 'title' => '', @@ -171,18 +171,19 @@ class Protocol } /** - * Sends an unfriend message. Does not remove the contact + * Sends an unfollow message. Does not remove the contact * - * @param array $user User unfriending - * @param array $contact Contact unfriended + * @param array $contact Target public contact (uid = 0) array + * @param array $user Source local user array * @return bool|null true if successful, false if not, null if no remote action was performed * @throws HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function terminateFriendship(array $user, array $contact): ?bool + public static function unfollow(array $contact, array $user): ?bool { if (empty($contact['network'])) { - throw new \InvalidArgumentException('Missing network key in contact array'); + Logger::notice('Contact has got no network, we quit here', ['id' => $contact['id']]); + return null; } $protocol = $contact['network']; @@ -192,18 +193,21 @@ class Protocol if (in_array($protocol, [Protocol::OSTATUS, Protocol::DFRN])) { // create an unfollow slap - $item = []; - $item['verb'] = Activity::O_UNFOLLOW; - $item['gravity'] = GRAVITY_ACTIVITY; - $item['follow'] = $contact['url']; - $item['body'] = ''; - $item['title'] = ''; - $item['guid'] = ''; - $item['uri-id'] = 0; + $item = [ + 'verb' => Activity::O_UNFOLLOW, + 'gravity' => Item::GRAVITY_ACTIVITY, + 'follow' => $contact['url'], + 'body' => '', + 'title' => '', + 'guid' => '', + 'uri-id' => 0, + ]; + $slap = OStatus::salmon($item, $user); if (empty($contact['notify'])) { - throw new \InvalidArgumentException('Missing expected "notify" key in OStatus/DFRN contact'); + Logger::notice('OStatus/DFRN Contact is missing notify, we quit here', ['id' => $contact['id']]); + return null; } return Salmon::slapper($user, $contact['notify'], $slap) === 0; @@ -216,7 +220,8 @@ class Protocol // Catch-all hook for connector addons $hook_data = [ 'contact' => $contact, - 'result' => null + 'uid' => $user['uid'], + 'result' => null, ]; Hook::callAll('unfollow', $hook_data); @@ -226,12 +231,13 @@ class Protocol /** * Revoke an incoming follow from the provided contact * - * @param array $contact Private contact (uid != 0) array + * @param array $contact Target public contact (uid == 0) array + * @param int $uid Source local user id * @return bool|null true if successful, false if not, null if no action was performed * @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \ImagickException */ - public static function revokeFollow(array $contact): ?bool + public static function revokeFollow(array $contact, int $uid): ?bool { if (empty($contact['network'])) { throw new \InvalidArgumentException('Missing network key in contact array'); @@ -243,13 +249,14 @@ class Protocol } if ($protocol == Protocol::ACTIVITYPUB) { - return ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $contact['uid']); + return ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $uid); } // Catch-all hook for connector addons $hook_data = [ 'contact' => $contact, - 'result' => null, + 'uid' => $uid, + 'result' => null, ]; Hook::callAll('revoke_follow', $hook_data);