X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FEvents.php;h=e8682ac8f2cadde618b6512710cb4b1c744fc85e;hp=7c7533b0afb12dc57b42c11d5a719a7c1cda3839;hb=HEAD;hpb=35c5adad1d86aed4acbc6994bc2db330c0d13da9 diff --git a/DataObjects/Events.php b/DataObjects/Events.php index 7c7533b0..a04484c4 100644 --- a/DataObjects/Events.php +++ b/DataObjects/Events.php @@ -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} @@ -263,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.. @@ -307,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; @@ -346,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); } @@ -470,26 +475,49 @@ class Pman_Core_DataObjects_Events extends DB_DataObject static function writeEventLogExtra($data) { self::$extra_data = $data; } + static $files = array(); - function logDir() + /** + * 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($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; } @@ -498,6 +526,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject function writeEventLog($extra_data = false) { $logdir = $this->logDir(); + if (!$logdir) { return false; } @@ -508,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!? } } @@ -525,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; @@ -542,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'], @@ -559,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)); @@ -612,7 +657,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject function retrieveEventLog() { - + $logdir = $this->logDir(); if (!$logdir) { return false; @@ -622,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;