Esempio n. 1
0
function LoginCheck($uid)
{
    $_course = api_get_course_info();
    $uid = (int) $uid;
    $online_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ONLINE);
    if (!empty($uid)) {
        $user_ip = '';
        if (!empty($_SERVER['REMOTE_ADDR'])) {
            $user_ip = Database::escape_string(api_get_real_ip());
        }
        $login_date = api_get_utc_datetime();
        $access_url_id = 1;
        if (api_get_multiple_access_url() && api_get_current_access_url_id() != -1) {
            $access_url_id = api_get_current_access_url_id();
        }
        $session_id = api_get_session_id();
        // if the $_course array exists this means we are in a course and we have to store this in the who's online table also
        // to have the x users in this course feature working
        if (is_array($_course) && count($_course) > 0 && !empty($_course['id'])) {
            $query = "REPLACE INTO " . $online_table . " (login_id,login_user_id,login_date,user_ip, c_id, session_id, access_url_id)\n                      VALUES ({$uid},{$uid},'{$login_date}','{$user_ip}', '" . $_course['real_id'] . "' , '{$session_id}' , '{$access_url_id}' )";
        } else {
            $query = "REPLACE INTO " . $online_table . " (login_id,login_user_id,login_date,user_ip, c_id, session_id, access_url_id)\n                      VALUES ({$uid},{$uid},'{$login_date}','{$user_ip}', 0, '{$session_id}', '{$access_url_id}')";
        }
        Database::query($query);
    }
}
Esempio n. 2
0
 /**
  * @author Sebastien Piraux <*****@*****.**> old code
  * @author Julio Montoya 2013
  * @desc Record information for login event when an user identifies himself with username & password
  */
 function event_login(User $user)
 {
     $userId = $user->getUserId();
     $TABLETRACK_LOGIN = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN);
     $reallyNow = api_get_utc_datetime();
     $sql = "INSERT INTO " . $TABLETRACK_LOGIN . " (login_user_id, login_ip, login_date, logout_date) VALUES\n                    ('" . $userId . "',\n                    '" . Database::escape_string(api_get_real_ip()) . "',\n                    '" . $reallyNow . "',\n                    '" . $reallyNow . "'\n                    )";
     Database::query($sql);
     $roles = $user->getRoles();
     // auto subscribe
     foreach ($roles as $role) {
         $userStatusParsed = 'student';
         switch ($role) {
             case 'ROLE_SESSION_MANAGER':
                 $userStatusParsed = 'sessionadmin';
                 break;
             case 'ROLE_TEACHER':
                 $userStatusParsed = 'teacher';
                 break;
             case 'ROLE_RRHH':
                 $userStatusParsed = 'DRH';
                 break;
         }
         $autoSubscribe = api_get_setting($userStatusParsed . '_autosubscribe');
         if ($autoSubscribe) {
             $autoSubscribe = explode('|', $autoSubscribe);
             foreach ($autoSubscribe as $code) {
                 if (CourseManager::course_exists($code)) {
                     CourseManager::subscribe_user($userId, $code);
                 }
             }
         }
     }
 }
Esempio n. 3
0
/**
 * @author Sebastien Piraux <*****@*****.**>
 * @desc Record information for login event
 * (when an user identifies himself with username & password)
 */
