fix #8131 - chinese translations
[Pman.Core] / DataObjects / Events.php
index 3843b8d..a04484c 100644 (file)
@@ -54,7 +54,6 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                 $this->selectAs();
 
                 $this->selectAs($jt, 'person_id_%s', 'join_person_id_id');
-
                 if (method_exists($jt,'nameColumn')) {
                     $this->selectAdd("join_person_id_id.{$jt->nameColumn()} as person_id_name");
                 }
@@ -107,13 +106,6 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         }
         */
         
-        if (!$au->hasPerm("Admin.Admin_Tab", 'S')) {
-            //DB_DataObject::DebugLevel(1);
-            // they can only view their changes..
-            $this->whereAdd("($tn.person_id = {$au->id} OR $tn.person_id = 0)");
-//            $this->person_id = $au->id;
-            
-        }
         // _join = tablename,tablename...
         
         /// on_table=cohead
@@ -157,7 +149,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             //DB_DataObject::DebugLevel(1);
             $joins = explode(',',$q['_join']);
             
-            $this->selectAdd(); // ???
+            //$this->selectAdd(); // ??? << this wipes out the default options
             $distinct = false;
             
             foreach($joins as $t) {
@@ -167,7 +159,8 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                     continue;
                 }
                 $jtn = $x->tableName();
-                $jk = array_shift($x->keys());
+                $jks = $x->keys();
+                $jk = array_shift($jks);
                 $this->_join .= "
                 
                     LEFT JOIN {$jtn} as join_on_id_{$jtn} ON {$tn}.on_id = join_on_id_{$jtn}.{$jk}
@@ -218,7 +211,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                 $roo->jerr("ontable is invalid");
             }
             
-            if (!method_exists($obj,'relatedWhere') && !method_exists($obj,'relatedEventsWhere')) {
+            if (!method_exists($obj,'relatedWhere')) {
                 $roo->jerr( $q['_related_on_table'] . " Does not have method relatedWhere  or relatedEventsWhere:" .
                            implode(',', get_class_methods($obj)));
             }
@@ -243,22 +236,8 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                 $this->whereAdd(implode(' OR ' , $w));
             }
             
-            if ($obj && method_exists($obj,'relatedEventsWhere')) {
-                $a = $obj->relatedEventsWhere($q,$roo);
-                if($a){
-                    $this->whereAdd($a);
-                }
-            }
-            
-            
-            
+         
             
-        }
-        if (isset($q['_who'])) {
-                  $e = PDO_DataObject::factory('ext_data');
-                  $this->joinAdd($e,'LEFT');
-            //$this->autoJoinCorePerson();
-            $this->selectAddWho(); 
         }
         
         // since roo does not support autojoin yet..
@@ -277,8 +256,16 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         } 
         
     }
-      
     
+    function applyPermissionFilters($q, $au ,$roo)
+    {
+        if (!$au->hasPerm("Admin.Admin_Tab", 'S')) {
+            //DB_DataObject::DebugLevel(1);
+            // they can only view their changes..
+            $this->whereAdd("($tn.person_id = {$au->id} OR $tn.person_id = 0)");
+//            $this->person_id = $au->id;
+        }
+    }
     
     /**
      * check who is trying to access this. false == access denied..
@@ -321,13 +308,13 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         $ff = HTML_FlexyFramework::get();
         $pg = $ff->page;
         $au = $pg->getAuthUser();
-        
+
         if ($ff->cli) { // && empty($au) && isset($obj->person_id)) {
             $au = false;
            // $au = DB_DataObject::Factory('Person'); // not always a person..
            // $au->get($obj->person_id);
         } 
-          
+
         $this->person_name = $au && !empty($au->name) ? $au->name : '';
         //print_r($au);
         //exit;
@@ -360,7 +347,11 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                 $rem[] = $obj->toEventString();
             }
         }
-        $rem[] = $remarks;
+        
+        if(!empty($remarks)){
+            $rem[] = $remarks;
+        }
+        
         $this->remarks = implode(' : ', $rem);
     }
     
@@ -484,26 +475,49 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
     static function writeEventLogExtra($data) {
         self::$extra_data = $data;
     }
+    static $files = array();
+    
+    /**
+     * Add a file to the output log
+     * this needs to be called before addEvent, and the data format should be the same as $_FILES
+     * eg.
+     * 
+     * DB_DataObject::factory('Events')->addFile(array(
+     *    'tmp_name' => real file location
+     *    'name' => real file name
+     *    'type' => mimetype
+     *    'size' => filesize
+     *    
+     * ))
+     * 
+     */
+    function addFile($data)
+    {
+        self::$files[] = $data;
+    }
     
