From 588605efa6c4e82f7a28fab55bfda642534486e3 Mon Sep 17 00:00:00 2001 From: Ashley Holman Date: Thu, 7 Apr 2011 18:36:43 +0930 Subject: [PATCH] MDL-27120 Add global cache to backup_xml_transformer::register_link_encoders() --- backup/moodle2/backup_xml_transformer.class.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/backup/moodle2/backup_xml_transformer.class.php b/backup/moodle2/backup_xml_transformer.class.php index a3770d03528..fec3c591d39 100644 --- a/backup/moodle2/backup_xml_transformer.class.php +++ b/backup/moodle2/backup_xml_transformer.class.php @@ -32,6 +32,12 @@ defined('MOODLE_INTERNAL') || die(); * * TODO: Finish phpdocs */ + +// cache for storing link encoders, so that we don't need to call +// register_link_encoders each time backup_xml_transformer is constructed +global $LINKS_ENCODERS_CACHE; +$LINKS_ENCODERS_CACHE = array(); + class backup_xml_transformer extends xml_contenttransformer { private $absolute_links_encoders; // array of static methods to be called in order to @@ -41,13 +47,18 @@ class backup_xml_transformer extends xml_contenttransformer { private $unicoderegexp; // to know if the site supports unicode regexp public function __construct($courseid) { + global $LINKS_ENCODERS_CACHE; + $this->absolute_links_encoders = array(); $this->courseid = $courseid; // Check if we support unicode modifiers in regular expressions $this->unicoderegexp = @preg_match('/\pL/u', 'a'); // This will fail silently, returning false, // if regexp libraries don't support unicode // Register all the available content link encoders - $this->absolute_links_encoders = $this->register_link_encoders(); + if (!empty($LINKS_ENCODERS_CACHE)) { + $LINKS_ENCODERS_CACHE = $this->register_link_encoders(); + } + $this->absolute_links_encoders = $LINKS_ENCODERS_CACHE; } public function process($content) {