From 0d9805dc142e0ef2cdc4e2da3a93c07496922f0d Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 26 Jun 2014 12:15:37 +0800 Subject: [PATCH 1/2] MDL-46147 modinfo: performance improvement for course page This is a big win in a specific situation, ie filters enabled for content+headings, and no activity descriptions visible on the course page. --- lib/modinfolib.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/modinfolib.php b/lib/modinfolib.php index 7d5529130b9..287c8142b9c 100644 --- a/lib/modinfolib.php +++ b/lib/modinfolib.php @@ -1320,6 +1320,10 @@ class cm_info implements IteratorAggregate { if (!isset($options['context'])) { $options['context'] = $this->get_context(); } + // Improve filter performance by preloading filter setttings for all + // activities on the course (this does nothing if called multiple + // times). + filter_preload_activities($this->get_modinfo()); return format_string($this->get_name(), true, $options); } From acbf4579d59c8f23c50f8d250675889a059c0e89 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Tue, 1 Jul 2014 15:28:54 +0800 Subject: [PATCH 2/2] MDL-46147 modinfo: performance improvement for course page (check filterall) --- lib/modinfolib.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/modinfolib.php b/lib/modinfolib.php index 287c8142b9c..0195d7756a7 100644 --- a/lib/modinfolib.php +++ b/lib/modinfolib.php @@ -1316,6 +1316,7 @@ class cm_info implements IteratorAggregate { * @return string */ public function get_formatted_name($options = array()) { + global $CFG; $options = (array)$options; if (!isset($options['context'])) { $options['context'] = $this->get_context(); @@ -1323,7 +1324,9 @@ class cm_info implements IteratorAggregate { // Improve filter performance by preloading filter setttings for all // activities on the course (this does nothing if called multiple // times). - filter_preload_activities($this->get_modinfo()); + if (!empty($CFG->filterall)) { + filter_preload_activities($this->get_modinfo()); + } return format_string($this->get_name(), true, $options); }