Merge branch 'MDL-36957-master' of git://github.com/FMCorz/moodle
[moodle.git] / backup / util / helper / backup_general_helper.class.php
index fd0d674..98b1f89 100644 (file)
@@ -115,6 +115,9 @@ abstract class backup_general_helper extends backup_helper {
      */
     public static function get_backup_information($tempdir) {
         global $CFG;
      */
     public static function get_backup_information($tempdir) {
         global $CFG;
+        // Make a request cache and store the data in there.
+        static $cachesha1 = null;
+        static $cache = null;
 
         $info = new stdclass(); // Final information goes here
 
 
         $info = new stdclass(); // Final information goes here
 
@@ -122,6 +125,12 @@ abstract class backup_general_helper extends backup_helper {
         if (!file_exists($moodlefile)) { // Shouldn't happen ever, but...
             throw new backup_helper_exception('missing_moodle_backup_xml_file', $moodlefile);
         }
         if (!file_exists($moodlefile)) { // Shouldn't happen ever, but...
             throw new backup_helper_exception('missing_moodle_backup_xml_file', $moodlefile);
         }
+
+        $moodlefilesha1 = sha1_file($moodlefile);
+        if ($moodlefilesha1 === $cachesha1) {
+            return clone $cache;
+        }
+
         // Load the entire file to in-memory array
         $xmlparser = new progressive_parser();
         $xmlparser->set_file($moodlefile);
         // Load the entire file to in-memory array
         $xmlparser = new progressive_parser();
         $xmlparser->set_file($moodlefile);
@@ -227,6 +236,8 @@ abstract class backup_general_helper extends backup_helper {
             }
         }
 
             }
         }
 
+        $cache = clone $info;
+        $cachesha1 = $moodlefilesha1;
         return $info;
     }
 
         return $info;
     }