saistart analytics, fixed sai log user counting

This commit is contained in:
Ulf Gebhardt 2015-04-08 17:25:39 +02:00
parent 710c995fb9
commit 2a2330b6d2
9 changed files with 75 additions and 18 deletions

View File

@ -0,0 +1,18 @@
<?php
namespace SYSTEM\DBD;
class SYS_SAIMOD_LOG_ANALYTICS extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,'
.'count(*) as count,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 1;'
);}}

View File

@ -7,7 +7,7 @@ class SYS_SAIMOD_LOG_BASIC_VISITOR extends \SYSTEM\DB\QP {
//pg
'SELECT to_char(to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % $1)), \'YYYY/MM/DD HH24:MI:SS\') as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
@ -16,7 +16,7 @@ class SYS_SAIMOD_LOG_BASIC_VISITOR extends \SYSTEM\DB\QP {
//mys
'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS
.' GROUP BY day'

View File

@ -7,7 +7,7 @@ class SYS_SAIMOD_LOG_UNIQUE_BASIC extends \SYSTEM\DB\QP {
//pg
'SELECT to_char(to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % $1)), \'YYYY/MM/DD HH24:MI:SS\') as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
@ -17,7 +17,7 @@ class SYS_SAIMOD_LOG_UNIQUE_BASIC extends \SYSTEM\DB\QP {
//mys
'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS

View File

@ -7,7 +7,7 @@ class SYS_SAIMOD_LOG_UNIQUE_REFERER extends \SYSTEM\DB\QP {
//pg
'SELECT to_char(to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % $1)), \'YYYY/MM/DD HH24:MI:SS\') as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'
@ -18,7 +18,7 @@ class SYS_SAIMOD_LOG_UNIQUE_REFERER extends \SYSTEM\DB\QP {
//mys
'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\DBD\system_log::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'

View File

@ -5,6 +5,23 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
\SYSTEM\DBD\SYS_SAIMOD_LOG_TRUNCATE::QQ();
return \SYSTEM\LOG\JsonResult::ok();}
public static function analytics(){
$vars = array();
$data = \SYSTEM\DBD\SYS_SAIMOD_LOG_ANALYTICS::Q1(array(86400));
$vars['log_today'] = $data['count'];
$vars['ip_today'] = $data['ip_unique'];
$vars['user_today'] = $data['user_unique'];
$data = \SYSTEM\DBD\SYS_SAIMOD_LOG_ANALYTICS::Q1(array(604800));
$vars['log_week'] = $data['count'];
$vars['ip_week'] = $data['ip_unique'];
$vars['user_week'] = $data['user_unique'];
$data = \SYSTEM\DBD\SYS_SAIMOD_LOG_ANALYTICS::Q1(array(2692000));
$vars['log_month'] = $data['count'];
$vars['ip_month'] = $data['ip_unique'];
$vars['user_month'] = $data['user_unique'];
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/tpl/saimod_sys_log_analytics.tpl'), $vars);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats(){
$vars = array();
$vars['dbfile_entries'] = '';
@ -13,6 +30,8 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
foreach($scanned_directory as $file){
$vars['dbfile_entries'] .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/tpl/saimod_sys_log_stats_menu.tpl'), array('file' => $file));}
}
//positioning problem
//$vars['analytics'] = self::analytics();
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/tpl/saimod_sys_log_stats.tpl'), $vars);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_class_system($filter,$db){
@ -99,7 +118,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
$res = $con->prepare('unique_basic',
'SELECT datetime(strftime("%s",'.\SYSTEM\DBD\system_log::FIELD_TIME.') - strftime("%s",'.\SYSTEM\DBD\system_log::FIELD_TIME.')%:filter,"unixepoch", "localtime") as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS
@ -169,7 +188,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
$res = $con->prepare('unique_referer',
'SELECT datetime(strftime("%s",'.\SYSTEM\DBD\system_log::FIELD_TIME.') - strftime("%s",'.\SYSTEM\DBD\system_log::FIELD_TIME.')%:filter,"unixepoch", "localtime") as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'
@ -193,7 +212,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
$res = $con->prepare('basic_visitor',
'SELECT datetime(strftime("%s",'.\SYSTEM\DBD\system_log::FIELD_TIME.') - strftime("%s",'.\SYSTEM\DBD\system_log::FIELD_TIME.')%:filter,"unixepoch", "localtime") as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_USER.') as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS
.' GROUP BY day'

View File

@ -0,0 +1,26 @@
<table class="table table-hover table-condensed sai_table">
<tr>
<th></th>
<th>Today</th>
<th>Week</th>
<th>Month</th>
</tr>
<tr>
<th>Log</th>
<td>${log_today}</td>
<td>${log_week}</td>
<td>${log_month}</td>
</tr>
<tr>
<th>IPs</th>
<td>${ip_today}</td>
<td>${ip_week}</td>
<td>${ip_month}</td>
</tr>
<tr>
<th>Users</th>
<td>${user_today}</td>
<td>${user_week}</td>
<td>${user_month}</td>
</tr>
</table>

View File

@ -6,7 +6,7 @@
<div class="tab-content">
<div class="tab-pane active" id="tab_stats">
<select id="vis_filter_time">
<option value="2592000">30d</option>
<option value="2692000">30d</option>
<option value="1209600">14d</option>
<option value="604800">7d</option>
<option value="172800">2d</option>

View File

@ -32,6 +32,7 @@ class saistart_sys_sai extends \SYSTEM\SAI\SaiModule {
$vars['project_url'] = \SYSTEM\CONFIG\config::get(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_PATH_BASEURL);
$vars['todo_entries'] = \SYSTEM\SAI\saimod_sys_todo::sai_mod__SYSTEM_SAI_saimod_sys_todo_action_todolist();
$vars['log_entries'] = \SYSTEM\SAI\saimod_sys_log::sai_mod__SYSTEM_SAI_saimod_sys_log_action_filter();
$vars['analytics'] = \SYSTEM\SAI\saimod_sys_log::analytics();
$vars['logout'] = \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\WEBPATH(new \SYSTEM\PSAI(),'modules/saistart_sys_sai/tpl/logout.tpl'));
$vars = array_merge($vars,\SYSTEM\SAI\saimod_sys_todo::statistics());
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\WEBPATH(new \SYSTEM\PSAI(),'modules/saistart_sys_sai/tpl/content_loggedin.tpl'), $vars);

View File

@ -11,14 +11,7 @@
</div>
<div class="well" id="analytics">
<h2 class="muted"><a href="#!log">Analytics</a></h2>
<b>IPs today:</b> ${ip_today}<br/>
<b>Users today:</b> ${user_today}<br/>
<br/>
<b>IPs this week:</b> ${ip_week}<br/>
<b>Users this week:</b> ${user_week}<br/>
<br/>
<b>IPs this month:</b> ${ip_month}<br/>
<b>Users this month:</b> ${user_month}
${analytics}
</div>
<div class="well" id="git">
<h2 class="muted">Git</h2>