Added Last 15 days recents login chart - Refs #8081

1.10.x
José Loguercio 10 years ago
parent 3bb91f1219
commit 7532197623
  1. 38
      main/admin/statistics/index.php
  2. 14
      main/inc/lib/statistics.lib.php

@ -11,20 +11,25 @@ require_once '../../inc/global.inc.php';
api_protect_admin_script(); api_protect_admin_script();
$interbreadcrumb[] = array('url' => '../index.php', 'name' => get_lang('PlatformAdmin')); $interbreadcrumb[] = array('url' => '../index.php', 'name' => get_lang('PlatformAdmin'));
$htmlHeadXtra[] = api_get_js('chartjs/Chart.min.js');
$htmlHeadXtra[] = '' $report = isset($_REQUEST['report']) ? $_REQUEST['report'] : '';
. '<script type="text/javascript">'
. '$(document).ready(function() {' if ($report) {
. '$.ajax({' $htmlHeadXtra[] = api_get_js('chartjs/Chart.min.js');
. 'url: "'. api_get_path(WEB_CODE_PATH) .'inc/ajax/statistics.ajax.php?a=recentlogins",' $htmlHeadXtra[] = ''
. 'type: "POST",' . '<script type="text/javascript">'
. 'success: function(data) {' . '$(document).ready(function() {'
. 'Chart.defaults.global.responsive = true;' . '$.ajax({'
. 'var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Line(data);' . 'url: "'. api_get_path(WEB_CODE_PATH) .'inc/ajax/statistics.ajax.php?a=recentlogins",'
. '}' . 'type: "POST",'
. '});' . 'success: function(data) {'
. '});' . 'Chart.defaults.global.responsive = true;'
. '</script>'; . 'var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Line(data);'
. '}'
. '});'
. '});'
. '</script>';
}
$tool_name = get_lang('Statistics'); $tool_name = get_lang('Statistics');
Display::display_header($tool_name); Display::display_header($tool_name);
@ -75,7 +80,7 @@ echo '</tr></table>';
$course_categories = Statistics::getCourseCategories(); $course_categories = Statistics::getCourseCategories();
echo '<br/><br/>';//@todo: spaces between elements should be handled in the css, br should be removed if only there for presentation echo '<br/><br/>';//@todo: spaces between elements should be handled in the css, br should be removed if only there for presentation
$report = isset($_REQUEST['report']) ? $_REQUEST['report'] : '';
switch ($report) { switch ($report) {
case 'courses': case 'courses':
// total amount of courses // total amount of courses
@ -116,7 +121,8 @@ switch ($report) {
Statistics::printStats(get_lang('Students'), $students); Statistics::printStats(get_lang('Students'), $students);
break; break;
case 'recentlogins': case 'recentlogins':
echo '<canvas class="col-md-12" id="canvas" ></canvas>'; echo '<h2>'. sprintf(get_lang('LastXDays'), '15') . '</h2>';
echo '<canvas class="col-md-12" id="canvas" height="100px" ></canvas>';
Statistics::printRecentLoginStats(); Statistics::printRecentLoginStats();
Statistics::printRecentLoginStats(true); Statistics::printRecentLoginStats(true);
break; break;

@ -538,7 +538,7 @@ class Statistics
*/ */
public static function getRecentLoginStats($distinct = false) public static function getRecentLoginStats($distinct = false)
{ {
$totalLogin = array(); $totalLogin = [];
$table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); $access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$current_url_id = api_get_current_access_url_id(); $current_url_id = api_get_current_access_url_id();
@ -554,13 +554,11 @@ class Statistics
if ($distinct) { if ($distinct) {
$field = 'DISTINCT(login_user_id)'; $field = 'DISTINCT(login_user_id)';
} }
$sql[get_lang('ThisDay')] = "SELECT count($field) AS number FROM $table $table_url WHERE DATE_ADD(login_date, INTERVAL 1 DAY) >= '$now' $where_url"; $sql = "SELECT count($field) AS number, date(login_date) as login_date FROM $table $table_url WHERE DATE_ADD(login_date, INTERVAL 15 DAY) >= '$now' $where_url GROUP BY date(login_date)";
$sql[get_lang('Last7days')] = "SELECT count($field) AS number FROM $table $table_url WHERE DATE_ADD(login_date, INTERVAL 7 DAY) >= '$now' $where_url";
$sql[get_lang('Last31days')] = "SELECT count($field) AS number FROM $table $table_url WHERE DATE_ADD(login_date, INTERVAL 31 DAY) >= '$now' $where_url"; $res = Database::query($sql);
foreach ($sql as $index => $query) { while($row = Database::fetch_array($res,'ASSOC')){
$res = Database::query($query); $totalLogin[$row['login_date']] = $row['number'];
$obj = Database::fetch_object($res);
$totalLogin[$index] = $obj->number;
} }
return $totalLogin; return $totalLogin;

Loading…
Cancel
Save