From a6486a827f08c8cad437bc508a644c30ffa06e40 Mon Sep 17 00:00:00 2001 From: Rossiani Wijaya Date: Mon, 30 May 2011 11:29:13 +0800 Subject: [PATCH] MDL-27441 mod_feedback: added conversion code to restore 1.9 backup to 2.1 site --- mod/feedback/backup/moodle1/lib.php | 122 ++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 mod/feedback/backup/moodle1/lib.php diff --git a/mod/feedback/backup/moodle1/lib.php b/mod/feedback/backup/moodle1/lib.php new file mode 100644 index 0000000000000..6528e31bbb759 --- /dev/null +++ b/mod/feedback/backup/moodle1/lib.php @@ -0,0 +1,122 @@ +. + +/** + * Provides support for the conversion of moodle1 backup to the moodle2 format + * + * @package mod + * @subpackage feedback + * @copyright 2011 Rossiani Wijaya + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Choice conversion handler + */ +class moodle1_mod_feedback_handler extends moodle1_mod_handler { + + /** + * Declare the paths in moodle.xml we are able to convert + * + * The method returns list of {@link convert_path} instances. + * For each path returned, the corresponding conversion method must be + * defined. + * + * Note that the path /MOODLE_BACKUP/COURSE/MODULES/MOD/FEEDBACK does not + * actually exist in the file. The last element with the module name was + * appended by the moodle1_converter class. + * + * @return array of {@link convert_path} instances + */ + public function get_paths() { + return array( + new convert_path( + 'feedback', '/MOODLE_BACKUP/COURSE/MODULES/MOD/FEEDBACK', + array( + 'renamefields' => array( + 'summary' => 'intro', + 'pageaftersub' => 'page_after_submit', + ), + 'newfields' => array( + 'autonumbering' => 1, + 'site_after_submit' => '', + 'introformat' => 0, + 'page_after_submitformat' => 0, + 'completionsubmit' => 0, + ), + ) + ), + new convert_path( + 'feedback_item', '/MOODLE_BACKUP/COURSE/MODULES/MOD/FEEDBACK/ITEMS/ITEM', + array ( + 'newfields' => array( + 'label' => '', + 'options' => '', + 'dependitem' => 0, + 'dependvalue' => '', + ), + ) + ), + ); + } + + /** + * This is executed every time we have one /MOODLE_BACKUP/COURSE/MODULES/MOD/FEEDBACK + * data available + */ + public function process_feedback($data) { + // get the course module id and context id + $instanceid = $data['id']; + $cminfo = $this->get_cminfo($instanceid); + $moduleid = $cminfo['id']; + $contextid = $this->converter->get_contextid(CONTEXT_MODULE, $moduleid); + + // we now have all information needed to start writing into the file + $this->open_xml_writer("activities/feedback_{$moduleid}/feedback.xml"); + $this->xmlwriter->begin_tag('activity', array('id' => $instanceid, 'moduleid' => $moduleid, + 'modulename' => 'feedback', 'contextid' => $contextid)); + $this->xmlwriter->begin_tag('feedback', array('id' => $instanceid)); + + unset($data['id']); // we already write it as attribute, do not repeat it as child element + + foreach ($data as $field => $value) { + $this->xmlwriter->full_tag($field, $value); + } + + $this->xmlwriter->begin_tag('items'); + } + + /** + * This is executed every time we have one /MOODLE_BACKUP/COURSE/MODULES/MOD/FEEDBACK/ITEMS/ITEM + * data available + */ + public function process_feedback_item($data) { + $this->write_xml('item', $data, array('/item/id')); + } + + /** + * This is executed when we reach the closing tag of our 'feedback' path + */ + public function on_feedback_end() { + $this->xmlwriter->end_tag('items'); + $this->xmlwriter->end_tag('feedback'); + $this->xmlwriter->end_tag('activity'); + $this->close_xml_writer(); + } +} \ No newline at end of file