|
From: <ir...@us...> - 2013-03-04 05:36:34
|
Revision: 11149
http://sourceforge.net/p/xoops/svn/11149
Author: irmtfan
Date: 2013-03-04 05:36:27 +0000 (Mon, 04 Mar 2013)
Log Message:
-----------
add a complete file browsing engine can accept any file, criteria, pagination, sort,order
use json_encode for better performance
Modified Paths:
--------------
XoopsModules/userlog/trunk/userlog/admin/logs.php
XoopsModules/userlog/trunk/userlog/class/log.php
XoopsModules/userlog/trunk/userlog/class/stats.php
XoopsModules/userlog/trunk/userlog/class/userlog.php
XoopsModules/userlog/trunk/userlog/docs/changelog.txt
XoopsModules/userlog/trunk/userlog/include/log.php
XoopsModules/userlog/trunk/userlog/include/module.php
XoopsModules/userlog/trunk/userlog/language/english/admin.php
XoopsModules/userlog/trunk/userlog/language/english/help/help.html
XoopsModules/userlog/trunk/userlog/language/english/modinfo.php
XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html
XoopsModules/userlog/trunk/userlog/xoops_version.php
Modified: XoopsModules/userlog/trunk/userlog/admin/logs.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/logs.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/admin/logs.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -32,12 +32,14 @@
$orderentry = UserlogRequest::getString('orderentry','DESC');
$options = UserlogRequest::getArray("options");
+$engine = UserlogRequest::getString('engine',$Userlog->getConfig("engine"));
+$file = UserlogRequest::getArray('file', "all");
+
$logsetObj = UserlogSetting::getInstance();
// get var types int, text, bool , ...
$type_vars = $logsetObj->getOptions("", "type");
//$query_types = array("="=>"",">"=>"GT", "<"=>"LT");
$criteria = new CriteriaCompo();
-//$criteria->add(new Criteria(1, 1));
// formnav in the upper section
include_once USERLOG_ROOT_PATH . '/class/form/simpleform.php';
$formNav = new UserlogSimpleForm('','logsnav','logs.php', 'get');
@@ -97,9 +99,16 @@
$formNav->addElement($hidOptionsEl);
unset($hidOptionsEl);
}
-$logs = $Userlog->getHandler('log')->getLogs($limitentry,$startentry,$criteria,$sortentry,$orderentry ,null, false);
-$totalLogs = $Userlog->getHandler('log')->getLogsCount($criteria);
+// get logs from engine: 1- db 2- file
+$loglogObj = UserlogLog::getInstance();
+if( $engine == 'db' ) {
+ $logs = $Userlog->getHandler('log')->getLogs($limitentry,$startentry,$criteria,$sortentry,$orderentry ,null, false);
+ $totalLogs = $Userlog->getHandler('log')->getLogsCount($criteria);
+} else {
+ list($logs, $totalLogs) = $loglogObj->getLogsFromFiles($file, $limitentry, $startentry, $options, $sortentry,$orderentry);
+}
+// parse query page
if ( !empty($query_array) ) {
$query_page = implode("&", array_values($query_array));
}
@@ -121,18 +130,9 @@
$GLOBALS['xoopsTpl']->assign('orderentry', $orderentry);
$skips = array("get", "post", "request", "files", "env");
-// only times should be changed before assign to template
-foreach($logs as $log_id=>$log) {
- $logs[$log_id]["log_time"] = $Userlog->formatTime($logs[$log_id]["log_time"]);
- $logs[$log_id]["last_login"] = $Userlog->formatTime($logs[$log_id]["last_login"]);
- // merge all request_method to one column
- if (!empty($logs[$log_id]["request_method"])) {
- $logs[$log_id]["request_method"] = $logs[$log_id]["request_method"] . $logs[$log_id][strtolower($logs[$log_id]["request_method"])];
- }
- foreach($skips as $option) {
- unset($logs[$log_id][$option]);
- }
-}
+// prepared for display
+$logs = $loglogObj->ArrayToDisplay($logs, $skips);
+
// assign logs
$GLOBALS['xoopsTpl']->assign('logs', $logs);
if ( !empty($query_page) ) {
@@ -143,6 +143,12 @@
// form
list($form, $els, $headers) =$logsetObj->logForm($options);
+$engineEl = new XoopsFormSelect(_AM_USERLOG_ENGINE,"engine", $engine);
+$engineEl->addOption("db", _AM_USERLOG_ENGINE_DB);
+$engineEl->addOption("file", _AM_USERLOG_ENGINE_FILE);
+if ($engine == "file") {
+ $fileEl = $loglogObj->buildFileSelectEle($file);
+}
$limitEl = new XoopsFormText(_AM_USERLOG_LOGS_PERPAGE, "limitentry", 10, 255, $limitentry);
$limitEl->setDescription(sprintf(_AM_USERLOG_LOGS_PERPAGE_DSC, $Userlog->getConfig("logs_perpage")));
$sortEl = new XoopsFormSelect(_AM_USERLOG_SORT,"sortentry", $sortentry);
@@ -154,7 +160,11 @@
$orderEl->setDescription(_AM_USERLOG_ORDER_DSC);
$submitEl = new XoopsFormButton(_SUBMIT, 'submit', _SUBMIT, 'submit');
-
+
+$form->addElement($engineEl);
+if ($engine == "file") {
+ $form->addElement($fileEl);
+}
$form->addElement($limitEl);
$form->addElement($sortEl);
$form->addElement($orderEl);
@@ -162,6 +172,14 @@
$GLOBALS['xoopsTpl']->assign('form', $form->render());
// add formnav after adding form
+if ($engine == "file") {
+ $fileEl->setClass("floatleft left");
+ $fileEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
+ $formNav->addElement($fileEl);
+}
+$engineEl->setClass("floatleft left");
+$engineEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
+$formNav->addElement($engineEl);
$limitEl->setClass("floatleft left");
$formNav->addElement($limitEl);
$sortEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
Modified: XoopsModules/userlog/trunk/userlog/class/log.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -55,15 +55,15 @@
$this->initVar("item_name", XOBJ_DTYPE_TXTBOX, null, false, 10);
$this->initVar("item_id", XOBJ_DTYPE_INT, null, false);
$this->initVar("request_method", XOBJ_DTYPE_TXTBOX, null, false, 20);
- $this->initVar("get", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("post", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("request", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("files", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("env", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("session", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("cookie", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("header", XOBJ_DTYPE_TXTAREA, '', false);
- $this->initVar("logger", XOBJ_DTYPE_TXTAREA, '', false);
+ $this->initVar("get", XOBJ_DTYPE_SOURCE);
+ $this->initVar("post", XOBJ_DTYPE_SOURCE);
+ $this->initVar("request", XOBJ_DTYPE_SOURCE);
+ $this->initVar("files", XOBJ_DTYPE_SOURCE);
+ $this->initVar("env", XOBJ_DTYPE_SOURCE);
+ $this->initVar("session", XOBJ_DTYPE_SOURCE);
+ $this->initVar("cookie", XOBJ_DTYPE_SOURCE);
+ $this->initVar("header", XOBJ_DTYPE_SOURCE);
+ $this->initVar("logger", XOBJ_DTYPE_SOURCE);
}
/**
* @param string $method
@@ -110,9 +110,9 @@
{
// set vars
foreach ($tolog as $option=>$logvalue) {
- // value array to string
- if (is_array($logvalue)) $logvalue = $this->logString($logvalue);
if(!empty($logvalue)) {
+ // value array to string. use json_encode
+ if (is_array($logvalue) && count($logvalue) > 0) $logvalue = json_encode($logvalue);
$this->setVar($option, $logvalue);
}
}
@@ -121,6 +121,31 @@
return $ret;
}
+ public function ArrayToDisplay($logs, $skips)
+ {
+ foreach($logs as $log_id=>$log) {
+ $logs[$log_id]["log_time"] = $this->userlog->formatTime($logs[$log_id]["log_time"]);
+ $logs[$log_id]["last_login"] = $this->userlog->formatTime($logs[$log_id]["last_login"]);
+ foreach (array("session","cookie","header","logger") as $option){
+ // if value is not string it was decoded in file
+ if (!is_string($logs[$log_id][$option])) continue;
+ $logArr = json_decode($logs[$log_id][$option], true);
+ if($logArr) {
+ $logs[$log_id][$option] = var_export($logArr, true);
+ }
+ }
+ // merge all request_method to one column
+ if (!empty($logs[$log_id]["request_method"]) &&
+ !empty($logs[$log_id][strtolower($logs[$log_id]["request_method"])])) {
+ $logs[$log_id]["request_method"] = $logs[$log_id]["request_method"] . ' ' .$logs[$log_id][strtolower($logs[$log_id]["request_method"])];
+ }
+ foreach($skips as $option) {
+ unset($logs[$log_id][$option]);
+ }
+ }
+ return $logs;
+ }
+
public function storeFile($tolog)
{
$logext = "log";
@@ -134,26 +159,24 @@
return false;
}
}
- $data = "\nlog_id|" . /*$this->log_id()*/ "0" .$this->logString($tolog);
- if ($this->item_name() !== null ) {
- $data .= "\$item_name|" . $this->item_name() . "\$item_id|". $this->item_id(); // views save to file;
- }
// file create/open/write
$fileHandler = XoopsFile::getHandler();
+ $fileHandler->XoopsFileHandler($log_file, false);
// force to create file if not exist
- if ($fileHandler->XoopsFileHandler($log_file, false) == false) {
- if(!$fileHandler->exists()) {
- $fileHandler->XoopsFileHandler($log_file, true); // create file and folder
- $this->setErrors('File was not exist create file ({$log_file_name})');
- // update the new file in database
- $statsObj = UserlogStats::getInstance();
- $statsObj->update("file", 0, 0, false, $log_file); // value = 0 to not auto increment
- // update old file if exist
- if(!empty($old_file)) {
- $statsObj->update("file", 0, 0, false, $old_file); // value = 0 to not auto increment
- }
- $statsObj->updateAll("file", 100); // prob = 100
+ if(!$fileHandler->exists()) {
+ $fileHandler->XoopsFileHandler($log_file, true); // create file and folder
+ $this->setErrors('File was not exist create file ({$log_file_name})');
+ // update the new file in database
+ $statsObj = UserlogStats::getInstance();
+ $statsObj->update("file", 0, 0, false, $log_file); // value = 0 to not auto increment
+ // update old file if exist
+ if(!empty($old_file)) {
+ $statsObj->update("file", 0, 0, false, $old_file); // value = 0 to not auto increment
}
+ $statsObj->updateAll("file", 100); // prob = 100
+ $data = json_encode($tolog);
+ } else {
+ $data = "\n" . json_encode($tolog);
}
if ($fileHandler->open("a") == false) {
$this->setErrors('Cannot open file ({$log_file_name})');
@@ -166,55 +189,173 @@
$fileHandler->close();
return true;
}
- public function getFromFile($log_file = null)
+ public function getLogsFromFiles($log_file = null, $limit = 0, $start = 0, $options = null, $sort = "log_time", $order = "DESC")
{
+ $logs = array();
+ $logsStr = $this->readFiles($log_file);
+ foreach ($logsStr as $id=>$log) {
+ $logArr = json_decode($log, true);
+ // check if data is correct in file before do anything more
+ if (!is_array($logArr) || !array_key_exists("log_id", $logArr)) continue;
+ foreach ($logArr as $option=>$logvalue) {
+ // value array to string
+ $logs[$id][$option] = (is_array($logvalue) && count($logvalue) > 0) ? var_export($logvalue, true) : $logvalue;
+ }
+ }
+ // START Criteria in array
+ foreach($options as $key=>$val) {
+ // if user input an empty variable unset it
+ if (empty($val)) continue;
+ // deal with greater than and lower than
+ $tt = substr($key, -2);
+ switch ($tt) {
+ case "GT":
+ $op = substr($key,0, -2);
+ break;
+ case "LT":
+ $op = substr($key,0, -2);
+ break;
+ default:
+ $op = $key;
+ break;
+ }
+ $val_arr = explode(",", $val);
+ // if type is text
+ if (!empty($val_arr[0]) && intval($val_arr[0]) == 0) {
+ foreach ($logs as $id => $log) {
+ $flagStr = false;
+ foreach($val_arr as $qry) {
+ // if !QUERY eg: !logs.php,views.php
+ if (substr($qry,0,1) == "!") {
+ if(strpos($log[$op], substr($qry,1)) !== false) $flagStr = true;
+ } else {
+ if(strpos($log[$op], $qry) !== false) $flagStr = true;
+ }
+ }
+ if (!$flagStr) unset($logs[$id]);
+ }
+ } else {
+ // if there is one value - deal with =, > ,<
+ if (count($val_arr) == 1) {
+ $val_int = $val_arr[0];
+ if($op == "log_time" || $op == "last_login") $val_int = time() - $Userlog->getSinceTime($val_int);
+ // query is one int $t (=, < , >)
+ foreach ($logs as $id => $log) {
+ switch ($tt) {
+ case "GT":
+ if($log[$op] <= $val_int) unset($logs[$id]);
+ break;
+ case "LT":
+ if($log[$op] >= $val_int) unset($logs[$id]);
+ break;
+ default:
+ if($log[$op] != $val_int) unset($logs[$id]);
+ break;
+ }
+ }
+ } else {
+ // query is an array of int separate with comma. use OR ???
+ foreach ($logs as $id => $log) {
+ if(!in_array($log[$op], $val_arr)) unset($logs[$id]);
+ }
+ }
+ }
+ }
+ // END Criteria in array
+ // if no logs return empty array and total = 0
+ if(empty($logs)) return array(array(), 0);
+
+ // sort order array. multisort is possible :D
+ if (!empty($sort)) {
+ // log_id is just the same as log_time
+ if ($sort == "log_id") $sort = "log_time";
+ // $typeFlag = is_numeric($logs[0][$sort]) ? SORT_NUMERIC : SORT_STRING;
+ // Obtain a list of columns
+ foreach ($logs as $key => $log) {
+ $col[$key] = $log[$sort];
+ //$col2[$key] = $log[$sort2];
+ }
+ // Add $logs as the last parameter, to sort by the common key
+ array_multisort($col, ($order == "ASC") ? SORT_ASC : SORT_DESC, $logs);
+ }
+ // get count
+ $total = count($logs);
+ // now slice the array with desired start and limit
+ if (!empty($limit)) {
+ $logs = array_slice($logs,$start, $limit);
+ }
+ return array($logs, $total);
+ }
+ public function readFiles($log_files = array())
+ {
+ if(empty($log_files) || count($log_files) == 0) {
+ return $this->readFile();
+ }
+ $logs = array();
+ $pathParts = pathinfo($log_files[0]);
+ // if "all" or no extension => $path
+ if ($log_files[0] == "all" || empty($pathParts[extension])) {
+ list($allFiles,$totalFiles) = $this->userlog->getAllLogFiles();
+ if (empty($totalFiles)) return array();
+ foreach($allFiles as $path=>$files) {
+ foreach($files as $file) {
+ $logs = array_merge($logs,$this->readFile($path . "/" . $file));
+ }
+ // if it is $path
+ if ($log_files[0] != "all") {
+ if ($log_files[0] == $path) break; // exit for loop and return logs
+ $logs = array(); // reset logs for next path
+ }
+ }
+ return $logs;
+ }
+ foreach($log_files as $file) {
+ $logs = array_merge($logs,$this->readFile($file));
+ }
+ return $logs;
+ }
+
+ public function readFile($log_file = null)
+ {
if (!$log_file) {
$logext = "log";
$log_file_name = $this->userlog->getConfig('logfilepath') .'/'. USERLOG_DIRNAME . '/' . $this->userlog->getConfig('logfilename');
$log_file = $log_file_name.".".$logext;
}
- // file create/open/write
+ // file open/read
$fileHandler = XoopsFile::getHandler();
// not create file if not exist
- if ($fileHandler->XoopsFileHandler($log_file, false) == false) {
- $this->setErrors('Cannot create file ({$log_file_name})');
+ $fileHandler->XoopsFileHandler($log_file, false);
+ if (!$fileHandler->exists()) {
+ $this->setErrors('Cannot open file ({$log_file_name})');
return false;
}
+
if (($data = $fileHandler->read()) == false) {
$this->setErrors('Cannot read file ({$log_file_name})');
return false;
}
- return $data;
+ $logs = explode("\n",$data);
+ return $logs;
}
-
- // use ; because it will never used in other methods
- public function logString($data, $startDelimiter="\$" , $endDelimiter="" )
+ public function buildFileSelectEle($currentFile = null, $multi = false)
{
- static $depth = 0;
- $delimiters = array("<", ">","{","}","[[","]]");
- $ret = "";
- foreach ($data as $method=>$value)
- {
- if(!empty($value)) {
- $ret .= $startDelimiter . "{$method}";
- if (!$depth) { // if it is the first level
- $ret .= "|";
- } else {
- $ret .= ":";
- }
- if (is_array($value)) {
- $depth = $depth+2;
- $ret .= self::logString($value,$delimiters[$depth],$delimiters[$depth+1]);
- } else {
- $depth = 0;
- $ret .="{$value}";
- }
- $ret .= $endDelimiter;
+ $logext = "log";
+ list($allFiles,$totalFiles) = $this->userlog->getAllLogFiles();
+ if (empty($totalFiles)) return false;
+ $log_file_name = $this->userlog->getConfig('logfilename');
+ $working_file = $log_file_name.".".$logext;
+ $fileEl = new XoopsFormSelect(_AM_USERLOG_FILE,"file", $currentFile);
+ $fileEl->addOption("all", _AM_USERLOG_STATS_FILEALL);
+ foreach($allFiles as $path=>$files) {
+ $fileEl->addOption($path, ">" . $path);
+ foreach($files as $file) {
+ $fileEl->addOption($path . "/" . $file, "-----" . $file . (($file == $working_file) ? "(" ._AM_USERLOG_FILE_WORKING . ")" : ""));
}
}
- return $ret;
+ return $fileEl;
}
-
+
public function setItem()
{
$not_config =& $this->userlog->getLogModule()->getInfo('notification');
Modified: XoopsModules/userlog/trunk/userlog/class/stats.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/stats.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/class/stats.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -98,19 +98,13 @@
break;
case "file":
$logext = "log";
- $log_file_paths = array(XOOPS_VAR_PATH .'/'. USERLOG_DIRNAME,XOOPS_UPLOAD_PATH .'/'. USERLOG_DIRNAME);
- $allFiles = 0;
- foreach($log_file_paths as $log_file_path) {
- $log_file = $log_file_path . '/' . $this->userlog->getConfig('logfilename').".".$logext;
- if (!is_dir($log_file_path)) {
- continue;
- }
- $files = glob($log_file_path . '/*.' . $logext);
- $allFiles += count($files);
- $this->update("file" ,0 ,count($files) ,false ,$log_file); // update working file in 2 pathes
+ list($allFiles,$totalFiles) = $this->userlog->getAllLogFiles();
+ foreach($allFiles as $path=>$files) {
+ $log_file = $path . '/' . $this->userlog->getConfig('logfilename').".".$logext;
+ $this->update("file" ,0 ,count($files) ,false ,$log_file); // update working file in all paths (now 2)
}
// update all files in db link='all'
- $this->update("file" ,0 ,$allFiles ,false ,'all');
+ $this->update("file" ,0 ,$totalFiles ,false ,'all');
break;
case "views":
break;
Modified: XoopsModules/userlog/trunk/userlog/class/userlog.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/userlog.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/class/userlog.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -105,6 +105,22 @@
$this->addLog("Getting handler '{$name}'");
return $this->handler[$name . '_handler'];
}
+ public function getAllLogFiles()
+ {
+ $allConfigs = $this->module->getInfo('config');
+ $currentPath = $this->getConfig("logfilepath");
+ $logPaths = array_keys($allConfigs[2]["options"]);
+ $logext = "log";
+ $allFiles = array();
+ $totalFiles = 0;
+ foreach($logPaths as $path) {
+ $folderHandler = XoopsFile::getHandler("folder",$path . "/" . USERLOG_DIRNAME);
+ $allFiles[$path . "/" . USERLOG_DIRNAME] = $folderHandler->find(".*" . $logext);
+ $totalFiles += count($allFiles[$path . "/" . USERLOG_DIRNAME]);
+ }
+ if(empty($totalFiles)) return array(array(), 0);
+ return array($allFiles, $totalFiles);
+ }
public function getFromKeys($array, $keys = null)
{
Modified: XoopsModules/userlog/trunk/userlog/docs/changelog.txt
===================================================================
--- XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-04 05:36:27 UTC (rev 11149)
@@ -1,5 +1,7 @@
Userlog
Changelog:
+- add acomplete file browsing engine can accept any file, criteria, pagination, sort,order (2013/03/04)
+- use json_encode instead of serialize for better performance. (2013/03/04)
- add webmaster permission from file to avoid other webmasters to access.(2013/03/02)
- add probabilities to preferences for sets and stats.(previously hardcoded)(2013/03/02)
- add delete/create cache setting files messages.(previously hardcoded)(2013/03/02)
Modified: XoopsModules/userlog/trunk/userlog/include/log.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/include/log.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/include/log.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -62,6 +62,9 @@
// set item in db for views
if (!empty($tolog["views"])) {
$logObj->setItem();
+ // add to save for file
+ $tolog["item_name"] = $logObj->item_name();
+ $tolog["item_id"] = $logObj->item_id();
}
// remove used settings that should not be logged
@@ -70,7 +73,7 @@
// store log
$logObj->store($tolog, true);
// update all time stats
- $statsObj->updateAll("log", $Userlog->getConfig("probstats")); // prob = 10
+ $statsObj->updateAll("log", $Userlog->getConfig("probstats")); // default prob = 10
}
// update all time stats
-$statsObj->updateAll("log", $Userlog->getConfig("probstatsallhit")); // prob = 10
\ No newline at end of file
+$statsObj->updateAll("log", $Userlog->getConfig("probstatsallhit")); // default prob = 1
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/include/module.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/include/module.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/include/module.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -24,5 +24,5 @@
function xoops_module_uninstall_userlog(&$module)
{
$logsetObj = UserlogSetting::getInstance();
- $logsetObj->cleanCache(); // delete all settings caches
+ return $logsetObj->cleanCache(); // delete all settings caches
}
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/language/english/admin.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -161,6 +161,12 @@
define("_AM_USERLOG_HEADER_FORM",_AM_USERLOG_TEXT_FORM);
define("_AM_USERLOG_LOGGER_FORM",_AM_USERLOG_TEXT_FORM);
// END DO NOT TOUCH
+// logs.php engine
+define("_AM_USERLOG_ENGINE","Select the engine you want to get logs from:");
+define("_AM_USERLOG_ENGINE_FILE","FILE");
+define("_AM_USERLOG_ENGINE_DB","Database");
+define("_AM_USERLOG_FILE","Select files you want to get logs from:");
+define("_AM_USERLOG_FILE_WORKING","Working file");
// logs.php error
define("_AM_USERLOG_LOG_ERROR","No Log is found in database with this criteria.");
Modified: XoopsModules/userlog/trunk/userlog/language/english/help/help.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/help/help.html 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/language/english/help/help.html 2013-03-04 05:36:27 UTC (rev 11149)
@@ -2,9 +2,9 @@
<h1 class="head">Help: <a class="ui-corner-all tooltip" href="<{$xoops_url}>/modules/userlog/admin/index.php" title="Back to the administration of Userlog"> Userlog <img src="<{xoAdminIcons home.png}>" alt="Back to the administration of Userlog"/></a></h1>
<h4 class="odd">Description</h4>
<p class="even">
-Userlog is a node logger which can log your user/visitor activities in your site.<br />
+Userlog is a node logger which can log your user/visitor activities in your site from a preferred node.<br />
This is a very useful tool for webmasters in busy sites. For example, you can log your other Admins navigation.<br />
-Current nodes for logging are: user id, user group and visitor IP.<br />
+Current nodes for logging are: user ID, user group and visitor IP.<br />
You can store logs in a database, in a file or both.<br /><br />
<b>Attention: userlog module will only work in Admin part of modules that use the ModuleAdmin class.</b><br /><br />
</p>
Modified: XoopsModules/userlog/trunk/userlog/language/english/modinfo.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/modinfo.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/language/english/modinfo.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -52,6 +52,8 @@
define("_MI_USERLOG_SETS_PERPAGE_DSC","The default value for viewing settings");
define("_MI_USERLOG_LOGS_PERPAGE","Number of logs per page");
define("_MI_USERLOG_LOGS_PERPAGE_DSC","The default value for viewing logs");
+define("_MI_USERLOG_ENGINE","Select the default engine for browsing logs");
+define("_MI_USERLOG_ENGINE_DSC","This will be the default engine in logs browing.");
// config logdb
define("_MI_USERLOG_MAXLOGS","Maximum logs stored in database");
define("_MI_USERLOG_MAXLOGS_DSC","Logs will be deleted from database after reaching this number");
Modified: XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html 2013-03-04 05:36:27 UTC (rev 11149)
@@ -31,8 +31,8 @@
</div>
<{foreach item=log key=log_id from=$logs}>
<div class="<{cycle values='even,odd'}> border x-small">
- <{foreach item=data key=header from=$log}>
- <div title="<{$data}>" class="width<{if $header == "admin" || $header == "log_id" || $header == "uid"}>1<{else}><{$widthC}><{/if}> floatleft center" style="height: 15px; overflow: hidden;"> <{$data}></div>
+ <{foreach item=title key=header from=$headers}>
+ <div title="<{$log.$header}>" class="width<{if $header == "admin" || $header == "log_id" || $header == "uid"}>1<{else}><{$widthC}><{/if}> floatleft center" style="height: 15px; overflow: hidden;"> <{$log.$header}></div>
<{/foreach}>
<div class="clear"></div>
</div>
Modified: XoopsModules/userlog/trunk/userlog/xoops_version.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-04 00:18:02 UTC (rev 11148)
+++ XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-04 05:36:27 UTC (rev 11149)
@@ -23,6 +23,7 @@
$modversion = array();
$modversion['name'] = _MI_USERLOG_NAME;
$modversion['dirname'] = 'userlog';
+xoops_loadLanguage('admin', $modversion['dirname']);
$modversion['description'] = _MI_USERLOG_DSC;
$modversion['version'] = '1';
$modversion['author'] = 'xoops.org (irmtfan)';
@@ -189,6 +190,16 @@
$modversion['config'][$i]['category'] = 'pagenav';
$i++;
+$modversion['config'][$i]['name'] = 'engine';
+$modversion['config'][$i]['title'] = '_MI_USERLOG_ENGINE';
+$modversion['config'][$i]['description'] = '_MI_USERLOG_ENGINE_DSC';
+$modversion['config'][$i]['formtype'] = 'select';
+$modversion['config'][$i]['valuetype'] = 'text';
+$modversion['config'][$i]['default'] = 'db';
+$modversion['config'][$i]['options'] = array(_AM_USERLOG_ENGINE_DB=>'db',_AM_USERLOG_ENGINE_FILE=>'file');
+$modversion['config'][$i]['category'] = 'pagenav';
+
+$i++;
$modversion['config'][$i]['name'] = 'logdb';
$modversion['config'][$i]['title'] = '_MI_USERLOG_CONFCAT_LOGDB';
$modversion['config'][$i]['description'] = '_MI_USERLOG_CONFCAT_LOGDB_DSC';
@@ -255,7 +266,7 @@
// START add webmaster permission from file to add additional permission check for all webmasters
global $xoopsOption, $xoopsModule;
// effective only in admin side
-if ($xoopsOption['pagetype'] == "admin" && is_object($xoopsModule)) {
+if (isset($xoopsOption['pagetype']) && $xoopsOption['pagetype'] == "admin" && is_object($xoopsModule)) {
// get dirname
$dirname = $xoopsModule->getVar('dirname');
// START if dirname is system
|