From: Alan Knowles Date: Thu, 22 Jul 2021 03:39:07 +0000 (+0800) Subject: Fix #6889 - allow managing groups inside of dms X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=commitdiff_plain;h=cb77b2a79891280a5b5a5f4580d7af9b8bd03d1a Fix #6889 - allow managing groups inside of dms --- diff --git a/DataObjects/Core_group.php b/DataObjects/Core_group.php index a6b37575..f9b91561 100644 --- a/DataObjects/Core_group.php +++ b/DataObjects/Core_group.php @@ -119,7 +119,8 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $g->addMember($uid,$roo); break; case 'sub': - $g->removeMember($uid); + + $g->removeMember($uid, $roo); break; default: $roo->jerr('invalid action'); @@ -220,12 +221,16 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject } } - function removeMember($person) + function removeMember($person, $roo) { $gm = DB_Dataobject::factory('core_group_member'); $gm->group_id = $this->id; $gm->user_id = is_object($person) ? $person->id : $person; - + $au = $roo->getAuthUser(); + if ($gm->group()->name == 'Administrators' && $gm->user_id = $au->id) { + $roo->jerr("You can not remove yourself from the admin group"); + } + if ($gm->find(true)) { $gm->delete(); } diff --git a/DataObjects/Core_group_member.php b/DataObjects/Core_group_member.php index 42ebc1b5..a652273f 100755 --- a/DataObjects/Core_group_member.php +++ b/DataObjects/Core_group_member.php @@ -42,6 +42,14 @@ class Pman_Core_DataObjects_Core_group_member extends DB_DataObject } + function group() + { + $grp = DB_DataObject::factory('core_group'); + $grp->get($this->group_id); + return $grp; + + } + /** * Get a list of memberships for a person * @param Pman_Core_DataObjects_Person $person who diff --git a/DataObjects/Core_person.php b/DataObjects/Core_person.php index 09ea2537..2a3ac074 100644 --- a/DataObjects/Core_person.php +++ b/DataObjects/Core_person.php @@ -1222,7 +1222,7 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject COALESCE(( SELECT - GROUP_CONCAT( core_group.name separator '\n') + GROUP_CONCAT( CASE WHEN core_group.display_name = '' THEN core_group.name ELSE core_group.display_name END separator '\n') FROM core_group_member LEFT JOIN @@ -1231,6 +1231,8 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject core_group.id = core_group_member.group_id WHERE core_group_member.user_id = core_person.id + ORDER BY + core_group.display_name ASC ), '') as member_of"); }