/** 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) . "')");
    }
}