]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Group.php
Initialize $permissions variable in ActivityPub\Transmitter::fetchPermissionBlockFrom...
[friendica.git] / src / Model / Group.php
index 889f8269d1a2646820c2d5c32d03f2ce904a2330..f6700a4566ffcc4ddc1ea61e5a18ad127ba3a18f 100644 (file)
@@ -25,8 +25,10 @@ use Friendica\BaseModule;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Database\Database;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Network\HTTPException;
 
 /**
  * functions for interacting with the group database table
@@ -251,28 +253,6 @@ class Group
                return $return;
        }
 
-       /**
-        * Mark a group as deleted based on its name
-        *
-        * @param int    $uid
-        * @param string $name
-        * @return bool
-        * @throws \Exception
-        * @deprecated Use Group::remove instead
-        *
-        */
-       public static function removeByName($uid, $name)
-       {
-               $return = false;
-               if (!empty($uid) && !empty($name)) {
-                       $gid = self::getIdByName($uid, $name);
-
-                       $return = self::remove($gid);
-               }
-
-               return $return;
-       }
-
        /**
         * Adds a contact to a group
         *
@@ -281,21 +261,24 @@ class Group
         * @return boolean
         * @throws \Exception
         */
-       public static function addMember($gid, $cid)
+       public static function addMember(int $gid, int $cid): bool
        {
                if (!$gid || !$cid) {
                        return false;
                }
 
-               $row_exists = DBA::exists('group_member', ['gid' => $gid, 'contact-id' => $cid]);
-               if ($row_exists) {
-                       // Row already existing, nothing to do
-                       $return = true;
-               } else {
-                       $return = DBA::insert('group_member', ['gid' => $gid, 'contact-id' => $cid]);
+               // @TODO Backward compatibility with user contacts, remove by version 2022.03
+               $group = DBA::selectFirst('group', ['uid'], ['id' => $gid]);
+               if (empty($group)) {
+                       throw new HTTPException\NotFoundException('Group not found.');
                }
 
-               return $return;
+               $cdata = Contact::getPublicAndUserContactID($cid, $group['uid']);
+               if (empty($cdata['user'])) {
+                       throw new HTTPException\NotFoundException('Invalid contact.');
+               }
+
+               return DBA::insert('group_member', ['gid' => $gid, 'contact-id' => $cdata['user']], Database::INSERT_IGNORE);
        }
 
        /**
@@ -306,35 +289,24 @@ class Group
         * @return boolean
         * @throws \Exception
         */
-       public static function removeMember($gid, $cid)
+       public static function removeMember(int $gid, int $cid): bool
        {
                if (!$gid || !$cid) {
                        return false;
                }
 
-               $return = DBA::delete('group_member', ['gid' => $gid, 'contact-id' => $cid]);
-
-               return $return;
-       }
-
-       /**
-        * Removes a contact from a group based on its name
-        *
-        * @param int    $uid
-        * @param string $name
-        * @param int    $cid
-        * @return boolean
-        * @throws \Exception
-        * @deprecated Use Group::removeMember instead
-        *
-        */
-       public static function removeMemberByName($uid, $name, $cid)
-       {
-               $gid = self::getIdByName($uid, $name);
+               // @TODO Backward compatibility with user contacts, remove by version 2022.03
+               $group = DBA::selectFirst('group', ['uid'], ['id' => $gid]);
+               if (empty($group)) {
+                       throw new HTTPException\NotFoundException('Group not found.');
+               }
 
-               $return = self::removeMember($gid, $cid);
+               $cdata = Contact::getPublicAndUserContactID($cid, $group['uid']);
+               if (empty($cdata['user'])) {
+                       throw new HTTPException\NotFoundException('Invalid contact.');
+               }
 
-               return $return;
+               return DBA::delete('group_member', ['gid' => $gid, 'contact-id' => $cid]);
        }
 
        /**