Merge branch 'MDL-28618' of git://github.com/timhunt/moodle

This commit is contained in:
Sam Hemelryk
2011-08-08 10:57:11 +08:00
5 changed files with 52 additions and 37 deletions
+6
View File
@@ -2637,6 +2637,12 @@ class restore_create_question_files extends restore_execution_step {
$oldctxid, $this->task->get_userid(), 'question_answer', null, $newctxid, true);
restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'hint',
$oldctxid, $this->task->get_userid(), 'question_hint', null, $newctxid, true);
restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'correctfeedback',
$oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true);
restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'partiallycorrectfeedback',
$oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true);
restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), 'question', 'incorrectfeedback',
$oldctxid, $this->task->get_userid(), 'question_created', $question->itemid, $newctxid, true);
// Add qtype dependent files
$components = backup_qtype_plugin::get_components_and_fileareas($question->qtype);
foreach ($components as $component => $fileareas) {
+3 -6
View File
@@ -206,6 +206,8 @@ class qtype_match extends question_type {
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'qtype_match', 'subquestion', $subquestionid);
}
$this->move_files_in_combined_feedback($questionid, $oldcontextid, $newcontextid);
}
protected function delete_files($questionid, $contextid) {
@@ -220,11 +222,6 @@ class qtype_match extends question_type {
$fs->delete_area_files($contextid, 'qtype_match', 'subquestion', $subquestionid);
}
$fs->delete_area_files($contextid, 'qtype_multichoice',
'correctfeedback', $questionid);
$fs->delete_area_files($contextid, 'qtype_multichoice',
'partiallycorrectfeedback', $questionid);
$fs->delete_area_files($contextid, 'qtype_multichoice',
'incorrectfeedback', $questionid);
$this->delete_files_in_combined_feedback($questionid, $contextid);
}
}
@@ -69,17 +69,4 @@ class backup_qtype_multichoice_plugin extends backup_qtype_plugin {
return $plugin;
}
/**
* Returns one array with filearea => mappingname elements for the qtype
*
* Used by {@link get_components_and_fileareas} to know about all the qtype
* files to be processed both in backup and restore.
*/
public static function get_qtype_fileareas() {
return array(
'correctfeedback' => 'question_created',
'partiallycorrectfeedback' => 'question_created',
'incorrectfeedback' => 'question_created');
}
}
+2 -18
View File
@@ -231,30 +231,14 @@ class qtype_multichoice extends question_type {
}
public function move_files($questionid, $oldcontextid, $newcontextid) {
$fs = get_file_storage();
parent::move_files($questionid, $oldcontextid, $newcontextid);
$this->move_files_in_answers($questionid, $oldcontextid, $newcontextid, true);
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'qtype_multichoice', 'correctfeedback', $questionid);
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'qtype_multichoice', 'partiallycorrectfeedback', $questionid);
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'qtype_multichoice', 'incorrectfeedback', $questionid);
$this->move_files_in_combined_feedback($questionid, $oldcontextid, $newcontextid);
}
protected function delete_files($questionid, $contextid) {
$fs = get_file_storage();
parent::delete_files($questionid, $contextid);
$this->delete_files_in_answers($questionid, $contextid, true);
$fs->delete_area_files($contextid,
'qtype_multichoice', 'correctfeedback', $questionid);
$fs->delete_area_files($contextid,
'qtype_multichoice', 'partiallycorrectfeedback', $questionid);
$fs->delete_area_files($contextid,
'qtype_multichoice', 'incorrectfeedback', $questionid);
$this->delete_files_in_combined_feedback($questionid, $contextid);
}
}
+41
View File
@@ -1107,6 +1107,28 @@ class question_type {
}
}
/**
* Move all the files belonging to this question's answers when the question
* is moved from one context to another.
* @param int $questionid the question being moved.
* @param int $oldcontextid the context it is moving from.
* @param int $newcontextid the context it is moving to.
* @param bool $answerstoo whether there is an 'answer' question area,
* as well as an 'answerfeedback' one. Default false.
*/
protected function move_files_in_combined_feedback($questionid, $oldcontextid,
$newcontextid) {
global $DB;
$fs = get_file_storage();
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'question', 'correctfeedback', $questionid);
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'question', 'partiallycorrectfeedback', $questionid);
$fs->move_area_files_to_new_context($oldcontextid,
$newcontextid, 'question', 'incorrectfeedback', $questionid);
}
/**
* Delete all the files belonging to this question.
* @param int $questionid the question being deleted.
@@ -1139,6 +1161,25 @@ class question_type {
}
}
/**
* Delete all the files belonging to this question's answers.
* @param int $questionid the question being deleted.
* @param int $contextid the context the question is in.
* @param bool $answerstoo whether there is an 'answer' question area,
* as well as an 'answerfeedback' one. Default false.
*/
protected function delete_files_in_combined_feedback($questionid, $contextid) {
global $DB;
$fs = get_file_storage();
$fs->delete_area_files($contextid,
'question', 'correctfeedback', $questionid);
$fs->delete_area_files($contextid,
'question', 'partiallycorrectfeedback', $questionid);
$fs->delete_area_files($contextid,
'question', 'incorrectfeedback', $questionid);
}
public function import_file($context, $component, $filearea, $itemid, $file) {
$fs = get_file_storage();
$record = new stdClass();