function event_login()
{
    global $TABLETRACK_LOGIN;
    global $_user;
    // @todo use api_get_user_info();
    //$userInfo = api_get_user_info();
    $userInfo = $_user;
    if (empty($userInfo)) {
        return false;
    }
    $userId = api_get_user_id();
    $reallyNow = api_get_utc_datetime();
    $sql = "INSERT INTO " . $TABLETRACK_LOGIN . " (login_user_id, login_ip, login_date, logout_date) VALUES\n            ('" . $userId . "',\n            '" . Database::escape_string(api_get_real_ip()) . "',\n            '" . $reallyNow . "',\n            '" . $reallyNow . "'\n            )";
    Database::query($sql);
    // Auto subscribe
    $user_status = $userInfo['status'] == SESSIONADMIN ? 'sessionadmin' : $userInfo['status'] == COURSEMANAGER ? 'teacher' : $userInfo['status'] == DRH ? 'DRH' : 'student';
    $autoSubscribe = api_get_setting($user_status . '_autosubscribe');
    if ($autoSubscribe) {
        $autoSubscribe = explode('|', $autoSubscribe);
        foreach ($autoSubscribe as $code) {
            if (CourseManager::course_exists($code)) {
                CourseManager::subscribe_user($userId, $code);
            }
        }
    }
}
Esempio n. 4
0
 /**
  * Saves a test attempt
  *
  * @param int  clock_expired_time
  * @param int  int lp id
  * @param int  int lp item id
  * @param int  int lp item_view id
  * @param float $weight
  * @param array question list
  */
 public function save_stat_track_exercise_info($clock_expired_time = 0, $safe_lp_id = 0, $safe_lp_item_id = 0, $safe_lp_item_view_id = 0, $questionList = array(), $weight = 0)
 {
     $track_exercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
     $safe_lp_id = intval($safe_lp_id);
     $safe_lp_item_id = intval($safe_lp_item_id);
     $safe_lp_item_view_id = intval($safe_lp_item_view_id);
     if (empty($safe_lp_id)) {
         $safe_lp_id = 0;
     }
     if (empty($safe_lp_item_id)) {
         $safe_lp_item_id = 0;
     }
     if (empty($clock_expired_time)) {
         $clock_expired_time = 0;
     }
     $questionList = array_map('intval', $questionList);
     $params = array('exe_exo_id' => $this->id, 'exe_user_id' => api_get_user_id(), 'c_id' => api_get_course_int_id(), 'status' => 'incomplete', 'session_id' => api_get_session_id(), 'data_tracking' => implode(',', $questionList), 'start_date' => api_get_utc_datetime(), 'orig_lp_id' => $safe_lp_id, 'orig_lp_item_id' => $safe_lp_item_id, 'orig_lp_item_view_id' => $safe_lp_item_view_id, 'exe_weighting' => $weight, 'user_ip' => api_get_real_ip());
     if ($this->expired_time != 0) {
         $params['expired_time_control'] = $clock_expired_time;
     }
     $id = Database::insert($track_exercises, $params);
     return $id;
 }
Esempio n. 5
0
 /**
  * Update the TRACK_E_EXERCICES exercises
  *
  * @param   int     exeid id of the attempt
  * @param   int     exo_id 	exercise id
  * @param   mixed   result 	score
  * @param   int     weighting ( higher score )
  * @param   int     duration ( duration of the attempt in seconds )
  * @param   int     session_id
  * @param   int     learnpath_id (id of the learnpath)
  * @param   int     learnpath_item_id (id of the learnpath_item)
  *
  * @author Sebastien Piraux <*****@*****.**>
  * @author Julio Montoya Armas <*****@*****.**> Reworked 2010
  * @desc Record result of user when an exercice was done
  */
 public static function update_event_exercice($exeid, $exo_id, $score, $weighting, $session_id, $learnpath_id = 0, $learnpath_item_id = 0, $learnpath_item_view_id = 0, $duration = 0, $question_list = array(), $status = '', $remind_list = array(), $end_date = null)
 {
     global $debug;
     if ($debug) {
         error_log('Called to update_event_exercice');
     }
     if ($debug) {
         error_log('duration:' . $duration);
     }
     if ($exeid != '') {
         /*
          * Code commented due BT#8423 do not change the score to 0.
          *
          * Validation in case of fraud with actived control time
         if (!ExerciseLib::exercise_time_control_is_valid($exo_id, $learnpath_id, $learnpath_item_id)) {
             $score = 0;
         }
         */
         if (!isset($status) || empty($status)) {
             $status = '';
         } else {
             $status = Database::escape_string($status);
         }
         $TABLETRACK_EXERCICES = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
         if (!empty($question_list)) {
             $question_list = array_map('intval', $question_list);
         }
         if (!empty($remind_list)) {
             $remind_list = array_map('intval', $remind_list);
             $remind_list = array_filter($remind_list);
             $remind_list = implode(",", $remind_list);
         } else {
             $remind_list = '';
         }
         if (empty($end_date)) {
             $end_date = api_get_utc_datetime();
         }
         $sql = "UPDATE {$TABLETRACK_EXERCICES} SET\n        \t\t   exe_exo_id \t\t\t= '" . Database::escape_string($exo_id) . "',\n        \t\t   exe_result\t\t\t= '" . Database::escape_string($score) . "',\n        \t\t   exe_weighting \t\t= '" . Database::escape_string($weighting) . "',\n        \t\t   session_id\t\t\t= '" . Database::escape_string($session_id) . "',\n        \t\t   orig_lp_id \t\t\t= '" . Database::escape_string($learnpath_id) . "',\n        \t\t   orig_lp_item_id \t\t= '" . Database::escape_string($learnpath_item_id) . "',\n                   orig_lp_item_view_id = '" . Database::escape_string($learnpath_item_view_id) . "',\n        \t\t   exe_duration = '" . Database::escape_string($duration) . "',\n        \t\t   exe_date = '" . $end_date . "',\n        \t\t   status = '" . $status . "',\n        \t\t   questions_to_check = '" . $remind_list . "',\n        \t\t   data_tracking = '" . implode(',', $question_list) . "',\n                   user_ip = '" . Database::escape_string(api_get_real_ip()) . "'\n        \t\t WHERE exe_id = '" . Database::escape_string($exeid) . "'";
         $res = Database::query($sql);
         if ($debug) {
             error_log('update_event_exercice called');
         }
         if ($debug) {
             error_log("{$sql}");
         }
         //Deleting control time session track
         //ExerciseLib::exercise_time_control_delete($exo_id);
         return $res;
     } else {
         return false;
     }
 }
