handle empty companies
[Pman.Core] / DataObjects / Core_person.php
index 12a9793..5160b4e 100644 (file)
@@ -56,7 +56,8 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
  
     function owner()
     {
-        $p = DB_DataObject::Factory($this->tableName());
+        // this might be a Person in some old code? 
+        $p = DB_DataObject::Factory('core_person');
         $p->get($this->owner_id);
         return $p;
     }
@@ -601,6 +602,9 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
     
     function company()
     {
+        if (empty($this->company_id)) {
+            return false;
+        }
         $x = DB_DataObject::factory('core_company');
         $x->autoJoin();
         $x->get($this->company_id);
@@ -640,14 +644,12 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
     
     function authUserArray()
     {
-        
         $aur = $this->toArray();
         
         if ($this->id < 1) {
             return $aur;
         }
         
-        
         //DB_DataObject::debugLevel(1);
         $c = DB_Dataobject::factory('core_company');
         $im = DB_Dataobject::factory('Images');
@@ -697,6 +699,15 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
         $oath_require = $s->lookup('core', 'two_factor_auth_required');
         $aur['require_oath'] = $oath_require ?  $oath_require->val : 0;
         
+        $aur['core_person_settings'] = array();
+                
+        $core_person_settings = DB_DataObject::factory('core_person_settings');
+        $core_person_settings->setFrom(array(
+            'person_id' => $this->id
+        ));
+        
+        $aur['core_person_settings'] = $core_person_settings->fetchAll('scope', 'data');
+        
         return $aur;
     }
     
@@ -1126,13 +1137,33 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
                 LENGTH({$this->tableName()}.oath_key) AS length_oath_key
             ");
         }
+        if (isset($q['_with_group_membership'])) {
+            $this->selectAddGroupMemberships();
+        }
         
-        
+    }
+    
+    function selectAddGroupMemberships()
+    {
+        $this->selectAdd("
+            
+            COALESCE((
+                SELECT
+                    GROUP_CONCAT(  core_group.name separator  '\n')
+                FROM
+                    core_group_member
+                LEFT JOIN
+                    core_group
+                ON
+                    core_group.id = core_group_member.group_id
+                WHERE
+                    core_group_member.user_id = core_person.id
+            ), '')  as member_of");
     }
     
     function setFromRoo($ar, $roo)
     {
-        $this->setFrom($ar);
+        $this->setFrom($ar); 
         
         if(!empty($ar['_enable_oath_key'])){
             $oath_key = $this->generateOathKey();
@@ -1153,7 +1184,7 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
         }
         // this only applies to our owner company..
         $c = $this->company();
-        if (empty($c->comptype_name) || $c->comptype_name != 'OWNER') {
+        if (empty($c) || empty($c->comptype_name) || $c->comptype_name != 'OWNER') {
             return true;
         }