diff --git a/main/inc/ajax/session.ajax.php b/main/inc/ajax/session.ajax.php index 6bf812c63d..ab0ae8d412 100644 --- a/main/inc/ajax/session.ajax.php +++ b/main/inc/ajax/session.ajax.php @@ -73,7 +73,7 @@ switch ($action) { break; case 'search_session_by_course': if (api_is_platform_admin()) { - $results = SessionManager::get_sessions_list(array('s.name LIKE' => "%".$_REQUEST['q']."%")); + $results = SessionManager::get_sessions_list(array('s.name LIKE' => "%".$_REQUEST['q']."%", 'c.id ='=>$_REQUEST['course_id'])); $results2 = array(); if (!empty($results)) { foreach ($results as $item) { diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index a374d8cece..2cbda8414f 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -1594,7 +1594,7 @@ class CourseManager if ($session_id != 0) { $sql_query .= ' AND scu.id_session = '.$session_id; } - + $rs = Database::query($sql_query); while($student = Database::fetch_array($rs)) { $students[$student['id_user']] = $student; diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php index 887a6356c5..a0cff7a2ce 100644 --- a/main/inc/lib/sessionmanager.lib.php +++ b/main/inc/lib/sessionmanager.lib.php @@ -12,6 +12,7 @@ */ class SessionManager { + public static $_debug = false; public function __construct() { } @@ -806,6 +807,9 @@ class SessionManager $sql_query = vsprintf($sql, $queryVariables); + if (self::$_debug) { + error_log($sql_query); + } $rs = Database::query($sql_query); while ($user = Database::fetch_array($rs)) { $users[$user['user_id']] = $user; @@ -816,7 +820,10 @@ class SessionManager */ $sql = "SELECT * FROM $tbl_course_lp WHERE c_id = %s "; //AND session_id = %s - $sql_query = sprintf($sql, $course['id']); + $sql_query = sprintf($sql, $course['real_id']); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $lessons_total = 0; while ($row = Database::fetch_array($result)) @@ -845,7 +852,12 @@ class SessionManager AND parent_id = 0 AND active IN (1, 0) AND session_id = %s"; + + $sql_query = sprintf($sql, $course['real_id'], $sessionId); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $assignments_total = $row['count']; @@ -856,6 +868,9 @@ class SessionManager $sql = "SELECT count(distinct page_id) as count FROM $wiki WHERE c_id = %s and session_id = %s"; $sql_query = sprintf($sql, $course['real_id'], $sessionId); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $wiki_total = $row['count']; @@ -884,6 +899,9 @@ class SessionManager FROM $forum f where f.c_id = %s and f.session_id = %s"; $sql_query = sprintf($sql, $course['real_id'], $sessionId); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $forums_total = $row['count']; @@ -900,6 +918,9 @@ class SessionManager AND access_session_id = %s AND access_user_id = %s "; $sql_query = sprintf($sql, $course['code'], $sessionId, $user['user_id']); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $course_description_progress = ($row['count'] > 0) ? 100 : 0; @@ -918,7 +939,12 @@ class SessionManager //Assignments $assignments_done = Tracking::count_student_assignments($user['user_id'], $course['code'], $sessionId); $assignments_left = $assignments_total - $assignments_done; - $assignments_progress = round((( $assignments_done * 100 ) / $assignments_total ), 2); + if (!empty($assignments_total)) { + $assignments_progress = round((( $assignments_done * 100 ) / $assignments_total ), 2); + } else { + $assignments_progress = 0; + } + //Wiki //total revisions per user @@ -926,6 +952,9 @@ class SessionManager FROM $wiki where c_id = %s and session_id = %s and user_id = %s"; $sql_query = sprintf($sql, $course['real_id'], $sessionId, $user['user_id']); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $wiki_revisions = $row['count']; @@ -938,17 +967,29 @@ class SessionManager AND default_value_type = 'wiki_page_id' AND c_id = %s"; $sql_query = sprintf($sql, $user['user_id'], $course['code'], $course['real_id']); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $wiki_read = $row['count']; $wiki_unread = $wiki_total - $wiki_read; - $wiki_progress = round((( $wiki_read * 100 ) / $wiki_total), 2); + if (!empty($wiki_total)) { + $wiki_progress = round((( $wiki_read * 100 ) / $wiki_total), 2); + } else { + $wiki_progress = 0; + } + //Surveys $surveys_done = (isset($survey_user_list[$user['user_id']]) ? $survey_user_list[$user['user_id']] : 0); $surveys_left = $surveys_total - $surveys_done; - $surveys_progress = round((( $surveys_done * 100 ) / $surveys_total), 2); + if (!empty($surveys_total)) { + $surveys_progress = round((( $surveys_done * 100 ) / $surveys_total), 2); + } else { + $surveys_progress = 0; + } //Forums #$forums_done = Tracking::count_student_messages($user['user_id'], $course_code, $session_id); @@ -956,12 +997,19 @@ class SessionManager INNER JOIN $forum f ON f.forum_id = p.forum_id WHERE p.poster_id = %s and f.session_id = %s and p.c_id = %s"; $sql_query = sprintf($sql, $user['user_id'], $sessionId, $course['real_id']); + if (self::$_debug) { + error_log($sql_query); + } $result = Database::query($sql_query); $row = Database::fetch_array($result); $forums_done = $row['count']; $forums_left = $forums_total - $forums_done; - $forums_progress = round((( $forums_done * 100 ) / $forums_total), 2); + if (!empty($forums_total)) { + $forums_progress = round((( $forums_done * 100 ) / $forums_total), 2); + } else { + $forums_progress = 0; + } //Overall Total $overall_total = ($course_description_progress + $exercises_progress + $forums_progress + $assignments_progress + $wiki_progress + $surveys_progress) / 6; @@ -2129,6 +2177,8 @@ class SessionManager $session_category_table = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY); $user_table = Database::get_main_table(TABLE_MAIN_USER); $table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $session_course_table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); + $course_table = Database::get_main_table(TABLE_MAIN_COURSE); $access_url_id = api_get_current_access_url_id(); @@ -2139,11 +2189,13 @@ class SessionManager INNER JOIN $user_table u ON s.id_coach = u.user_id INNER JOIN $table_access_url_rel_session ar ON ar.session_id = s.id LEFT JOIN $session_category_table sc ON s.session_category_id = sc.id + LEFT JOIN $session_course_table sco ON (sco.id_session = s.id) + INNER JOIN $course_table c ON sco.course_code = c.code WHERE ar.access_url_id = $access_url_id "; if (count($conditions)>0) { - $sql_query .= ' AND '; foreach ($conditions as $field=>$value) { + $sql_query .= ' AND '; $field = Database::escape_string($field); $value = Database::escape_string($value); $sql_query .= $field." '".$value."'"; @@ -2153,6 +2205,9 @@ class SessionManager $sql_query .= ' ORDER BY '.Database::escape_string(implode(',',$order_by)); } //echo $sql_query; + if (self::$_debug) { + error_log(preg_replace('/\s+/', ' ', $sql_query)); + } $sql_result = Database::query($sql_query); if (Database::num_rows($sql_result)>0) { while ($result = Database::fetch_array($sql_result)) { diff --git a/main/mySpace/index.php b/main/mySpace/index.php index 2adb1c89e0..1ac5751b45 100644 --- a/main/mySpace/index.php +++ b/main/mySpace/index.php @@ -650,11 +650,20 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst } $sessionFilter->addElement('header', '', $tool_name); + $url = $ajax_path . 'session.ajax.php?a=' . $sessionAjax; + + $a = 'search_course'; + $an = 'search_session'; + $sessionList = array(); + $courseList = array(); $sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : null; + $courseId = isset($_GET['course_id']) ? $_GET['course_id'] : null; + if (!empty($sessionId)) { $sessionList = array(); + if ($sessionId == 'T') { $sessionInfo = SessionManager::fetch($sessionId); $sessionList[] = array('id' => 'T', 'text' => 'TODOS'); @@ -662,10 +671,25 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst $sessionInfo = SessionManager::fetch($sessionId); $sessionList[] = array('id' => $sessionInfo['id'], 'text' => $sessionInfo['name']); } + + $sessionInfo = SessionManager::fetch($sessionId); + $sessionList[] = array('id' => $sessionInfo['id'], 'text' => $sessionInfo['name']); + $a = 'search_course_by_session'; + + } + + if (!empty($courseId)) { + $courseList = array(); + $courseInfo = api_get_course_info_by_id($courseId); + $courseList[] = array('id' => $courseInfo['real_id'], 'text' => $courseInfo['name']); + $an = 'search_session_by_course'; } + + $url = $ajax_path . 'session.ajax.php?a='. $an . '&course_id=' . $_GET['course_id']; $sessionFilter->addElement('select_ajax', 'session_name', get_lang('SearchSession'), null, array('url' => $url, 'defaults' => $sessionList, 'width' => '400px')); //course filter + $a = 'search_course'; if (!empty($_GET['session_id'])) { $a = 'search_course_by_session'; @@ -674,16 +698,8 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst if ($display == 'lpprogressoverview') { $a = 'search_course_by_session_all'; } - + $url = $ajax_path . 'course.ajax.php?a='. $a .'&session_id=' . $_GET['session_id']; - - $courseList = array(); - $courseId = isset($_GET['course_id']) ? $_GET['course_id'] : null; - if (!empty($courseId)) { - $courseList = array(); - $courseInfo = api_get_course_info_by_id($courseId); - $courseList[] = array('id' => $courseInfo['real_id'], 'text' => $courseInfo['name']); - } $sessionFilter->addElement('select_ajax', 'course_name', get_lang('SearchCourse'), null, array('url' => $url, 'defaults' => $courseList, 'width' => '400px')); //Exercise filter @@ -815,6 +831,15 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst $url = $ajax_path . 'course.ajax.php?a='. $a .'&session_id=' . $_GET['session_id']; echo '