X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=DataObjects%2FProjectDirectory.php;h=bb0ad337733426f70834c50997fb6fff1352393c;hb=ea0da667580412dfd01ac990d5d2d7edd65bbe8e;hp=4df0092d469b89eab7f8efc379113ebf3ab2b91d;hpb=894596f0b0889b6f5891e9cb4a23f7e7b3bbc508;p=Pman.Core diff --git a/DataObjects/ProjectDirectory.php b/DataObjects/ProjectDirectory.php index 4df0092d..bb0ad337 100644 --- a/DataObjects/ProjectDirectory.php +++ b/DataObjects/ProjectDirectory.php @@ -4,7 +4,7 @@ */ require_once 'DB/DataObject.php'; -class Pman_Documents_DataObjects_ProjectDirectory extends DB_DataObject +class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -14,8 +14,6 @@ class Pman_Documents_DataObjects_ProjectDirectory extends DB_DataObject public $project_id; // int(11) not_null public $person_id; // int(11) not_null public $ispm; // int(11) not_null - public $office_id; // int(11) - public $company_id; // int(11) public $role; // string(16) not_null @@ -23,9 +21,17 @@ class Pman_Documents_DataObjects_ProjectDirectory extends DB_DataObject ###END_AUTOCODE - function toEventString() { + function person() + { $p = DB_DataObject::factory('Person'); $p->get($this->person_id); + return $p; + } + + function toEventString() { + $p = $this->person(); + // this is weird... company is in the person.. - effieciency?? + // for seaching?? $c = DB_DataObject::factory('Companies'); $c->get($this->company_id); $pr = DB_DataObject::factory('Projects'); @@ -53,10 +59,53 @@ class Pman_Documents_DataObjects_ProjectDirectory extends DB_DataObject $this->office_id = $pe->office_id; $this->role = $pe->role; $this->insert(); + + } + /** + * project id's for a user. + * @param DB_DataObject_Core_Person|array - who, or list of people. + * @return array id's of the project they are a member of.. + */ + function projects($au) + { + if (empty($au)) { + $p = DB_DataObject::Factory('Projects'); + $p->get('code', '*PUBLIC'); + return array($p->id); + + } + $c = clone ($this); + + if (is_array($au)) { + $c->whereAddIn('person_id', $au, 'int'); + } else { + $c->person_id = $au->id; + } + $c->selectAdd(); + // people may have multiple roles for a project.. + $c->selectAdd('distinct(project_id) as project_id'); + return $c->fetchAll('project_id'); + } + /** + * project id's for a user. + * @param DB_DataObject_Core_Person - who + * @return array id's of the project they are a member of.. + */ + function people($pr) + { + $c = clone ($this); + $c->autoJoin(); + if (is_array($pr)) { + $c->whereAddIn('project_id', $pr, 'int'); + } else { + $c->project_id = $pr->id; + } + return $c->fetchAll('person_id'); - - + } + + function checkPerm($lvl, $au) { return $au->hasPerm('Documents.Project_Directory', $lvl); @@ -67,7 +116,7 @@ class Pman_Documents_DataObjects_ProjectDirectory extends DB_DataObject if ($this->id && ($this->project_id == $roo->old->project_id) && - ($this->person_id == $roo->old->person_id) && + ($this->person_id == $roo->old->person_id) && ($this->company_id == $roo->old->company_id) ) { return true; @@ -76,7 +125,7 @@ class Pman_Documents_DataObjects_ProjectDirectory extends DB_DataObject $xx = DB_Dataobject::factory('ProjectDirectory'); $xx->setFrom(array( 'project_id' => $this->project_id, - 'person_id' => $this->person_id, + 'person_id' => $this->person_id, 'company_id' => $this->company_id, ));