From a5c81f0ce1b2399314b516229da00dc51075003c Mon Sep 17 00:00:00 2001 From: marcus Date: Wed, 17 Sep 2008 17:12:09 +0000 Subject: Optimised plugin query. git-svn-id: https://code.elgg.org/elgg/trunk@2095 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/plugins.php | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index c71495c40..6ef8f5779 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -11,7 +11,10 @@ * @copyright Curverider Ltd 2008 * @link http://elgg.org/ */ - + + + /// Cache enabled plugins per page + $ENABLED_PLUGINS_CACHE = NULL; /** * PluginException @@ -445,22 +448,23 @@ */ function is_plugin_enabled($plugin, $site_guid = 0) { - //return execute_privileged_codeblock('__is_plugin_enabled_priv', array('plugin'=>$plugin, 'site_guid' => $site_guid)); - // Does this need to be in privileged? Doesn't seem to... - - global $CONFIG; + global $CONFIG, $ENABLED_PLUGINS_CACHE; $site_guid = (int) $site_guid; if ($site_guid == 0) $site_guid = $CONFIG->site_guid; - $site = get_entity($site_guid); - if (!($site instanceof ElggSite)) - throw new InvalidClassException(sprintf(elgg_echo('InvalidClassException:NotValidElggStar'), $site_guid, "ElggSite")); - $enabled = find_metadata("enabled_plugins", $plugin, "site", "", 10, 0, "", $site_guid); - if ($enabled) - return true; + if (!$ENABLED_PLUGINS_CACHE) { + $site = get_entity($site_guid); + if (!($site instanceof ElggSite)) + throw new InvalidClassException(sprintf(elgg_echo('InvalidClassException:NotValidElggStar'), $site_guid, "ElggSite")); + + $ENABLED_PLUGINS_CACHE = $site->enabled_plugins; + } + + foreach ($ENABLED_PLUGINS_CACHE as $e) + if ($e == $plugin) return true; return false; } -- cgit v1.2.3