From: Alan Knowles Date: Thu, 17 Mar 2011 14:32:04 +0000 (+0800) Subject: DataObjects/ProjectDirectory.php X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=commitdiff_plain;h=894596f0b0889b6f5891e9cb4a23f7e7b3bbc508 DataObjects/ProjectDirectory.php --- diff --git a/DataObjects/ProjectDirectory.php b/DataObjects/ProjectDirectory.php new file mode 100644 index 00000000..4df0092d --- /dev/null +++ b/DataObjects/ProjectDirectory.php @@ -0,0 +1,147 @@ +get($this->person_id); + $c = DB_DataObject::factory('Companies'); + $c->get($this->company_id); + $pr = DB_DataObject::factory('Projects'); + $pr->get($this->project_id); + + return $pr->code . ' '. $p->name . '('. $c->name .')'; + } + + function personMemberOf($pe, $pr) { + $this->person_id = $pe->id; + $this->project_id = $pr->id; + $this->limit(1); + if ($this->find(true)) { + return true; + } + return false; + } + + function ensureProjectMember($pr, $pe) // used where? + { + if ($this->personMemberOf($pe, $pr)) { + return; + } + $this->company_id = $pe->company_id; + $this->office_id = $pe->office_id; + $this->role = $pe->role; + $this->insert(); + + + + } + function checkPerm($lvl, $au) + { + return $au->hasPerm('Documents.Project_Directory', $lvl); + } + function setFromRoo($ar,$roo) + { + $this->setFrom($ar); + + if ($this->id && + ($this->project_id == $roo->old->project_id) && + ($this->person_id == $roo->old->person_id) && + ($this->company_id == $roo->old->company_id) ) + { + return true; + } + + $xx = DB_Dataobject::factory('ProjectDirectory'); + $xx->setFrom(array( + 'project_id' => $this->project_id, + 'person_id' => $this->person_id, + 'company_id' => $this->company_id, + )); + + if ($xx->count()) { + return "Duplicate entry found Project Directory entry"; + } + return true; + + } + function applyFilters($q, $au) + { + //DB_DAtaObject::debugLevel(1); var_dump($q); + + // otherwise only the project they are involved with.. + + // can see - their projects + their personal mail... + if (!empty($q['project_id_ar'])) { + // can filter projects! + $this->whereAddIn('ProjectDirectory.project_id', explode(',',$q['project_id_ar']), 'int'); + } + + + if (!empty($q['query']['company_ids'])) { + $this->whereAddIn('ProjectDirectory.company_id', explode(',',$q['query']['company_ids']), 'int'); + } + + // whos should they see as far as personal contacts.!?!? + // their projects... and their mail or.. just their mail if no projects.. + + + /// ------------ PERMISSION FILTERERIN!!!!!! + + if ($au->hasPerm('Core.Projects_All', 'S')) { + return; // can see it all!!! + } + + + $pr = DB_DataObject::factory('Projects'); + $pr->whereAdd("Projects.type IN ('N','X')"); + $prjs = $pr->fetchAll('id'); + + + $pd = DB_DataObject::factory('ProjectDirectory'); + $pd->joinAdd(DB_DataObject::factory('Projects'), 'LEFT'); + $pd->whereAdd("Projects.type NOT IN ('N','X')"); + $pd->person_id = $au->id; + + $prjs = array_merge($prjs, $pd->fetchAll('project_id')); + if (count($prjs)) { + $this->whereAdd(" + (ProjectDirectory.project_id IN (".implode(',', $prjs).")) + + + "); + } else { + $this->whereAdd("1=0"); // can see nothing!!! + } + + + + + + + } + + + +}