Time tracking control bugfixing (changeset 9253 80db44ddea7d, changeset 9249 91ad8a066ba8, changeset 9248 46b5f24dab7e from D okeos)

skala
Julio Montoya 16 years ago
parent c66bad105f
commit 46de3c488f
  1. 17
      main/inc/global.inc.php
  2. 35
      main/inc/lib/events.lib.inc.php
  3. 18
      main/inc/lib/main_api.lib.php
  4. 85
      main/inc/local.inc.php

@ -513,12 +513,27 @@ if ($_configuration['tracking_enabled'] && !isset($_SESSION['login_as']) && isse
// if $_SESSION['login_as'] is set, then the user is an admin logged as the user
$tbl_track_login = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
$sql_last_connection = "SELECT login_id, login_date FROM $tbl_track_login WHERE login_user_id='".$_user["user_id"]."' ORDER BY login_date DESC LIMIT 0,1";
$q_last_connection = Database::query($sql_last_connection);
if (Database::num_rows($q_last_connection) > 0) {
$i_id_last_connection = Database::result($q_last_connection, 0, 'login_id');
// is the latest logout_date still relevant?
$sql_logout_date = "SELECT logout_date FROM $tbl_track_login WHERE login_id=$i_id_last_connection";
$q_logout_date = Database::query($sql_logout_date);
$res_logout_date = convert_mysql_date(Database::result($q_logout_date,0,'logout_date'));
if ($res_logout_date < time() - $_configuration['session_lifetime']) {
// it isn't, we should create a fresh entry
event_login();
// now that it's created, we can get its ID and carry on
$q_last_connection = Database::query($sql_last_connection);
$i_id_last_connection = Database::result($q_last_connection, 0, 'login_id');
}
$s_sql_update_logout_date = "UPDATE $tbl_track_login SET logout_date=NOW() WHERE login_id='$i_id_last_connection'";
Database::query($s_sql_update_logout_date);
}

@ -91,14 +91,12 @@ function event_login()
return 0;
}
$reallyNow = time();
$sql = "INSERT INTO ".$TABLETRACK_LOGIN."
(login_user_id,
login_ip,
login_date)
VALUES
('".$_user['user_id']."',
$sql = "INSERT INTO ".$TABLETRACK_LOGIN." (login_user_id, login_ip, login_date, logout_date)
VALUES ('".$_user['user_id']."',
'".Database::escape_string($_SERVER['REMOTE_ADDR'])."',
FROM_UNIXTIME(".$reallyNow."))";
FROM_UNIXTIME(".$reallyNow."),
FROM_UNIXTIME(".$reallyNow.")
)";
$res = Database::query($sql);
}
@ -116,20 +114,11 @@ function event_access_course()
global $TABLETRACK_LASTACCESS; //for "what's new" notification
// if tracking is disabled record nothing
if (!$_configuration['tracking_enabled'])
{
if (!$_configuration['tracking_enabled']){
return 0;
}
if(api_get_setting('use_session_mode')=='true' && isset($_SESSION['id_session']))
{
$id_session = intval($_SESSION['id_session']);
}
else
{
$id_session = 0;
}
$id_session = api_get_session_id();
$reallyNow = time();
if ($_user['user_id']) {
$user_id = "'".$_user['user_id']."'";
@ -148,12 +137,11 @@ function event_access_course()
'".$id_session."')";
$res = Database::query($sql);
// added for "what's new" notification
$sql = " UPDATE $TABLETRACK_LASTACCESS
$sql = " UPDATE $TABLETRACK_LASTACCESS
SET access_date = FROM_UNIXTIME($reallyNow)
WHERE access_user_id = ".$user_id." AND access_cours_code = '".$_cid."' AND access_tool IS NULL AND access_session_id=".$id_session;
$res = Database::query($sql);
if (Database::affected_rows() == 0)
{
if (Database::affected_rows() == 0) {
$sql = " INSERT INTO $TABLETRACK_LASTACCESS
(access_user_id,access_cours_code,access_date, access_session_id)
VALUES
@ -209,8 +197,7 @@ function event_access_tool($tool, $id_session=0)
// added for "what's new" notification
$pos2 = strpos(strtolower($_SERVER['HTTP_REFERER']), strtolower($_configuration['root_web']."index"));
// end "what's new" notification
if ($_configuration['tracking_enabled'] && ($pos !== false || $pos2 !== false))
{
if ($_configuration['tracking_enabled'] && ($pos !== false || $pos2 !== false)) {
$sql = "INSERT INTO ".$TABLETRACK_ACCESS."
(access_user_id,
access_cours_code,

@ -1019,7 +1019,8 @@ function api_get_course_info($course_code = null) {
function api_session_start($already_installed = true) {
global $storeSessionInDb;
global $_configuration;
/* causes too many problems and is not configurable dynamically
if ($already_installed) {
$session_lifetime = 360000;
if (isset($_configuration['session_lifetime'])) {
@ -1027,7 +1028,8 @@ function api_session_start($already_installed = true) {
}
//session_set_cookie_params($session_lifetime,api_get_path(REL_PATH));
}
*/
if (is_null($storeSessionInDb)) {
$storeSessionInDb = false;
}
@ -1038,15 +1040,23 @@ function api_session_start($already_installed = true) {
}
session_name('ch_sid');
session_start();
if (!isset($_SESSION['starttime'])) {
$_SESSION['starttime'] = time();
}
if ($already_installed) {
if (empty($_SESSION['checkDokeosURL'])) {
$_SESSION['checkDokeosURL'] = api_get_path(WEB_PATH);
$_SESSION['session_expiry'] = time() + $session_lifetime;
//$_SESSION['session_expiry'] = time() + $session_lifetime; //useless at the moment
} elseif ($_SESSION['checkDokeosURL'] != api_get_path(WEB_PATH)) {
api_session_clear();
$_SESSION['session_expiry'] = time() + $session_lifetime;
//$_SESSION['session_expiry'] = time() + $session_lifetime;
}
}
if ( isset($_SESSION['starttime']) && $_SESSION['starttime'] < time() - $_configuration['session_lifetime'] ) {
$_SESSION['starttime'] = time();
}
}
/**

@ -826,52 +826,45 @@ if (isset($cidReset) && $cidReset) { // course session data refresh requested or
}
if ($_configuration['tracking_enabled'] && !isset($_SESSION['login_as'])) {
$course_tracking_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
$time = api_get_datetime();
//We select the last record for the current course in the course tracking table
$sql="SELECT course_access_id, logout_course_date FROM $course_tracking_table WHERE user_id=".intval($_user ['user_id'])." ORDER BY login_course_date DESC LIMIT 0,1";
$result=Database::query($sql);
$update_course_access = false;
$i_course_access_id = array();
$timeout_course_access = 0;
if (Database::num_rows($result)>0) {
$i_course_access_id = Database::fetch_array($result);
// calculate time spent between last logout course date and current date
$timeout_course_access = (time() - strtotime($i_course_access_id['logout_course_date']));
$update_course_access = true;
}
if ($update_course_access && $timeout_course_access < 1800) {
// if time spent between last logout course date and current date is less 30 minutes update the logout_course_date
$sql="UPDATE $course_tracking_table
SET logout_course_date = '$time', counter = counter+1
WHERE course_access_id=".intval($i_course_access_id['course_access_id']);
Database::query($sql);
} else {
$sql="INSERT INTO $course_tracking_table(course_code, user_id, login_course_date, logout_course_date, counter)
VALUES('".$_course['sysCode']."', '".$_user['user_id']."', '$time', '$time', '1')";
Database::query($sql);
}
/*
$result=Database::query($sql);
if (Database::num_rows($result)>0 ) {
$i_course_access_id = Database::fetch_array($result);
//We update the course tracking table
$sql="UPDATE $course_tracking_table " .
"SET logout_course_date = '$time', " .
"counter = counter+1 " .
"WHERE course_access_id=".intval($i_course_access_id['course_access_id']);
Database::query($sql);
} else {
$sql="INSERT INTO $course_tracking_table(course_code, user_id, login_course_date, logout_course_date, counter)" .
"VALUES('".$_course['sysCode']."', '".$_user['user_id']."', '$time', '$time', '1')";
Database::query($sql);
}
*/
}
$course_tracking_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
if (isset($_configuration['session_lifetime'])) {
$session_lifetime=$_configuration['session_lifetime'];
} else {
$session_lifetime=3600;
}
$course_code=$_course['sysCode'];
$time = api_get_datetime();
//We select the last record for the current course in the course tracking table
// But only if the login date is < thant now + max_life_time
$sql="SELECT course_access_id FROM $course_tracking_table
WHERE user_id=".intval($_user ['user_id'])."
AND course_code='$course_code'
AND login_course_date > now() - INTERVAL $session_lifetime SECOND
ORDER BY login_course_date DESC LIMIT 0,1";
$result=Database::query($sql,__FILE__,__LINE__);
if (Database::num_rows($result)>0) {
$i_course_access_id = Database::result($result,0,0);
//We update the course tracking table
$sql="UPDATE $course_tracking_table " .
"SET logout_course_date = '$time', " .
"counter = counter+1 " .
"WHERE course_access_id=".intval($i_course_access_id);
Database::query($sql,__FILE__,__LINE__);
} else {
$sql="INSERT INTO $course_tracking_table
(course_code, user_id, login_course_date, logout_course_date, counter)" .
"VALUES('".$course_code."', '".$_user['user_id']."', '$time', '$time', '1')";
Database::query($sql,__FILE__,__LINE__);
}
}
}
}

Loading…
Cancel
Save