MDL-50645 cache: get_plugins_with_function for more than one plugintype
authorDavid Monllao <davidm@moodle.com>
Fri, 19 Jun 2015 09:07:59 +0000 (17:07 +0800)
committerDavid Monllao <davidm@moodle.com>
Mon, 20 Jul 2015 18:22:04 +0000 (20:22 +0200)
lib/moodlelib.php
user/classes/output/myprofile/manager.php

index 07a1800..0153f48 100644 (file)
@@ -4841,10 +4841,12 @@ function remove_course_contents($courseid, $showfeedback = true, array $options
 
     // Cleanup the rest of plugins.
     $cleanuplugintypes = array('report', 'coursereport', 'format');
+    $callbacks = get_plugins_with_function('delete_course', 'lib.php');
     foreach ($cleanuplugintypes as $type) {
-        $plugins = get_plugin_list_with_function($type, 'delete_course', 'lib.php');
-        foreach ($plugins as $plugin => $pluginfunction) {
-            $pluginfunction($course->id, $showfeedback);
+        if (!empty($callbacks[$type])) {
+            foreach ($callbacks[$type] as $pluginfunction) {
+                $pluginfunction($course->id, $showfeedback);
+            }
         }
         if ($showfeedback) {
             echo $OUTPUT->notification($strdeleted.get_string('type_'.$type.'_plural', 'plugin'), 'notifysuccess');
index 05837e8..d306425 100644 (file)
@@ -69,13 +69,13 @@ class manager {
         }
 
         // Plugins.
-        $types = \core_component::get_plugin_types();
-        foreach ($types as $type => $dir) {
-            $pluginlist = get_plugin_list_with_function($type, "myprofile_navigation", "lib.php");
-            foreach ($pluginlist as $function) {
+        $pluginswithfunction = get_plugins_with_function('myprofile_navigation', 'lib.php');
+        foreach ($pluginswithfunction as $plugins) {
+            foreach ($plugins as $function) {
                 $function($tree, $user, $iscurrentuser, $course);
             }
         }
+
         $tree->sort_categories();
         return $tree;
     }