mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
MDL-10899 - There is some data associated with some questons that needs to be udpated when moving questions between categories. This commit deals with subquestions, and lays the foundation for fixing the other problem - datasets - which is files as bug 14767.
This commit is contained in:
parent
08121fadcb
commit
7fb1b88dc7
@ -32,6 +32,7 @@ $string['editingquestion'] = 'Editing a question';
|
||||
$string['erroraccessingcontext'] = 'Cannot access context';
|
||||
$string['errorfilecannotbecopied'] = 'Error cannot copy file $a.';
|
||||
$string['errorfilecannotbemoved'] = 'Error cannot move file $a.';
|
||||
$string['errormovingquestions'] = 'Error while moving questions with ids $a.';
|
||||
$string['errorfileschanged'] = 'Error files linked to from questions have changed since form was displayed.';
|
||||
$string['exportcategory'] = 'Export category';
|
||||
$string['filesareasite']= 'the site files area';
|
||||
|
@ -559,6 +559,30 @@ function question_delete_activity($cm, $feedback=true) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function should be considered private to the question bank, it is called from
|
||||
* question/editlib.php question/contextmoveq.php and a few similar places to to the work of
|
||||
* acutally moving questions and associated data. However, callers of this function also have to
|
||||
* do other work, which is why you should not call this method directly from outside the questionbank.
|
||||
*
|
||||
* @param string $questionids a comma-separated list of question ids.
|
||||
* @param integer $newcategory the id of the category to move to.
|
||||
*/
|
||||
function question_move_questions_to_category($questionids, $newcategory) {
|
||||
$result = true;
|
||||
|
||||
// Move the questions themselves.
|
||||
$result = $result && set_field_select('question', 'category', $newcategory, "id IN ($questionids)");
|
||||
|
||||
// Move any subquestions belonging to them.
|
||||
$result = $result && set_field_select('question', 'category', $newcategory, "parent IN ($questionids)");
|
||||
|
||||
// TODO Deal with datasets.
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $row tab objects
|
||||
* @param question_edit_contexts $contexts object representing contexts available from this context
|
||||
|
@ -352,8 +352,9 @@ class question_category_object {
|
||||
}
|
||||
|
||||
function move_questions($oldcat, $newcat){
|
||||
if (!set_field('question', 'category', $newcat, 'category', $oldcat)) {
|
||||
print_error("Error while moving questions from category '$oldcat' to '$newcat'", '', $this->pageurl->out());
|
||||
$questionids = get_records_select_menu('question', "category = $oldcat AND parent = 0", '', 'id,1');
|
||||
if (!question_move_questions_to_category(implode(',', array_keys($questionids)), $newcat)) {
|
||||
print_error('errormovingquestions', 'question', $returnurl, $ids);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -159,9 +159,10 @@ if ($contextmoveform->is_cancelled()){
|
||||
|
||||
}
|
||||
}
|
||||
//now move questions
|
||||
if (!execute_sql("UPDATE {$CFG->prefix}question SET category = {$tocat->id} WHERE id IN ({$ids})", false)){
|
||||
print_error("Could not move the questions {$ids} to category ".$tocat->name, '', $returnurl);
|
||||
|
||||
/// Now move questions.
|
||||
if (!question_move_questions_to_category($ids, $tocat->id)) {
|
||||
print_error('errormovingquestions', 'question', $returnurl, $ids);
|
||||
}
|
||||
redirect($returnurl);
|
||||
}
|
||||
|
@ -447,11 +447,8 @@ function question_showbank_actions($pageurl, $cm){
|
||||
}
|
||||
$returnurl = $pageurl->out(false, array('category'=>"$tocategoryid,$contextid"));
|
||||
if (!$checkforfiles){
|
||||
foreach ($questionids as $questionid){
|
||||
//move question
|
||||
if (!set_field('question', 'category', $tocategory->id, 'id', $questionid)) {
|
||||
error('Could not update category field');
|
||||
}
|
||||
if (!question_move_questions_to_category(implode(',', $questionids), $tocategory->id)) {
|
||||
print_error('errormovingquestions', 'question', $returnurl, $questionids);
|
||||
}
|
||||
redirect($returnurl);
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user