Check if question code is unique see BT#15230

pull/2790/head
Julio Montoya 7 years ago
parent c7da6e9832
commit 970529f800
  1. 7
      main/exercise/export/aiken/aiken_import.inc.php
  2. 27
      main/exercise/question.class.php

@ -182,7 +182,7 @@ function aiken_import_exercise($file)
if (!empty($last_exercise_id)) {
// For each question found...
foreach ($exercise_info['question'] as $key => $question_array) {
//2.create question
// 2.create question
$question = new Aiken2Question();
$question->type = $question_array['type'];
$question->setAnswer();
@ -197,7 +197,10 @@ function aiken_import_exercise($file)
$question->save($exercise);
if (isset($question_array['code'])) {
$question->addCode($question_array['code']);
$result = $question->addCode($question_array['code']);
if (empty($result)) {
Display::addFlash(Display::return_message(get_lang('QuestionCodeNotSaved')));
}
}
$last_question_id = $question->selectId();

@ -1761,14 +1761,16 @@ abstract class Question
//Save normal question if NOT media
if ($this->type != MEDIA_QUESTION) {
$this->save($exercise);
if (api_is_platform_admin()) {
$this->addCode($form->getSubmitValue('code'));
}
// modify the exercise
$exercise->addToList($this->id);
$exercise->update_question_positions();
if (api_is_platform_admin()) {
$result = $this->addCode($form->getSubmitValue('code'));
if (empty($result)) {
Display::addFlash(Display::return_message(get_lang('QuestionCodeNotSaved')));
}
}
}
}
@ -2379,11 +2381,18 @@ abstract class Question
if (api_get_configuration_value('allow_question_code') && !empty($this->id)) {
$code = Database::escape_string($code);
$table = Database::get_course_table(TABLE_QUIZ_QUESTION);
$sql = "UPDATE $table SET code = '$code'
WHERE iid = {$this->id} AND c_id = {$this->course['real_id']}";
Database::query($sql);
return true;
$sql = "SELECT * FROM $table WHERE code = '$code' AND iid <> {$this->id} ";
$result = Database::query($sql);
$rows = Database::num_rows($result);
if (empty($rows)) {
$sql = "UPDATE $table SET code = '$code'
WHERE iid = {$this->id} AND c_id = {$this->course['real_id']}";
Database::query($sql);
return true;
}
}
return false;

Loading…
Cancel
Save