Quiz: Use iid instead of id in c_quiz queries - refs BT#18452

pull/3824/head
Angel Fernando Quiroz Campos 5 years ago
parent 698351ec8d
commit ec024dcf1d
  1. 58
      main/exercise/exercise.class.php
  2. 4
      main/exercise/exercise.php
  3. 4
      main/exercise/exercise_result.class.php
  4. 2
      main/exercise/exercise_show.php
  5. 2
      main/exercise/pending.php
  6. 2
      main/exercise/question.class.php
  7. 6
      main/exercise/question_create.php
  8. 12
      main/exercise/question_pool.php
  9. 8
      main/extra/myStudents.php
  10. 2
      main/gradebook/gradebook_edit_all.php
  11. 6
      main/gradebook/lib/be/exerciselink.class.php
  12. 2
      main/inc/ajax/course.ajax.php
  13. 2
      main/inc/ajax/exercise.ajax.php
  14. 2
      main/inc/ajax/model.ajax.php
  15. 6
      main/inc/lib/exercise.lib.php
  16. 66
      main/inc/lib/tracking.lib.php
  17. 10
      main/lp/learnpath.class.php
  18. 16
      main/mySpace/exercise_category_report.php
  19. 4
      main/mySpace/myStudents.php
  20. 4
      main/session/index.php
  21. 4
      main/tracking/courseLog.php
  22. 6
      main/tracking/course_log_tools.php
  23. 22
      main/tracking/exams.php
  24. 4
      main/tracking/lp_results_by_user.php
  25. 28
      plugin/test2pdf/src/test2pdf.lib.php
  26. 6
      src/Chamilo/CourseBundle/Component/CourseCopy/CourseBuilder.php
  27. 10
      src/Chamilo/CourseBundle/Component/CourseCopy/CourseRecycler.php
  28. 2
      src/Chamilo/CourseBundle/Component/CourseCopy/Resources/Quiz.php
  29. 2
      tests/scripts/fix_matching_question.php