Esempio n. 6
0
 /**
  * User logs in for the first time to a course
  * @param int $courseId
  * @param int $user_id
  * @param int $session_id
  */
 public static function event_course_login($courseId, $user_id, $session_id)
 {
     $course_tracking_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
     $time = api_get_utc_datetime();
     $courseId = intval($courseId);
     $user_id = intval($user_id);
     $session_id = intval($session_id);
     $ip = api_get_real_ip();
     $sql = "INSERT INTO {$course_tracking_table}(c_id, user_ip, user_id, login_course_date, logout_course_date, counter, session_id)\n                VALUES('" . $courseId . "', '" . $ip . "', '" . $user_id . "', '{$time}', '{$time}', '1', '" . $session_id . "')";
     Database::query($sql);
     // Course catalog stats modifications see #4191
     CourseManager::update_course_ranking(null, null, null, null, true, false);
 }
Esempio n. 7
0
                $session_lifetime = 3600;
                // 1 hour
                $course_code = $_course['sysCode'];
                $time = api_get_utc_datetime();
                if (isset($_user['user_id']) && !empty($_user['user_id'])) {
                    //We select the last record for the current course in the course tracking table
                    //But only if the login date is < than now + max_life_time
                    $sql = "SELECT course_access_id\n                            FROM {$course_tracking_table}\n                            WHERE\n                                user_id = " . intval($_user['user_id']) . " AND\n                                c_id = " . $_course['real_id'] . "  AND\n                                session_id  = " . api_get_session_id() . " AND\n                                login_course_date > '{$time}' - INTERVAL {$session_lifetime} SECOND\n                            ORDER BY login_course_date DESC LIMIT 0,1";
                    $result = Database::query($sql);
                    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\n                                WHERE course_access_id = " . intval($i_course_access_id) . " AND session_id = " . api_get_session_id();
                        Database::query($sql);
                    } else {
                        $ip = api_get_real_ip();
                        $sql = "INSERT INTO {$course_tracking_table} (c_id, user_ip, user_id, login_course_date, logout_course_date, counter, session_id)" . "VALUES('" . $_course['real_id'] . "', '" . $ip . "', '" . $_user['user_id'] . "', '{$time}', '{$time}', '1','" . api_get_session_id() . "')";
                        Database::query($sql);
                    }
                }
            }
        }
    }
}
/*  COURSE / USER REL. INIT */
$session_id = api_get_session_id();
$user_id = isset($_user['user_id']) ? $_user['user_id'] : null;
//Course permissions
//if this code is uncommented in some platforms the is_courseAdmin is not correctly saved see BT#5789
/*$is_courseAdmin     = false; //course teacher
$is_courseTutor     = false; //course teacher - some rights