Add block and unblock hooks
This commit is contained in:
parent
bd42f5757f
commit
66fec8944f
4 changed files with 74 additions and 2 deletions
|
@ -520,6 +520,24 @@ Hook data:
|
|||
- **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.
|
||||
|
@ -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_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
|
||||
|
||||
|
|
|
@ -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_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
|
||||
|
||||
|
|
|
@ -287,4 +287,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'];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ namespace Friendica\Model\Contact;
|
|||
|
||||
use Exception;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Core\Protocol;
|
||||
use Friendica\Core\System;
|
||||
use Friendica\Database\Database;
|
||||
use Friendica\Database\DBA;
|
||||
|
@ -145,6 +146,13 @@ class User
|
|||
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]);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue