|
|
|
|
@ -509,45 +509,84 @@ class SessionManager |
|
|
|
|
*/ |
|
|
|
|
public static function get_session_lp_progress($sessionId = 0, $options) |
|
|
|
|
{ |
|
|
|
|
$tbl_lp = Database::get_course_table(TABLE_LP_MAIN); |
|
|
|
|
$tbl_lp_view = Database::get_course_table(TABLE_LP_VIEW); |
|
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
|
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); |
|
|
|
|
//tables |
|
|
|
|
$session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
|
|
|
$user = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
|
$tbl_course_lp_view = Database::get_course_table(TABLE_LP_VIEW); |
|
|
|
|
|
|
|
|
|
$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']); |
|
|
|
|
|
|
|
|
|
$select = "select u.username, u.firstname, u.lastname, l.name, v.progress |
|
|
|
|
FROM $tbl_lp_view v |
|
|
|
|
INNER JOIN $tbl_lp l ON l.id = v.lp_id |
|
|
|
|
INNER JOIN $tbl_user u ON u.user_id = v.user_id |
|
|
|
|
INNER JOIN $tbl_course c |
|
|
|
|
"; |
|
|
|
|
//getting all the students of the course |
|
|
|
|
//we are not using this because it only returns user ids |
|
|
|
|
/*if (empty($sessionId) |
|
|
|
|
{ |
|
|
|
|
// Registered students in a course outside session. |
|
|
|
|
$users = CourseManager :: get_student_list_from_course_code($course_code); |
|
|
|
|
} else { |
|
|
|
|
// 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' |
|
|
|
|
AND s.status <> 2 and id_session = %s"; |
|
|
|
|
|
|
|
|
|
$where = ' WHERE 1=1 '; |
|
|
|
|
if (!empty($options['where'])) { |
|
|
|
|
$where .= ' AND '.$options['where']; |
|
|
|
|
$sql_query = sprintf($sql, $course['code'], $sessionId); |
|
|
|
|
|
|
|
|
|
$rs = Database::query($sql_query); |
|
|
|
|
while ($user = Database::fetch_array($rs)) |
|
|
|
|
{ |
|
|
|
|
$users[$user['user_id']] = $user; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$where .= ' AND v.session_id = ' . $sessionId; |
|
|
|
|
//Get lessons |
|
|
|
|
require_once api_get_path(SYS_CODE_PATH).'newscorm/learnpathList.class.php'; |
|
|
|
|
$lessons = LearnpathList::get_course_lessons($course['code'], $sessionId); |
|
|
|
|
|
|
|
|
|
$order = null; |
|
|
|
|
if (!empty($options['order'])) { |
|
|
|
|
$order = " ORDER BY ".$options['order']; |
|
|
|
|
} |
|
|
|
|
$table = array(); |
|
|
|
|
foreach ($users as $user) |
|
|
|
|
{ |
|
|
|
|
$data = array( |
|
|
|
|
'lastname' => $user[1], |
|
|
|
|
'firstname' => $user[2], |
|
|
|
|
'username' => $user[3], |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$limit = null; |
|
|
|
|
if (!empty($options['limit'])) { |
|
|
|
|
$limit = " LIMIT ".$options['limit']; |
|
|
|
|
} |
|
|
|
|
//Get lessons progress by user |
|
|
|
|
$sql = "SELECT v.lp_id as id, v.progress |
|
|
|
|
FROM $tbl_course_lp_view v |
|
|
|
|
WHERE v.session_id = %d |
|
|
|
|
AND v.c_id = %d |
|
|
|
|
AND v.user_id = %d"; |
|
|
|
|
$sql_query = sprintf($sql, $sessionId, $course_info['real_id'], $user['user_id']); |
|
|
|
|
$result = Database::query($sql_query); |
|
|
|
|
|
|
|
|
|
$select .= $where.$order.$limit; |
|
|
|
|
$result = Database::query($select); |
|
|
|
|
$formatted_sessions = array(); |
|
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
|
while ($row = Database::fetch_assoc($result)) { |
|
|
|
|
$formatted_sessions[] = $row; |
|
|
|
|
|
|
|
|
|
$user_lessons = array(); |
|
|
|
|
while ($row = Database::fetch_array($result)) |
|
|
|
|
{ |
|
|
|
|
$user_lessons[$row['id']] = $row; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Match course lessons with user progress |
|
|
|
|
$progress = 0; |
|
|
|
|
$count = 0; |
|
|
|
|
foreach ($lessons as $lesson) |
|
|
|
|
{ |
|
|
|
|
$data[$lesson['id']] = (!empty($user_lessons[$lesson['id']]['progress'])) ? $user_lessons[$lesson['id']]['progress'] : 0; |
|
|
|
|
$progress += $data[$lesson['id']]; |
|
|
|
|
$count++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$data['total'] = round($progress / $count, 2); |
|
|
|
|
|
|
|
|
|
$table[] = $data; |
|
|
|
|
} |
|
|
|
|
return $formatted_sessions; |
|
|
|
|
return $table; |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Gets the progress of the given session |
|
|
|
|
|