Add block and unblock hooks

This commit is contained in:
Hypolite Petovan 2021-10-02 16:00:06 -04:00
parent bd42f5757f
commit 66fec8944f
4 changed files with 74 additions and 2 deletions

View file

@ -520,6 +520,24 @@ Hook data:
- **contact** (input): the remote contact (uid = local revoking user id) array. - **contact** (input): the remote contact (uid = local revoking user id) array.
- **result** (output): a boolean value indicating wether the operation was successful or not. - **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 ## 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. 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.
@ -777,7 +795,9 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('support_follow', $hook_data); Hook::callAll('support_follow', $hook_data);
Hook::callAll('support_revoke_follow', $hook_data); Hook::callAll('support_revoke_follow', $hook_data);
Hook::callAll('unfollow', $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 ### src/Core/StorageManager

View file

@ -418,7 +418,9 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('support_follow', $hook_data); Hook::callAll('support_follow', $hook_data);
Hook::callAll('support_revoke_follow', $hook_data); Hook::callAll('support_revoke_follow', $hook_data);
Hook::callAll('unfollow', $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 ### src/Core/StorageManager

View file

@ -287,4 +287,46 @@ class Protocol
return $hook_data['result']; 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'];
}
} }

View file

@ -23,6 +23,7 @@ namespace Friendica\Model\Contact;
use Exception; use Exception;
use Friendica\Core\Logger; use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Database\DBA; use Friendica\Database\DBA;
@ -145,6 +146,13 @@ class User
return; return;
} }
$contact = Contact::getById($cdata['public']);
if ($blocked) {
Protocol::block($contact);
} else {
Protocol::unblock($contact);
}
if ($cdata['user'] != 0) { if ($cdata['user'] != 0) {
DBA::update('contact', ['blocked' => $blocked], ['id' => $cdata['user'], 'pending' => false]); DBA::update('contact', ['blocked' => $blocked], ['id' => $cdata['user'], 'pending' => false]);
} }