Trying to get rid of platform and course time tracking issues.

skala
jkbockstael 15 years ago
parent f44cacd1cb
commit 79c8a9fee9
  1. 11
      main/inc/global.inc.php
  2. 10
      main/inc/lib/events.lib.inc.php
  3. 5
      main/inc/lib/main_api.lib.php
  4. 19
      main/inc/local.inc.php

@ -499,6 +499,17 @@ if ($_configuration['tracking_enabled'] && !isset($_SESSION['login_as']) && isse
$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');
// jeankarim@cblue.be -- 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);
}

@ -100,15 +100,19 @@ function event_login()
return 0;
}
$reallyNow = time();
// jeankarim@cblue.be -- making sure that logout_date doesn't stay at its default NULL value
$sql = "INSERT INTO ".$TABLETRACK_LOGIN."
(login_user_id,
login_ip,
login_date)
login_date,
logout_date)
VALUES
('".$_user['user_id']."',
'".Database::escape_string($_SERVER['REMOTE_ADDR'])."',
FROM_UNIXTIME(".$reallyNow."))";
$res = Database::query($sql,__FILE__,__LINE__);
FROM_UNIXTIME(".$reallyNow."),
FROM_UNIXTIME(".$reallyNow."))";
$res = Database::query($sql,__FILE__,__LINE__);
}
/**

@ -1025,6 +1025,11 @@ function api_session_start($already_installed = true) {
api_session_clear();
}
}
// jeankarim@cblue.be -- Keeping track of session startdates and cleaning startdates on old sessions that should have expired
if ( isset($_SESSION['starttime']) && $SESSION['starttime'] < time() - $_configuration['session_lifetime'] ) {
$_SESSION['starttime'] = time();
}
}
/**

@ -856,11 +856,26 @@ if (isset($cidReset) && $cidReset) { // course session data refresh requested or
$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 FROM $course_tracking_table WHERE user_id=".intval($_user ['user_id'])." ORDER BY login_course_date DESC LIMIT 0,1";
// jeankarim@cblue.be -- More restrictive SELECT, to make sure we're updating for the right course
$sql="SELECT course_access_id FROM $course_tracking_table WHERE user_id=".intval($_user ['user_id'])." AND course_code=".$_course['sysCode']." 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);
// jeankarim@cblue.be -- Is the latest logout_date still relevant?
$sql_logout_date = "SELECT logout_date FROM $course_tracking_table WHERE user_id=".$_user['user_id']." AND course_code=".$_course['sysCode']." ORDER BY course_access_id DESC LIMIT 0,1";
$q_logout_date = Database::query($sql_logout_date);
$res_logout_date = convert_mysql_date(database::results($q_logout_date,0,'logout_date'));
if ($res_logout_date < time() - $_configuration['session_lifetime']) {
// looks like it isn't, we should create a fresh entry
$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,__FILE__,__LINE__);
// now that it's created, we can get its ID and carry on
$sql="SELECT course_access_id FROM $course_tracking_table WHERE user_id=".intval($_user ['user_id'])." AND course_code= ".$_course['sysCode']." ORDER BY course_access_id DESC LIMIT 0,1";
$result=Database::query($sql,__FILE__,__LINE__);
$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', " .
@ -1147,4 +1162,4 @@ if (isset($_cid)) {
$time = api_get_datetime();
$sql="UPDATE $tbl_course SET last_visit= '$time' WHERE code='$_cid'";
Database::query($sql,__FILE__,__LINE__);
}
}

Loading…
Cancel
Save