DataObjects/Core_domain.php
[Pman.Core] / DataObjects / Group_members.php
1 <?php
2 /**
3  * Table Definition for Group_Members
4  */
5 require_once 'DB/DataObject.php';
6
7 class Pman_Core_DataObjects_Group_members extends DB_DataObject 
8 {
9     ###START_AUTOCODE
10     /* the code below is auto generated do not remove the above tag */
11
12     public $__table = 'group_members';                   // table name
13     public $group_id;                        // int(11)  
14     public $id;                              // int(11)  not_null primary_key auto_increment
15     public $user_id;                         // int(11)  not_null
16
17     
18     /* the code above is auto generated do not remove the tag below */
19     ###END_AUTOCODE
20     
21     var $inAdmin = false;
22     
23     
24     function change($person, $group, $state)
25     {
26         $gm = DB_DataObject::factory('group_members');
27         $gm->group_id = $group->id;
28         $gm->user_id = $person->id;
29         $gm->find(true);
30         if ($state) {
31             if (!$gm->id) {
32                 $gm->insert();
33             }
34             return;
35         }
36         // remove..
37         if ($gm->id) {
38             $gm->delete();
39         }
40         
41     }
42     
43     /**
44      * Get a list of memberships for a person
45      * @param Pman_Core_DataObjects_Person $person who
46      * @param String column to fetch.. eg. group_id or 'name'
47      *
48      */
49     
50     
51     function listGroupMembership($person, $arrayof = 'group_id') 
52     {
53         $this->inAdmin = false;
54         $t = clone($this);
55         //DB_DataObject::debugLevel(1);
56          
57         $grp = DB_DataObject::factory('Groups');
58         $t->joinAdd($grp , 'LEFT');
59         //$person->id = (int)$person->id;
60         $t->whereAdd("
61             user_id = {$person->id}
62         ");
63         $t->selectAdd();
64         $t->selectAdd("distinct(group_id), {$grp->tableName()}.name as name");
65         $t->whereAdd('group_id IS NOT NULL');
66         
67         $t->find();
68         
69         $ret = array() ;
70        // $ret = $arrayof == 'group_id' ? array(0) : array();
71         // default member of 'All groups'!!
72         
73         while ($t->fetch()) {
74             $ret[] = $t->$arrayof;
75             if ($t->name == 'Administrators') { /// mmh... bit risky?
76                 $this->inAdmin = true;
77             }
78         }
79         if ($arrayof == 'group_id' && !count($ret)) {
80             $ret = array(0); /// default if they are not a member of any group.
81         }
82         //var_dump($ret);
83         return $ret;
84         
85     }
86     function checkPerm($lvl, $au) 
87     {
88         return false;
89     } 
90    
91 }