Browse Source

Clean test's results for LP test too, add global clean button -ref #6950

Hubert Borderiou 11 years ago
parent
commit
79b08cee7d
2 changed files with 48 additions and 7 deletions
  1. 31 2
      main/exercice/exercice.php
  2. 17 5
      main/exercice/exercise.class.php

+ 31 - 2
main/exercice/exercice.php

@@ -202,6 +202,31 @@ HotPotGCt($documentPath, 1, api_get_user_id());
 if ($is_allowedToEdit) {
 
     if (!empty($choice)) {
+
+        // All test choice, clean all test's results
+        if ($choice == 'clean_all_test') {
+            $check = Security::check_token('get');
+            if ($check) {
+                // list des exercices dans un test
+                // we got variable $course_id $course_info session api_get_session_id()
+                $tab_exercise_list = get_all_exercises_for_course_id($course_info, api_get_session_id(), $course_id, false);
+
+                $quantity_results_deleted = 0;
+                foreach ($tab_exercise_list as $exeItem) {
+                    // delete result for test, if not in a gradebook
+                    $exercise_action_locked = api_resource_is_locked_by_gradebook($exeItem['id'], LINK_EXERCISE);
+                    if ($exercise_action_locked == false) {
+                        $objExerciseTmp = new Exercise();
+                        if ($objExerciseTmp->read($exeItem['id'])) {
+                            $quantity_results_deleted += $objExerciseTmp->clean_results(true);
+                        }
+                    }
+                }
+                Display :: display_confirmation_message(sprintf(get_lang('XResultsCleaned'), $quantity_results_deleted));
+            }
+        }
+
+        // single exercise choice
         // construction of Exercise
 
         $objExerciseTmp = new Exercise();
@@ -247,7 +272,7 @@ if ($is_allowedToEdit) {
                         break;
                     case 'clean_results' : //clean student results
                         if ($exercise_action_locked == false) {
-                            $quantity_results_deleted = $objExerciseTmp->clean_results();
+                            $quantity_results_deleted = $objExerciseTmp->clean_results(true);
                             Display :: display_confirmation_message(sprintf(get_lang('XResultsCleaned'), $quantity_results_deleted));
                         }
                         break;
@@ -365,6 +390,8 @@ if ($is_allowedToEdit) {
 }
 $total = $total_exercises + $hp_count;
 
+
+$token = Security::get_token();
 if ($is_allowedToEdit && $origin != 'learnpath') {
     echo '<a href="exercise_admin.php?'.api_get_cidreq().'">'.Display :: return_icon('new_exercice.png', get_lang('NewEx'), '', ICON_SIZE_MEDIUM).'</a>';
     echo '<a href="question_create.php?'.api_get_cidreq().'">'.Display :: return_icon('new_question.png', get_lang('AddQ'), '', ICON_SIZE_MEDIUM).'</a>';
@@ -383,6 +410,7 @@ if ($is_allowedToEdit && $origin != 'learnpath') {
     echo '<a href="qti2.php?'.api_get_cidreq().'">'.Display :: return_icon('import_qti2.png', get_lang('ImportQtiQuiz'), '', ICON_SIZE_MEDIUM).'</a>';
     echo '<a href="aiken.php?'.api_get_cidreq().'">'.Display :: return_icon('import_aiken.png', get_lang('ImportAikenQuiz'), '', ICON_SIZE_MEDIUM).'</a>';
     echo '<a href="upload_exercise.php?'.api_get_cidreq().'">'.Display :: return_icon('import_excel.png', get_lang('ImportExcelQuiz'), '', ICON_SIZE_MEDIUM).'</a>';
+    echo Display::url(Display::return_icon('clean_all.png', get_lang('CleanAllStudentsResultsForAllTests'), '', ICON_SIZE_MEDIUM), '', array('onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('AreYouSureToEmptyAllTestResults'), ENT_QUOTES, $charset))." ".addslashes($row['title'])."?"."')) return false;", 'href' => 'exercice.php?'.api_get_cidreq().'&choice=clean_all_test&sec_token='.$token));
 }
 
 if ($is_allowedToEdit) {
@@ -442,7 +470,8 @@ if (!empty($exercise_list)) {
         $mylpid = (empty($learnpath_id) ? '' : '&learnpath_id='.$learnpath_id);
         $mylpitemid = (empty($learnpath_item_id) ? '' : '&learnpath_item_id='.$learnpath_item_id);
 
-        $token = Security::get_token();
+        // $token = Security::get_token(); // has been moved above
+
         $i = 1;
 
         if ($is_allowedToEdit) {

+ 17 - 5
main/exercice/exercise.class.php

@@ -1486,16 +1486,23 @@ class Exercise {
      * Works with exercises in sessions
      * @return int quantity of user's exercises deleted
      */
-    function clean_results() {
+    function clean_results($clean_lp_tests = false) {
         $table_track_e_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
         $table_track_e_attempt   = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
 
+        $sql_where = '  AND
+                        orig_lp_id = 0 AND
+                        orig_lp_item_id = 0';
+
+        if ($clean_lp_tests) {
+            $sql_where = "";
+        }
+
         $sql_select = "SELECT exe_id FROM $table_track_e_exercises
 					   WHERE 	exe_cours_id = '".api_get_course_id()."' AND
 								exe_exo_id = ".$this->id." AND
-								orig_lp_id = 0 AND
-								orig_lp_item_id = 0 AND
-								session_id = ".api_get_session_id()."";
+								session_id = ".api_get_session_id()." ".
+                                $sql_where;
 
         $result   = Database::query($sql_select);
         $exe_list = Database::store_result($result);
@@ -1512,8 +1519,13 @@ class Exercise {
 
         //delete TRACK_E_EXERCICES table
         $sql = "DELETE FROM $table_track_e_exercises
-				WHERE exe_cours_id = '".api_get_course_id()."' AND exe_exo_id = ".$this->id." AND orig_lp_id = 0 AND orig_lp_item_id = 0 AND session_id = ".api_get_session_id()."";
+                WHERE exe_cours_id = '".api_get_course_id()."'
+                AND exe_exo_id = ".$this->id."
+                $sql_where
+                AND session_id = ".api_get_session_id()."";
+
         Database::query($sql);
+
         return $i;
     }