aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authormarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-09-17 17:12:09 +0000
committermarcus <marcus@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-09-17 17:12:09 +0000
commita5c81f0ce1b2399314b516229da00dc51075003c (patch)
tree789deeb2ec02b86b5833be6692f356982fa8b12f /engine
parenta4a8218cedc9bc776be13cdbb302319b8e82653e (diff)
downloadelgg-a5c81f0ce1b2399314b516229da00dc51075003c.tar.gz
elgg-a5c81f0ce1b2399314b516229da00dc51075003c.tar.bz2
Optimised plugin query.
git-svn-id: https://code.elgg.org/elgg/trunk@2095 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/plugins.php26
1 files 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;
}