@ -179,7 +179,7 @@ class Exercise
}
$sql = "SELECT * FROM $table
WHERE c_id = ".$this->course_id." AND id = ".$id;
WHERE iid = ".$id;
$result = Database::query($sql);
// if the exercise has been found
@ -1792,7 +1792,7 @@ class Exercise
$sql = "UPDATE $TBL_EXERCISES
SET question_selection_type= ".$this->getQuestionSelectionType()."
WHERE id = ".$this->id." AND c_id = ".$this->course_id;
WHERE iid = ".$this->id;
Database::query($sql);
// insert into the item_property table
@ -1944,7 +1944,7 @@ class Exercise
$table = Database::get_course_table(TABLE_QUIZ_TEST);
$sql = "UPDATE $table SET active='-1'
WHERE c_id = ".$this->course_id." AND id = ".intval($this->id);
WHERE iid = ".intval($this->id);
Database::query($sql);
api_item_property_update(
@ -8175,7 +8175,7 @@ class Exercise
cq.c_id = %s AND
(cq.session_id = %s OR cq.session_id = 0) AND
cq.active = 0
ORDER BY cq.id";
ORDER BY cq.iid";
$sql = sprintf($sql, $courseId, $sessionId);
$result = Database::query($sql);
@ -9105,7 +9105,7 @@ class Exercise
$invisibleSql = "SELECT e.iid
FROM $TBL_EXERCISES e
INNER JOIN $TBL_ITEM_PROPERTY ip
ON (e.id = ip.ref AND e.c_id = ip.c_id)
ON (e.iid = ip.ref AND e.c_id = ip.c_id)
WHERE
ip.tool = '".TOOL_QUIZ."' AND
e.c_id = $courseId AND
@ -9243,7 +9243,7 @@ class Exercise
$mylpitemid = empty($learnpath_item_id) ? '' : '&learnpath_item_id='.$learnpath_item_id;
foreach ($exerciseList as $row) {
$currentRow = [];
$my_exercise_id = $row['id'];
$my_exercise_id = $row['iid'];
$attempt_text = '';
$actions = '';
$exercise = new Exercise($returnData ? $courseId : 0);
@ -9373,8 +9373,8 @@ class Exercise
'<a
'.$alt_title.'
class="'.$class_tip.'"
id="tooltip_'.$row['id'].'"
href="'.$overviewUrl.'?'.api_get_cidreq().$mylpid.$mylpitemid.'&exerciseId='.$row['id'].'"
id="tooltip_'.$row['iid'].'"
href="'.$overviewUrl.'?'.api_get_cidreq().$mylpid.$mylpitemid.'&exerciseId='.$row['iid'].'"
>
'.Display::return_icon('quiz.png', $row['title']).'
'.$title.'
@ -9397,13 +9397,13 @@ class Exercise
// Questions list
$actions = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), '', ICON_SIZE_SMALL),
'admin.php?'.api_get_cidreq().'&exerciseId='.$row['id']
'admin.php?'.api_get_cidreq().'&exerciseId='.$row['iid']
);
// Test settings
$settings = Display::url(
Display::return_icon('settings.png', get_lang('Configure'), '', ICON_SIZE_SMALL),
'exercise_admin.php?'.api_get_cidreq().'&exerciseId='.$row['id']
'exercise_admin.php?'.api_get_cidreq().'&exerciseId='.$row['iid']
);
if ($limitTeacherAccess && !api_is_platform_admin()) {
@ -9412,7 +9412,7 @@ class Exercise
$actions .= $settings;
// Exercise results
$resultsLink = '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['id'].'">'.
$resultsLink = '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['iid'].'">'.
Display::return_icon('test_results.png', get_lang('Results'), '', ICON_SIZE_SMALL).'</a>';
if ($limitTeacherAccess) {
@ -9435,7 +9435,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&choice=enable_launch&sec_token='.$token.'&exerciseId='.$row['id']
'exercise.php?'.api_get_cidreq().'&choice=enable_launch&sec_token='.$token.'&exerciseId='.$row['iid']
);
} else {
$actions .= Display::url(
@ -9445,7 +9445,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&choice=disable_launch&sec_token='.$token.'&exerciseId='.$row['id']
'exercise.php?'.api_get_cidreq().'&choice=disable_launch&sec_token='.$token.'&exerciseId='.$row['iid']
);
}
}
@ -9456,7 +9456,7 @@ class Exercise
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('AreYouSureToCopy'), ENT_QUOTES, $charset))." ".addslashes($row['title'])."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&choice=copy_exercise&sec_token='.$token.'&exerciseId='.$row['id'],
'href' => 'exercise.php?'.api_get_cidreq().'&choice=copy_exercise&sec_token='.$token.'&exerciseId='.$row['iid'],
]
);
@ -9481,7 +9481,7 @@ class Exercise
)
)." ".addslashes($row['title'])."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq(
).'&choice=clean_results&sec_token='.$token.'&exerciseId='.$row['id'],
).'&choice=clean_results&sec_token='.$token.'&exerciseId='.$row['iid'],
]
);
} else {
@ -9514,7 +9514,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&choice=enable&sec_token='.$token.'&exerciseId='.$row['id']
'exercise.php?'.api_get_cidreq().'&choice=enable&sec_token='.$token.'&exerciseId='.$row['iid']
);
} else {
// else if not active
@ -9525,7 +9525,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&choice=disable&sec_token='.$token.'&exerciseId='.$row['id']
'exercise.php?'.api_get_cidreq().'&choice=disable&sec_token='.$token.'&exerciseId='.$row['iid']
);
}
}
@ -9544,7 +9544,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?action=exportqti2&exerciseId='.$row['id'].'&'.api_get_cidreq()
'exercise.php?action=exportqti2&exerciseId='.$row['iid'].'&'.api_get_cidreq()
);
if ($limitTeacherAccess && !api_is_platform_admin()) {
@ -9576,7 +9576,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&choice=enable&sec_token='.$token.'&exerciseId='.$row['id']
'exercise.php?'.api_get_cidreq().'&choice=enable&sec_token='.$token.'&exerciseId='.$row['iid']
);
} else {
// else if not active
@ -9587,7 +9587,7 @@ class Exercise
'',
ICON_SIZE_SMALL
),
'exercise.php?'.api_get_cidreq().'&choice=disable&sec_token='.$token.'&exerciseId='.$row['id']
'exercise.php?'.api_get_cidreq().'&choice=disable&sec_token='.$token.'&exerciseId='.$row['iid']
);
}
}
@ -9597,14 +9597,14 @@ class Exercise
}
$actions .= $visibility;
$actions .= '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['id'].'">'.
$actions .= '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['iid'].'">'.
Display::return_icon('test_results.png', get_lang('Results'), '', ICON_SIZE_SMALL).'</a>';
$actions .= Display::url(
Display::return_icon('cd.gif', get_lang('CopyExercise')),
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('AreYouSureToCopy'), ENT_QUOTES, $charset))." ".addslashes($row['title'])."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&choice=copy_exercise&sec_token='.$token.'&exerciseId='.$row['id'],
'href' => 'exercise.php?'.api_get_cidreq().'&choice=copy_exercise&sec_token='.$token.'&exerciseId='.$row['iid'],
]
);
}
@ -9623,7 +9623,7 @@ class Exercise
'',
[
'onclick' => "javascript:if(!confirm('".addslashes(api_htmlentities(get_lang('AreYouSureToDeleteJS'), ENT_QUOTES, $charset))." ".addslashes($exercise->getUnformattedTitle())."?"."')) return false;",
'href' => 'exercise.php?'.api_get_cidreq().'&choice=delete&sec_token='.$token.'&exerciseId='.$row['id'],
'href' => 'exercise.php?'.api_get_cidreq().'&choice=delete&sec_token='.$token.'&exerciseId='.$row['iid'],
]
);
} else {
@ -9694,7 +9694,7 @@ class Exercise
continue;
}
$url = '<a '.$alt_title.' href="overview.php?'.api_get_cidreq().$mylpid.$mylpitemid.'&exerciseId='.$row['id'].'">'.
$url = '<a '.$alt_title.' href="overview.php?'.api_get_cidreq().$mylpid.$mylpitemid.'&exerciseId='.$row['iid'].'">'.
$cut_title.'</a>';
// Link of the exercise.
@ -9708,7 +9708,7 @@ class Exercise
// Don't remove this marker: note-query-exe-results
$sql = "SELECT * FROM $TBL_TRACK_EXERCISES
WHERE
exe_exo_id = ".$row['id']." AND
exe_exo_id = ".$row['iid']." AND
exe_user_id = $userId AND
c_id = ".api_get_course_int_id()." AND
status <> 'incomplete' AND
@ -9829,7 +9829,7 @@ class Exercise
$currentRow['attempt'] = $attempt_text;
if ($is_allowedToEdit) {
$additionalActions = ExerciseLib::getAdditionalTeacherActions($row['id']);
$additionalActions = ExerciseLib::getAdditionalTeacherActions($row['iid']);
if (!empty($additionalActions)) {
$actions .= $additionalActions.PHP_EOL;
@ -9841,7 +9841,7 @@ class Exercise
}
$currentRow = [
$row['id'],
$row['iid'],
$currentRow['title'],
$currentRow['count_questions'],
$actions,
@ -9853,7 +9853,7 @@ class Exercise
];
if ($isDrhOfCourse) {
$currentRow[] = '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['id'].'">'.
$currentRow[] = '<a href="exercise_report.php?'.api_get_cidreq().'&exerciseId='.$row['iid'].'">'.
Display::return_icon('test_results.png', get_lang('Results'), '', ICON_SIZE_SMALL).'</a>';
}
@ -9861,7 +9861,7 @@ class Exercise
$currentRow['id'] = $exercise->id;
$currentRow['url'] = $webPath.'exercise/overview.php?'
.api_get_cidreq_params($courseInfo['code'], $sessionId).'&'
."$mylpid$mylpitemid&exerciseId={$row['id']}";
."$mylpid$mylpitemid&exerciseId={$row['iid']}";
$currentRow['name'] = $currentRow[0];
}
}

