Browse Source

Add tracking for attempts deletion events - refs #6970

Yannick Warnier 11 years ago
parent
commit
666f3ab1f2

+ 1 - 0
main/exercice/exercise.class.php

@@ -1534,6 +1534,7 @@ class Exercise {
                 $sql_where
                 AND session_id = ".api_get_session_id()."";
         Database::query($sql);
+        event_system(LOG_EXERCISE_RESULT_DELETE, LOG_EXERCISE_ID, $this->id);
 
         return $i;
     }

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

@@ -359,7 +359,7 @@ switch ($action) {
                     }
                     delete_attempt($exe_id, api_get_user_id(), $course_code, $session_id, $my_question_id);
                     if ($objQuestionTmp->type  == HOT_SPOT) {
-                        delete_attempt_hotspot($exe_id, api_get_user_id(), $course_code, $my_question_id);
+                        delete_attempt_hotspot($exe_id, api_get_user_id(), $course_code, $session_id, $my_question_id);
                     }
 
                     if (isset($attempt_list[$my_question_id]) && isset($attempt_list[$my_question_id]['marks'])) {

+ 9 - 3
main/inc/lib/events.lib.inc.php

@@ -543,9 +543,10 @@ function exercise_attempt_hotspot($exe_id, $question_id, $answer_id, $correct, $
  * @param	string	Timestamp (defaults to null)
  * @param	integer	User ID (defaults to null)
  * @param	string	Course code (defaults to null)
+ * @param	integer	Session ID (defaults to null - only stored from 1.10 onwards)
  * @assert ('','','') === false
  */
-function event_system($event_type, $event_value_type, $event_value, $datetime = null, $user_id = null, $course_code = null)
+function event_system($event_type, $event_value_type, $event_value, $datetime = null, $user_id = null, $course_code = null, $session_id = null)
 {
     global $TABLETRACK_DEFAULT;
     if (empty($event_type)) {
@@ -927,6 +928,7 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id) {
         $sql_delete = "DELETE FROM $recording_table     WHERE exe_id IN (".implode(',',$exe_list).")";
         Database::query($sql_delete);
     }
+    event_system(LOG_LP_ATTEMPT_DELETE, LOG_LP_ID, $lp_id, null, null, $course['code'], $session_id);
 }
 
 /**
@@ -948,6 +950,7 @@ function delete_all_incomplete_attempts($user_id, $exercise_id, $course_code, $s
         $sql = "DELETE FROM $track_e_exercises  WHERE exe_user_id = $user_id AND exe_exo_id = $exercise_id AND exe_cours_id = '$course_code' AND session_id = $session_id AND status = 'incomplete' ";
         Database::query($sql);
     }
+    event_system(LOG_EXERCISE_RESULT_DELETE, LOG_EXERCISE_AND_USER_ID, $exercise_id.'-'.$user_id, null, null, $course_code, $session_id);
 }
 
 /**
@@ -1436,6 +1439,7 @@ function delete_attempt($exe_id, $user_id, $course_code, $session_id, $question_
     $sql = "DELETE FROM $table_track_attempt
             WHERE exe_id = $exe_id AND user_id = $user_id AND course_code = '$course_code' AND session_id = $session_id AND question_id = $question_id ";
     Database::query($sql);
+    event_system(LOG_QUESTION_RESULT_DELETE, LOG_EXERCISE_ATTEMPT_QUESTION_ID, $exe_id.'-'.$question_id, null, null, $course_code, $session_id);
 }
 
 /**
@@ -1443,19 +1447,21 @@ function delete_attempt($exe_id, $user_id, $course_code, $session_id, $question_
  * @param int $user_id
  * @param string $course_code
  * @param int $question_id
+ * @todo add session_id for 1.10
  */
-function delete_attempt_hotspot($exe_id, $user_id, $course_code, $question_id) {
+function delete_attempt_hotspot($exe_id, $user_id, $course_code, $session_id = 0, $question_id) {
     $table_track_attempt   = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_HOTSPOT);
 
     $exe_id          = intval($exe_id);
     $user_id         = intval($user_id);
     $course_code     = Database::escape_string($course_code);
-    //$session_id      = intval($session_id);
+    $session_id      = intval($session_id);
     $question_id     = intval($question_id);
 
     $sql = "DELETE FROM $table_track_attempt
             WHERE hotspot_exe_id = $exe_id AND hotspot_user_id = $user_id AND hotspot_course_code = '$course_code' AND hotspot_question_id = $question_id ";
     Database::query($sql);
+    event_system(LOG_QUESTION_RESULT_DELETE, LOG_EXERCISE_ATTEMPT_QUESTION_ID, $exe_id.'-'.$question_id, null, null, $course_code, $session_id);
 }
 
 /**

+ 11 - 1
main/inc/lib/main_api.lib.php

@@ -193,8 +193,13 @@ define('LOG_CAREER_DELETE',                     'career_deleted');
 define('LOG_USER_PERSONAL_DOC_DELETED',         'user_doc_deleted');
 define('LOG_WIKI_ACCESS',                       'wiki_page_view');
 
-// event logs data types
+define('LOG_EXERCISE_RESULT_DELETE',           'exercise_result_deleted');
+define('LOG_LP_ATTEMPT_DELETE',                'lp_attempt_deleted');
+define('LOG_QUESTION_RESULT_DELETE',           'question_attempt_deleted');
+
+// event logs data types (max 20 chars)
 define('LOG_COURSE_CODE',                       'course_code');
+define('LOG_COURSE_ID',                         'course_id');
 define('LOG_USER_ID',                           'user_id');
 define('LOG_USER_OBJECT',                       'user_object');
 define('LOG_USER_FIELD_VARIABLE',		        'user_field_variable');
@@ -212,6 +217,11 @@ define('LOG_GRADEBOOK_ID',                       'gradebook_id');
 
 define('LOG_WIKI_PAGE_ID',                       'wiki_page_id');
 
+define('LOG_EXERCISE_ID',                        'exercise_id');
+define('LOG_EXERCISE_AND_USER_ID',               'exercise_and_user_id');
+define('LOG_LP_ID',                              'lp_id');
+define('LOG_EXERCISE_ATTEMPT_QUESTION_ID',       'exercise_a_q_id');
+
 define('USERNAME_PURIFIER', '/[^0-9A-Za-z_\.]/');
 
 //used when login_is_email setting is true