X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FCore_group.php;h=16d12c031545327ee5909db005941ea6651b2a95;hp=270b384b8e240f298896c414324b3720773c41fc;hb=5d4ac076dc4f620fbb91944eead3e0af66216a03;hpb=24025411ae571d4f8f7546b05469d9ea624ff15f diff --git a/DataObjects/Core_group.php b/DataObjects/Core_group.php index 270b384b..16d12c03 100644 --- a/DataObjects/Core_group.php +++ b/DataObjects/Core_group.php @@ -12,7 +12,7 @@ * NOTE - used to be called Groups .... * */ -require_once 'DB/DataObject.php'; +class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php'; class Pman_Core_DataObjects_Core_group extends DB_DataObject { @@ -50,6 +50,38 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject return $this->name; } + function beforeInsert($q,$roo) + { + if (isset($q['_action'])) { + // add // sub... + $g = clone($this); + if (!$g->get($q['group_id'])) { + $roo->jerr("missing group id"); + + } + foreach(explode(',', $q['user_ids']) as $uid) { + switch($q['_action']) { + case 'add': + $g->addMember($uid); + break; + case 'sub': + $g->removeMember($uid); + break; + default: + $roo->jerr('invalid action'); + } + } + $roo->jok('updated'); + + + + + } + + + } + + function beforeDelete() { $x = DB_DataObject::factory('core_group_right'); @@ -111,17 +143,34 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject return $gm->fetchAll('user_id'); } - + function isMember($person) + { + $gm = DB_Dataobject::factory('core_group_member'); + $gm->group_id = $this->id; + $gm->user_id = is_object($person) ? $person->id : $person; + return $gm->count(); + } function addMember($person) { $gm = DB_Dataobject::factory('core_group_member'); $gm->group_id = $this->id; - $gm->user_id = $person->id; + $gm->user_id = is_object($person) ? $person->id : $person; if (!$gm->count()) { $gm->insert(); } } + + function removeMember($person) + { + $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->delete(); + } + } + /** * * grab a list of members - default is the array of person objects.. @@ -140,6 +189,8 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject // groups databse is hard coded to person.. so this should not be used for other tables.???? $p = DB_Dataobject::factory( 'core_person' ); + + $p->whereAdd('id IN ('. implode(',', $ids) .')'); $p->active = 1; return $p->fetchAll($what); @@ -160,7 +211,6 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject function lookUpMembers($name, $what=false) { - print_r($name);exit; if (!$this->get('name', $name)) { return array(); } @@ -179,7 +229,7 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject function postListFilter($ar, $au, $req) { - if(!empty($req['_direct_return'])){ + if(empty($req['_add_everyone'])){ return $ar; } @@ -196,11 +246,23 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject $g->type = 0; $g->name = 'Administrators'; if ($g->count()) { - return; + $g->find(true);; + } else { + $g->insert(); + $gr = DB_DataObject::factory('core_group_right'); + $gr->genDefault(); + } + $m = $g->members(); + if (empty($m)) { + $p = DB_DAtaObject::factory('core_person'); + $p->orderBy('id ASC'); + $p->limit(1); + if ($p->find(true)) { + $g->addMember($p); + } + + } - $g->insert(); - $gr = DB_DataObject::factory('core_group_right'); - $gr->genDefault(); } function initDatabase($roo, $data)