Browse Source

exercise progress report, session not mandatory

César Perales 11 years ago
parent
commit
abe3e3eb22

+ 11 - 6
main/exercice/exercise.lib.php

@@ -1420,7 +1420,7 @@ function convert_score($score, $weight) {
  * @param   string  Search exercise name
  * @return  array   array with exercise data
  */
-function get_all_exercises($course_info = null, $session_id = 0, $check_publication_dates = false, $search_exercise = '') {
+function get_all_exercises($course_info = null, $session_id = 0, $check_publication_dates = false, $search_exercise = '', $search_all_sessions = false) {
     $TBL_EXERCICES = Database :: get_course_table(TABLE_QUIZ_TEST);
     $course_id = api_get_course_int_id();
 
@@ -1445,11 +1445,16 @@ function get_all_exercises($course_info = null, $session_id = 0, $check_publicat
     $needle_where   = (!empty($search_exercise)) ? " AND title LIKE '?' "       : '';
     $needle         = (!empty($search_exercise)) ? "%" . $search_exercise . "%" : ''; 
 
-    if ($session_id == 0) {
-    	$conditions = array('where'=>array('active = ? AND session_id = ? AND c_id = ? '. $needle_where . $time_conditions => array('1', $session_id, $course_id, $needle)), 'order'=>'title');
-    } else {
-        //All exercises
-    	$conditions = array('where'=>array('active = ? AND  (session_id = 0 OR session_id = ? ) AND c_id = ? ' . $needle_where . $time_conditions => array('1', $session_id, $course_id, $needle)), 'order'=>'title');
+    if ($search_all_sessions == true) 
+    {
+        $conditions = array('where'=>array('active = ?  AND c_id = ? '. $needle_where . $time_conditions => array('1', $course_id, $needle)), 'order'=>'title');
+    } else 
+    {
+        if ($session_id == 0) {
+            $conditions = array('where'=>array('active = ? AND session_id = ? AND c_id = ? '. $needle_where . $time_conditions => array('1', $session_id, $course_id, $needle)), 'order'=>'title');
+        } else {
+            $conditions = array('where'=>array('active = ? AND  (session_id = 0 OR session_id = ? ) AND c_id = ? ' . $needle_where . $time_conditions => array('1', $session_id, $course_id, $needle)), 'order'=>
+        }
     }
     return Database::select('*',$TBL_EXERCICES, $conditions);
 }

+ 2 - 1
main/inc/ajax/course.ajax.php

@@ -155,7 +155,8 @@ switch ($action) {
 
             $course = api_get_course_info_by_id($_GET['course_id']);
             require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
-            $exercises = get_all_exercises($course, intval($_GET['session_id']), false, $_GET['q']);
+            $session_id = (!empty($_GET['session_id'])) ?  intval($_GET['session_id']) : 0 ;
+            $exercises = get_all_exercises($course, $session_id, false, $_GET['q'], true);
 
             foreach ($exercises as $exercise)    
             {

+ 1 - 1
main/inc/ajax/model.ajax.php

@@ -621,7 +621,7 @@ switch ($action) {
         break;
     case 'get_exercise_progress':
         $sessionId = 0;
-        if (!empty($_GET['course_id']) && !empty($_GET['session_id']) && !empty($_GET['exercise_id']))
+        if (!empty($_GET['course_id']) && !empty($_GET['exercise_id']))
         {
             $sessionId  = intval($_GET['session_id']);
             $courseId   = intval($_GET['course_id']);

+ 5 - 3
main/inc/lib/sessionmanager.lib.php

@@ -516,10 +516,12 @@ class SessionManager
         $table_stats_exercises  = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
         $table_stats_attempt    = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
 
+        require_once api_get_path(SYS_CODE_PATH).'exercice/exercise.lib.php';
+
         $course = api_get_course_info_by_id($courseId);
+        $exercise = current(get_exercise_by_id($exerciseId));
 
-        $where = " WHERE a.session_id = %d
-        AND a.course_code = '%s'
+        $where = " WHERE  a.course_code = '%s'
         AND q.id = %d";
 
         if ($answer != 2)
@@ -561,7 +563,7 @@ class SessionManager
         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'], $exerciseId);
+        $sql_query = sprintf($sql, $course['code'], $exercise['title']);
 
         $rs = Database::query($sql_query);
         while ($row = Database::fetch_array($rs))

+ 7 - 6
main/mySpace/index.php

@@ -635,7 +635,13 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
         if (in_array($display, array('accessoverview','lpprogressoverview', 'progressoverview', 'exerciseprogress', 'surveyoverview')))
         {
                 $courseFilter = new FormValidator('course_filter', 'get', '', '', array('class'=> 'form-horizontal'), false);
-                $url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=search_course_by_session&session_id=' . $_GET['session_id'];
+                 $a = 'search_course_by_session';
+                if ( $display = 'exerciseprogress') 
+                {
+                   $a =  'search_course';
+                }
+                $url = api_get_path(WEB_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)) {
@@ -912,8 +918,6 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
             Display::display_warning_message(get_lang('ChooseSession'));
         }
     } else if($display == 'exerciseprogress') {
-        if (!empty($_GET['session_id']))
-        {
             if (!empty($_GET['course_id']))
             {
                 if (!empty($_GET['exercise_id']))
@@ -928,9 +932,6 @@ if ($is_platform_admin && in_array($view, array('admin')) && $display != 'yourst
             {
                 Display::display_warning_message(get_lang('ChooseCourse'));
             }
-        } else {
-            Display::display_warning_message(get_lang('ChooseSession'));
-        }
     } else if($display == 'surveyoverview') {
         if (!empty($_GET['session_id']))
         {