X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FCore_group.php;h=613a77d07a69dedf225aab179d9e214e172ade47;hp=fb7392c9d3470e7093f2c750eccb3c11118fd1a0;hb=HEAD;hpb=59f62003b75a74d7b4924e3abeeb20888945b8cb diff --git a/DataObjects/Core_group.php b/DataObjects/Core_group.php index fb7392c9..54f83f55 100644 --- a/DataObjects/Core_group.php +++ b/DataObjects/Core_group.php @@ -45,6 +45,10 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $v = $this->escape($q['query']['name_starts']); $this->whereAdd("{$this->tableName()}.name like '{$v}%'"); } + if (!empty($q['query']['name_contains'])) { + $v = $this->escape($q['query']['name_contains']); + $this->whereAdd("{$this->tableName()}.name like '%{$v}%'"); + } if(!empty($q['_count_member_by_name'])){ @@ -76,17 +80,17 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $this->selectAdd(" ( - SELECT COUNT(${cgm}.user_id) + SELECT COUNT({$cgm}.user_id) FROM {$cgm} LEFT JOIN {$cp} ON - ${cp}.id = {$cgm}.user_id + {$cp}.id = {$cgm}.user_id WHERE - ${cgm}.group_id = {$this->tableName()}.id + {$cgm}.group_id = {$this->tableName()}.id AND - ${cp}.active = 1 + {$cp}.active = 1 ) AS group_member_count "); @@ -105,14 +109,18 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $roo->jerr("missing group id"); } - print_R(q['user_ids']);exit; - foreach(explode(',', $q['user_ids']) as $uid) { + + $user_ids = explode(',', $q['user_ids']); + + foreach($user_ids as $uid) { + switch($q['_action']) { case 'add': $g->addMember($uid,$roo); break; case 'sub': - $g->removeMember($uid); + + $g->removeMember($uid, $roo); break; default: $roo->jerr('invalid action'); @@ -121,8 +129,18 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $roo->jok('updated'); } + if (isset($q['display_name']) && !isset($q['name']) && !$this->is_system) { + $this->name = $q['display_name']; + } } + + function beforeUpdate($old, $q,$roo) + { + if (isset($q['display_name']) && empty($q['name']) && !$this->is_system) { + $this->name = $q['display_name']; + } + } function beforeDelete() @@ -207,17 +225,22 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $gm = DB_Dataobject::factory('core_group_member'); $gm->group_id = $this->id; $gm->user_id = is_object($person) ? $person->id : $person; + if (!$gm->count()) { $gm->insert(); } } - 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(); }