From 7db1f6b99f312c461baabc4560236b25a49cbdaa Mon Sep 17 00:00:00 2001 From: Eloy Lafuente Date: Tue, 4 May 2010 21:58:11 +0000 Subject: [PATCH] MDL-22151 backup - added page module backup --- .../backup_page_activity_task.class.php | 67 +++++++++++++++++++ .../backup/moodle2/backup_page_stepslib.php | 60 +++++++++++++++++ mod/page/lib.php | 1 + 3 files changed, 128 insertions(+) create mode 100644 mod/page/backup/moodle2/backup_page_activity_task.class.php create mode 100644 mod/page/backup/moodle2/backup_page_stepslib.php diff --git a/mod/page/backup/moodle2/backup_page_activity_task.class.php b/mod/page/backup/moodle2/backup_page_activity_task.class.php new file mode 100644 index 00000000000..29de836b938 --- /dev/null +++ b/mod/page/backup/moodle2/backup_page_activity_task.class.php @@ -0,0 +1,67 @@ +. + +/** + * @package moodlecore + * @subpackage backup-moodle2 + * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +require_once($CFG->dirroot . '/mod/page/backup/moodle2/backup_page_stepslib.php'); // Because it exists (must) + +/** + * page backup task that provides all the settings and steps to perform one + * complete backup of the activity + */ +class backup_page_activity_task extends backup_activity_task { + + /** + * Define (add) particular settings this activity can have + */ + protected function define_my_settings() { + // No particular settings for this activity + } + + /** + * Define (add) particular steps this activity can have + */ + protected function define_my_steps() { + // Choice only has one structure step + $this->add_step(new backup_page_activity_structure_step('page_structure', 'page.xml')); + } + + /** + * Code the transformations to perform in the activity in + * order to get transportable (encoded) links + */ + static public function encode_content_links($content) { + global $CFG; + + $base = preg_quote($CFG->wwwroot,"/"); + + // Link to the list of pages + $search="/(".$base."\/mod\/page\/index.php\?id\=)([0-9]+)/"; + $content= preg_replace($search, '$@PAGEINDEX*$2@$', $content); + + // Link to page view by moduleid + $search="/(".$base."\/mod\/page\/view.php\?id\=)([0-9]+)/"; + $content= preg_replace($search, '$@PAGEVIEWBYID*$2@$', $content); + + return $content; + } +} diff --git a/mod/page/backup/moodle2/backup_page_stepslib.php b/mod/page/backup/moodle2/backup_page_stepslib.php new file mode 100644 index 00000000000..fa17c958d91 --- /dev/null +++ b/mod/page/backup/moodle2/backup_page_stepslib.php @@ -0,0 +1,60 @@ +. + +/** + * @package moodlecore + * @subpackage backup-moodle2 + * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Define all the backup steps that will be used by the backup_page_activity_task + */ + +/** + * Define the complete page structure for backup, with file and id annotations + */ +class backup_page_activity_structure_step extends backup_activity_structure_step { + + protected function define_structure() { + + // To know if we are including userinfo + $userinfo = $this->get_setting_value('userinfo'); + + // Define each element separated + $page = new backup_nested_element('page', array('id'), array( + 'name', 'intro', 'introformat', 'content', 'contentformat', + 'legacyfiles', 'legacyfileslast', 'display', 'displayoptions', + 'revision', 'timemodified')); + + // Build the tree + // (love this) + + // Define sources + $page->set_source_table('page', array('id' => backup::VAR_ACTIVITYID)); + + // Define id annotations + // (none) + + // Define file annotations + $page->annotate_files(array('page_intro', 'page_content'), null); // This file areas haven't itemid + + // Return the root element (page), wrapped into standard activity structure + return $this->prepare_activity_structure($page); + } +} diff --git a/mod/page/lib.php b/mod/page/lib.php index 7f947734e47..5a571b84410 100644 --- a/mod/page/lib.php +++ b/mod/page/lib.php @@ -36,6 +36,7 @@ function page_supports($feature) { case FEATURE_COMPLETION_TRACKS_VIEWS: return true; case FEATURE_GRADE_HAS_GRADE: return false; case FEATURE_GRADE_OUTCOMES: return false; + case FEATURE_BACKUP_MOODLE2: return true; default: return null; }