1
0
Fork 0

Add block and unblock hooks

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

View file

@ -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'];
}
}

View file

@ -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]);
}