]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-17835 backup & restore - encode/decode content links from/to course formats info.
authorstronk7 <stronk7>
Sat, 24 Jan 2009 00:40:32 +0000 (00:40 +0000)
committerstronk7 <stronk7>
Sat, 24 Jan 2009 00:40:32 +0000 (00:40 +0000)
Credit goes to Mark Nielsen. Thanks! ; merged from 19_STABLE

backup/backuplib.php
backup/restorelib.php

index 655244ec635cebace0bca8205df39b6840ba33bc..47a00a91eaa18733a4808940dbfc7246617743c8 100644 (file)
     //It does this conversions:
     // - $CFG->wwwroot/file.php/courseid ------------------> $@FILEPHP@$ (slasharguments links)
     // - $CFG->wwwroot/file.php?file=/courseid ------------> $@FILEPHP@$ (non-slasharguments links)
-    // - Every module xxxx_encode_content_links() is executed too
+    // - Every module/block/course_format xxxx_encode_content_links() is executed too
     //
     function backup_encode_absolute_links($content) {
         global $CFG,$preferences, $DB;
             }
         }
 
+        // For the current course format call its encode_content_links method (if it exists)
+        static $format_function_name;
+        if (!isset($format_function_name)) {
+            $format_function_name = false;
+            if ($format = $DB->get_field('course','format', array('id'=>$mypreferences->backup_course))) {
+                if (file_exists("$CFG->dirroot/course/format/$format/backuplib.php")) {
+                    include_once("$CFG->dirroot/course/format/$format/backuplib.php");
+                    $function_name = $format.'_encode_format_content_links';
+                    if (function_exists($function_name)) {
+                        $format_function_name = $function_name;
+                    }
+                }
+            }
+        }
+        // If the above worked - then we have a function to call
+        if ($format_function_name) {
+            $result = $format_function_name($result, $mypreferences);
+        }
+
         // For each block, call its encode_content_links method.
         // This encodes forexample links to blocks/something/viewphp?id=666
         // that are stored in other activities.
index d88370cbd335006424e4ca6a0486e0f6b6dc4d9b..53ca90da137cb3069bb0ca4aeb9803819b34d6b5 100644 (file)
@@ -81,7 +81,7 @@ define('RESTORE_GROUPS_GROUPINGS', 3);
     }
 
     //This function makes all the necessary calls to xxxx_decode_content_links_caller()
-    //function in each module, passing them the desired contents to be decoded
+    //function in each module/block/course format..., passing them the desired contents to be decoded
     //from backup format to destination site/course in order to mantain inter-activities
     //working in the backup/restore process
     function restore_decode_content_links($restore) {
@@ -148,6 +148,23 @@ define('RESTORE_GROUPS_GROUPINGS', 3);
             }
         }
 
+        // For the course format call its decode_content_links method (if it exists)
+        $format = $DB->get_field('course','format', array('id'=>$restore->course_id));
+        if (file_exists("$CFG->dirroot/course/format/$format/restorelib.php")) {
+            include_once("$CFG->dirroot/course/format/$format/restorelib.php");
+            $function_name = $format.'_decode_format_content_links_caller';
+
+            if (function_exists($function_name)) {
+                if (!defined('RESTORE_SILENTLY')) {
+                    echo "<li>".get_string ("from")." ".get_string("format").' '.$format;
+                }
+                $status = $function_name($restore);
+                if (!defined('RESTORE_SILENTLY')) {
+                    echo '</li>';
+                }
+            }
+        }
+
         // Process all html text also in blocks too
         if (!defined('RESTORE_SILENTLY')) {
             echo '<li>'.get_string ('from').' '.get_string('blocks');
@@ -186,7 +203,7 @@ define('RESTORE_GROUPS_GROUPINGS', 3);
     //its task is to ask all modules (maybe other linkable objects) to restore
     //links to them.
     function restore_decode_content_links_worker($content,$restore) {
-        global $DB;
+        global $CFG, $DB;
 
         foreach($restore->mods as $name => $info) {
             $function_name = $name."_decode_content_links";
@@ -195,6 +212,25 @@ define('RESTORE_GROUPS_GROUPINGS', 3);
             }
         }
 
+        // For the current format, call decode_format_content_links if it exists
+        static $format_function_name;
+        if (!isset($format_function_name)) {
+            $format_function_name = false;
+            if ($format = $DB->get_field('course','format', array('id'=>$restore->course_id))) {
+                if (file_exists("$CFG->dirroot/course/format/$format/restorelib.php")) {
+                    include_once("$CFG->dirroot/course/format/$format/restorelib.php");
+                    $function_name = $format.'_decode_format_content_links';
+                    if (function_exists($function_name)) {
+                        $format_function_name = $function_name;
+                    }
+                }
+            }
+        }
+        // If the above worked - then we have a function to call
+        if ($format_function_name) {
+            $content = $format_function_name($content, $restore);
+        }
+
         // For each block, call its encode_content_links method
         static $blockobjects = null; 
         if (!isset($blockobjects)) {