Using UTC date in login_date instead of the DB date see #5418

skala
Julio Montoya 13 years ago
parent 62b9034f0b
commit afc2a57e4a
  1. 16
      main/inc/ajax/message.ajax.php
  2. 9
      main/inc/lib/online.inc.php
  3. 4
      tests/datafiller/fill_whoisonline.php

@ -28,11 +28,10 @@ switch ($action) {
break;
}
$track_online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE);
$tbl_my_user = Database :: get_main_table(TABLE_MAIN_USER);
$tbl_my_user_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$tbl_user = Database :: get_main_table(TABLE_MAIN_USER);
$search = Database::escape_string($_REQUEST['tag']);
$current_date = date('Y-m-d H:i:s',time());
$tbl_my_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_my_user_friend = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$search = Database::escape_string($_REQUEST['tag']);
$user_id = api_get_user_id();
$is_western_name_order = api_is_western_name_order();
@ -53,11 +52,14 @@ switch ($action) {
}
} elseif (api_get_setting('allow_social_tool')=='false' && api_get_setting('allow_message_tool')=='true') {
$valid = api_get_setting('time_limit_whosonline');
$time_limit = api_get_setting('time_limit_whosonline');
$online_time = time() - $time_limit*60;
$limit_date = api_get_utc_datetime($online_time);
$sql='SELECT DISTINCT u.user_id as id, '.($is_western_name_order ? 'concat(u.firstname," ",u.lastname," ","( ",u.email," )")' : 'concat(u.lastname," ",u.firstname," ","( ",u.email," )")').' as name
FROM '.$tbl_my_user.' u INNER JOIN '.$track_online_table.' t ON u.user_id=t.login_user_id
WHERE DATE_ADD(login_date,INTERVAL "'.$valid.'" MINUTE) >= "'.$current_date.'" AND '.($is_western_name_order ? 'concat(u.firstname, " ", u.lastname)' : 'concat(u.lastname, " ", u.firstname)').' LIKE CONCAT("%","'.$search.'","%") ';
WHERE login_date >= "'.$limit_date.'" AND '.($is_western_name_order ? 'concat(u.firstname, " ", u.lastname)' : 'concat(u.lastname, " ", u.firstname)').' LIKE CONCAT("%","'.$search.'","%") ';
}
$sql .=' LIMIT 20';
$result=Database::query($sql);

@ -126,14 +126,15 @@ function user_is_online($user_id) {
$track_online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE);
$table_user = Database::get_main_table(TABLE_MAIN_USER);
$current_date = api_get_utc_datetime();
$access_url_id = api_get_current_access_url_id();
$time_limit = api_get_setting('time_limit_whosonline');
//$time_limit = 1; changing this value there is no time limit
$online_time = time() - $time_limit*60;
$limit_date = api_get_utc_datetime($online_time);
$query = " SELECT login_user_id,login_date FROM ".$track_online_table ." track INNER JOIN ".$table_user ." u ON (u.user_id=track.login_user_id)
WHERE track.access_url_id = $access_url_id AND
DATE_ADD(login_date,INTERVAL $time_limit MINUTE) >= '".$current_date."' AND
login_date >= '".$limit_date."' AND
u.user_id = $user_id
LIMIT 1 ";

@ -1,4 +1,4 @@
<?php //$id$
<?php
/**
* This script contains a data filling procedure for users
* @author Julio Montoya <gugli100@gmail.com>
@ -24,7 +24,7 @@ function fill_whoisonline() {
$rs = Database::query($sql);
//filling the table
for ($i=1;$i <=$max;$i++) {
$date = api_get_local_time();
$date = api_get_utc_datetime();
$sql = "INSERT INTO $table_e_online (login_id, login_user_id, login_date, login_ip, course, session_id, access_url_id)
VALUES ('$i', '$i', '$date', '127.0.0.1', '', '0','1')";
$rs = Database::query($sql);

Loading…
Cancel
Save