- **contact** (input): the remote contact (uid = local revoking user id) array.
- **result** (output): a boolean value indicating wether the operation was successful or not.
+### block
+
+Called when blocking a remote contact on a non-native network (like Twitter).
+
+Hook data:
+- **contact** (input): the remote contact (uid = 0) array.
+- **uid** (input): the user id to issue the block for.
+- **result** (output): a boolean value indicating wether the operation was successful or not.
+
+### unblock
+
+Called when unblocking a remote contact on a non-native network (like Twitter).
+
+Hook data:
+- **contact** (input): the remote contact (uid = 0) array.
+- **uid** (input): the user id to revoke the block for.
+- **result** (output): a boolean value indicating wether the operation was successful or not.
+
## Complete list of hook callbacks
Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above.
Hook::callAll('support_follow', $hook_data);
Hook::callAll('support_revoke_follow', $hook_data);
Hook::callAll('unfollow', $hook_data);
- Kook::callAll('revoke_follow', $hook_data);
+ Hook::callAll('revoke_follow', $hook_data);
+ Hook::callAll('block', $hook_data);
+ Hook::callAll('unblock', $hook_data);
### src/Core/StorageManager
Hook::callAll('support_follow', $hook_data);
Hook::callAll('support_revoke_follow', $hook_data);
Hook::callAll('unfollow', $hook_data);
- Kook::callAll('revoke_follow', $hook_data);
+ Hook::callAll('revoke_follow', $hook_data);
+ Hook::callAll('block', $hook_data);
+ Hook::callAll('unblock', $hook_data);
### src/Core/StorageManager
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'];
+ }
}
use Exception;
use Friendica\Core\Logger;
+use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Database\Database;
use Friendica\Database\DBA;
return;
}
+ $contact = Contact::getById($cdata['public']);
+ if ($blocked) {
+ Protocol::block($contact);
+ } else {
+ Protocol::unblock($contact);
+ }
+
if ($cdata['user'] != 0) {
DBA::update('contact', ['blocked' => $blocked], ['id' => $cdata['user'], 'pending' => false]);
}