Fix #6889 - allow managing groups inside of dms
authorAlan Knowles <alan@roojs.com>
Thu, 22 Jul 2021 03:39:07 +0000 (11:39 +0800)
committerAlan Knowles <alan@roojs.com>
Thu, 22 Jul 2021 03:39:07 +0000 (11:39 +0800)
DataObjects/Core_group.php
DataObjects/Core_group_member.php
DataObjects/Core_person.php

index a6b3757..f9b9156 100644 (file)
@@ -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();
         }
index 42ebc1b..a652273 100755 (executable)
@@ -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
index 09ea253..2a3ac07 100644 (file)
@@ -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");
     }