]> git.mxchange.org Git - friendica.git/commitdiff
Add block and unblock hooks
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 2 Oct 2021 20:00:06 +0000 (16:00 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 2 Oct 2021 21:30:40 +0000 (17:30 -0400)
doc/Addons.md
doc/de/Addons.md
src/Core/Protocol.php
src/Model/Contact/User.php

index ec82452d54b65d14c80c22786403277d3da756ec..6fa87c953ccb5c1d640a4be8a04b7fd549bc6e03 100644 (file)
@@ -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
 
index e7fecc29a510f1fb50d8a2f6feac0eb6b473e8e6..64e3e37ba61ed177cd8adc4d90eeae25738937f8 100644 (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_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
 
index 66c74ccc9195d6e71e0e7e2f09a38f0b07c6051f..a01e632bfacd73a94ffc3578c54e2756b3d694d4 100644 (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'];
+       }
 }
index eb0b5af096aa73aed342bcb51783703fbc0b082b..7d6ce17dac82b2fcd3539dce7c6f21b96a506131 100644 (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]);
                }