3 * Table Definition for ProjectDirectory
5 require_once 'DB/DataObject.php';
7 class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject
10 /* the code below is auto generated do not remove the above tag */
12 public $__table = 'ProjectDirectory'; // table name
13 public $id; // int(11) not_null primary_key auto_increment
14 public $project_id; // int(11) not_null
15 public $person_id; // int(11) not_null
16 public $ispm; // int(11) not_null
17 public $office_id; // int(11)
18 public $company_id; // int(11)
19 public $role; // string(16) not_null
22 /* the code above is auto generated do not remove the tag below */
28 $p = DB_DataObject::factory('Person');
29 $p->get($this->person_id);
33 function toEventString() {
35 // this is weird... company is in the person.. - effieciency??
37 $c = DB_DataObject::factory('Companies');
38 $c->get($this->company_id);
39 $pr = DB_DataObject::factory('Projects');
40 $pr->get($this->project_id);
42 return $pr->code . ' '. $p->name . '('. $c->name .')';
45 function personMemberOf($pe, $pr) {
46 $this->person_id = $pe->id;
47 $this->project_id = $pr->id;
49 if ($this->find(true)) {
55 function ensureProjectMember($pr, $pe) // used where?
57 if ($this->personMemberOf($pe, $pr)) {
60 $this->company_id = $pe->company_id;
61 $this->office_id = $pe->office_id;
62 $this->role = $pe->role;
68 function checkPerm($lvl, $au)
70 return $au->hasPerm('Documents.Project_Directory', $lvl);
72 function setFromRoo($ar,$roo)
77 ($this->project_id == $roo->old->project_id) &&
78 ($this->person_id == $roo->old->person_id) &&
79 ($this->company_id == $roo->old->company_id) )
84 $xx = DB_Dataobject::factory('ProjectDirectory');
86 'project_id' => $this->project_id,
87 'person_id' => $this->person_id,
88 'company_id' => $this->company_id,
92 return "Duplicate entry found Project Directory entry";
97 function applyFilters($q, $au)
99 //DB_DAtaObject::debugLevel(1); var_dump($q);
101 // otherwise only the project they are involved with..
103 // can see - their projects + their personal mail...
104 if (!empty($q['project_id_ar'])) {
105 // can filter projects!
106 $this->whereAddIn('ProjectDirectory.project_id', explode(',',$q['project_id_ar']), 'int');
110 if (!empty($q['query']['company_ids'])) {
111 $this->whereAddIn('ProjectDirectory.company_id', explode(',',$q['query']['company_ids']), 'int');
114 // whos should they see as far as personal contacts.!?!?
115 // their projects... and their mail or.. just their mail if no projects..
118 /// ------------ PERMISSION FILTERERIN!!!!!!
120 if ($au->hasPerm('Core.Projects_All', 'S')) {
121 return; // can see it all!!!
125 $pr = DB_DataObject::factory('Projects');
126 $pr->whereAdd("Projects.type IN ('N','X')");
127 $prjs = $pr->fetchAll('id');
130 $pd = DB_DataObject::factory('ProjectDirectory');
131 $pd->joinAdd(DB_DataObject::factory('Projects'), 'LEFT');
132 $pd->whereAdd("Projects.type NOT IN ('N','X')");
133 $pd->person_id = $au->id;
135 $prjs = array_merge($prjs, $pd->fetchAll('project_id'));
138 (ProjectDirectory.project_id IN (".implode(',', $prjs)."))
143 $this->whereAdd("1=0"); // can see nothing!!!