name; } function beforeDelete() { $x = DB_DataObject::factory('Groups'); $x->query("DELETE FROM Group_Rights WHERE group_id = {$this->id}"); $x->query("DELETE FROM Group_Members WHERE group_id = {$this->id}"); } /** * check who is trying to access this. false == access denied.. */ function checkPerm($lvl, $au) { return $au->hasPerm("Core.Groups", $lvl); } function onUpdate($old, $req, $roo) { $this->ensureLeaderMembership($roo); } function onInsert($req, $roo) { $this->ensureLeaderMembership($roo); } function ensureLeaderMembership($roo) { // groups - make sure the leader is a member... if (!$this->type || !$this->leader) { return true; } $pi = DB_DataObject::factory(empty($ff->Pman['authTable']) ? 'Person' : $ff->Pman['authTable']); $pi->get($this->leader); $p = DB_DataObject::factory('Group_Members'); $p->group_id = $this->id; $p->user_id = $this->leader; //$p->type = 1; //??????? if (!$p->count()) { $p->insert(); $roo->addEvent("ADD", $p, $this->toEventString(). " Added " . $pi->toEventString()); } } function memberIds() { $gm = DB_Dataobject::factory('Group_Members'); $gm->group_id = $this->id; return $gm->fetchAll('user_id'); } function addMember($person) { $gm = DB_Dataobject::factory('Group_Members'); $gm->group_id = $this->id; $gm->user_id = $person->id; if (!$gm->count()) { $gm->insert(); } } function members() { $ids = $this->memberIds(); if (!$ids) { return array(); } $p = DB_Dataobject::factory(empty($ff->Pman['authTable']) ? 'Person' : $ff->Pman['authTable']); $p->whereAdd('id IN ('. implode(',', $ids) .')'); return $p->fetchAll(); } function postListFilter($ar, $au, $req) { $ret[] = array( 'id' => 0, 'name' => 'EVERYONE'); $ret[] = array( 'id' => -1, 'name' => 'NOT_IN_GROUP'); return array_merge($ret, $ar); //$ret[] = array( 'id' => 999999, 'name' => 'ADMINISTRATORS'); } }