diff --git a/backup/moodle2/backup_customcert_stepslib.php b/backup/moodle2/backup_customcert_stepslib.php index 5c54561..b9db5f5 100644 --- a/backup/moodle2/backup_customcert_stepslib.php +++ b/backup/moodle2/backup_customcert_stepslib.php @@ -38,7 +38,23 @@ class backup_customcert_activity_structure_step extends backup_activity_structur // The instance. $customcert = new backup_nested_element('customcert', array('id'), array( - 'name', 'intro', 'introformat', 'requiredtime', 'protection', + 'templateid', 'name', 'intro', 'introformat', 'requiredtime', 'protection', + 'timecreated', 'timemodified')); + + // The template. + $template = new backup_nested_element('template', array('id'), array( + 'name', 'contextid', 'timecreated', 'timemodified')); + + // The pages. + $pages = new backup_nested_element('pages'); + $page = new backup_nested_element('page', array('id'), array( + 'templateid', 'width', 'height', 'leftmargin', 'rightmargin', + 'sequence', 'timecreated', 'timemodified')); + + // The elements. + $element = new backup_nested_element('element', array('id'), array( + 'pageid', 'name', 'element', 'data', 'font', 'size', + 'colour', 'posx', 'posy', 'width', 'refpoint', 'sequence', 'timecreated', 'timemodified')); // The issues. @@ -46,30 +62,22 @@ class backup_customcert_activity_structure_step extends backup_activity_structur $issue = new backup_nested_element('issue', array('id'), array( 'customcertid', 'userid', 'timecreated', 'code')); - // The pages. - $pages = new backup_nested_element('pages'); - $page = new backup_nested_element('page', array('id'), array( - 'customcertid', 'width', 'height', 'leftmargin', 'rightmargin', - 'sequence', 'timecreated', 'timemodified')); - - // The elements. - $element = new backup_nested_element('element', array('id'), array( - 'pageid', 'name', 'element', 'data', 'font', 'size', - 'colour', 'width', 'refpoint', 'posx', 'posy', 'sequence', - 'timecreated', 'timemodified')); - // Build the tree. $customcert->add_child($issues); $issues->add_child($issue); - $customcert->add_child($pages); + $customcert->add_child($template); + $template->add_child($pages); $pages->add_child($page); $page->add_child($element); // Define sources. $customcert->set_source_table('customcert', array('id' => backup::VAR_ACTIVITYID)); + // Define template source. + $template->set_source_table('customcert_templates', array('contextid' => backup::VAR_CONTEXTID)); + // Define page source. - $page->set_source_table('customcert_pages', array('customcertid' => backup::VAR_ACTIVITYID)); + $page->set_source_table('customcert_pages', array('templateid' => backup::VAR_PARENTID)); // Define element source, each element belongs to a page. $element->set_source_table('customcert_elements', array('pageid' => backup::VAR_PARENTID)); diff --git a/backup/moodle2/restore_customcert_activity_task.class.php b/backup/moodle2/restore_customcert_activity_task.class.php index c883290..963ddb1 100644 --- a/backup/moodle2/restore_customcert_activity_task.class.php +++ b/backup/moodle2/restore_customcert_activity_task.class.php @@ -95,9 +95,7 @@ class restore_customcert_activity_task extends restore_activity_task { * was available at the time. */ public function after_restore() { - global $CFG, $DB; - - require_once($CFG->dirroot . '/mod/customcert/locallib.php'); + global $DB; // Get the customcert elements. $sql = "SELECT e.* @@ -105,7 +103,7 @@ class restore_customcert_activity_task extends restore_activity_task { INNER JOIN {customcert_pages} p ON e.pageid = p.id INNER JOIN {customcert} c - ON p.customcertid = c.id + ON p.templateid = c.templateid WHERE c.id = :customcertid"; if ($elements = $DB->get_records_sql($sql, array('customcertid' => $this->get_activityid()))) { // Go through the elements for the certificate. diff --git a/backup/moodle2/restore_customcert_stepslib.php b/backup/moodle2/restore_customcert_stepslib.php index 4d31c19..908a799 100644 --- a/backup/moodle2/restore_customcert_stepslib.php +++ b/backup/moodle2/restore_customcert_stepslib.php @@ -41,11 +41,14 @@ class restore_customcert_activity_structure_step extends restore_activity_struct // The customcert instance. $paths[] = new restore_path_element('customcert', '/activity/customcert'); + // The templates. + $paths[] = new restore_path_element('customcert_template', '/activity/customcert/template'); + // The pages. - $paths[] = new restore_path_element('customcert_page', '/activity/customcert/pages/page'); + $paths[] = new restore_path_element('customcert_page', '/activity/customcert/template/pages/page'); // The elements. - $paths[] = new restore_path_element('customcert_element', '/activity/customcert/pages/page/element'); + $paths[] = new restore_path_element('customcert_element', '/activity/customcert/template/pages/page/element'); // Check if we want the issues as well. if ($this->get_setting_value('userinfo')) { @@ -59,7 +62,7 @@ class restore_customcert_activity_structure_step extends restore_activity_struct /** * Handles restoring the customcert activity. * - * @param $data the customcert data + * @param stdClass $data the customcert data */ protected function process_customcert($data) { global $DB; @@ -79,7 +82,32 @@ class restore_customcert_activity_structure_step extends restore_activity_struct /** * Handles restoring a customcert page. * - * @param $data the customcert data + * @param stdClass $data the customcert data + */ + protected function process_customcert_template($data) { + global $DB; + + $data = (object) $data; + $oldid = $data->id; + + $data->contextid = $this->task->get_contextid(); + $data->timecreated = $this->apply_date_offset($data->timecreated); + $data->timemodified = $this->apply_date_offset($data->timemodified); + + $newitemid = $DB->insert_record('customcert_templates', $data); + $this->set_mapping('customcert_template', $oldid, $newitemid); + + // Update the template id for the customcert. + $customcert = new stdClass(); + $customcert->id = $this->get_new_parentid('customcert'); + $customcert->templateid = $newitemid; + $DB->update_record('customcert', $customcert); + } + + /** + * Handles restoring a customcert template. + * + * @param stdClass $data the customcert data */ protected function process_customcert_page($data) { global $DB; @@ -87,7 +115,7 @@ class restore_customcert_activity_structure_step extends restore_activity_struct $data = (object) $data; $oldid = $data->id; - $data->customcertid = $this->get_new_parentid('customcert'); + $data->templateid = $this->get_new_parentid('customcert_template'); $data->timecreated = $this->apply_date_offset($data->timecreated); $data->timemodified = $this->apply_date_offset($data->timemodified); @@ -98,7 +126,7 @@ class restore_customcert_activity_structure_step extends restore_activity_struct /** * Handles restoring a customcert element. * - * @param $data the customcert data + * @param stdclass $data the customcert data */ protected function process_customcert_element($data) { global $DB; @@ -117,7 +145,7 @@ class restore_customcert_activity_structure_step extends restore_activity_struct /** * Handles restoring a customcert issue. * - * @param $data the customcert data + * @param stdClass $data the customcert data */ protected function process_customcert_issue($data) { global $DB;