MDL-27120 Add global cache to backup_xml_transformer::register_link_encoders()

This commit is contained in:
Ashley Holman
2011-04-07 18:36:43 +09:30
committed by Rajesh Taneja
parent 631764ea2f
commit d729ef29cf

View File

@@ -32,6 +32,12 @@ defined('MOODLE_INTERNAL') || die();
* *
* TODO: Finish phpdocs * 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 { class backup_xml_transformer extends xml_contenttransformer {
private $absolute_links_encoders; // array of static methods to be called in order to 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 private $unicoderegexp; // to know if the site supports unicode regexp
public function __construct($courseid) { public function __construct($courseid) {
global $LINKS_ENCODERS_CACHE;
$this->absolute_links_encoders = array(); $this->absolute_links_encoders = array();
$this->courseid = $courseid; $this->courseid = $courseid;
// Check if we support unicode modifiers in regular expressions // Check if we support unicode modifiers in regular expressions
$this->unicoderegexp = @preg_match('/\pL/u', 'a'); // This will fail silently, returning false, $this->unicoderegexp = @preg_match('/\pL/u', 'a'); // This will fail silently, returning false,
// if regexp libraries don't support unicode // if regexp libraries don't support unicode
// Register all the available content link encoders // 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) { public function process($content) {