fix #8131 - chinese translations
[Pman.Core] / DataObjects / ProjectDirectory.php
index 5f37670..f494e3c 100644 (file)
@@ -1,8 +1,11 @@
 <?php
 /**
  * Table Definition for ProjectDirectory
+ *
+ * Note - projectdirectory is linked to this - due to an issue with postgres - we should keep to lowercase names only for tables..
+ * 
  */
-require_once 'DB/DataObject.php';
+class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php';
 
 class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject 
 {
@@ -23,7 +26,7 @@ class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject
     
     function person()
     {
-        $p = DB_DataObject::factory('Person');
+        $p = DB_DataObject::factory('core_person');
         $p->get($this->person_id);
         return $p;
     }
@@ -32,9 +35,9 @@ class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject
         $p = $this->person();
         // this is weird... company is in the person.. - effieciency??
         // for seaching??
-        $c = DB_DataObject::factory('Companies');
+        $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 .')';
@@ -63,13 +66,49 @@ class Pman_Core_DataObjects_ProjectDirectory extends DB_DataObject
     }
     /**
      * project id's for a user.
-     * @param DB_DataObject_Core_Person - who
+     * @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)
     {
-        $this->person_id = $au->id;
-        return $this->fetchAll('project_id');
+        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 '<PRE>';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');
+        
+         
     }
     
     
@@ -83,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;
@@ -92,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,
         ));
         
@@ -130,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;