When cleaning user LP results delete also the interactions and objs

See BT#9303
1.9.x
Julio Montoya 11 years ago
parent b1b41820c5
commit 4eaeae3376
  1. 73
      main/inc/lib/events.lib.inc.php

@ -910,40 +910,67 @@ function get_attempt_count_not_finished($user_id, $exerciseId, $lp_id, $lp_item_
*/
function delete_student_lp_events($user_id, $lp_id, $course, $session_id)
{
$lp_view_table = Database::get_course_table(TABLE_LP_VIEW);
$lp_item_view_table = Database::get_course_table(TABLE_LP_ITEM_VIEW);
$course_id = $course['real_id'];
$lp_view_table = Database::get_course_table(TABLE_LP_VIEW);
$lp_item_view_table = Database::get_course_table(TABLE_LP_ITEM_VIEW);
$lpInteraction = Database::get_course_table(TABLE_LP_IV_INTERACTION);
$lpObjective = Database::get_course_table(TABLE_LP_IV_OBJECTIVE);
$course_id = $course['real_id'];
if (empty($course_id)) {
$course_id = api_get_course_int_id();
}
$track_e_exercises = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$track_attempts = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$recording_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$user_id = intval($user_id);
$lp_id = intval($lp_id);
$session_id = intval($session_id);
$track_e_exercises = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCICES);
$track_attempts = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT);
$recording_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ATTEMPT_RECORDING);
$user_id = intval($user_id);
$lp_id = intval($lp_id);
$session_id = intval($session_id);
//Make sure we have the exact lp_view_id
$sql = "SELECT id FROM $lp_view_table
WHERE c_id = $course_id AND user_id = $user_id AND lp_id = $lp_id AND session_id = $session_id ";
$result = Database::query($sql);
WHERE
c_id = $course_id AND
user_id = $user_id AND
lp_id = $lp_id AND
session_id = $session_id ";
$result = Database::query($sql);
if (Database::num_rows($result)) {
$view = Database::fetch_array($result, 'ASSOC');
$lp_view_id = $view['id'];
$sql = "DELETE FROM $lp_item_view_table WHERE c_id = $course_id AND lp_view_id = $lp_view_id ";
$view = Database::fetch_array($result, 'ASSOC');
$lp_view_id = $view['id'];
$sql = "DELETE FROM $lp_item_view_table
WHERE c_id = $course_id AND lp_view_id = $lp_view_id ";
Database::query($sql);
$sql = "DELETE FROM $lpInteraction
WHERE c_id = $course_id AND lp_iv_id = $lp_view_id ";
Database::query($sql);
$sql = "DELETE FROM $lpObjective
WHERE c_id = $course_id AND lp_iv_id = $lp_view_id ";
Database::query($sql);
}
$sql = "DELETE FROM $lp_view_table WHERE c_id = $course_id AND user_id = $user_id AND lp_id= $lp_id AND session_id = $session_id ";
$sql = "DELETE FROM $lp_view_table
WHERE
c_id = $course_id AND
user_id = $user_id AND
lp_id= $lp_id AND
session_id = $session_id
";
Database::query($sql);
$sql = "SELECT exe_id FROM $track_e_exercises
WHERE exe_user_id = $user_id AND session_id = $session_id AND exe_cours_id = '{$course['code']}' AND orig_lp_id = $lp_id";
$result = Database::query($sql);
WHERE
exe_user_id = $user_id AND
session_id = $session_id AND
exe_cours_id = '{$course['code']}' AND
orig_lp_id = $lp_id
";
$result = Database::query($sql);
$exe_list = array();
while ($row = Database::fetch_array($result, 'ASSOC')) {
$exe_list[] = $row['exe_id'];
@ -959,7 +986,15 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id)
$sql = "DELETE FROM $recording_table WHERE exe_id IN (".implode(',',$exe_list).")";
Database::query($sql);
}
event_system(LOG_LP_ATTEMPT_DELETE, LOG_LP_ID, $lp_id, null, null, $course['code'], $session_id);
event_system(
LOG_LP_ATTEMPT_DELETE,
LOG_LP_ID,
$lp_id,
null,
null,
$course['code'],
$session_id
);
}
/**

Loading…
Cancel
Save