X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FProtocol.php;h=796add5558184cc423a402bbcb6cfcdc4cf2d66d;hb=fa55928ea3978e96bf1cc21f3759f5607f3ef503;hp=bce6bc699cc8cd31b9966f99faed31e7798736c8;hpb=3a30f90324cedfca93a594db2830806eda60bb6b;p=friendica.git diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php index bce6bc699c..796add5558 100644 --- a/src/Core/Protocol.php +++ b/src/Core/Protocol.php @@ -84,10 +84,13 @@ class Protocol return true; } - $result = null; - Hook::callAll('support_follow', $result); + $hook_data = [ + 'protocol' => $protocol, + 'result' => null + ]; + Hook::callAll('support_follow', $hook_data); - return $result === true; + return $hook_data['result'] === true; } /** @@ -103,10 +106,13 @@ class Protocol return true; } - $result = null; - Hook::callAll('support_revoke_follow', $result); + $hook_data = [ + 'protocol' => $protocol, + 'result' => null + ]; + Hook::callAll('support_revoke_follow', $hook_data); - return $result === true; + return $hook_data['result'] === true; } /** @@ -207,12 +213,11 @@ class Protocol * * @param array $user User unfriending * @param array $contact Contact unfriended - * @param boolean $two_way Revoke eventual inbound follow as well - * @return bool|null true if successful, false if not, null if no action was performed + * @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 $two_way = false): bool + public static function terminateFriendship(array $user, array $contact): ?bool { if (empty($contact['network'])) { throw new \InvalidArgumentException('Missing network key in contact array'); @@ -243,17 +248,12 @@ class Protocol } elseif ($protocol == Protocol::DIASPORA) { return Diaspora::sendUnshare($user, $contact) > 0; } elseif ($protocol == Protocol::ACTIVITYPUB) { - if ($two_way) { - ActivityPub\Transmitter::sendContactReject($contact['url'], $contact['hub-verify'], $user['uid']); - } - return ActivityPub\Transmitter::sendContactUndo($contact['url'], $contact['id'], $user['uid']); } // Catch-all hook for connector addons $hook_data = [ 'contact' => $contact, - 'two_way' => $two_way, 'result' => null ]; Hook::callAll('unfollow', $hook_data); @@ -265,10 +265,11 @@ class Protocol * Revoke an incoming follow from the provided contact * * @param array $contact Private contact (uid != 0) array + * @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) + public static function revokeFollow(array $contact): ?bool { if (empty($contact['network'])) { throw new \InvalidArgumentException('Missing network key in contact array'); @@ -292,4 +293,46 @@ class Protocol return $hook_data['result']; } + + /** + * Send a block message to a remote server. Only useful for connector addons. + * + * @param array $contact Public contact record to block + * @param int $uid User issuing the block + * @return bool|null true if successful, false if not, null if no action was performed + * @throws HTTPException\InternalServerErrorException + */ + public static function block(array $contact, int $uid): ?bool + { + // Catch-all hook for connector addons + $hook_data = [ + 'contact' => $contact, + 'uid' => $uid, + 'result' => null, + ]; + Hook::callAll('block', $hook_data); + + return $hook_data['result']; + } + + /** + * Send an unblock message to a remote server. Only useful for connector addons. + * + * @param array $contact Public contact record to unblock + * @param int $uid User revoking the block + * @return bool|null true if successful, false if not, null if no action was performed + * @throws HTTPException\InternalServerErrorException + */ + public static function unblock(array $contact, int $uid): ?bool + { + // Catch-all hook for connector addons + $hook_data = [ + 'contact' => $contact, + 'uid' => $uid, + 'result' => null, + ]; + Hook::callAll('unblock', $hook_data); + + return $hook_data['result']; + } }