@ -113,10 +113,10 @@ if ($is_allowedToEdit) {
$quantity_results_deleted = 0;
foreach ($exerciseList as $exeItem) {
// delete result for test, if not in a gradebook
$exercise_action_locked = api_resource_is_locked_by_gradebook($exeItem['id'], LINK_EXERCISE);
$exercise_action_locked = api_resource_is_locked_by_gradebook($exeItem['iid'], LINK_EXERCISE);
if ($exercise_action_locked == false) {
$objExerciseTmp = new Exercise();
if ($objExerciseTmp->read($exeItem['id'])) {
if ($objExerciseTmp->read($exeItem['iid'])) {
$quantity_results_deleted += $objExerciseTmp->cleanResults(true);
}
}

@ -92,7 +92,7 @@ class ExerciseResult
te.status as exstatus
FROM $TBL_EXERCISES AS ce
INNER JOIN $TBL_TRACK_EXERCISES AS te
ON (te.exe_exo_id = ce.id)
ON (te.exe_exo_id = ce.iid)
INNER JOIN $TBL_USER AS user
ON (user.user_id = exe_user_id)
LEFT JOIN $TBL_TABLE_LP_MAIN AS tlm
@ -129,7 +129,7 @@ class ExerciseResult
te.status as exstatus
FROM $TBL_EXERCISES AS ce
INNER JOIN $TBL_TRACK_EXERCISES AS te
ON (te.exe_exo_id = ce.id)
ON (te.exe_exo_id = ce.iid)
INNER JOIN $TBL_USER AS user
ON (user.user_id = exe_user_id)
LEFT JOIN $TBL_TABLE_LP_MAIN AS tlm

@ -32,7 +32,7 @@ if (empty($track_exercise_info)) {
api_not_allowed($printHeaders);
}
$exercise_id = $track_exercise_info['id'];
$exercise_id = $track_exercise_info['iid'];
$student_id = $track_exercise_info['exe_user_id'];
$learnpath_id = $track_exercise_info['orig_lp_id'];
$learnpath_item_id = $track_exercise_info['orig_lp_item_id'];

@ -32,7 +32,7 @@ switch ($action) {
);
if (!empty($results)) {
foreach ($results as $exercise) {
$data[] = ['id' => $exercise['id'], 'text' => html_entity_decode($exercise['title'])];
$data[] = ['id' => $exercise['iid'], 'text' => html_entity_decode($exercise['title'])];
}
}

@ -187,7 +187,7 @@ abstract class Question
$sql = "SELECT DISTINCT q.exercice_id
FROM $TBL_EXERCISE_QUESTION q
INNER JOIN $tblQuiz e
ON e.c_id = q.c_id AND e.id = q.exercice_id
ON e.c_id = q.c_id AND e.iid = q.exercice_id
WHERE
q.c_id = $course_id AND
q.question_id = $id AND

@ -47,14 +47,14 @@ $session_id = api_get_session_id();
$tbl_exercises = Database::get_course_table(TABLE_QUIZ_TEST);
$course_id = api_get_course_int_id();
$sql = "SELECT id,title,type,description, results_disabled
$sql = "SELECT iid,title,type,description, results_disabled
FROM $tbl_exercises
WHERE c_id = $course_id AND active<>'-1' AND session_id=".$session_id."
ORDER BY title ASC";
$result = Database::query($sql);
$exercises['-'] = '-'.get_lang('SelectExercise').'-';
while ($row = Database :: fetch_array($result)) {
$exercises[$row['id']] = cut($row['title'], EXERCISE_MAX_NAME_SIZE);
$exercises[$row['iid']] = cut($row['title'], EXERCISE_MAX_NAME_SIZE);
}
$form->addElement('select', 'exercise', get_lang('Exercise'), $exercises);
@ -83,7 +83,7 @@ if ($form->validate()) {
// check feedback_type from current exercise for type of question delineation
$exercise_id = intval($values['exercise']);
$sql = "SELECT feedback_type FROM $tbl_exercises WHERE c_id = $course_id AND id = '$exercise_id'";
$sql = "SELECT feedback_type FROM $tbl_exercises WHERE iid = '$exercise_id'";
$rs_feedback_type = Database::query($sql);
$row_feedback_type = Database::fetch_row($rs_feedback_type);
$feedback_type = $row_feedback_type[0];

@ -399,16 +399,16 @@ $my_exercise_list['-1'] = get_lang('OrphanQuestions');
$titleSavedAsHtml = api_get_configuration_value('save_titles_as_html');
if (is_array($exercise_list)) {
foreach ($exercise_list as $row) {
$my_exercise_list[$row['id']] = '';
if ($row['id'] == $fromExercise && $selected_course == api_get_course_int_id()) {
$my_exercise_list[$row['id']] = ">&nbsp;&nbsp;&nbsp;&nbsp;";
$my_exercise_list[$row['iid']] = '';
if ($row['iid'] == $fromExercise && $selected_course == api_get_course_int_id()) {
$my_exercise_list[$row['iid']] = ">&nbsp;&nbsp;&nbsp;&nbsp;";
}
$exerciseTitle = $row['title'];
if ($titleSavedAsHtml) {
$exerciseTitle = strip_tags(api_html_entity_decode(trim($exerciseTitle)));
}
$my_exercise_list[$row['id']] .= $exerciseTitle;
$my_exercise_list[$row['iid']] .= $exerciseTitle;
}
}
@ -725,7 +725,7 @@ function getQuestions(
INNER JOIN $TBL_EXERCISE_QUESTION r
ON (qu.c_id = r.c_id AND qu.id = r.question_id)
INNER JOIN $TBL_EXERCISES ex
ON (ex.id = r.exercice_id AND ex.c_id = r.c_id)
ON (ex.iid = r.exercice_id AND ex.c_id = r.c_id)
$from
{$efConditions['from']}
WHERE
@ -815,7 +815,7 @@ function getQuestions(
INNER JOIN $TBL_EXERCISE_QUESTION as qt
ON (qu.id = qt.question_id AND qu.c_id = qt.c_id)
INNER JOIN $TBL_EXERCISES as q
ON (q.c_id = qu.c_id AND q.id = qt.exercice_id)
ON (q.c_id = qu.c_id AND q.iid = qt.exercice_id)
{$efConditions['from']}
$from
WHERE

@ -1117,7 +1117,7 @@ if (!empty($studentId)) {
'quiz.session_id'
);
$sql = "SELECT quiz.title, id FROM $t_quiz AS quiz
$sql = "SELECT quiz.title, iid FROM $t_quiz AS quiz
WHERE
quiz.c_id = ".$courseInfo['real_id']." AND
active IN (0, 1)
@ -1128,7 +1128,7 @@ if (!empty($studentId)) {
$i = 0;
if (Database:: num_rows($result_exercices) > 0) {
while ($exercices = Database:: fetch_array($result_exercices)) {
$exercise_id = intval($exercices['id']);
$exercise_id = intval($exercices['iid']);
$count_attempts = Tracking::count_student_exercise_attempts(
$studentId,
$courseInfo['real_id'],
@ -2231,7 +2231,7 @@ if (empty($_GET['details'])) {
];
$t_quiz = Database:: get_course_table(TABLE_QUIZ_TEST);
$sql = "SELECT quiz.title, id FROM ".$t_quiz." AS quiz
$sql = "SELECT quiz.title, iid FROM ".$t_quiz." AS quiz
WHERE
quiz.c_id = $c_id AND
(quiz.session_id = $session_id OR quiz.session_id = 0) AND
@ -2241,7 +2241,7 @@ if (empty($_GET['details'])) {
$i = 0;
if (Database:: num_rows($result_exercices) > 0) {
while ($exercices = Database:: fetch_array($result_exercices)) {
$exercise_id = intval($exercices['id']);
$exercise_id = intval($exercices['iid']);
$count_attempts = Tracking::count_student_exercise_attempts(
$studentId,
$course_code,

@ -44,7 +44,7 @@ $tbl_attendance = Database::get_course_table(TABLE_ATTENDANCE);
$table_evaluated[LINK_EXERCISE] = [
TABLE_QUIZ_TEST,
'title',
'id',
'iid',
get_lang('Exercise'),
];
$table_evaluated[LINK_DROPBOX] = [

@ -69,7 +69,7 @@ class ExerciseLink extends AbstractLink
$sqlLp = "SELECT e.iid, e.title, lp.name lp_name
FROM $exerciseTable e
INNER JOIN $lpItemTable i
ON (e.c_id = i.c_id AND e.id = i.path)
ON (e.c_id = i.c_id AND e.iid = i.path)
INNER JOIN $lpTable lp
ON (lp.c_id = e.c_id AND lp.id = i.lp_id)
WHERE
@ -640,7 +640,6 @@ class ExerciseLink extends AbstractLink
// Try with iid
$sql = 'SELECT * FROM '.$table.'
WHERE
c_id = '.$this->course_id.' AND
iid = '.$exerciseId;
$result = Database::query($sql);
$rows = Database::num_rows($result);
@ -651,8 +650,7 @@ class ExerciseLink extends AbstractLink
// Try wit id
$sql = 'SELECT * FROM '.$table.'
WHERE
c_id = '.$this->course_id.' AND
id = '.$exerciseId;
iid = '.$exerciseId;
$result = Database::query($sql);
$this->exercise_data = Database::fetch_array($result);
}

@ -323,7 +323,7 @@ switch ($action) {
);
foreach ($exercises as $exercise) {
$data[] = ['id' => $exercise['id'], 'text' => html_entity_decode($exercise['title'])];
$data[] = ['id' => $exercise['iid'], 'text' => html_entity_decode($exercise['title'])];
}
if (!empty($data)) {
$data[] = ['id' => 'T', 'text' => 'TODOS'];

@ -34,7 +34,7 @@ switch ($action) {
if (!empty($results)) {
foreach ($results as $exercise) {
$data[] = ['id' => $exercise['id'], 'text' => html_entity_decode($exercise['title'])];
$data[] = ['id' => $exercise['iid'], 'text' => html_entity_decode($exercise['title'])];
}
}

@ -2492,7 +2492,7 @@ switch ($action) {
$quizIds = [];
if (!empty($exercises)) {
foreach ($exercises as $exercise) {
$quizIds[] = $exercise['id'];
$quizIds[] = $exercise['iid'];
}
}

@ -1761,7 +1761,7 @@ HOTSPOT;
$sql = " SELECT q.*, tee.*
FROM $quizTable as q
INNER JOIN $trackExerciseTable as tee
ON q.id = tee.exe_exo_id
ON q.iid = tee.exe_exo_id
INNER JOIN $courseTable c
ON c.id = tee.c_id
WHERE tee.exe_id = $exeId
@ -1799,7 +1799,7 @@ HOTSPOT;
$exercise_id = (int) $exercise_id;
$table = Database::get_course_table(TABLE_QUIZ_TEST);
$sql = "SELECT expired_time FROM $table
WHERE c_id = $course_id AND id = $exercise_id";
WHERE iid = $exercise_id";
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
if (!empty($row['expired_time'])) {
@ -2372,7 +2372,7 @@ HOTSPOT;
$sql = " $sql_select
FROM $TBL_EXERCICES AS ce
INNER JOIN $sql_inner_join_tbl_track_exercices AS te
ON (te.exe_exo_id = ce.id)
ON (te.exe_exo_id = ce.iid)
INNER JOIN $sql_inner_join_tbl_user AS user
ON (user.user_id = exe_user_id)
WHERE

@ -388,8 +388,7 @@ class Tracking
$sql = "SELECT results_disabled
FROM $TBL_QUIZ
WHERE
c_id = $course_id AND
id ='".$my_path."'";
iid ='".$my_path."'";
$res_result_disabled = Database::query($sql);
$row_result_disabled = Database::fetch_row($res_result_disabled);
@ -694,7 +693,7 @@ class Tracking
$my_path = Database::escape_string($my_path);
$sql = "SELECT results_disabled
FROM $TBL_QUIZ
WHERE c_id = $course_id AND id = '$my_path' ";
WHERE iid = '$my_path' ";
$res_result_disabled = Database::query($sql);
$row_result_disabled = Database::fetch_row($res_result_disabled);
@ -818,7 +817,7 @@ class Tracking
question_id, marks, ponderation
FROM $tbl_stats_attempts as at
INNER JOIN $tbl_quiz_questions as q
ON (q.id = at.question_id AND q.c_id = $course_id)
ON q.iid = at.question_id
WHERE exe_id ='$id_last_attempt'
) as t";
@ -2305,7 +2304,7 @@ class Tracking
$select_lp_id = ', orig_lp_id as lp_id ';
}
$sql = "SELECT count(id)
$sql = "SELECT count(iid)
FROM $tbl_course_quiz
WHERE c_id = {$course_info['real_id']} $condition_active $condition_quiz ";
$count_quiz = 0;
@ -2324,14 +2323,14 @@ class Tracking
}
if (empty($exercise_id)) {
$sql = "SELECT id FROM $tbl_course_quiz
$sql = "SELECT iid FROM $tbl_course_quiz
WHERE c_id = {$course_info['real_id']} $condition_active $condition_quiz";
$result = Database::query($sql);
$exercise_list = [];
$exercise_id = null;
if (!empty($result) && Database::num_rows($result)) {
while ($row = Database::fetch_array($result)) {
$exercise_list[] = $row['id'];
$exercise_list[] = $row['iid'];
}
}
if (!empty($exercise_list)) {
@ -2531,7 +2530,7 @@ class Tracking
$result = 0;
if (!empty($exercise_list)) {
foreach ($exercise_list as $exercise_data) {
$exercise_id = $exercise_data['id'];
$exercise_id = $exercise_data['iid'];
$best_attempt = Event::get_best_attempt_exercise_results_per_user(
$user_id,
$exercise_id,
@ -3006,10 +3005,10 @@ class Tracking
ponderation
FROM $tbl_stats_attempts AS at
INNER JOIN $tbl_quiz_questions AS q
ON (q.id = at.question_id AND q.c_id = q.c_id)
ON q.iid = at.question_id
WHERE
exe_id ='$id_last_attempt' AND
q.c_id = $course_id
at.c_id = $course_id
)
AS t";
@ -4921,7 +4920,7 @@ class Tracking
if (!empty($exerciseList)) {
foreach ($exerciseList as $exerciseData) {
$results = Event::get_best_exercise_results_by_user(
$exerciseData['id'],
$exerciseData['iid'],
$courseInfo['real_id'],
0,
$user_id
@ -5030,13 +5029,13 @@ class Tracking
foreach ($exercise_list as $exercise_data) {
$exercise_obj = new Exercise($course_data['real_id']);
$exercise_obj->read($exercise_data['id']);
$exercise_obj->read($exercise_data['iid']);
// Exercise is not necessary to be visible to show results check the result_disable configuration instead
//$visible_return = $exercise_obj->is_visible();
if ($exercise_data['results_disabled'] == 0 || $exercise_data['results_disabled'] == 2) {
$best_average = (int)
ExerciseLib::get_best_average_score_by_exercise(
$exercise_data['id'],
$exercise_data['iid'],
$course_data['real_id'],
$my_session_id,
$user_count
@ -5048,7 +5047,7 @@ class Tracking
$user_result_data = ExerciseLib::get_best_attempt_by_user(
api_get_user_id(),
$exercise_data['id'],
$exercise_data['iid'],
$course_data['real_id'],
$my_session_id
);
@ -5154,7 +5153,7 @@ class Tracking
foreach ($exercises as $exercise_item) {
$attempts = Event::count_exercise_attempts_by_user(
api_get_user_id(),
$exercise_item['id'],
$exercise_item['iid'],
$courseInfo['real_id'],
$my_session_id
);
@ -5267,7 +5266,7 @@ class Tracking
foreach ($exercises as $exercise_item) {
$attempts = Event::count_exercise_attempts_by_user(
api_get_user_id(),
$exercise_item['id'],
$exercise_item['iid'],
$courseId,
$session_id_from_get
);
@ -6084,16 +6083,16 @@ class Tracking
ta.answer as answer_id,
ta.tms as time,
te.exe_exo_id as quiz_id,
CONCAT ('c', q.c_id, '_e', q.id) as exercise_id,
CONCAT ('c', q.c_id, '_e', q.iid) as exercise_id,
q.title as quiz_title,
qq.description as description
FROM $ttrack_exercises te
INNER JOIN $ttrack_attempt ta
ON ta.exe_id = te.exe_id
INNER JOIN $tquiz q
ON q.id = te.exe_exo_id
ON q.iid = te.exe_exo_id
INNER JOIN $tquiz_rel_question rq
ON rq.exercice_id = q.id AND rq.c_id = q.c_id
ON rq.exercice_id = q.iid AND rq.c_id = q.c_id
INNER JOIN $tquiz_question qq
ON
qq.id = rq.question_id AND
@ -6122,12 +6121,11 @@ class Tracking
}
}
// Now fill questions data. Query all questions and answers for this test to avoid
$sqlQuestions = "SELECT tq.c_id, tq.id as question_id, tq.question, tqa.id_auto,
$sqlQuestions = "SELECT tq.c_id, tq.iid as question_id, tq.question, tqa.id_auto,
tqa.answer, tqa.correct, tq.position, tqa.id_auto as answer_id
FROM $tquiz_question tq, $tquiz_answer tqa
WHERE
tqa.question_id = tq.id AND
tqa.c_id = tq.c_id AND
tqa.question_id = tq.iid AND
tq.c_id = $courseIdx AND
tq.id IN (".implode(',', $questionIds).")";
@ -7352,20 +7350,20 @@ class Tracking
foreach ($exerciseList as $exercices) {
$objExercise = new Exercise($courseInfo['real_id']);
$objExercise->read($exercices['id']);
$objExercise->read($exercices['iid']);
$visibleReturn = $objExercise->is_visible();
// Getting count of attempts by user
$attempts = Event::count_exercise_attempts_by_user(
api_get_user_id(),
$exercices['id'],
$exercices['iid'],
$courseInfo['real_id'],
$sessionId
);
$url = $webCodePath.'exercise/overview.php?'
.http_build_query(
['cidReq' => $courseInfo['code'], 'id_session' => $sessionId, 'exerciseId' => $exercices['id']]
['cidReq' => $courseInfo['code'], 'id_session' => $sessionId, 'exerciseId' => $exercices['iid']]
);
if ($visibleReturn['value'] == true) {
@ -7398,19 +7396,19 @@ class Tracking
//For graphics
$bestExerciseAttempts = Event::get_best_exercise_results_by_user(
$exercices['id'],
$exercices['iid'],
$courseInfo['real_id'],
$sessionId
);
$toGraphExerciseResult[$exercices['id']] = [
$toGraphExerciseResult[$exercices['iid']] = [
'title' => $exercices['title'],
'data' => $bestExerciseAttempts,
];
// Getting best results
$bestScoreData = ExerciseLib::get_best_attempt_in_course(
$exercices['id'],
$exercices['iid'],
$courseInfo['real_id'],
$sessionId
);
@ -7424,7 +7422,7 @@ class Tracking
$exerciseAttempt = ExerciseLib::get_best_attempt_by_user(
api_get_user_id(),
$exercices['id'],
$exercices['iid'],
$courseInfo['real_id'],
$sessionId
);
@ -7460,18 +7458,18 @@ class Tracking
$quizData[4] = ExerciseLib::get_exercise_result_ranking(
$myScore,
$exeId,
$exercices['id'],
$exercices['iid'],
$courseInfo['code'],
$sessionId,
$userList
);
$graph = self::generate_exercise_result_thumbnail_graph($toGraphExerciseResult[$exercices['id']]);
$normalGraph = self::generate_exercise_result_graph($toGraphExerciseResult[$exercices['id']]);
$graph = self::generate_exercise_result_thumbnail_graph($toGraphExerciseResult[$exercices['iid']]);
$normalGraph = self::generate_exercise_result_graph($toGraphExerciseResult[$exercices['iid']]);
$quizData[6] = Display::url(
Display::img($graph, '', [], false),
$normalGraph,
['id' => $exercices['id'], 'class' => 'expand-image']
['id' => $exercices['iid'], 'class' => 'expand-image']
);
}
@ -8018,7 +8016,7 @@ class TrackingCourseLog
case 'quiz':
$table_name = TABLE_QUIZ_TEST;
$link_tool = 'exercise/exercise.php';
$id_tool = 'id';
$id_tool = 'iid';
break;
case 'glossary':
$table_name = TABLE_GLOSSARY;

@ -7688,7 +7688,7 @@ class learnpath
} elseif (is_numeric($extra_info)) {
$sql = "SELECT title, description
FROM $tbl_quiz
WHERE c_id = $course_id AND iid = ".$extra_info;
WHERE iid = ".$extra_info;
$result = Database::query($sql);
$row = Database::fetch_array($result);
@ -10623,10 +10623,10 @@ class learnpath
$link = Display::url(
$previewIcon,
$exerciseUrl.'&exerciseId='.$row_quiz['id'],
$exerciseUrl.'&exerciseId='.$row_quiz['iid'],
['target' => '_blank']
);
$return .= '<li class="lp_resource_element" data_id="'.$row_quiz['id'].'" data_type="quiz" title="'.$title.'" >';
$return .= '<li class="lp_resource_element" data_id="'.$row_quiz['iid'].'" data_type="quiz" title="'.$title.'" >';
$return .= Display::url($moveIcon, '#', ['class' => 'moved']);
$return .= $quizIcon;
$sessionStar = api_get_session_image(
@ -10635,7 +10635,7 @@ class learnpath
);
$return .= Display::url(
Security::remove_XSS(cut($title, 80)).$link.$sessionStar,
api_get_self().'?'.api_get_cidreq().'&action=add_item&type='.TOOL_QUIZ.'&file='.$row_quiz['id'].'&lp_id='.$this->lp_id,
api_get_self().'?'.api_get_cidreq().'&action=add_item&type='.TOOL_QUIZ.'&file='.$row_quiz['iid'].'&lp_id='.$this->lp_id,
[
'class' => $visibility == 0 ? 'moved text-muted' : 'moved',
]
@ -13570,7 +13570,7 @@ EOD;
break;
case TOOL_QUIZ:
$TBL_EXERCICES = Database::get_course_table(TABLE_QUIZ_TEST);
$result = Database::query("SELECT * FROM $TBL_EXERCICES WHERE c_id = $course_id AND id = $id");
$result = Database::query("SELECT * FROM $TBL_EXERCICES WHERE iid = $id");
$myrow = Database::fetch_array($result);
$output = $myrow['title'];
break;

@ -28,12 +28,12 @@ $defaults['course_id'] = $courseId;
$htmlHeadXtra[] = api_get_jqgrid_js();
$htmlHeadXtra[] = '<script>
$(function() {
$("#exercise_course_id").on("change", function(e) {
$("#exercise_course_id").on("change", function(e) {
var data = $(this).select2(\'data\');
var option = data[0];
//Then I take the values like if I work with an array
var value = option.id;
var selectedDate = $("#start_date").datepicker({ dateFormat: \'dd,MM,yyyy\' }).val();
var value = option.id;
var selectedDate = $("#start_date").datepicker({ dateFormat: \'dd,MM,yyyy\' }).val();
window.location.replace("'.$currentUrl.'?start_date="+selectedDate+"&course_id="+value);
});
});
@ -70,7 +70,7 @@ if (empty($courseId)) {
if (!empty($exerciseList)) {
$options = [];
foreach ($exerciseList as $exercise) {
$options[$exercise['id']] = $exercise['title'];
$options[$exercise['iid']] = $exercise['title'];
}
$form->addSelect('exercise_id', get_lang('Exercises'), $options);
} else {
@ -253,9 +253,9 @@ if ($form->validate() && !empty($courseInfo)) {
$.each(postData, function(key, value) {
myUrl += "&"+key+"="+encodeURIComponent(value);
});
$("#excel_export").attr("href", myUrl);
jQuery("#'.$tableId.'").jqGrid(
"navGrid",
"#'.$tableId.'_pager",
@ -263,8 +263,8 @@ if ($form->validate() && !empty($courseInfo)) {
view:false, edit:false, add:false, del:false, search:false, excel:true
}
);
jQuery("#'.$tableId.'").jqGrid("navButtonAdd","#'.$tableId.'_pager",{
jQuery("#'.$tableId.'").jqGrid("navButtonAdd","#'.$tableId.'_pager",{
caption: "",
title:"'.get_lang('ExportExcel').'",
onClickButton : function() {

@ -1749,7 +1749,7 @@ if (empty($details)) {
'quiz.session_id'
);
$sql = "SELECT quiz.title, id
$sql = "SELECT quiz.title, iid
FROM $t_quiz AS quiz
WHERE
quiz.c_id = ".$courseInfo['real_id']." AND
@ -1760,7 +1760,7 @@ if (empty($details)) {
$i = 0;
if (Database::num_rows($result_exercices) > 0) {
while ($exercices = Database::fetch_array($result_exercices)) {
$exercise_id = (int) $exercices['id'];
$exercise_id = (int) $exercices['iid'];
$count_attempts = Tracking::count_student_exercise_attempts(
$student_id,
$courseInfo['real_id'],

@ -71,7 +71,7 @@ foreach ($courseList as $course) {
if (!empty($exerciseList)) {
// Exercises
foreach ($exerciseList as $exerciseInfo) {
$exerciseId = $exerciseInfo['id'];
$exerciseId = $exerciseInfo['iid'];
$visibility = api_get_item_visibility(
$course,
TOOL_QUIZ,
@ -264,7 +264,7 @@ if (!empty($courseList)) {
$start_date = $exerciseInfo['start_time'];
}
$exerciseId = $exerciseInfo['id'];
$exerciseId = $exerciseInfo['iid'];
$best_score_data = ExerciseLib::get_best_attempt_in_course(
$exerciseId,

@ -862,7 +862,7 @@ if (!empty($groupList)) {
foreach ($exerciseList as $exerciseData) {
foreach ($usersInGroup as $userId) {
$results = Event::get_best_exercise_results_by_user(
$exerciseData['id'],
$exerciseData['iid'],
$courseInfo['real_id'],
0,
$userId
@ -958,7 +958,7 @@ if (!empty($groupList)) {
foreach ($exerciseList as $exerciseData) {
foreach ($studentIdList as $userId) {
$results = Event::get_best_exercise_results_by_user(
$exerciseData['id'],
$exerciseData['iid'],
$courseInfo['real_id'],
$sessionId,
$userId

@ -181,7 +181,7 @@ if ($exerciseReporting) {
);
echo '<table class="table table-hover table-striped data_table">';
$course_id = api_get_course_int_id();
$sql = "SELECT id, title FROM $TABLEQUIZ
$sql = "SELECT iid, title FROM $TABLEQUIZ
WHERE c_id = $course_id AND active <> -1 AND session_id = $session_id";
$rs = Database::query($sql);
@ -201,7 +201,7 @@ if ($exerciseReporting) {
$avg_student_score = Tracking::get_avg_student_exercise_score(
$student_id,
$course_code,
$quiz['id'],
$quiz['iid'],
$session_id
);
$quiz_avg_score += $avg_student_score;
@ -209,7 +209,7 @@ if ($exerciseReporting) {
}
$studentCount = ($studentCount == 0 || is_null($studentCount) || $studentCount == '') ? 1 : $studentCount;
$quiz_avg_score = round(($quiz_avg_score / $studentCount), 2).'%';
$url = api_get_path(WEB_CODE_PATH).'exercise/overview.php?exerciseId='.$quiz['id'].$course_path_params;
$url = api_get_path(WEB_CODE_PATH).'exercise/overview.php?exerciseId='.$quiz['iid'].$course_path_params;
echo '<tr><td>';
echo Display::url(

@ -61,7 +61,7 @@ if ($global) {
// Get exam lists
$courseId = api_get_course_int_id();
$sql = "SELECT quiz.title, id FROM $quizTable AS quiz
$sql = "SELECT quiz.title, iid FROM $quizTable AS quiz
WHERE
c_id = $courseId AND
active = 1
@ -72,7 +72,7 @@ if ($global) {
if (Database::num_rows($result) > 0) {
$exerciseList = [get_lang('All')];
while ($row = Database::fetch_array($result)) {
$exerciseList[$row['id']] = $row['title'];
$exerciseList[$row['iid']] = $row['title'];
}
$form->addElement('select', 'exercise_id', get_lang('Exercise'), $exerciseList);
}
@ -178,14 +178,14 @@ if (!empty($courseList) && is_array($courseList)) {
$courseId = $courseInfo['real_id'];
if ($global) {
$sql = "SELECT count(id) as count
$sql = "SELECT count(iid) as count
FROM $quizTable AS quiz
WHERE c_id = $courseId AND active = 1 AND (session_id = 0 OR session_id IS NULL)";
$result = Database::query($sql);
$countExercises = Database::store_result($result);
$exerciseCount = $countExercises[0]['count'];
$sql = "SELECT count(id) as count
$sql = "SELECT count(iid) as count
FROM $quizTable AS quiz
WHERE c_id = $courseId AND active = 1 AND session_id <> 0";
$result = Database::query($sql);
@ -212,14 +212,14 @@ if (!empty($courseList) && is_array($courseList)) {
if (1 == Database::result($result, 0, 'visibility')) {
// Getting the exam list.
if ($global) {
$sql = "SELECT quiz.title, id, session_id
$sql = "SELECT quiz.title, iid, session_id
FROM $quizTable AS quiz
WHERE c_id = $courseId AND active = 1
ORDER BY session_id, quiz.title ASC";
} else {
//$sessionCondition = api_get_session_condition($sessionId, true, false);
if (!empty($exerciseId)) {
$sql = "SELECT quiz.title, id, session_id
$sql = "SELECT quiz.title, iid, session_id
FROM $quizTable AS quiz
WHERE
c_id = $courseId AND
@ -229,7 +229,7 @@ if (!empty($courseList) && is_array($courseList)) {
ORDER BY session_id, quiz.title ASC";
} else {
$sql = "SELECT quiz.title, id, session_id
$sql = "SELECT quiz.title, iid, session_id
FROM $quizTable AS quiz
WHERE
c_id = $courseId AND
@ -482,8 +482,8 @@ function export_complete_report_xls($filename, $array)
*/
function processStudentList($filter_score, $global, $exercise, $courseInfo, $sessionId, $newSessionList)
{
if ((isset($exercise['id']) && empty($exercise['id'])) ||
!isset($exercise['id'])
if ((isset($exercise['iid']) && empty($exercise['iid'])) ||
!isset($exercise['iid'])
) {
return [
'html' => '',
@ -554,7 +554,7 @@ function processStudentList($filter_score, $global, $exercise, $courseInfo, $ses
FROM $exerciseStatsTable AS ex
WHERE
ex.c_id = $courseId AND
ex.exe_exo_id = ".$exercise['id']." AND
ex.exe_exo_id = ".$exercise['iid']." AND
exe_user_id= $studentId AND
session_id = $sessionId
";
@ -566,7 +566,7 @@ function processStudentList($filter_score, $global, $exercise, $courseInfo, $ses
WHERE
exe_user_id = $studentId AND
c_id = $courseId AND
exe_exo_id = ".$exercise['id']." AND
exe_exo_id = ".$exercise['iid']." AND
session_id = $sessionId
ORDER BY exe_result DESC
LIMIT 1";

@ -58,13 +58,13 @@ if ($global) {
//Get exam lists
$course_id = api_get_course_int_id();
$t_quiz = Database::get_course_table(TABLE_QUIZ_TEST);
$sqlExercices = "SELECT quiz.title,id FROM ".$t_quiz." AS quiz
$sqlExercices = "SELECT quiz.title,iid FROM ".$t_quiz." AS quiz
WHERE c_id = $course_id AND active='1'
ORDER BY quiz.title ASC";
$resultExercices = Database::query($sqlExercices);
$exercise_list[0] = get_lang('All');
while ($a_exercices = Database::fetch_array($resultExercices)) {
$exercise_list[$a_exercices['id']] = $a_exercices['title'];
$exercise_list[$a_exercices['iid']] = $a_exercices['title'];
}
$form->addElement('select', 'exercise_id', get_lang('Exercise'), $exercise_list);
}

@ -51,11 +51,11 @@ function showExerciseCourse($courseId, $sessionId = 0)
$courseId = (int) $courseId;
$sessionId = (int) $sessionId;
$conditionSession = api_get_session_condition($sessionId, true, true, 'a.session_id');
$sql = "SELECT a.*
FROM $tableQuiz a
LEFT JOIN $tableLpItem b ON a.iid = b.path AND a.c_id = b.c_id
$sql = "SELECT a.*
FROM $tableQuiz a
LEFT JOIN $tableLpItem b ON a.iid = b.path AND a.c_id = b.c_id
WHERE a.c_id = $courseId
AND (a.active = 1 OR (item_type = 'quiz' AND b.c_id = $courseId))
AND (a.active = 1 OR (item_type = 'quiz' AND b.c_id = $courseId))
$conditionSession
ORDER BY a.title ASC;";
$res = Database::query($sql);
@ -79,7 +79,7 @@ function getInfoQuiz($courseId, $id)
$courseId = (int) $courseId;
$id = (int) $id;
$tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
$sql = "SELECT * FROM $tableQuiz WHERE c_id = $courseId AND iid = $id";
$sql = "SELECT * FROM $tableQuiz WHERE iid = $id";
$res = Database::query($sql);
$row = Database::fetch_assoc($res);
@ -104,13 +104,13 @@ function getQuestionsFromCourse($courseId, $quizId, $sessionId = 0)
$tableQuiz = Database::get_course_table(TABLE_QUIZ_TEST);
$conditionSession = api_get_session_condition($sessionId, true, true, 'q.session_id');
$sql = "SELECT a.question_id AS question_id
FROM $tableQuizQuestion a
INNER JOIN $tableQuestion b ON a.question_id = b.iid
INNER JOIN $tableQuiz q ON q.iid = a.exercice_id
WHERE a.c_id = $courseId AND b.c_id = a.c_id AND a.exercice_id = $quizId
AND (b.type IN (1, 2, 9, 10, 11, 12, 14))
$conditionSession
$sql = "SELECT a.question_id AS question_id
FROM $tableQuizQuestion a
INNER JOIN $tableQuestion b ON a.question_id = b.iid
INNER JOIN $tableQuiz q ON q.iid = a.exercice_id
WHERE a.c_id = $courseId AND b.c_id = a.c_id AND a.exercice_id = $quizId
AND (b.type IN (1, 2, 9, 10, 11, 12, 14))
$conditionSession
ORDER BY question_order ASC;";
$res = Database::query($sql);
$aux = [];
@ -133,8 +133,8 @@ function getInfoQuestion($courseId, $id)
$courseId = (int) $courseId;
$id = (int) $id;
$tableQuestion = Database::get_course_table(TABLE_QUIZ_QUESTION);
$sql = "SELECT * FROM $tableQuestion
WHERE c_id = $courseId
$sql = "SELECT * FROM $tableQuestion
WHERE c_id = $courseId
AND iid = $id
AND (type IN (1, 2, 9, 10, 11, 12, 14))";
$res = Database::query($sql);

@ -798,7 +798,7 @@ class CourseBuilder
$quiz = new Quiz($obj);
$sql = 'SELECT * FROM '.$table_rel.'
WHERE c_id = '.$courseId.' AND exercice_id = '.$obj->id;
WHERE c_id = '.$courseId.' AND exercice_id = '.$obj->iid;
$db_result2 = Database::query($sql);
while ($obj2 = Database::fetch_object($db_result2)) {
$quiz->add_question($obj2->question_id, $obj2->question_order);
@ -904,7 +904,7 @@ class CourseBuilder
INNER JOIN $table_rel r
ON (q.c_id = r.c_id AND q.id = r.question_id)
INNER JOIN $table_qui ex
ON (ex.id = r.exercice_id AND ex.c_id = r.c_id)
ON (ex.iid = r.exercice_id AND ex.c_id = r.c_id)
WHERE ex.c_id = $courseId AND ex.active = '-1'
)
UNION
@ -1007,7 +1007,7 @@ class CourseBuilder
LEFT JOIN '.$table_rel.' as quizz_questions
ON questions.id=quizz_questions.question_id
LEFT JOIN '.$table_qui.' as exercises
ON quizz_questions.exercice_id = exercises.id
ON quizz_questions.exercice_id = exercises.iid
WHERE
questions.c_id = quizz_questions.c_id AND
questions.c_id = exercises.c_id AND

@ -324,7 +324,7 @@ class CourseRecycler
f.c_id = $courseId AND
i.c_id = f.c_id AND
i.tool = 'forum' AND
f.iid = i.ref AND
f.iid = i.ref AND
i.visibility = 1";
$sql = "DELETE FROM $forumCategoryTable
WHERE c_id = $courseId AND cat_id NOT IN ($subQuery)";
@ -351,7 +351,7 @@ class CourseRecycler
l.c_id = $courseId AND
i.c_id = l.c_id AND
i.tool = 'link' AND
l.iid = i.ref AND
l.iid = i.ref AND
i.visibility = 1";
$sql = "DELETE FROM $linkCategoryTable
WHERE c_id = $courseId AND id NOT IN ($subQuery)";
@ -428,7 +428,7 @@ class CourseRecycler
// Deletion of the tests first. Questions in these tests are
// not deleted and become orphan at this point
$sql = "DELETE FROM ".$table_qui."
WHERE c_id = ".$this->course_id." AND id IN(".$ids.")";
WHERE iid IN(".$ids.")";
Database::query($sql);
$sql = "DELETE FROM ".$table_rel."
WHERE c_id = ".$this->course_id." AND exercice_id IN(".$ids.")";
@ -443,9 +443,9 @@ class CourseRecycler
SELECT q.id, ex.c_id FROM $table_qui_que q
INNER JOIN $table_rel r
ON (q.c_id = r.c_id AND q.id = r.question_id)
INNER JOIN $table_qui ex
ON (ex.id = r.exercice_id AND ex.c_id = r.c_id)
ON (ex.iid = r.exercice_id AND ex.c_id = r.c_id)
WHERE ex.c_id = ".$this->course_id." AND (ex.active = '-1' OR ex.id = '-1')
)
UNION

@ -33,7 +33,7 @@ class Quiz extends Resource
{
$this->obj = $obj;
$this->obj->quiz_type = $this->obj->type;
parent::__construct($obj->id, RESOURCE_QUIZ);
parent::__construct($obj->iid, RESOURCE_QUIZ);
}
/**

@ -26,7 +26,7 @@ while ($row = Database::fetch_array($result, 'ASSOC')) {
foreach ($exerciseList as $exerciseItem) {
$exercise = new Exercise($courseId);
$exercise->read($exerciseItem['id']);
$exercise->read($exerciseItem['iid']);
echo ' iid:'.$exercise->iId.' id:'.$exercise->id.'- '.$exercise->title.PHP_EOL;
$questionList = $exercise->getQuestionList();

Loading…
Cancel
Save