-    function logDir()
+    function logDir($user = false)
     {
         $ff  = HTML_FlexyFramework::get();
-        if (function_exists('posix_getpwuid')) {
-            $uinfo = posix_getpwuid( posix_getuid () ); 
-         
-            $user = $uinfo['name'];
-        } else {
-            $user = getenv('USERNAME'); // windows.
-        }
+        if ($user === false) {
+            if (function_exists('posix_getpwuid')) {
+                $uinfo = posix_getpwuid( posix_getuid () ); 
+             
+                $user = $uinfo['name'];
+            } else {
+                $user = getenv('USERNAME'); // windows.
+            }
+        } 
         
-        // DEPRICATED...
+   
+        if (!empty($ff->Pman['storedir'])) {
+            return $ff->Pman['storedir'] .'/Events/'.$user;
+        }
+        // DEPRICATED... 
         if (!empty($ff->Pman['event_log_dir'])) {
             return $ff->Pman['event_log_dir'] . '/'.$user;
         }
-        if (!empty($ff->Pman['storedir'])) {
-            return $ff->Pman['storedir'] .'/Events/'.$user;
         
-        }
         return false;
     }
     
@@ -512,6 +526,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
     function writeEventLog($extra_data  = false)
     {
         $logdir = $this->logDir();
+        
         if (!$logdir) {
             return false;
         }
@@ -522,8 +537,10 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         if (!file_exists(dirname($file))) {
             
             @mkdir(dirname($file),0700,true); // this might fail if it does not have correct permissions..
+            clearstatcache();
             if (!file_exists(dirname($file))) {
-                die("could not create $file - permissons are not correct"); // fatal, otherwise we loop!?
+                //print_r($this);
+                die("Events:: writeEventLog: could not create $file - permissons are not correct\n"); // fatal, otherwise we loop!?
             }
             
         }
@@ -539,9 +556,10 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         
         $i=0;
         $files = array();
+          
          
-        $i = 0;
-        foreach ($_FILES as $k=>$f){
+        
+        foreach (array_merge($_FILES, self::$files) as $k=>$f){
             // does not handle any other file[] arrary very well..
             if (empty($f['tmp_name']) || !file_exists($f['tmp_name'])) {
                 continue;
@@ -556,6 +574,9 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                 print_r("failed to copy {$f['tmp_name']}...\n");
             }
         }
+        
+        
+        
         $out = array(
             'REQUEST_URI' => empty($_SERVER['REQUEST_URI']) ? 'cli' : $_SERVER['REQUEST_URI'],
             'HTTP_USER_AGENT' => empty($_SERVER['HTTP_USER_AGENT']) ? '' : $_SERVER['HTTP_USER_AGENT'],
@@ -573,6 +594,16 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         if ( self::$extra_data !== false) {
             $out['EXTRA_DATA'] =  self::$extra_data;
         }
+        $total_data = 0;
+        foreach($out as $k=>$v) {
+            if (!empty($v) && $k != 'REQUEST_URI') {
+                $total_data++;
+            }
+        }
+        if (!$total_data) {
+            return; // do not write an empty file with no usefull info.
+        }
+        
         
         file_put_contents($file, json_encode($out));
         
@@ -626,7 +657,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
     
     function retrieveEventLog()
     {
-        
+
         $logdir = $this->logDir();
         if (!$logdir) {
             return false;
@@ -636,8 +667,13 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         $date = date('/Y/m/d/', strtotime($this->event_when));
         
         $file = $logdir. $date. $this->id . ".json";
-        if (!file_exists(dirname($file))) {
-            return false;
+        if (!file_exists($file)) {
+            
+            // try looking www-dir..
+            $file = $this->logDir('www-data'). $date. $this->id . ".json";
+            if (!file_exists($file)) {   
+                return false;
+            }
         }
         
         return $file;
@@ -722,25 +758,5 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         
     }
     
-    function autoJoinExtData()
-    {
-       $this->_join .= "LEFT JOIN 
-                            ext_data AS ext_data_id
-                        ON
-                            Events.modx_users_id = ext_data_id.userdata_id";                            
-    }
     
-    function selectAddWho() 
-    {
-        $this->selectAdd("ext_data_id.in_firstname, ext_data_id.in_middlename, ext_data_id.in_lastname");
-       
-       //$this->selectAdd("             
-       //     CASE
-       //         WHEN ext_data_id.in_middlename='' THEN
-       //             CONCAT_WS(' ', ext_data_id.in_firstname,ext_data_id.in_lastname)
-       //         ELSE
-       //             CONCAT_WS(' ', ext_data_id.in_firstname,ext_data_id.in_middlename,ext_data_id.in_lastname)
-       //     END AS ext_data_full_name 
-       //");
-    }
 }