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.
|
- **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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue