X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FProjectDirectory.php;h=f494e3c6f44545e40574c068904516fa24ea0ad4;hp=aeb21f2efc4572d0c964fb08831f350cbce1792e;hb=HEAD;hpb=e1988436297b259cf5525078904d2b42752d3575 diff --git a/DataObjects/ProjectDirectory.php b/DataObjects/ProjectDirectory.php index aeb21f2e..f494e3c6 100644 --- a/DataObjects/ProjectDirectory.php +++ b/DataObjects/ProjectDirectory.php @@ -1,8 +1,11 @@ get($this->person_id); return $p; } @@ -33,9 +34,10 @@ class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject function toEventString() { $p = $this->person(); // this is weird... company is in the person.. - effieciency?? - $c = DB_DataObject::factory('Companies'); + // for seaching?? + $c = DB_DataObject::factory('core_company'); $c->get($this->company_id); - $pr = DB_DataObject::factory('Projects'); + $pr = DB_DataObject::factory('core_project'); $pr->get($this->project_id); return $pr->code . ' '. $p->name . '('. $c->name .')'; @@ -60,10 +62,56 @@ class Pman_Core_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('core_project'); + $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({$this->tableName()}.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); + //echo '
';print_R($this);exit;
         
+        if (is_array($pr)) {
+            $c->whereAddIn("{$this->tableName()}.project_id", $pr, 'int');
+        } else {
+            $c->project_id = $pr->id;
+        }
+        $c->selectAdd();
+        $c->selectAdd("{$this->tableName()}.person_id as person_id");
+        return $c->fetchAll('person_id');
         
-        
+         
     }
+    
+    
     function checkPerm($lvl, $au) 
     {
         return $au->hasPerm('Documents.Project_Directory', $lvl);
@@ -74,7 +122,7 @@ class Pman_Core_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;
@@ -83,7 +131,7 @@ class Pman_Core_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,
         ));
         
@@ -121,13 +169,13 @@ class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject
         }
         
         
-        $pr = DB_DataObject::factory('Projects');
+        $pr = DB_DataObject::factory('core_project');
         $pr->whereAdd("Projects.type IN ('N','X')");
         $prjs = $pr->fetchAll('id');
         
         
         $pd = DB_DataObject::factory('ProjectDirectory');
-        $pd->joinAdd(DB_DataObject::factory('Projects'), 'LEFT');
+        $pd->joinAdd(DB_DataObject::factory('core_project'), 'LEFT');
         $pd->whereAdd("Projects.type NOT IN ('N','X')");
         $pd->person_id = $au->id;