X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FGroup.php;h=17e0a18e2e49dd0c8019f2779dcb2b541898e5c8;hb=48087136680d345e9222c974ae983262b319d308;hp=5376b817fc6ccef33bd74089cdbfd028bcae148e;hpb=fb7f7435c080e15bdafbbcbb5a3dfd94ef8dd952;p=friendica.git diff --git a/src/Model/Group.php b/src/Model/Group.php index 5376b817fc..17e0a18e2e 100644 --- a/src/Model/Group.php +++ b/src/Model/Group.php @@ -1,6 +1,6 @@ $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]); } /** @@ -505,10 +477,17 @@ class Group $groupedit = null; } + if ($each == 'group') { + $count = DBA::count('group_member', ['gid' => $group['id']]); + $group_name = sprintf('%s (%d)', $group['name'], $count); + } else { + $group_name = $group['name']; + } + $display_groups[] = [ 'id' => $group['id'], 'cid' => $cid, - 'text' => $group['name'], + 'text' => $group_name, 'href' => $each . '/' . $group['id'], 'edit' => $groupedit, 'selected' => $selected,