|
@@ -501,6 +501,75 @@ class SessionManager
|
|
|
$num = $row['total_rows'];
|
|
|
return $num;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * Get the progress of a exercise
|
|
|
+ * @param int session id
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public static function get_exercise_progress($sessionId = 0, $options = array())
|
|
|
+ {
|
|
|
+ $session = Database::get_main_table(TABLE_MAIN_SESSION);
|
|
|
+ $user = Database::get_main_table(TABLE_MAIN_USER);
|
|
|
+ $quiz = Database::get_course_table(TABLE_QUIZ_TEST);
|
|
|
+ $quiz_answer = Database::get_course_table(TABLE_QUIZ_ANSWER);
|
|
|
+ $quiz_question = Database::get_course_table(TABLE_QUIZ_QUESTION);
|
|
|
+ $table_stats_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
|
|
|
+ $table_stats_attempt = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
|
|
|
+
|
|
|
+ $courses = SessionManager::get_course_list_by_session_id($sessionId);
|
|
|
+ //TODO let select course
|
|
|
+ $course = current($courses);
|
|
|
+ //TODO fix this
|
|
|
+ $course_info = array('real_id' => $course['id']);
|
|
|
+
|
|
|
+ $where = " WHERE a.session_id = %d
|
|
|
+ AND a.course_code = '%s'";
|
|
|
+
|
|
|
+ $limit = null;
|
|
|
+ if (!empty($options['limit'])) {
|
|
|
+ $limit = " LIMIT ".$options['limit'];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($options['where'])) {
|
|
|
+ $where .= ' AND '.$options['where'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $order = null;
|
|
|
+ if (!empty($options['order'])) {
|
|
|
+ $order = " ORDER BY ".$options['order'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $sql = "SELECT
|
|
|
+ s.name as session,
|
|
|
+ CONCAT (q.c_id, q.id) as exercise_id,
|
|
|
+ q.title as quiz_title,
|
|
|
+ u.username,
|
|
|
+ u.lastname,
|
|
|
+ u.firstname,
|
|
|
+ a.tms as time,
|
|
|
+ qa.question_id,
|
|
|
+ qq.question,
|
|
|
+ qa.answer,
|
|
|
+ qa.correct
|
|
|
+ FROM $table_stats_attempt a
|
|
|
+ LEFT JOIN $quiz_answer qa ON a.answer = qa.id_auto
|
|
|
+ LEFT JOIN $quiz_question qq ON qq.id = qa.question_id
|
|
|
+ INNER JOIN $table_stats_exercises e ON e.exe_id = a.exe_id
|
|
|
+ INNER JOIN $session s ON s.id = a.session_id
|
|
|
+ INNER JOIN $quiz q ON q.id = e.exe_exo_id
|
|
|
+ INNER JOIN $user u ON u.user_id = a.user_id
|
|
|
+ $where $order $limit";
|
|
|
+
|
|
|
+
|
|
|
+ $sql_query = sprintf($sql, $sessionId, $course['code']);
|
|
|
+
|
|
|
+ $rs = Database::query($sql_query);
|
|
|
+ while ($row = Database::fetch_array($rs))
|
|
|
+ {
|
|
|
+ $data[] = $row;
|
|
|
+ }
|
|
|
+ return $data;
|
|
|
+ }
|
|
|
/**
|
|
|
* Gets the progress of learning paths in the given session
|
|
|
* @param int session id
|
|
@@ -520,6 +589,7 @@ class SessionManager
|
|
|
//TODO fix this
|
|
|
$course_info = array('real_id' => $course['id']);
|
|
|
|
|
|
+
|
|
|
//getting all the students of the course
|
|
|
//we are not using this because it only returns user ids
|
|
|
/*if (empty($sessionId)
|
|
@@ -530,11 +600,28 @@ class SessionManager
|
|
|
// Registered students in session.
|
|
|
$users = CourseManager :: get_student_list_from_course_code($course_code, true, $sessionId);
|
|
|
}*/
|
|
|
- $sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.course_code FROM $session_course_user s
|
|
|
- INNER JOIN $user u ON u.user_id = s.id_user
|
|
|
- WHERE course_code = '%s'
|
|
|
+ $where = " WHERE course_code = '%s'
|
|
|
AND s.status <> 2 and id_session = %s";
|
|
|
|
|
|
+ $limit = null;
|
|
|
+ if (!empty($options['limit'])) {
|
|
|
+ $limit = " LIMIT ".$options['limit'];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($options['where'])) {
|
|
|
+ $where .= ' AND '.$options['where'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $order = null;
|
|
|
+ if (!empty($options['order'])) {
|
|
|
+ $order = " ORDER BY ".$options['order'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.course_code
|
|
|
+ FROM $session_course_user s
|
|
|
+ INNER JOIN $user u ON u.user_id = s.id_user
|
|
|
+ $where $order $limit";
|
|
|
+
|
|
|
$sql_query = sprintf($sql, $course['code'], $sessionId);
|
|
|
|
|
|
$rs = Database::query($sql_query);
|
|
@@ -607,8 +694,8 @@ class SessionManager
|
|
|
$forum_post = Database::get_course_table(TABLE_FORUM_POST);
|
|
|
$tbl_course_lp = Database::get_course_table(TABLE_LP_MAIN);
|
|
|
$wiki = Database::get_course_table(TABLE_WIKI);
|
|
|
- $table_stats_default = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_DEFAULT);
|
|
|
- $table_stats_access = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS);
|
|
|
+ $table_stats_default = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_DEFAULT);
|
|
|
+ $table_stats_access = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS);
|
|
|
|
|
|
$courses = SessionManager::get_course_list_by_session_id($sessionId);
|
|
|
//TODO let select course
|
|
@@ -626,11 +713,28 @@ class SessionManager
|
|
|
// Registered students in session.
|
|
|
$users = CourseManager :: get_student_list_from_course_code($course_code, true, $sessionId);
|
|
|
}*/
|
|
|
- $sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.course_code FROM $session_course_user s
|
|
|
- INNER JOIN $user u ON u.user_id = s.id_user
|
|
|
- WHERE course_code = '%s'
|
|
|
+ $where = " WHERE course_code = '%s'
|
|
|
AND s.status <> 2 and id_session = %s";
|
|
|
|
|
|
+ $limit = null;
|
|
|
+ if (!empty($options['limit'])) {
|
|
|
+ $limit = " LIMIT ".$options['limit'];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!empty($options['where'])) {
|
|
|
+ $where .= ' AND '.$options['where'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $order = null;
|
|
|
+ if (!empty($options['order'])) {
|
|
|
+ $order = " ORDER BY ".$options['order'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.course_code
|
|
|
+ FROM $session_course_user s
|
|
|
+ INNER JOIN $user u ON u.user_id = s.id_user
|
|
|
+ $where $order $limit";
|
|
|
+
|
|
|
$sql_query = sprintf($sql, $course['code'], $sessionId);
|
|
|
|
|
|
$rs = Database::query($sql_query);
|