|
From: <ir...@us...> - 2013-03-11 07:34:19
|
Revision: 11197
http://sourceforge.net/p/xoops/svn/11197
Author: irmtfan
Date: 2013-03-11 07:34:12 +0000 (Mon, 11 Mar 2013)
Log Message:
-----------
add export to csv. add statistics page. rewrite views functions
Modified Paths:
--------------
XoopsModules/userlog/trunk/userlog/admin/logs.php
XoopsModules/userlog/trunk/userlog/admin/menu.php
XoopsModules/userlog/trunk/userlog/blocks/views.php
XoopsModules/userlog/trunk/userlog/class/log.php
XoopsModules/userlog/trunk/userlog/class/setting.php
XoopsModules/userlog/trunk/userlog/docs/changelog.txt
XoopsModules/userlog/trunk/userlog/language/english/admin.php
XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html
XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html
XoopsModules/userlog/trunk/userlog/xoops_version.php
Added Paths:
-----------
XoopsModules/userlog/trunk/userlog/admin/stats.php
XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html
Modified: XoopsModules/userlog/trunk/userlog/admin/logs.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/logs.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/admin/logs.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -34,12 +34,8 @@
$options = UserlogRequest::getArray("options");
$engine = UserlogRequest::getString('engine',$Userlog->getConfig("engine"));
$file = UserlogRequest::getArray('file', '');
-$opentry = UserlogRequest::getString('op');
-
-// formnav in the upper section
-include_once USERLOG_ROOT_PATH . '/class/form/simpleform.php';
-$formNav = new UserlogSimpleForm('','logsnav','logs.php', 'get');
-
+$opentry = UserlogRequest::getString('op', '', 'post');
+$log_id = UserlogRequest::getArray('log_id', 0 , 'post');
$logsetObj = UserlogSetting::getInstance();
// START build Criteria for database
// get var types int, text, bool , ...
@@ -47,11 +43,6 @@
//$query_types = array("="=>"",">"=>"GT", "<"=>"LT");
$criteria = new CriteriaCompo();
foreach($options as $key=>$val) {
- // if user input an empty variable unset it
- if (empty($val)) {
- unset($options[$key]);
- continue;
- }
// deal with greater than and lower than
$tt = substr($key, -2);
switch ($tt) {
@@ -95,10 +86,6 @@
}
// add criteria
$criteria->add($criteria_q[$key]);
- // add hiddens to formnav
- $hidOptionsEl = new XoopsFormHidden("options[{$key}]", $val);
- $formNav->addElement($hidOptionsEl);
- unset($hidOptionsEl);
}
// END build Criteria for database
@@ -115,9 +102,8 @@
}
// START delete/purge
-$confirm = UserlogRequest::getString('confirm',0);
+$confirm = UserlogRequest::getString('confirm',0, 'post');
if ($opentry == "del" && !empty($confirm)) {
- $log_id = UserlogRequest::getArray('log_id');
if( $engine == 'db' ) {
// delete logs in database
$statsObj = UserlogStats::getInstance();
@@ -186,6 +172,30 @@
// START main form
// form, elements, headers
list($form, $elements, $headers) = $logsetObj->logForm($options);
+// START export
+if (substr($opentry,0,6) == "export") {
+ list($opentry,$export) = explode("-",$opentry);
+ // if it is not bulk export get the actual logs in the page
+ if(is_numeric($log_id[0])) {
+ $logs = $Userlog->getFromKeys($logs,$log_id);
+ }
+ $totalLogsExport = count($logs);
+ switch ($export) {
+ case 'csv':
+ if( $csvFile = $loglogObj->exportLogsToCsv($logs, $headers, "engine_" . $engine . "_total_" . $totalLogsExport,";")) {
+ redirect_header("logs.php?op=" . $query_entry . (!empty($query_page) ? "&" . $query_page : '') . "&limitentry=" . (empty($limitentry) ? $Userlog->getConfig("logs_perpage") : $limitentry),
+ 7,
+ sprintf(_AM_USERLOG_LOG_EXPORT_SUCCESS,$totalLogsExport, $csvFile) );
+ }
+ redirect_header("logs.php?op=" . $query_entry . (!empty($query_page) ? "&" . $query_page : '') . "&limitentry=" . (empty($limitentry) ? $Userlog->getConfig("logs_perpage") : $limitentry),
+ 1,
+ _AM_USERLOG_LOG_EXPORT_ERROR);
+ break;
+ default :
+ break;
+ }
+}
+// END export
// engine element
$engineEl = new XoopsFormSelect(_AM_USERLOG_ENGINE,"engine", $engine);
@@ -221,45 +231,54 @@
$GLOBALS['xoopsTpl']->assign('form', $form->render());
// END main form
// START form navigation
-// add formnav after adding main form
+// formNav in the upper section
+include_once USERLOG_ROOT_PATH . '/class/form/simpleform.php';
+$formNav = new UserlogSimpleForm('','logsnav','logs.php', 'get');
+foreach($elements as $key=>$ele) {
+ $ele->setClass("hidden");
+ $formNav->addElement($elements[$key]);
+}
if ($engine == "file") {
$fileEl->setClass("floatleft left");
- $fileEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
+ $fileEl->setExtra("onchange=\"document.forms.logsnav.submitlogsnav.click()\"");
$formNav->addElement($fileEl);
}
$engineEl->setClass("floatleft left");
-$engineEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
+$engineEl->setExtra("onchange=\"document.forms.logsnav.submitlogsnav.click()\"");
$formNav->addElement($engineEl);
$limitEl->setClass("floatleft left");
$formNav->addElement($limitEl);
-$sortEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
+$sortEl->setExtra("onchange=\"document.forms.logsnav.submitlogsnav.click()\"");
$sortEl->setClass("floatleft left");
$formNav->addElement($sortEl);
-$orderEl->setExtra("onchange=\"document.forms.logsnav.submit()\"");
+$orderEl->setExtra("onchange=\"document.forms.logsnav.submitlogsnav.click()\"");
$orderEl->setClass("floatleft left");
$formNav->addElement($orderEl);
$submitEl = new XoopsFormButton('', 'submitlogsnav', _GO, 'submit');
$submitEl->setClass("floatleft left");
$formNav->addElement($submitEl);
+$formNav->setExtra("onsubmit=\"preventSubmitEmptyInput('options[');\"");
$GLOBALS['xoopsTpl']->assign('formNav', $formNav->render());
// END form navigation
+// START form head
+// use _class = array("hidden") to reset element class
$formHead = new UserlogSimpleForm(_AM_USERLOG_LOGFORM,'logshead','logs.php', 'get');
foreach($elements as $key=>$ele) {
- $ele->setClass("floatleft left");
+ $ele->_class = array("floatleft", "left");
$formHead->addElement($elements[$key]);
}
// add class hidden to formHead
if ($engine == "file") {
- $fileEl->setClass("hidden");
+ $fileEl->_class = array("hidden");
$formHead->addElement($fileEl);
}
-$engineEl->setClass("hidden");
+$engineEl->_class = array("hidden");
$formHead->addElement($engineEl);
-$limitEl->setClass("hidden");
+$limitEl->_class = array("hidden");
$formHead->addElement($limitEl);
-$sortEl->setClass("hidden");
+$sortEl->_class = array("hidden");
$formHead->addElement($sortEl);
-$orderEl->setClass("hidden");
+$orderEl->_class = array("hidden");
$formHead->addElement($orderEl);
// add submit to formHead
$submitEl = new XoopsFormButton('', 'submitlogshead', _SUBMIT, 'submit');
@@ -267,6 +286,7 @@
$formHead->addElement($submitEl);
$formHead->setExtra("onsubmit=\"preventSubmitEmptyInput('options[');\"");
$GLOBALS['xoopsTpl']->assign('formHead', $formHead->render());
+// END form head
$indexAdmin = new ModuleAdmin(); // add this just to include the css file to template
$GLOBALS['xoopsTpl']->assign('logo',$indexAdmin->addNavigation('logs.php'));
Modified: XoopsModules/userlog/trunk/userlog/admin/menu.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/menu.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/admin/menu.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -47,6 +47,11 @@
$adminmenu[$i]["icon"] = '../../' . $pathIcon32 . '/content.png';
$i++;
+$adminmenu[$i]['title'] = _AM_USERLOG_ADMENU_STATS;
+$adminmenu[$i]['link'] = "admin/stats.php";
+$adminmenu[$i]["icon"] = '../../' . $pathIcon32 . '/stats.png';
+
+$i++;
$adminmenu[$i]['title'] = _AM_USERLOG_ABOUT;
$adminmenu[$i]['link'] = "admin/about.php";
$adminmenu[$i]["icon"] = '../../' . $pathIcon32 . '/about.png';
Added: XoopsModules/userlog/trunk/userlog/admin/stats.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/stats.php (rev 0)
+++ XoopsModules/userlog/trunk/userlog/admin/stats.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -0,0 +1,74 @@
+<?php
+/*
+ You may not change or alter any portion of this comment or credits
+ of supporting developers from this source code or any supporting source code
+ which is considered copyrighted (c) material of the original comment or credit authors.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+*/
+/**
+ * userlog module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
+ * @package userlog admin
+ * @since 1
+ * @author irmtfan (ir...@ya...)
+ * @author The XOOPS Project <www.xoops.org> <www.xoops.ir>
+ * @version $Id: stats.php 1 2013-02-26 16:25:04Z irmtfan $
+ */
+
+include_once dirname(__FILE__) . '/admin_header.php';
+include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
+xoops_cp_header();
+
+$Userlog = Userlog::getInstance(false);
+// Where do we start ?
+// update all time stats
+$statsObj = UserlogStats::getInstance();
+$statsObj->updateAll("log", 100); // prob = 100
+$statsObj->updateAll("set", 100); // prob = 100
+$statsObj->updateAll("file", 100); // prob = 100
+
+$stats = $statsObj->getAll();
+$indexAdmin = new ModuleAdmin();
+$indexAdmin->addInfoBox(_AM_USERLOG_STATS_ABSTRACT);
+$periods = array_flip($statsObj->_period);
+$types = $statsObj->_type;
+foreach($stats as $type=>$arr) {
+ if(strlen($type) > 10) continue;
+ foreach($arr as $period=>$arr2) {
+ // use sprintf in moduleadmin: sprintf($text, "<span style='color : " . $color . "; font-weight : bold;'>" . $value . "</span>")
+ $indexAdmin->addInfoBoxLine(_AM_USERLOG_STATS_ABSTRACT,
+ sprintf(_AM_USERLOG_STATS_TYPE_PERIOD, "%s\1", $types[$type], constant("_AM_USERLOG_" . strtoupper($periods[$period]))),
+ $arr2["value"],
+ $arr2["value"] ? 'GREEN' : 'RED');
+ }
+}
+$indexAdmin->addInfoBox(_AM_USERLOG_VIEW_MODULE);
+$criteria = new CriteriaCompo();
+$criteria->setGroupby("module");
+$moduleViews = $Userlog->getHandler('log')->getCounts($criteria);
+$module_handler =& xoops_gethandler('module');
+$criteria = new CriteriaCompo();
+foreach(array_keys($moduleViews) as $mDir) {
+ $criteria->add(new Criteria('dirname', $mDir), "OR");
+}
+$modulesObj = $module_handler->getObjects($criteria, true); // id_as_key = true, asobject = false
+foreach($modulesObj as $mObj) {
+ $mDir = $mObj->dirname();
+ $indexAdmin->addInfoBoxLine(_AM_USERLOG_VIEW_MODULE,
+ $mObj->name() . ": %s",
+ $moduleViews[$mDir],
+ $moduleViews[$mDir]? 'GREEN' : 'RED');
+}
+$GLOBALS['xoopsTpl']->assign('stats_abstract',$indexAdmin->renderInfoBox());
+$GLOBALS['xoopsTpl']->assign('logo',$indexAdmin->addNavigation('stats.php'));
+// template
+$template_main = "userlog_admin_stats.html";
+if ( !empty($template_main) ) {
+ $GLOBALS['xoopsTpl']->display("db:{$template_main}");
+}
+xoops_cp_footer();
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/blocks/views.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/blocks/views.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/blocks/views.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -27,28 +27,29 @@
define('USERLOG_BLOCK_VIEWS_DEFINED',true);
xoops_loadLanguage("admin",USERLOG_DIRNAME);
-// options[0] - number of logs to proceed. use a high number. 0 = no limit and get all. default 2000
-// options[1] - number of items to show in block. the default is 10
-// options[2] - items to select in Where claus
-// options[3] - Time period - default 1 day
-// options[4] - Uid in WHERE claus: select some users to only count views by them 0-all (by default)
-// options[5] - Gid in WHERE claus: select some groups to only count views by them 0-all (by default)
-// options[6] - Sort - module, views
+// options[0] - number of items to show in block. the default is 10
+// options[1] - items to select in Where claus
+// options[2] - Time period - default 1 day
+// options[3] - Uid in WHERE claus: select some users to only count views by them 0-all (by default)
+// options[4] - Gid in WHERE claus: select some groups to only count views by them 0-all (by default)
+// options[5] - Sort - module, views
+// options[6] - Order - DESC, ASC
function userlog_views_show($options)
{
$Userlog = Userlog::getInstance();
- if (!empty($options[2])) {
- $options_views = explode(',', $options[2]); // item views in where claus eg: news-storyid, newbb-topic_id, news-storytopic
+ if (!empty($options[1])) {
+ $options_views = explode(',', $options[1]); // item views in where claus eg: news-storyid, newbb-topic_id, news-storytopic
$module=array();
foreach ($options_views as $key=>$item) {
$module_script_item = explode('-', $item); // news:article.php-storyid news:index.php-storytopic => $module["news"]=array("storyid","storytopic");
$module_script = explode(':', $module_script_item[0]); // news:article.php => $module_script = array(news,article.php);
if (!isset($module[$module_script[0]])) {
$module[$module_script[0]] = array();
- $scripts[$module_script[0]] = array_slice($module_script,1); // use later to check if the script is correct.
+ $scripts[$module_script[0]] = array_slice($module_script,1);
}
+ $scripts[$module_script[0]] = array_unique(array_merge($scripts[$module_script[0]], array_slice($module_script,1)));
$module[$module_script[0]][] = $module_script_item[1];
}
$criteriaModule = new CriteriaCompo();
@@ -61,24 +62,29 @@
$criteriaItemName->add(new Criteria('item_name', $item_name), "OR");
}
$criteriaItem->add($criteriaItemName);
+ $criteriaScript = new CriteriaCompo();
+ foreach($scripts[$module_dir] as $script_name) {
+ $criteriaScript->add(new Criteria('script', $script_name), "OR");
+ }
+ $criteriaItem->add($criteriaScript);
$criteriaModule->add($criteriaItem, "OR");
- unset($criteriaItem,$criteriaItemName);
+ unset($criteriaItem,$criteriaItemName,$criteriaScript);
}
}
- if (!empty($options[3])) {
- $starttime = time() - $Userlog->getSinceTime($options[3]);
+ if (!empty($options[2])) {
+ $starttime = time() - $Userlog->getSinceTime($options[2]);
$criteriaSince = new CriteriaCompo();
$criteriaSince->add(new Criteria('log_time', $starttime ,'>'));
}
- if (!empty($options[4])) {
+ if (!empty($options[3])) {
$criteriaUser = new CriteriaCompo();
- $criteriaUser->add(new Criteria('uid', '(' . $options[4] . ')', 'IN'));
+ $criteriaUser->add(new Criteria('uid', '(' . $options[3] . ')', 'IN'));
}
- if (!empty($options[5])) {
+ if (!empty($options[4])) {
$criteriaGroup = new CriteriaCompo();
- $options_groups = explode(',', $options[5]); // groups to select
+ $options_groups = explode(',', $options[4]); // groups to select
foreach($options_groups as $group) {
$criteriaGroup->add(new Criteria("groups", "%g" . $group . "%", "LIKE"), "OR");
}
@@ -98,95 +104,44 @@
if ( !empty($criteriaGroup) ) {
$criteria->add($criteriaGroup);
}
+ $criteria->setLimit($options[0]);
+ $fields = array("uid","groups","pagetitle","module","script","item_name","item_id");
+ $criteria->setGroupby("module,script,item_name,item_id");
- $loglogsObj = $Userlog->getHandler('log')->getLogs($options[0], 0, $criteria);
+ list($loglogsObj, $itemViews) = $Userlog->getHandler('log')->getLogsCounts($criteria,$fields);
+ $criteria->setGroupby("module");
+ $moduleViews = $Userlog->getHandler('log')->getCounts($criteria);
+ $module_handler =& xoops_gethandler('module');
+ $criteria = new CriteriaCompo();
+ foreach(array_keys($moduleViews) as $module) {
+ $criteria->add(new Criteria('dirname', $module), "OR");
+ }
+ $modules = $module_handler->getObjects($criteria, true); // id_as_key = true, asobject = false
+ foreach($modules as $module) {
+ $moduleNames[$module->dirname()] = $module->name();
+ }
+ unset($criteria);
// initializing
- $items = array(); // very important!!!
- $items["views"] = 0;
- $sort_views = array();
- foreach($loglogsObj as $loglogObj) {
- // assign needed vars
+ $items = array();; // very important!!!
+ foreach($loglogsObj as $key=>$loglogObj) {
$module_dirname = $loglogObj->module();
- $script_name = $loglogObj->script();
- if (!in_array($script_name, $scripts[$module_dirname])) continue; // check if the script is correct
- $item_name = $loglogObj->item_name();
- $item_id = $loglogObj->item_id();
- // increment total, module, script, item_name, item views
- // $items = array("newbb"=> array("viewtopic.php"=>array("topic_id"=>array([1]=>array("views"=> 23,
- // "title"=>"topic title"
- // ),
- // [23]=>array("views"=> 234,
- // "title"=>"my test topic"
- // ),
- // "views"=> 51, // topic_id views
- // ),// end of topic_id
- // "post_id"=>array([234512]=>array("views"=> 4,
- // "title"=>"Re: topic title"
- // ),
- // [123] =>array("views"=> 121,
- // "title"=>"post title"
- // ),
- // "views"=> 23, // post_id views
- // ),// end of post_id
- // "views"=> 124, // viewtopic.php views
- // ), // end of viewtopic.php
- // "index.php" =>array("forum"=>array([3]=>array("views"=> 5,
- // "title"=>"Forum test"
- // ),
- // ), //end of forum
- // "views"=> 14, // index.php views
- // ), // end of index.php
- // "views"=> 123, // newbb views
- // ), // end of newbb
- // "news"=>array("article.php"=>array("storyid"=>array([234]=>array("views"=> 12,
- // "title"=>"news title"
- // ),
- // ),// end of storyid
- // ), // end of article.php
- // "views"=> 43, // news views
- // ), // end of news
- // "views"=>2424, // total views
- // ); // end of array
- $items["views"]++;
- if (!isset($items[$module_dirname])) {
- $items[$module_dirname] = array();
- $items[$module_dirname]["views"] = 0;
- }
- $items[$module_dirname]["views"]++;
- if (!isset($items[$module_dirname][$script_name])) {
- $items[$module_dirname][$script_name] = array();
- $items[$module_dirname][$script_name]["views"] = 0;
- }
- $items[$module_dirname][$script_name]["views"]++;
- if (!isset($items[$module_dirname][$script_name][$item_name])) {
- $items[$module_dirname][$script_name][$item_name] = array();
- $items[$module_dirname][$script_name][$item_name]["views"] = 0;
- }
- $items[$module_dirname][$script_name][$item_name]["views"]++;
- if (!isset($items[$module_dirname][$script_name][$item_name][$item_id])) {
- $items[$module_dirname][$script_name][$item_name][$item_id] = array();
- $items[$module_dirname][$script_name][$item_name][$item_id]["views"] = 0;
- }
- $items[$module_dirname][$script_name][$item_name][$item_id]["views"]++;
- $link = $module_dirname."/".$script_name."?".$item_name."=".$item_id;
- if (!isset($sort_views[$link])) {
- $sort_views[$link] = array();
- $sort_views[$link]["views"] = 0;
- }
- $sort_views[$link]["views"]++;
- // get the title of the item only once if the pagetitle is not empty.
- if (empty($items[$module_dirname][$script_name][$item_name][$item_id]["title"]) && $loglogObj->pagetitle() != '') {
- $items[$module_dirname][$script_name][$item_name][$item_id]["title"] = $loglogObj->pagetitle();
- $sort_views[$link]["title"] = $loglogObj->pagetitle();
- if(count($sort_views) == $options[1]) break; // exit the for loop
- }
+ $link = $module_dirname."/".$loglogObj->script()."?".$loglogObj->item_name()."=".$loglogObj->item_id();
+ $items[$link] = array();
+ $items[$link]["views"] = $itemViews[$key];
+ $items[$link]["title"] = $loglogObj->pagetitle();
+ $items[$link]["module"] = $module_dirname;
+ $items[$link]["module_name"] = $moduleNames[$module_dirname];
+ $items[$link]["module_views"] = $moduleViews[$module_dirname];
}
$block = array();
- arsort($sort_views);
- $block["items"]= $items;
- $block["sort_views"] = $sort_views;
- $block["sort_type"] = $options[6];
-
+ foreach($items as $link=>$item) {
+ $col1[$link] = $item[$options[5]];
+ $col2[$link] = $item["views"];//second sort by
+ }
+ array_multisort($col1, ($options[6] == "ASC") ? SORT_ASC : SORT_DESC ,$col2 ,SORT_DESC, $items);
+ $block["items"] = $items;
+ $block["sort"] = $options[5];
+ unset($loglogsObj,$items);
return $block;
}
@@ -213,10 +168,6 @@
}
$i=0;
- // number of logs to proceed element
- $numlogsEle = new XoopsFormText(_MB_USERLOG_BLOCK_LOG_LIMIT, "options[{$i}]", 10, 255, intval($options[$i]));
-
- $i++;
// number of items to display element
$numitemsEle = new XoopsFormText(_MB_USERLOG_BLOCK_ITEMS_NUM, "options[{$i}]", 10, 255, intval($options[$i]));
@@ -252,17 +203,28 @@
$i++;
$sortEle = new XoopsFormSelect(_AM_USERLOG_SORT, "options[{$i}]", $options[$i]);
- $sortEle->addOptionArray(array("module"=>_AM_USERLOG_MODULE,"views"=>_AM_USERLOG_VIEW));
+ $sortEle->addOptionArray(array(
+ "views"=>_AM_USERLOG_VIEW,
+ "module"=>_AM_USERLOG_MODULE,
+ "module_name"=>_AM_USERLOG_MODULE_NAME,
+ "module_views"=>_AM_USERLOG_VIEW_MODULE
+ ));
$sortEle->setDescription(_AM_USERLOG_SORT_DSC);
+ $i++;
+ $orderEle = new XoopsFormSelect(_AM_USERLOG_ORDER,"options[{$i}]", $options[$i]);
+ $orderEle->addOption("DESC", _DESCENDING);
+ $orderEle->addOption("ASC", _ASCENDING);
+ $orderEle->setDescription(_AM_USERLOG_ORDER_DSC);
+
// add all elements to form
- $form->addElement($numlogsEle);
$form->addElement($numitemsEle);
$form->addElement($viewsEle);
$form->addElement($timeEle);
$form->addElement($userEle);
$form->addElement($groupEle);
$form->addElement($sortEle);
+ $form->addElement($orderEle);
return $form->render();
}
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/class/log.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -113,7 +113,7 @@
foreach ($tolog as $option=>$logvalue) {
if(!empty($logvalue)) {
// value array to string. use json_encode
- if (is_array($logvalue) && count($logvalue) > 0) $logvalue = json_encode($logvalue);
+ if (is_array($logvalue) && count($logvalue) > 0) $logvalue = json_encode($logvalue, (phpversion() > "5.4.0") ? JSON_UNESCAPED_UNICODE : 0);
$this->setVar($option, $logvalue);
}
}
@@ -173,10 +173,11 @@
$statsObj->update("file", 0, 0, false, $old_file); // value = 0 to not auto increment
}
$statsObj->updateAll("file", 100); // prob = 100
- $data = json_encode($tolog);
+ $data = "";
} else {
- $data = "\n" . json_encode($tolog);
+ $data = "\n";
}
+ $data .= json_encode($tolog, (phpversion() > "5.4.0") ? JSON_UNESCAPED_UNICODE : 0);
if ($fileHandler->open("a") == false) {
$this->setErrors('Cannot open file ({$log_file_name})');
return false;
@@ -188,6 +189,28 @@
$fileHandler->close();
return true;
}
+ public function exportLogsToCsv($logs, $headers, $csvNamePrefix="list_", $delimiter=";")
+ {
+ $csvFile = $this->userlog->getConfig("logfilepath") . "/" . USERLOG_DIRNAME . "/export/csv/" . $csvNamePrefix . "_" . date('Y-m-d_H-i-s') . ".csv";
+ // file create/open/write
+ $fileHandler = XoopsFile::getHandler();
+ $fileHandler->XoopsFileHandler($csvFile, false);
+ // force to create file if not exist
+ if(!$fileHandler->exists()) {
+ $fileHandler->XoopsFileHandler($csvFile, true); // create file and folder
+ $this->setErrors('File was not exist create file ({$csvFile})');
+ }
+ if ($fileHandler->open("a") == false) {
+ $this->setErrors('Cannot open file ({$csvFile})');
+ return false;
+ }
+ if(!fputcsv($fileHandler->handle, $headers, $delimiter)) return false;
+ foreach($logs as $thisRow) {
+ if(!fputcsv($fileHandler->handle, $thisRow, $delimiter)) return false;
+ }
+ $fileHandler->close();
+ return $csvFile;
+ }
public function getLogsFromFiles($log_file = null, $limit = 0, $start = 0, $options = null, $sort = "log_time", $order = "DESC")
{
$logs = array();
@@ -224,7 +247,7 @@
// if type is text
if (!empty($val_arr[0]) && intval($val_arr[0]) == 0) {
foreach ($logs as $id => $log) {
- if (is_array($log[$op])) $log[$op] = json_encode($log[$op]);
+ if (is_array($log[$op])) $log[$op] = json_encode($log[$op], (phpversion() > "5.4.0") ? JSON_UNESCAPED_UNICODE : 0);
foreach($val_arr as $qry) {
// if !QUERY eg: !logs.php,views.php
if (substr($qry,0,1) == "!") {
@@ -411,7 +434,65 @@
$ret = $this->getAll($criteria, $fields, $asObject, $id_as_key);
return $ret;
}
-
+ public function getLogsCounts($criteria = null, $fields = null, $asObject = true, $id_as_key = true)
+ {
+ if (is_array($fields) && count($fields) > 0) {
+ if (!in_array($this->keyName, $fields)) {
+ $fields[] = $this->keyName;
+ }
+ $select = implode(",", $fields);
+ } else {
+ $select = "*";
+ }
+ $limit = null;
+ $start = null;
+ $sql = "SELECT {$select}, COUNT(*) AS count FROM {$this->table}";
+ if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
+ $sql .= " " . $criteria->renderWhere();
+ if ($groupby = $criteria->getGroupby()) {
+ $sql .= $groupby;
+ }
+ $limit = $criteria->getLimit();
+ $start = $criteria->getStart();
+ }
+ $result = $this->db->query($sql, $limit, $start);
+ $ret = array();
+ $retCount = array();
+ if ($asObject) {
+ while ($myrow= $this->db->fetchArray($result)) {
+ if ($id_as_key) {
+ $retCount[$myrow[$this->keyName]] = array_pop($myrow);
+ } else {
+ $retCount[] = array_pop($myrow);
+ }
+ $object =& $this->create(false);
+ $object->assignVars($myrow);
+ if ($id_as_key) {
+ $ret[$myrow[$this->keyName]] = $object;
+ } else {
+ $ret[] = $object;
+ }
+ unset($object);
+ }
+ } else {
+ $object =& $this->create(false);
+ while ($myrow = $this->db->fetchArray($result)) {
+ if ($id_as_key) {
+ $retCount[$myrow[$this->keyName]] = array_pop($myrow);
+ } else {
+ $retCount[] = array_pop($myrow);
+ }
+ $object->assignVars($myrow);
+ if ($id_as_key) {
+ $ret[$myrow[$this->keyName]] = $object->getValues(array_keys($myrow));
+ } else {
+ $ret[] = $object->getValues(array_keys($myrow));
+ }
+ }
+ unset($object);
+ }
+ return array($ret,$retCount);
+ }
public function getLogsCount($otherCriteria = null,$notNullFields = '')
{
$criteria = new CriteriaCompo();
Modified: XoopsModules/userlog/trunk/userlog/class/setting.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/setting.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/class/setting.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -335,13 +335,25 @@
$el= array();
$query_types = array("="=>"",">"=>"GT", "<"=>"LT");
foreach($headers as $ele=>$def) {
- foreach($query_types as $type) {
- $defEl = "_AM_USERLOG_". strtoupper($ele.$type); // if constant is defined in translation - it is good for now
- if (defined($defEl . "_FORM")) {
- $el[$ele.$type] = new XoopsFormText(constant($defEl), "options[{$ele}{$type}]", 10, 255, !empty($options[$ele.$type]) ? $options[$ele.$type] : null);
- $el[$ele.$type]->setDescription(sprintf(constant($defEl . "_FORM"), $ele, $ele));
- $form->addElement($el[$ele.$type]);
- }
+ switch ($ele) {
+ case "admin":
+ $el[$ele] = new XoopsFormRadio(_AM_USERLOG_ADMIN, "options[{$ele}]",isset($options[$ele]) ? $options[$ele] : '');
+ $el[$ele]->addOption(1,_YES);
+ $el[$ele]->addOption(0,_NO);
+ $el[$ele]->addOption('',_ALL);
+ $el[$ele]->setDescription(_AM_USERLOG_ADMIN_FORM);
+ $form->addElement($el[$ele]);
+ break;
+ default:
+ foreach($query_types as $type) {
+ $defEl = "_AM_USERLOG_". strtoupper($ele.$type); // if constant is defined in translation - it is good for now
+ if (defined($defEl . "_FORM")) {
+ $el[$ele.$type] = new XoopsFormText(constant($defEl), "options[{$ele}{$type}]", 10, 255, !empty($options[$ele.$type]) ? $options[$ele.$type] : null);
+ $el[$ele.$type]->setDescription(sprintf(constant($defEl . "_FORM"), $ele, $ele));
+ $form->addElement($el[$ele.$type]);
+ }
+ }
+ break;
}
}
// http://stackoverflow.com/questions/8029532/how-to-prevent-submitting-the-html-forms-input-field-value-if-it-empty
Modified: XoopsModules/userlog/trunk/userlog/docs/changelog.txt
===================================================================
--- XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-11 07:34:12 UTC (rev 11197)
@@ -1,5 +1,6 @@
Userlog
Changelog:
+- add export to csv. add statistics page. rewrite views functions (2013/03/11)
- add more GUI facilities to admin/logs.php. a complete toggle formhead can remember the last status for each admin, reset button, up/down. (2013/03/07)
- add number of items to display and fix script_name bug in views block.(2013/03/05)
- add delete/purge for engine=db(2013/03/04)
Modified: XoopsModules/userlog/trunk/userlog/language/english/admin.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -24,6 +24,7 @@
define("_AM_USERLOG_ADMENU_INDEX","Home");
define("_AM_USERLOG_ADMENU_SETTING","Setting");
define("_AM_USERLOG_ADMENU_LOGS","Logs");
+define("_AM_USERLOG_ADMENU_STATS","Statistics");
define("_AM_USERLOG_ABOUT","About");
// setting.php loglog object options
@@ -182,6 +183,18 @@
define("_AM_USERLOG_LOG_DELETE_SUCCESS_QUERY","%1\$d logs deleted successfully with '%2\$s' query.");
define("_AM_USERLOG_LOG_DELETE_ERROR","Error. you input an invalid criteria for delete.");
define("_AM_USERLOG_LOG_DELETE_ERRORSELECT","You select nothing to delete.");
+
+// logs.php select
+define("_AM_USERLOG_LOG_SELECT","Select action to operate in the current page.");
+define("_AM_USERLOG_LOG_SELECT_BULK","Select action to operate in all pages.");
+define("_AM_USERLOG_LOG_ERRORSELECT","You select nothing.");
+
+// logs.php export
+define("_AM_USERLOG_LOG_EXPORT_CSV_SELECT","Export selected logs in the current page to csv.");
+define("_AM_USERLOG_LOG_EXPORT_CSV_ALL","Export all rendered logs in all pages to csv?");
+define("_AM_USERLOG_LOG_EXPORT_SUCCESS","%1\$d logs exported successfully to csv file. Csv file: %2\$s");
+define("_AM_USERLOG_LOG_EXPORT_ERROR","Error. you input an invalid criteria for export.");
+
// logs.php template
define("_AM_USERLOG_SHOW_FORM","Show head form");
define("_AM_USERLOG_HIDE_FORM","Hide head form");
@@ -194,6 +207,7 @@
define("_AM_USERLOG_VIEW_SCRIPT","Script views");
define("_AM_USERLOG_VIEW_ITEM_NAME","Item_name views");
define("_AM_USERLOG_VIEW","Views");
+define("_AM_USERLOG_MODULE_NAME","Module name");
// index.php stats.php
define("_AM_USERLOG_STATS_ABSTRACT","Statistics Overview");
Modified: XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html 2013-03-11 07:34:12 UTC (rev 11197)
@@ -1,38 +1,13 @@
-<{if $block.items.views}>
-<{if $block.sort_type eq "module" }>
<div class="outer">
- <div class="head"><{$smarty.const._AM_USERLOG_VIEW_ALL}>:<{$block.items.views}></div>
- <{foreach from=$block.items key=module item=arr_module}>
- <{if $module neq "views" }>
- <h1><{$module}>(<{$smarty.const._AM_USERLOG_VIEW_MODULE}>:<{$arr_module.views}>)</h1>
- <{foreach from=$arr_module key=script item=arr_script}>
- <{if $script neq "views" }>
- <h2><{$module}>/<{$script}>(<{$smarty.const._AM_USERLOG_VIEW_SCRIPT}>:<{$arr_script.views}>)</h2>
- <{foreach from=$arr_script key=item_name item=arr_item_name}>
- <{if $item_name neq "views" }>
- <h3><{$module}>/<{$script}>?<{$item_name}>(<{$smarty.const._AM_USERLOG_VIEW_ITEM_NAME}>:<{$arr_item_name.views}>)</h3>
- <{foreach from=$arr_item_name key=item_id item=item_content}>
- <{if $item_id neq "views" }>
- <div class="<{cycle values="even,odd"}> border">
- <a href="<{$xoops_url}>/modules/<{$module}>/<{$script}>?<{$item_name}>=<{$item_id}>" title="<{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)"><{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)</a>
- </div>
- <{/if}>
- <{/foreach}>
- <{/if}>
- <{/foreach}>
- <{/if}>
- <{/foreach}>
- <{/if}>
- <{/foreach}>
-</div>
-<{/if}>
-<{if $block.sort_type eq "views" }>
-<div class="outer">
- <{foreach from=$block.sort_views key=link item=item_content}>
+ <{foreach from=$block.items key=link item=item_content}>
+ <{if $block.sort eq "module" || $block.sort eq "module_name" || $block.sort eq "module_views"}>
+ <{if $lastmodule neq $item_content.module}>
+ <h1><{$item_content.module_name}>(<{$smarty.const._AM_USERLOG_VIEW_MODULE}>:<{$item_content.module_views}>)</h1>
+ <{/if}>
+ <{assign var=lastmodule value=$item_content.module}>
+ <{/if}>
<div class="<{cycle values="even,odd"}> border">
- <a href="<{$xoops_url}>/modules/<{$link}>" title="<{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)"><{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)</a>
+ <a href="<{$xoops_url}>/modules/<{$link}>" title="<{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)">[<{$item_content.module_name}>] <{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)</a>
</div>
<{/foreach}>
-</div>
-<{/if}>
-<{/if}>
\ No newline at end of file
+</div>
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html 2013-03-11 07:34:12 UTC (rev 11197)
@@ -39,23 +39,39 @@
<{if $logs}>
<{assign var=widthC value=5}>
<div class="outer">
- <form name="delete" action="logs.php?op=del&confirm=1<{if $query_page}>&<{$query_page}><{/if}><{if $query_entry}><{$query_entry}><{/if}>" method="POST" onsubmit="javascript: return deleteSubmitValid('log_id[]');">
- <div class="floatleft">
- <a href="#submitdeleteDown"><img src="<{xoModuleIcons16 down.png}>" alt="<{$smarty.const._AM_USERLOG_DOWN}>" title="<{$smarty.const._AM_USERLOG_DOWN}>" /></a>
- <input id="submitdeleteUp" class="formButton" type="submit" name="submitdelete" value="<{$smarty.const._AM_USERLOG_LOG_DELETE_SELECT}>" title="<{$smarty.const._AM_USERLOG_LOG_DELETE_SELECT}>" />
- </div>
<{if $pages gt 1}>
+ <form name="bulk" action="logs.php?op=<{if $query_page}>&<{$query_page}><{/if}><{if $query_entry}><{$query_entry}><{/if}>" method="POST"
+ onsubmit="javascript: if(window.document.bulk.op.value =='') {return false;} else if (window.document.bulk.op.value =='del') {return deleteSubmitValid();} else {window.document.bulk.limitentry.value = 0};">
+ <input type="hidden" name="confirm" value="1" />
+ <input type="hidden" name="log_id" value="bulk" />
+ <input type="hidden" name="limitentry" value="<{$limitentry}>" />
<div class="floatright xo-buttons">
- <a class="ui-corner-all tooltip" title="<{$smarty.const._AM_USERLOG_LOG_PURGE_ALL}>" href="logs.php?op=del&confirm=1&log_id=bulk<{if $query_page}>&<{$query_page}><{/if}><{if $query_entry}><{$query_entry}><{/if}>" onclick="return confirm('<{$smarty.const._AM_USERLOG_LOG_DELETE_CONFIRM}>');">
- <img src="<{xoModuleIcons16 delete.png}>" alt="<{$smarty.const._DELETE}>" title="<{$smarty.const._DELETE}>" /><{$smarty.const._AM_USERLOG_LOG_PURGE_ALL}>
- </a>
+ <select name="op">
+ <option value=""><{$smarty.const._AM_USERLOG_LOG_SELECT_BULK}></option>
+ <option value="del"><{$smarty.const._AM_USERLOG_LOG_PURGE_ALL}></option>
+ <option value="export-csv"><{$smarty.const._AM_USERLOG_LOG_EXPORT_CSV_ALL}></option>
+ </select>
+ <input class="formButton" type="submit" name="submitbulk" value="<{$smarty.const._SUBMIT}>" title="<{$smarty.const._SUBMIT}>" />
</div>
+ </form>
<{/if}>
+ <form name="select" action="logs.php?op=<{if $query_page}>&<{$query_page}><{/if}><{if $query_entry}><{$query_entry}><{/if}>" method="POST"
+ onsubmit="javascript: if(window.document.select.op.value =='') {return false;} else if (window.document.select.op.value =='del') {return deleteSubmitValid('log_id[]');} else if (isOneChecked('log_id[]')) {return true;} else {alert('<{$smarty.const._AM_USERLOG_LOG_ERRORSELECT}>'); return false;};">
+ <input type="hidden" name="confirm" value="1" />
+ <div class="floatleft">
+ <a href="#submitDown"><img src="<{xoModuleIcons16 down.png}>" alt="<{$smarty.const._AM_USERLOG_DOWN}>" title="<{$smarty.const._AM_USERLOG_DOWN}>" /></a>
+ <select name="op">
+ <option value=""><{$smarty.const._AM_USERLOG_LOG_SELECT}></option>
+ <option value="del"><{$smarty.const._AM_USERLOG_LOG_DELETE_SELECT}></option>
+ <option value="export-csv"><{$smarty.const._AM_USERLOG_LOG_EXPORT_CSV_SELECT}></option>
+ </select>
+ <input id="submitUp" class="formButton" type="submit" name="submitselect" value="<{$smarty.const._SUBMIT}>" title="<{$smarty.const._SUBMIT}>" />
+ </div>
<{$pagenav}>
<div class="clear"></div>
- <div class="head boxshadow1 border xx-small">
+ <div class="head boxshadow1 border x-small">
<div class="width1 floatleft center">
- <input title="<{$smarty.const._ALL}>" type="checkbox" name="id_check" id="id_check" value="1" onclick="xoopsCheckAll('delete', 'id_check');" />
+ <input title="<{$smarty.const._ALL}>" type="checkbox" name="id_check" id="id_check" value="1" onclick="xoopsCheckAll('select', 'id_check');" />
</div>
<{foreach item=title key=header from=$headers}>
<div title="<{$title}>" class="width<{if $header == "admin" || $header == "log_id" || $header == "uid"}>1<{else}><{$widthC}><{/if}> floatleft center" style="height: 15px; overflow: hidden;">
@@ -67,7 +83,7 @@
<{foreach item=log key=log_id from=$logs}>
<div class="<{cycle values='even,odd'}> border x-small">
<div class="width1 floatleft center">
- <a href="logs.php?op=del&confirm=1<{if $query_page}>&<{$query_page}><{/if}><{if $query_entry}><{$query_entry}><{/if}>&log_id=<{$log_id}>" title="<{$smarty.const._DELETE}>" onclick="return confirm('<{$smarty.const._AM_USERLOG_LOG_DELETE_CONFIRM}>');"><img src="<{xoModuleIcons16 delete.png}>" alt="<{$smarty.const._DELETE}>" title="<{$smarty.const._DELETE}>" /></a>
+ <input type="image" src="<{xoModuleIcons16 delete.png}>" alt="<{$smarty.const._DELETE}>" title="<{$smarty.const._DELETE}>" onclick="window.document.select.op.value ='del';window.document.getElementById('log_id[<{$log_id}>]').checked = true; window.document.forms.select.click();" />
<input type="checkbox" name="log_id[]" id="log_id[<{$log_id}>]" value="<{$log_id}>" />
</div>
<{foreach item=title key=header from=$headers}>
@@ -76,26 +92,18 @@
<div class="clear"></div>
</div>
<{/foreach}>
+ </form>
<div class="floatleft">
- <a href="#submitdeleteUp"><img src="<{xoModuleIcons16 up.png}>" alt="<{$smarty.const._AM_USERLOG_UP}>" title="<{$smarty.const._AM_USERLOG_UP}>" /></a>
- <input id="submitdeleteDown" class="formButton" type="submit" name="submitdelete" value="<{$smarty.const._AM_USERLOG_LOG_DELETE_SELECT}>" title="<{$smarty.const._AM_USERLOG_LOG_DELETE_SELECT}>" />
+ <a id="submitDown" href="#submitUp"><img src="<{xoModuleIcons16 up.png}>" alt="<{$smarty.const._AM_USERLOG_UP}>" title="<{$smarty.const._AM_USERLOG_UP}>" /></a>
</div>
- <{if $pages gt 1}>
- <div class="floatright xo-buttons">
- <a class="ui-corner-all tooltip" title="<{$smarty.const._AM_USERLOG_LOG_PURGE_ALL}>" href="logs.php?op=del&confirm=1&log_id=bulk<{if $query_page}>&<{$query_page}><{/if}><{if $query_entry}><{$query_entry}><{/if}>" onclick="return confirm('<{$smarty.const._AM_USERLOG_LOG_DELETE_CONFIRM}>');">
- <img src="<{xoModuleIcons16 delete.png}>" alt="<{$smarty.const._DELETE}>" title="<{$smarty.const._DELETE}>" /><{$smarty.const._AM_USERLOG_LOG_PURGE_ALL}>
- </a>
- </div>
- <{/if}>
<{$pagenav}>
<div class="clear"></div>
- </form>
</div>
<{/if}>
<{$form}>
<script type="text/javascript">
function deleteSubmitValid($name) {
- if (isOneChecked($name)) {
+ if ($name == null || isOneChecked($name)) {
return confirm('<{$smarty.const._AM_USERLOG_LOG_DELETE_CONFIRM}>');
} else {
alert('<{$smarty.const._AM_USERLOG_LOG_DELETE_ERRORSELECT}>');
Added: XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html (rev 0)
+++ XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html 2013-03-11 07:34:12 UTC (rev 11197)
@@ -0,0 +1,7 @@
+<{$logo}>
+<div class="outer">
+ <div class="width20 floatright">
+ <{$stats_abstract}>
+ </div>
+ <div class="clear"></div>
+</div>
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/xoops_version.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-11 05:35:55 UTC (rev 11196)
+++ XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-11 07:34:12 UTC (rev 11197)
@@ -83,6 +83,10 @@
$modversion['templates'][$i]['file'] = 'userlog_admin_logs.html';
$modversion['templates'][$i]['description'] = 'list of userlog logs';
+$i++;
+$modversion['templates'][$i]['file'] = 'userlog_admin_stats.html';
+$modversion['templates'][$i]['description'] = 'Logs Statistics';
+
// Admin things
$modversion['hasAdmin'] = 1;
$modversion['adminindex'] = "admin/index.php";
@@ -90,19 +94,19 @@
// blocks
$i = 0;
-// options[0] - number of logs to proceed. use a high number. 0 = no limit and get all. default 2000
-// options[1] - number of items to show in block. the default is 10
-// options[2] - items to select in Where claus
-// options[3] - Time period - default 1 day
-// options[4] - Uid in WHERE claus: select some users to only count views by them 0-all (by default)
-// options[5] - Gid in WHERE claus: select some groups to only count views by them 0-all (by default)
-// options[6] - Sort - module, views
+// options[0] - number of items to show in block. the default is 10
+// options[1] - items to select in Where claus
+// options[2] - Time period - default 1 day
+// options[3] - Uid in WHERE claus: select some users to only count views by them 0-all (by default)
+// options[4] - Gid in WHERE claus: select some groups to only count views by them 0-all (by default)
+// options[5] - Sort - module, views
+// options[6] - Order - DESC, ASC
$modversion['blocks'][$i]['file'] = "views.php";
$modversion['blocks'][$i]['name'] = _MI_USERLOG_BLOCK_VIEWS;
$modversion['blocks'][$i]['description'] = _MI_USERLOG_BLOCK_VIEWS_DSC;
$modversion['blocks'][$i]['show_func'] = "userlog_views_show";
$modversion['blocks'][$i]['edit_func'] = "userlog_views_edit";
-$modversion['blocks'][$i]['options'] = "2000|10||1|0|0|views";
+$modversion['blocks'][$i]['options'] = "10|0|1|0|0|views|DESC";
$modversion['blocks'][$i]['template'] = "userlog_views.html";
// Config categories
|