|
From: <ir...@us...> - 2013-03-19 02:41:49
|
Revision: 11248
http://sourceforge.net/p/xoops/svn/11248
Author: irmtfan
Date: 2013-03-19 02:41:45 +0000 (Tue, 19 Mar 2013)
Log Message:
-----------
- change version to ALPHA 2(2013/03/19)
- enhance admin/logs.php template to show admin(y/n), group names, user link, user ip link to whois, ...(2013/03/19)
- add HomePage to module scope. It will be for all root scripts like ROOT/admin.php(2013/03/19)
- add module name to table logs in database for better performance(2013/03/19)
- add user views, group views, item views form to statistics page(2013/03/19)
Modified Paths:
--------------
XoopsModules/userlog/trunk/userlog/admin/index.php
XoopsModules/userlog/trunk/userlog/admin/setting.php
XoopsModules/userlog/trunk/userlog/admin/stats.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/class/userlog.php
XoopsModules/userlog/trunk/userlog/docs/changelog.txt
XoopsModules/userlog/trunk/userlog/language/english/admin.php
XoopsModules/userlog/trunk/userlog/language/english/blocks.php
XoopsModules/userlog/trunk/userlog/language/english/help/help.html
XoopsModules/userlog/trunk/userlog/sql/mysql.sql
XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html
XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html
XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html
XoopsModules/userlog/trunk/userlog/xoops_version.php
Modified: XoopsModules/userlog/trunk/userlog/admin/index.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/index.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/admin/index.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -57,7 +57,7 @@
$arr2["value"] ? 'GREEN' : 'RED');
}
}
-$indexAdmin->addConfigBoxLine($Userlog->getConfig('logfilepath') , 'folder');
+$indexAdmin->addConfigBoxLine(array($Userlog->getConfig('logfilepath'), 755) , 'chmod');
$indexAdmin->addConfigBoxLine("<span class='bold " . ($Userlog->getConfig('status') ? "green" : "red") . "'>" . _MI_USERLOG_STATUS . " " . ($Userlog->getConfig('status') ? _MI_USERLOG_ACTIVE : _MI_USERLOG_IDLE) . "</span>", 'default');
echo $indexAdmin->addNavigation('index.php');
echo $indexAdmin->renderButton();
Modified: XoopsModules/userlog/trunk/userlog/admin/setting.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/setting.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/admin/setting.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -91,9 +91,9 @@
$logsetObj->setVar("name",$name);
$logsetObj->setVar("logby",$logby);
$logsetObj->setVar("unique_id",$unique_id);
- // select views means store uid, groups, script name, pagetitle, module, item name, item id in Database
+ // select views means store uid, groups, script name, pagetitle, module, module_name, item name, item id in Database
if (in_array("views",$option)) {
- $option = array_merge(array("uid", "groups", "script","pagetitle","module","item_name","item_id"),$option);
+ $option = array_merge(array("uid", "groups", "script","pagetitle","module","module_name","item_name","item_id"),$option);
}
// always log id and time
if(!empty($option[0])) {
@@ -121,10 +121,7 @@
case "default":
default:
// get all dirnames for scope
- $modules = $Userlog->getModules();
- foreach($modules as $module) {
- $dirNames[$module->dirname()] = $module->name();
- }
+ $dirNames = $Userlog->getModules();
// unset userlog
//unset($dirNames[USERLOG_DIRNAME]);
// get all settings as array
Modified: XoopsModules/userlog/trunk/userlog/admin/stats.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/admin/stats.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/admin/stats.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -26,6 +26,16 @@
$Userlog = Userlog::getInstance(false);
// Where do we start ?
+$startentry = UserlogRequest::getInt('startentry',0);
+$limitentry = UserlogRequest::getInt('limitentry',10);
+$sortentry = UserlogRequest::getString('sortentry','count');
+$orderentry = UserlogRequest::getString('orderentry','DESC');
+$modules = UserlogRequest::getArray("modules");
+$moduleScriptItem = UserlogRequest::getArray("moduleScriptItem");
+$log_timeGT = UserlogRequest::getInt('log_timeGT',1);
+$users = UserlogRequest::getArray("users", -1);
+$groups = UserlogRequest::getArray("groups", 0);
+
// update all time stats
$statsObj = UserlogStats::getInstance();
$statsObj->updateAll("log", 100); // prob = 100
@@ -50,17 +60,143 @@
$criteria = new CriteriaCompo();
$criteria->setGroupby("module");
$moduleViews = $Userlog->getHandler('log')->getCounts($criteria);
+$dirNames = $Userlog->getModules();
if (!empty($moduleViews)) {
$indexAdmin->addInfoBox(_AM_USERLOG_VIEW_MODULE);
- $modulesObj = $Userlog->getModules(array_keys($moduleViews));
- foreach($modulesObj as $mObj) {
- $mDir = $mObj->dirname();
+ foreach($moduleViews as $mDir=>$views) {
$indexAdmin->addInfoBoxLine(_AM_USERLOG_VIEW_MODULE,
- $mObj->name() . ": %s",
- $moduleViews[$mDir],
- $moduleViews[$mDir]? 'GREEN' : 'RED');
+ $dirNames[$mDir] . ": %s",
+ $views,
+ $views? 'GREEN' : 'RED');
}
}
+$criteria = new CriteriaCompo();
+$criteria->setGroupby("uid");
+$criteria->setLimit(10);
+$userViews = $Userlog->getHandler('log')->getCounts($criteria);
+if (!empty($userViews)) {
+ $indexAdmin->addInfoBox(_AM_USERLOG_VIEW_USER);
+ foreach($userViews as $uid=>$views) {
+ $indexAdmin->addInfoBoxLine(_AM_USERLOG_VIEW_USER,
+ (($uid) ? "<a href=\"" . XOOPS_URL . "/userinfo.php?uid=" . $uid . "\">" . XoopsUserUtility::getUnameFromId($uid) . "</a>" : XoopsUserUtility::getUnameFromId(0)) . ": %s",
+ $views,
+ $views? 'GREEN' : 'RED');
+ }
+}
+$criteria = new CriteriaCompo();
+$criteria->setGroupby("groups");
+$criteria->setLimit(10);
+$groupViews = $Userlog->getHandler('log')->getCounts($criteria);
+if (!empty($groupViews)) {
+ $indexAdmin->addInfoBox(_AM_USERLOG_VIEW_GROUP);
+ foreach($groupViews as $gids=>$views) {
+ $groupArr = explode("g", substr($gids, 1)); // remove the first "g" from string
+ foreach($groupArr as $group) {
+ if(isset($gidViews[$group])) {
+ $gidViews[$group] += $views;
+ } else {
+ $gidViews[$group] = $views;
+ }
+ }
+ }
+ $groupNames = $Userlog->getGroupList();
+ foreach($gidViews as $gid=>$views) {
+ $indexAdmin->addInfoBoxLine(_AM_USERLOG_VIEW_GROUP,
+ $groupNames[$gid] . ": %s",
+ $views,
+ $views? 'GREEN' : 'RED');
+ }
+}
+
+// START module - script - item
+$module=array();
+// items
+foreach ($moduleScriptItem 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]]["item_name"] = array();
+ $module[$module_script[0]]["script"] = array_slice($module_script,1);
+ }
+ $module[$module_script[0]]["script"] = array_unique(array_merge($module[$module_script[0]]["script"], array_slice($module_script,1)));
+ $module[$module_script[0]]["item_name"][] = $module_script_item[1];
+}
+// add modules dont have item_name
+foreach($modules as $dir) {
+ if(!isset($module[$dir])) $module[$dir] = null;
+}
+// END module - script - item
+$loglogObj = UserlogLog::getInstance();
+
+// get items views
+$items = $loglogObj->getViews($limitentry , $startentry, $sortentry, $orderentry, $module, $log_timeGT, ($users[0] != -1) ? $users : array(), ($groups[0] != 0) ? $groups : array());
+$GLOBALS['xoopsTpl']->assign('sortentry',$sortentry);
+$GLOBALS['xoopsTpl']->assign('items',$items);
+// SRART form
+$form = new XoopsThemeForm(_AM_USERLOG_VIEW,'views','stats.php', 'post');
+// number of items to display element
+$limitEl = new XoopsFormText(_MB_USERLOG_ITEMS_NUM, "limitentry", 10, 255, $limitentry);
+$sortEl = new XoopsFormSelect(_AM_USERLOG_SORT,"sortentry", $sortentry);
+$sortEl->addOptionArray(array(
+ "count"=>_AM_USERLOG_VIEW,
+ "module"=>_AM_USERLOG_MODULE,
+ "module_name"=>_AM_USERLOG_MODULE_NAME,
+ "module_count"=>_AM_USERLOG_VIEW_MODULE
+ ));
+$sortEl->setDescription(_AM_USERLOG_SORT_DSC);
+$orderEl = new XoopsFormSelect(_AM_USERLOG_ORDER,"orderentry", $orderentry);
+$orderEl->addOption("DESC", _DESCENDING);
+$orderEl->addOption("ASC", _ASCENDING);
+$orderEl->setDescription(_AM_USERLOG_ORDER_DSC);
+// modules, items elements
+$moduleObjs = $Userlog->getModules(array(), null, true);
+foreach ($moduleObjs as $mObj) {
+ $dirNames[$mObj->dirname()] = $mObj->name();
+ $not_config = $mObj->getInfo('notification');
+ if (!empty($not_config['category'])) {
+ foreach ($not_config['category'] as $category) {
+ if (!empty($category['item_name'])) {
+ $script = is_array($category["subscribe_from"]) ? implode(":", $category["subscribe_from"]) : $category["subscribe_from"];
+ $itemLinks[$mObj->dirname(). ":" . $script . "-" . $category['item_name']] = $mObj->dirname()."/" . $script ."?".$category['item_name']."=ITEM_ID";
+ }
+ }
+ }
+}
+$moduleEl = new XoopsFormSelect(_AM_USERLOG_MODULES,"modules",$modules,5, true);
+$moduleEl->addOptionArray($dirNames);
+$itemsEl = new XoopsFormSelect(_AM_USERLOG_ITEMS,"moduleScriptItem",$moduleScriptItem,5, true);
+$itemsEl->addOptionArray($itemLinks);
+$itemsEl->setDescription(_AM_USERLOG_ITEMS_DSC);
+
+$timeEl = new XoopsFormText(_AM_USERLOG_LOG_TIMEGT, "log_timeGT", 10, 255, $log_timeGT);
+$timeEl->setDescription(_AM_USERLOG_LOG_TIMEGT_FORM);
+
+$userRadioEl = new XoopsFormRadio(_AM_USERLOG_UID, "users", $users[0]);
+$userRadioEl->addOption(-1,_ALL);
+$userRadioEl->addOption(($users[0] != -1) ? $users[0] : 0,_SELECT); // if no user in selection box it select uid=0 anon users
+$userRadioEl->setExtra("onchange=\"var el=document.getElementById('users'); el.disabled=(this.id == 'users1'); if (!el.value) {el.value= this.value}\""); // if user dont select any option it select "all"
+$userSelectEl = new XoopsFormSelectUser(_AM_USERLOG_UID, "users", true, $users, 3, true);
+$userEl = new XoopsFormLabel(_AM_USERLOG_UID, $userRadioEl->render().$userSelectEl->render());
+
+$groupRadioEl = new XoopsFormRadio(_AM_USERLOG_GROUPS, "groups", $groups[0]);
+$groupRadioEl->addOption(0,_ALL);
+$groupRadioEl->addOption(($groups[0] != 0) ? $groups[0] : 2,_SELECT); // if no group in selection box it select gid=2 registered users
+$groupRadioEl->setExtra("onchange=\"var el=document.getElementById('groups'); el.disabled=(this.id == 'groups1'); if (!el.value) {el.value= this.value}\""); // if group dont select any option it select "all"
+$groupSelectEl = new XoopsFormSelectGroup(_AM_USERLOG_GROUPS, "groups", true, $groups, 3, true);
+$groupEl = new XoopsFormLabel(_AM_USERLOG_GROUPS, $groupRadioEl->render().$groupSelectEl->render());
+
+$submitEl = new XoopsFormButton(_SUBMIT, 'submitlogs', _SUBMIT, 'submit');
+// add all elements to form
+$form->addElement($limitEl);
+$form->addElement($moduleEl);
+$form->addElement($itemsEl);
+$form->addElement($timeEl);
+$form->addElement($userEl);
+$form->addElement($groupEl);
+$form->addElement($sortEl);
+$form->addElement($orderEl);
+$form->addElement($submitEl);
+$GLOBALS['xoopsTpl']->assign('form',$form->render());
$GLOBALS['xoopsTpl']->assign('stats_abstract',$indexAdmin->renderInfoBox());
$GLOBALS['xoopsTpl']->assign('logo',$indexAdmin->addNavigation('stats.php'));
// template
Modified: XoopsModules/userlog/trunk/userlog/blocks/views.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/blocks/views.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/blocks/views.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -37,111 +37,28 @@
function userlog_views_show($options)
{
- $Userlog = Userlog::getInstance();
-
+ $loglogObj = UserlogLog::getInstance();
+ $module=array();
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);
+ $module[$module_script[0]]["item_name"] = array();
+ $module[$module_script[0]]["script"] = 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];
+ $module[$module_script[0]]["script"] = array_unique(array_merge($module[$module_script[0]]["script"], array_slice($module_script,1)));
+ $module[$module_script[0]]["item_name"][] = $module_script_item[1];
}
- $criteriaModule = new CriteriaCompo();
- foreach ($module as $module_dir=>$items) {
- $criteriaItem = new CriteriaCompo();
- $criteriaItem->add(new Criteria('module', $module_dir));
- $criteriaItemName = new CriteriaCompo();
- foreach($items as $item_name) {
- // why we cannot use this $criteriaItemName->add(new Criteria('item_name', $items, "IN"));
- $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,$criteriaScript);
- }
}
+ $users = ($options[3] != -1) ? explode(",",$options[3]) : array();
+ $groups = !empty($options[4]) ? explode(",",$options[4]) : array();
- if (!empty($options[2])) {
- $starttime = time() - $Userlog->getSinceTime($options[2]);
- $criteriaSince = new CriteriaCompo();
- $criteriaSince->add(new Criteria('log_time', $starttime ,'>'));
- }
-
- if (!empty($options[3])) {
- $criteriaUser = new CriteriaCompo();
- $criteriaUser->add(new Criteria('uid', '(' . $options[3] . ')', 'IN'));
- }
- if (!empty($options[4])) {
- $criteriaGroup = new CriteriaCompo();
- $options_groups = explode(',', $options[4]); // groups to select
- foreach($options_groups as $group) {
- $criteriaGroup->add(new Criteria("groups", "%g" . $group . "%", "LIKE"), "OR");
- }
- }
-
- // add all criterias
- $criteria = new CriteriaCompo();
- if ( !empty($criteriaModule) ) {
- $criteria->add($criteriaModule);
- }
- if ( !empty($criteriaSince) ) {
- $criteria->add($criteriaSince);
- }
- if ( !empty($criteriaUser) ) {
- $criteria->add($criteriaUser);
- }
- if ( !empty($criteriaGroup) ) {
- $criteria->add($criteriaGroup);
- }
- $criteria->setLimit($options[0]);
- $criteria->setSort(($options[5] == "views") ? "count" : "module");
- $criteria->setOrder($options[6]);
- $fields = array("uid","groups","pagetitle","module","script","item_name","item_id");
- $criteria->setGroupby("module,script,item_name,item_id");
-
- list($loglogsObj, $itemViews) = $Userlog->getHandler('log')->getLogsCounts($criteria,$fields);
- $criteria->setGroupby("module");
- $criteria->setSort(($options[5] == "module_views") ? "count" : "module");
- $moduleViews = $Userlog->getHandler('log')->getCounts($criteria);
- $modules = $Userlog->getModules(array_keys($moduleViews));
- foreach($modules as $module) {
- $moduleNames[$module->dirname()] = $module->name();
- }
- unset($criteria);
- // initializing
- $items = array();; // very important!!!
- foreach($loglogsObj as $key=>$loglogObj) {
- $module_dirname = $loglogObj->module();
- $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();
- foreach($items as $link=>$item) {
- $col1[$link] = $item[$options[5]];
- $col2[$link] = $item["views"];//second sort by
- }
- if ( !empty($items) ) {
- array_multisort($col1, ($options[6] == "ASC") ? SORT_ASC : SORT_DESC ,$col2 ,SORT_DESC, $items);
- }
+ $items = $loglogObj->getViews($options[0] , 0, $options[5], $options[6], $module, $options[2], $users, $groups);
+ $block = array();
$block["items"] = $items;
$block["sort"] = $options[5];
- unset($loglogsObj,$items);
return $block;
}
@@ -169,36 +86,34 @@
$i=0;
// number of items to display element
- $numitemsEle = new XoopsFormText(_MB_USERLOG_BLOCK_ITEMS_NUM, "options[{$i}]", 10, 255, intval($options[$i]));
+ $numitemsEle = new XoopsFormText(_MB_USERLOG_ITEMS_NUM, "options[{$i}]", 10, 255, intval($options[$i]));
$i++;
// views element
$options_views = explode(',', $options[$i]);
- $viewsEle = new XoopsFormCheckBox(_MB_USERLOG_BLOCK_ITEMS, "options[{$i}][]", $options_views);
+ $viewsEle = new XoopsFormCheckBox(_AM_USERLOG_ITEMS, "options[{$i}][]", $options_views);
$viewsEle->columns = 3;
$viewsEle->addOptionArray($hasviews);
$check_all = _ALL . ": <input type=\"checkbox\" name=\"item_check\" id=\"item_check\" value=\"1\" onclick=\"xoopsCheckGroup('blockform', 'item_check','options[{$i}][]');\" />"; // blockform is the main form
- $viewsEle = new XoopsFormLabel(_MB_USERLOG_BLOCK_ITEMS, $check_all ."<br\>". $viewsEle->render());
- $viewsEle->setDescription(_MB_USERLOG_BLOCK_ITEMS_DSC);
+ $viewsEle = new XoopsFormLabel(_AM_USERLOG_ITEMS, $check_all ."<br\>". $viewsEle->render());
+ $viewsEle->setDescription(_AM_USERLOG_ITEMS_DSC);
$i++;
- $timeEle = new XoopsFormText(_MB_USERLOG_BLOCK_TIME, "options[{$i}]", 10, 255, $options[$i]);
- $timeEle->setDescription(_MB_USERLOG_BLOCK_TIME_DSC);
+ $timeEle = new XoopsFormText(_AM_USERLOG_LOG_TIMEGT, "options[{$i}]", 10, 255, $options[$i]);
+ $timeEle->setDescription(_AM_USERLOG_LOG_TIMEGT_FORM);
$i++;
- // topic_poster element
- $userRadioEle = new XoopsFormRadio(_AM_USERLOG_UID, "options[{$i}]", !empty($options[$i]));
- $userRadioEle->addOption(0,_ALL);
- $userRadioEle->addOption(!empty($options[$i]) ? $options[$i] : 1,_SELECT); // if no user in selection box it select uid=1
+ $userRadioEle = new XoopsFormRadio(_AM_USERLOG_UID, "options[{$i}]", $options[$i]);
+ $userRadioEle->addOption(-1,_ALL);
+ $userRadioEle->addOption(($options[$i] != -1) ? $options[$i] : 0,_SELECT); // if no user in selection box it select uid=0 anon users
$userRadioEle->setExtra("onchange=\"var el=document.getElementById('options[{$i}]'); el.disabled=(this.id == 'options[{$i}]1'); if (!el.value) {el.value= this.value}\""); // if user dont select any option it select "all"
- $userSelectEle = new XoopsFormSelectUser(_AM_USERLOG_UID, "options[{$i}]", false, explode(',', $options[$i]), 3, true);
+ $userSelectEle = new XoopsFormSelectUser(_AM_USERLOG_UID, "options[{$i}]", true, explode(',', $options[$i]), 3, true);
$userEle = new XoopsFormLabel(_AM_USERLOG_UID, $userRadioEle->render().$userSelectEle->render());
$i++;
- // topic_poster element
$groupRadioEle = new XoopsFormRadio(_AM_USERLOG_GROUPS, "options[{$i}]", !empty($options[$i]));
$groupRadioEle->addOption(0,_ALL);
- $groupRadioEle->addOption(!empty($options[$i]) ? $options[$i] : 1,_SELECT); // if no group in selection box it select uid=1
+ $groupRadioEle->addOption(!empty($options[$i]) ? $options[$i] : 2,_SELECT); // if no group in selection box it select gid=2 registered users
$groupRadioEle->setExtra("onchange=\"var el=document.getElementById('options[{$i}]'); el.disabled=(this.id == 'options[{$i}]1'); if (!el.value) {el.value= this.value}\""); // if group dont select any option it select "all"
$groupSelectEle = new XoopsFormSelectGroup(_AM_USERLOG_GROUPS, "options[{$i}]", true, explode(',', $options[$i]), 3, true);
$groupEle = new XoopsFormLabel(_AM_USERLOG_GROUPS, $groupRadioEle->render().$groupSelectEle->render());
@@ -206,10 +121,10 @@
$i++;
$sortEle = new XoopsFormSelect(_AM_USERLOG_SORT, "options[{$i}]", $options[$i]);
$sortEle->addOptionArray(array(
- "views"=>_AM_USERLOG_VIEW,
+ "count"=>_AM_USERLOG_VIEW,
"module"=>_AM_USERLOG_MODULE,
"module_name"=>_AM_USERLOG_MODULE_NAME,
- "module_views"=>_AM_USERLOG_VIEW_MODULE
+ "module_count"=>_AM_USERLOG_VIEW_MODULE
));
$sortEle->setDescription(_AM_USERLOG_SORT_DSC);
Modified: XoopsModules/userlog/trunk/userlog/class/log.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/class/log.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -52,7 +52,8 @@
$this->initVar("script", XOBJ_DTYPE_TXTBOX, null, true, 50);
$this->initVar("referer", XOBJ_DTYPE_TXTBOX, null, true, 255);
$this->initVar("pagetitle", XOBJ_DTYPE_TXTBOX, null, false, 255);
- $this->initVar("module", XOBJ_DTYPE_TXTBOX, null, true, 10);
+ $this->initVar("module", XOBJ_DTYPE_TXTBOX, null, true, 25);
+ $this->initVar("module_name", XOBJ_DTYPE_TXTBOX, null, true, 25);
$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);
@@ -96,10 +97,106 @@
return $this->userlog->formatTime($this->getVar('last_login'));
}
- public function getViews($criteria = null)
+ public function getViews($limit = 10, $start = 0, $sort = 'count', $order = 'DESC' ,$modules = array(), $since = 0, $users = array(), $groups = array())
{
+ if (!empty($modules)) {
+ $criteriaModule = new CriteriaCompo();
+ foreach ($modules as $module_dir=>$items) {
+ $criteriaItem = new CriteriaCompo();
+ $criteriaItem->add(new Criteria('module', $module_dir));
+ $criteriaItemName = new CriteriaCompo();
+ if (!empty($items["item_name"])) {
+ foreach($items["item_name"] as $item_name) {
+ // why we cannot use this $criteriaItemName->add(new Criteria('item_name', $items, "IN"));
+ $criteriaItemName->add(new Criteria('item_name', $item_name), "OR");
+ }
+ }
+ $criteriaItem->add($criteriaItemName);
+ $criteriaScript = new CriteriaCompo();
+ if (!empty($items["script"])) {
+ foreach($items["script"] as $script_name) {
+ $criteriaScript->add(new Criteria('script', $script_name), "OR");
+ }
+ }
+ $criteriaItem->add($criteriaScript);
+ $criteriaModule->add($criteriaItem, "OR");
+ unset($criteriaItem,$criteriaItemName,$criteriaScript);
+ }
}
+ if (!empty($since)) {
+ $starttime = time() - $this->userlog->getSinceTime($since);
+ $criteriaSince = new CriteriaCompo();
+ $criteriaSince->add(new Criteria('log_time', $starttime ,'>'));
+ }
+
+ if (!empty($users)) {
+ $criteriaUser = new CriteriaCompo();
+ $criteriaUser->add(new Criteria('uid', '(' . implode(",",$users) . ')', 'IN'));
+ }
+ if (!empty($groups)) {
+ $criteriaGroup = new CriteriaCompo();
+ foreach($groups as $group) {
+ $criteriaGroup->add(new Criteria("groups", "%g" . $group . "%", "LIKE"), "OR");
+ }
+ }
+
+ // add all criterias
+ $criteria = new CriteriaCompo();
+ if ( !empty($criteriaModule) ) {
+ $criteria->add($criteriaModule);
+ }
+ if ( !empty($criteriaSince) ) {
+ $criteria->add($criteriaSince);
+ }
+ if ( !empty($criteriaUser) ) {
+ $criteria->add($criteriaUser);
+ }
+ if ( !empty($criteriaGroup) ) {
+ $criteria->add($criteriaGroup);
+ }
+ $criteria->setLimit($limit);
+ $criteria->setStart($start);
+ $sortItem = ($sort == "module_count") ? "module_name" : $sort;
+ $criteria->setSort($sortItem);
+ $criteria->setOrder($order);
+ $fields = array("uid","groups","pagetitle","module","module_name","script","item_name","item_id");
+ $criteria->setGroupby("uid, groups, module, script, item_name, item_id");
+
+ list($loglogsObj, $itemViews) = $this->userlog->getHandler('log')->getLogsCounts($criteria,$fields);
+ $criteria->setGroupby("module");
+ $criteria->setSort(($sort == "module_count") ? "count" : "module");
+ $moduleViews = $this->userlog->getHandler('log')->getCounts($criteria);
+ unset($criteria);
+ // initializing
+ $items = array(); // very important!!!
+ foreach($loglogsObj as $key=>$loglogObj) {
+ $module_dirname = $loglogObj->module();
+ $item_id = $loglogObj->item_id();
+ if(!empty($item_id)) {
+ $link = "modules/" . $module_dirname."/".$loglogObj->script() . "?".$loglogObj->item_name()."=".$item_id;
+ } elseif($module_dirname != "system-root") {
+ $link = "modules/" . $module_dirname."/".$loglogObj->script();
+ } else {
+ $link = $loglogObj->script();
+ }
+ $items[$link] = array();
+ $items[$link]["count"] = $itemViews[$key];
+ $items[$link]["pagetitle"] = $loglogObj->pagetitle();
+ $items[$link]["module"] = $module_dirname;
+ $items[$link]["module_name"] = $loglogObj->module_name();
+ $items[$link]["module_count"] = $moduleViews[$module_dirname];
+ }
+ foreach($items as $link=>$item) {
+ $col1[$link] = $item[$sort];
+ $col2[$link] = $item["count"];//second sort by
+ }
+ if ( !empty($items) ) {
+ array_multisort($col1, ($order == "ASC") ? SORT_ASC : SORT_DESC ,$col2 ,SORT_DESC, $items);
+ }
+ return $items;
+ }
+
public function store($tolog, $force = true)
{
if ($this->_store > 1) $this->storeFile($tolog); // store file
@@ -127,6 +224,10 @@
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"]);
+ // change g1g2 to Webmasters, Registered Users
+ $groups = explode("g", substr($logs[$log_id]["groups"], 1)); // remove the first "g" from string
+ $userGroupNames = $this->userlog->getFromKeys($this->userlog->getGroupList(), $groups);
+ $logs[$log_id]["groups"] = implode(",", $userGroupNames);
foreach ($this->_sourceJSON as $option){
// if value is not string it was decoded in file
if (!is_string($logs[$log_id][$option])) continue;
Modified: XoopsModules/userlog/trunk/userlog/class/setting.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/setting.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/class/setting.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -255,6 +255,10 @@
"title" => _AM_USERLOG_MODULE,
"value" => $this->userlog->getLogModule()->getVar("dirname")
),
+ "module_name" => array( "type" => "text",
+ "title" => _AM_USERLOG_MODULE_NAME,
+ "value" => $this->userlog->getLogModule()->getVar("name")
+ ),
"item_name" => array( "type" => "text",
"title" => _AM_USERLOG_ITEM_NAME,
"value" => null
Modified: XoopsModules/userlog/trunk/userlog/class/userlog.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/class/userlog.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/class/userlog.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -33,6 +33,7 @@
public $debugArray = array();
public $logext = "log";
public $cookiePrefix = "";
+ public $groupList;
protected function __construct($debug)
{
@@ -64,7 +65,7 @@
}
return $this->logmodule;
}
- public function &getModules($dirnames = array(), $otherCriteria = null)
+ public function &getModules($dirnames = array(), $otherCriteria = null, $asObj = false)
{
// get all dirnames
$module_handler =& xoops_gethandler('module');
@@ -79,7 +80,12 @@
}
$criteria->add(new Criteria('isactive', 1), "AND");
$modules = $module_handler->getObjects($criteria, true);
- return $modules;
+ if($asObj) return $modules;
+ $dirNames["system-root"] = _YOURHOME;
+ foreach($modules as $module) {
+ $dirNames[$module->dirname()] = $module->name();
+ }
+ return $dirNames;
}
public function &getUser()
{
@@ -88,7 +94,14 @@
}
return $this->user;
}
-
+ public function &getGroupList()
+ {
+ if ($this->groupList == null) {
+ $this->initGroupList();
+ }
+ return $this->groupList;
+ }
+
public function getConfig($name = null)
{
if ($this->config == null) {
@@ -206,7 +219,8 @@
$this->logmodule = $xoopsModule;
} else {
$hModule = xoops_gethandler('module');
- $this->logmodule = $hModule->getByDirname($this->dirname);
+ $this->logmodule = $hModule->getByDirname("system");
+ $this->logmodule->setVar("dirname","system-root");
}
$this->addLog('INIT LOGMODULE');
}
@@ -221,6 +235,12 @@
}
$this->addLog('INIT USER');
}
+ private function initGroupList()
+ {
+ $groupHandler =& xoops_gethandler('member');
+ $this->groupList = $groupHandler->getGroupList();
+ $this->addLog('INIT GROUP LIST');
+ }
private function initConfig()
{
Modified: XoopsModules/userlog/trunk/userlog/docs/changelog.txt
===================================================================
--- XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/docs/changelog.txt 2013-03-19 02:41:45 UTC (rev 11248)
@@ -1,5 +1,10 @@
Userlog
Changelog:
+- change version to ALPHA 2(2013/03/19)
+- enhance admin/logs.php template to show admin(y/n), group names, user link, user ip link to whois, ...(2013/03/19)
+- add HomePage to module scope. It will be for all root scripts like ROOT/admin.php(2013/03/19)
+- add module name to table logs in database for better performance(2013/03/19)
+- add user views, group views, item views form to statistics page(2013/03/19)
- add filemanager to delete/rename/copy/merge/zip/export-csv log files(2013/03/12)
- add getModules function, add check all items in views block (2013/03/12)
- add export to csv. add statistics page. rewrite views functions (2013/03/11)
Modified: XoopsModules/userlog/trunk/userlog/language/english/admin.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/language/english/admin.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -53,6 +53,7 @@
define("_AM_USERLOG_REFERER","Referer URI");
define("_AM_USERLOG_PAGETITLE","Page title");
define("_AM_USERLOG_MODULE","Module dirname");
+define("_AM_USERLOG_MODULE_NAME","Module name");
define("_AM_USERLOG_ITEM_NAME","Item name");
define("_AM_USERLOG_ITEM_ID","Item ID");
define("_AM_USERLOG_REQUEST_METHOD","Request method (GET, POST, ...)");
@@ -81,7 +82,7 @@
define("_AM_USERLOG_SET_GID","Group ID");
define("_AM_USERLOG_SET_IP","Visitor IP");
define("_AM_USERLOG_SET_OPTIONS","Options");
-define("_AM_USERLOG_SET_OPTIONS_DSC","Log which user/page data? Notice: selecting no option means all options. Selecting no store option (File and/or Database) means Database. Selecting views means store uid, groups, script name, pagetitle, module, item name, item id in Database");
+define("_AM_USERLOG_SET_OPTIONS_DSC","Log which user/page data? Notice: selecting no option means all options. Selecting no store option (File and/or Database) means Database. Selecting views means store uid, groups, script name, pagetitle, module dirname, module name, item name, item id in Database");
define("_AM_USERLOG_SET_SCOPE","Log scope");
define("_AM_USERLOG_SET_SCOPE_DSC","Log users activities in which modules? Selecting nothing means whole website");
@@ -131,7 +132,7 @@
define("_AM_USERLOG_UIDLT","User id lower than");
define("_AM_USERLOG_UIDLT_FORM","Enter one '%1\$s' number to show all logs for all users with a '%2\$s' lower than that");
-define("_AM_USERLOG_ADMIN_FORM","Enter 1 to show all logs from Admins");
+define("_AM_USERLOG_ADMIN_FORM","Select Yes to show all logs from Admins");
define("_AM_USERLOG_GROUPS_FORM","Enter one group with 'g' prefix (or several groups separated with comma) to show logs for all users belonging to those groups. Enter '!g' prefix to show logs for users not in those groups. eg: g1,g2,!g4 means all users belonging to group 1 OR group 2 AND not belong to group 4");
define("_AM_USERLOG_LAST_LOGINGT","User Last Visit since");
@@ -151,6 +152,7 @@
define("_AM_USERLOG_REFERER_FORM",_AM_USERLOG_TEXT_FORM);
define("_AM_USERLOG_PAGETITLE_FORM",_AM_USERLOG_TEXT_FORM);
define("_AM_USERLOG_MODULE_FORM",_AM_USERLOG_TEXT_FORM);
+define("_AM_USERLOG_MODULE_NAME_FORM",_AM_USERLOG_TEXT_FORM);
define("_AM_USERLOG_ITEM_NAME_FORM",_AM_USERLOG_TEXT_FORM);
define("_AM_USERLOG_ITEM_ID_FORM",_AM_USERLOG_TEXT_FORM);
define("_AM_USERLOG_REQUEST_METHOD_FORM",_AM_USERLOG_TEXT_FORM);
@@ -207,10 +209,9 @@
// views block
define("_AM_USERLOG_VIEW_ALL","All views");
define("_AM_USERLOG_VIEW_MODULE","Module views");
-define("_AM_USERLOG_VIEW_SCRIPT","Script views");
-define("_AM_USERLOG_VIEW_ITEM_NAME","Item_name views");
+define("_AM_USERLOG_VIEW_USER","User views");
+define("_AM_USERLOG_VIEW_GROUP","Group views");
define("_AM_USERLOG_VIEW","Views");
-define("_AM_USERLOG_MODULE_NAME","Module name");
// index.php stats.php
define("_AM_USERLOG_STATS_ABSTRACT","Statistics Overview");
@@ -250,4 +251,10 @@
define("_AM_USERLOG_FILE_COPY_SUCCESS","file %1\$s copied successfully into %2\$s");
define("_AM_USERLOG_FILE_ZIP_SUCCESS","%1\$d files zipped successfully into %2\$s");
define("_AM_USERLOG_FILE_EXOPORT_SUCCESS","%1\$d files exported successfully into %2\$s");
-define("_AM_USERLOG_FILE_CONFIRM","Are you sure you want to do this action?");
\ No newline at end of file
+define("_AM_USERLOG_FILE_CONFIRM","Are you sure you want to do this action?");
+
+// stats.php, views block
+define("_AM_USERLOG_MODULES","Select modules");
+define("_AM_USERLOG_ITEMS","Select items");
+define("_AM_USERLOG_ITEMS_DSC","These are typical links of your active modules.");
+define("_MB_USERLOG_ITEMS_NUM","Number of items to display.");
Modified: XoopsModules/userlog/trunk/userlog/language/english/blocks.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/blocks.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/language/english/blocks.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -19,10 +19,3 @@
* @author The XOOPS Project <www.xoops.org> <www.xoops.ir>
* @version $Id: blocks.php 1 2013-02-26 16:25:04Z irmtfan $
*/
-
-define("_MB_USERLOG_BLOCK_LOG_LIMIT","Number of Logs to proceed");
-define("_MB_USERLOG_BLOCK_ITEMS","Select items");
-define("_MB_USERLOG_BLOCK_ITEMS_NUM","Number of items to display in block.");
-define("_MB_USERLOG_BLOCK_ITEMS_DSC","These are typical links of your active modules. Select at least one item.");
-define("_MB_USERLOG_BLOCK_TIME","Time period");
-define("_MB_USERLOG_BLOCK_TIME_DSC","Time of Log record to count all logs since that time. Positive for days and negative for hours");
\ No newline at end of file
Modified: XoopsModules/userlog/trunk/userlog/language/english/help/help.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/language/english/help/help.html 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/language/english/help/help.html 2013-03-19 02:41:45 UTC (rev 11248)
@@ -38,7 +38,7 @@
(eg: uid=1, gid=3 (anonymous), ip=66.249.66.1) enter 0 means all users.<br />
<br />
<b>options:</b> you can select which user or page data you want to be logged. Also here you can choose 3 settings. Store in file? Store in database? And log user views?<br />
-select log user views means store uid, groups, script name, pagetitle, module, item name, item ID in Database.<br />
+select log user views means store uid, groups, script name, pagetitle, module dirname, module name, item name, item ID in Database.<br />
<br />
<b>Log scope:</b> if you want to log users activities in some specific module, you can do it here.<br />
select nothing means all website.<br />
@@ -65,6 +65,12 @@
For example in logs section you can select some rows to export but in file manager you just can export whole data from some selected files.<br /><br />
<b>Attention: If you work on too many files at once you may end up a white screen. It is because the server runs out of memory and/or cpu.</b>
</p>
+<h4 class="odd">Statistics</h4>
+<p class="even">
+You can see total module views, total user views, total group views through the Statistics of the userlog Module.<br /><br />
+Also you have an advance form to see any item views using some criteria like what is the module/link/log time/poster/group poster of the item<br /><br />
+Statistics is under develop. please let us know what do you like to see here.<br /><br />
+</p>
<h4 class="odd">Views block</h4>
<p class="even">
Modified: XoopsModules/userlog/trunk/userlog/sql/mysql.sql
===================================================================
--- XoopsModules/userlog/trunk/userlog/sql/mysql.sql 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/sql/mysql.sql 2013-03-19 02:41:45 UTC (rev 11248)
@@ -16,7 +16,8 @@
script varchar(20) NOT NULL default '',
referer varchar(255) NOT NULL default '',
pagetitle varchar(255) NOT NULL default '',
- module varchar(10) NOT NULL default '',
+ module varchar(25) NOT NULL default '',
+ module_name varchar(25) NOT NULL default '',
item_name varchar(10) NOT NULL default '',
item_id int(11) unsigned NOT NULL default 0,
request_method varchar(20) NOT NULL default '',
Modified: XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/templates/blocks/userlog_views.html 2013-03-19 02:41:45 UTC (rev 11248)
@@ -1,13 +1,13 @@
<div class="outer">
<{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 $block.sort eq "module" || $block.sort eq "module_name" || $block.sort eq "module_count"}>
<{if $lastmodule neq $item_content.module}>
- <h1><{$item_content.module_name}>(<{$smarty.const._AM_USERLOG_VIEW_MODULE}>:<{$item_content.module_views}>)</h1>
+ <h1><{$item_content.module_name}>(<{$smarty.const._AM_USERLOG_VIEW_MODULE}>:<{$item_content.module_count}>)</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.module_name}>] <{$item_content.title}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.views}>)</a>
+ <a href="<{$xoops_url}>/<{$link}>" title="<{$item_content.pagetitle}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.count}>)">[<{$item_content.module_name}>] <{$item_content.pagetitle}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.count}>)</a>
</div>
<{/foreach}>
</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-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/templates/userlog_admin_logs.html 2013-03-19 02:41:45 UTC (rev 11248)
@@ -74,7 +74,7 @@
<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;">
+ <div title="<{$title}>" class="width<{if $header == "admin" || $header == "log_id" || $header == "uid" || $header == "item_name" || $header == "item_id"}>1<{else}><{$widthC}><{/if}> floatleft center" style="height: 15px; overflow: hidden;">
<a class="ui-corner-all tooltip" title="<{$title}>" href="logs.php?limitentry=<{$limitentry}>&sortentry=<{$header}><{if $query_page}>&<{$query_page}><{/if}><{if $sortentry eq $header}>&orderentry=<{if $orderentry eq 'DESC'}>ASC<{else}>DESC<{/if}><{/if}> " alt="<{$title}>"><{if $sortentry eq $header}><img src="<{if $orderentry eq 'DESC'}><{xoModuleIcons16 DESC.png}><{else}><{xoModuleIcons16 ASC.png}><{/if}>"/><{/if}><{$title}></a>
</div>
<{/foreach}>
@@ -87,7 +87,20 @@
<input type="checkbox" name="log_id[]" id="log_id[<{$log_id}>]" value="<{$log_id}>" />
</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>
+ <div title="<{$log.$header}>" class="width<{if $header == "admin" || $header == "log_id" || $header == "uid" || $header == "item_name" || $header == "item_id"}>1<{else}><{$widthC}><{/if}> floatleft center" style="height: 15px; overflow: hidden;">
+
+ <{if $header == "uname"}>
+ <a href="<{$xoops_url}>/userinfo.php?uid=<{$log.uid}>"><{$log.uname}></a>
+ <{elseif $header == "user_ip"}>
+ <a href="http://www.whois.sc/<{$log.user_ip}>"><{$log.user_ip}></a>
+ <{elseif $header == "admin"}>
+ <{if $log.admin == 1}><{$smarty.const._YES}><{else}><{$smarty.const._NO}><{/if}>
+ <{elseif $header == "item_id"}>
+ <{if $log.item_id gt 0}><{$log.item_id}><{/if}>
+ <{else}>
+ <{$log.$header}>
+ <{/if}>
+ </div>
<{/foreach}>
<div class="clear"></div>
</div>
Modified: XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html
===================================================================
--- XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/templates/userlog_admin_stats.html 2013-03-19 02:41:45 UTC (rev 11248)
@@ -1,6 +1,24 @@
<{$logo}>
<div class="outer">
- <div class="width20 floatright">
+ <div class="floatleft">
+ <fieldset>
+ <legend class="label"><{$smarty.const._AM_USERLOG_VIEW}></legend>
+ <{foreach from=$items key=link item=item_content}>
+ <{if $sortentry eq "module" || $sortentry eq "module_name" || $sortentry eq "module_count"}>
+ <{if $lastmodule neq $item_content.module}>
+ <h1><{$item_content.module_name}>(<{$smarty.const._AM_USERLOG_VIEW_MODULE}>:<{$item_content.module_count}>)</h1>
+ <{/if}>
+ <{assign var=lastmodule value=$item_content.module}>
+ <{/if}>
+ <div class="<{cycle values="even,odd"}> border">
+ <a href="<{$xoops_url}>/<{$link}>" title="<{$item_content.pagetitle}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.count}>)">[<{$item_content.module_name}>] <{$item_content.pagetitle}>(<{$smarty.const._AM_USERLOG_VIEW}>:<{$item_content.count}>)</a>
+ </div>
+ <{/foreach}>
+ <legend class="label"></legend>
+ <{$form}>
+ </fieldset>
+ </div>
+ <div class="floatright">
<{$stats_abstract}>
</div>
<div class="clear"></div>
Modified: XoopsModules/userlog/trunk/userlog/xoops_version.php
===================================================================
--- XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-18 23:11:49 UTC (rev 11247)
+++ XoopsModules/userlog/trunk/userlog/xoops_version.php 2013-03-19 02:41:45 UTC (rev 11248)
@@ -37,10 +37,10 @@
$modversion['onUninstall'] = 'include/module.php';
//about
-$modversion['release_date'] = '2013/02/26';
+$modversion['release_date'] = '2013/03/21';
$modversion['module_website_url'] = 'http://www.xoops.org/';
$modversion['module_website_name'] = 'XOOPS';
-$modversion['module_status'] = 'ALPHA 1';
+$modversion['module_status'] = 'ALPHA 2';
$modversion['min_php'] = '5.3';
$modversion['min_xoops'] = '2.5.5';
$modversion['min_db'] = array('mysql' => '5.0.7', 'mysqli' => '5.0.7');
@@ -110,7 +110,7 @@
$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'] = "10|0|1|0|0|views|DESC";
+$modversion['blocks'][$i]['options'] = "10|0|1|-1|0|count|DESC";
$modversion['blocks'][$i]['template'] = "userlog_views.html";
// Config categories
|