$string['cachedef_observers'] = 'Event observers';
$string['cachedef_plugin_functions'] = 'Plugins available callbacks';
$string['cachedef_plugin_manager'] = 'Plugin info manager';
+$string['cachedef_postprocessedcss'] = 'Post processed CSS';
$string['cachedef_tagindexbuilder'] = 'Search results for tagged items';
$string['cachedef_questiondata'] = 'Question definitions';
$string['cachedef_repositories'] = 'Repositories instances data';
'staticaccelerationsize' => 1
),
+ // Caches processed CSS.
+ 'postprocessedcss' => array(
+ 'mode' => cache_store::MODE_APPLICATION,
+ 'simplekeys' => true,
+ 'simpledata' => true,
+ 'staticacceleration' => false,
+ ),
);
$cache->purge();
}
+ // Purge compiled post processed css.
+ cache::make('core', 'postprocessedcss')->purge();
+
if ($PAGE) {
$PAGE->reload_theme();
}
return $csscontent;
}
+ /**
+ * Set post processed CSS content cache.
+ *
+ * @param string $csscontent The post processed CSS content.
+ * @return bool True if the content was successfully cached.
+ */
+ public function set_css_content_cache($csscontent) {
+
+ $cache = cache::make('core', 'postprocessedcss');
+ $key = $this->get_css_cache_key();
+
+ return $cache->set($key, $csscontent);
+ }
+
+ /**
+ * Return cached post processed CSS content.
+ *
+ * @return bool|string The cached css content or false if not found.
+ */
+ public function get_css_cached_content() {
+
+ $key = $this->get_css_cache_key();
+ $cache = cache::make('core', 'postprocessedcss');
+
+ return $cache->get($key);
+ }
+
+ /**
+ * Generate the css content cache key.
+ *
+ * @return string The post processed css cache key.
+ */
+ public function get_css_cache_key() {
+ $nosvg = (!$this->use_svg_icons()) ? 'nosvg_' : '';
+ $rtlmode = ($this->rtlmode == true) ? 'rtl' : 'ltr';
+
+ return $nosvg . $this->name . '_' . $rtlmode;
+ }
/**
* Get the theme designer css markup,
}
// Older IEs require smaller chunks.
- $csscontent = $theme->get_css_content();
+ if (!$csscontent = $theme->get_css_cached_content()) {
+ $csscontent = $theme->get_css_content();
+ $theme->set_css_content_cache($csscontent);
+ }
$relroot = preg_replace('|^http.?://[^/]+|', '', $CFG->wwwroot);
if (!empty($slashargument)) {
defined('MOODLE_INTERNAL') || die();
-$version = 2017060800.00; // YYYYMMDD = weekly release date of this DEV branch.
+$version = 2017060800.01; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.