/** Configuration file.*/ require_once $path . "configuration.php"; if (empty($_SESSION['s_login']) || !eF_checkParameter($_SESSION['s_login'], 'login')) { echo json_encode(array('status' => 0, 'code' => -1)); exit; } try { if ($GLOBALS['configuration']['last_reset_certificate'] + 24 * 60 * 60 < time()) { EfrontCourse::checkCertificateExpire(); EfrontConfiguration::setValue('last_reset_certificate', time()); } $currentTheme = new themes($_SESSION['s_theme']); $newTime = ''; $jsonValues = array(); if ($_SESSION['s_login']) { $entity = getUserTimeTarget($_GET['HTTP_REFERER']); //Update times for this entity if ($_SESSION['s_lesson_user_type'] == 'student' && isset($_POST['user_total_time_in_unit']) && current($entity) == 'unit' && eF_checkParameter(key($entity), 'id')) { $newTime = $_POST['user_total_time_in_unit']; $jsonValues['entity'] = current($entity); $jsonValues['entity_id'] = current($entity); if ($newTime && is_numeric($newTime)) { $result = eF_executeNew("insert into users_to_content (users_LOGIN, content_ID, lessons_ID) values('" . $_SESSION['s_login'] . "', " . key($entity) . ", " . $_SESSION['s_lessons_ID'] . ") on duplicate key update total_time={$newTime}"); $jsonValues['time_in_unit'] = EfrontTimes::formatTimeForReporting($newTime); } else { $jsonValues['old_time_in_unit'] = EfrontTimes::formatTimeForReporting(EfrontLesson::getUserActiveTimeInUnit($_SESSION['s_login'], key($entity))); $jsonValues['old_time_in_lesson'] = EfrontTimes::formatTimeForReporting(EfrontLesson::getUserActiveTimeInLesson($_SESSION['s_login'], $_SESSION['s_lessons_ID'])); } } if (empty($_SESSION['last_periodic_check']) || time() - $_SESSION['last_periodic_check'] >= ceil($GLOBALS['configuration']['updater_period'] / 1000)) { $result = eF_executeNew("update user_times set time=time+(" . time() . "-timestamp_now),timestamp_now=" . time() . "\r\n\t\t\t\t\t\twhere session_expired = 0 and session_custom_identifier = '" . $_SESSION['s_custom_identifier'] . "' and users_LOGIN = '******'s_login'] . "'\r\n\t\t\t\t\t\tand entity = '" . current($entity) . "' and entity_id = '" . key($entity) . "'");
/** * Either refresh the 'time' field of the current user/session/entity, or create a new entry * if the user just entered an entity during this session */ function refreshLogin() { if ($_SESSION['s_login']) { $entity = getUserTimeTarget($_SERVER['REQUEST_URI']); //Something like 'system', 'lesson' or 'unit' //$entity = $_SESSION['s_time_target']; $result = eF_getTableData("user_times", "time, timestamp_now", "session_expired=0 and session_custom_identifier = '" . $_SESSION['s_custom_identifier'] . "' and users_LOGIN='******'s_login'] . "' and entity='" . current($entity) . "' and entity_id='" . key($entity) . "'"); $totalTimeSoFar = false; if (!empty($result) && $result[0]['timestamp_now'] >= time() - 5 * $GLOBALS['configuration']['updater_period'] / 1000) { //5 failed updates: reset $totalTimeSoFar = true; } if ($totalTimeSoFar === false) { //Nullify current entry for the same entity eF_updateTableData("user_times", array("session_expired" => 1), "session_expired = 0 and session_custom_identifier = '" . $_SESSION['s_custom_identifier'] . "' and users_LOGIN = '******'s_login'] . "'\n\t\t\t\t\t\t\t\t\t\t\tand entity = '" . current($entity) . "' and entity_id = '" . key($entity) . "'"); //Insert a new entry for this entity, to start counting time for $fields = array("session_timestamp" => time(), "session_id" => session_id(), "session_custom_identifier" => $_SESSION['s_custom_identifier'], "session_expired" => 0, "users_LOGIN" => $_SESSION['s_login'], "timestamp_now" => time(), "time" => 0, "lessons_ID" => $_SESSION['s_lessons_ID'] ? $_SESSION['s_lessons_ID'] : null, "courses_ID" => $_SESSION['s_courses_ID'] ? $_SESSION['s_courses_ID'] : null, "entity" => current($entity), "entity_id" => key($entity)); eF_insertTableData("user_times", $fields); } else { //Update times for this entity $result = eF_executeNew("update user_times set time=time+(" . time() . "-timestamp_now),timestamp_now=" . time() . "\n\t\t\t\t\t\t\t\t\twhere session_expired = 0 and session_custom_identifier = '" . $_SESSION['s_custom_identifier'] . "' and users_LOGIN = '******'s_login'] . "'\n\t\t\t\t\t\t\t\t\t\tand entity = '" . current($entity) . "' and entity_id = '" . key($entity) . "'"); } eF_updateTableData("user_times", array("session_expired" => 1), "session_expired = 0 and session_custom_identifier = '" . $_SESSION['s_custom_identifier'] . "' and users_LOGIN = '******'s_login'] . "'\n\t\t\t\t\t\t\t\t\t\tand (entity != '" . current($entity) . "' or entity_id != '" . key($entity) . "')"); } }