From 6341f41c7e48912e03c3fdb01d108bff8539df06 Mon Sep 17 00:00:00 2001 From: marcus Date: Fri, 20 Jun 2008 13:00:41 +0000 Subject: Closes #60: Enable/disable plugins on a site by site basis http://trac.elgg.org/elgg/ticket/60 git-svn-id: https://code.elgg.org/elgg/trunk@1021 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/elgglib.php | 11 ++++++----- engine/lib/plugins.php | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) (limited to 'engine/lib') diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 7a4f3df9b..cc7fbf209 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -1345,13 +1345,14 @@ $callstack = debug_backtrace(); $call_paths = array(); foreach ($callstack as $call) - $call_paths[] = sanitise_string($call['path']); - + $call_paths[] = sanitise_string($call['file']); + // Get privileged paths - $paths = get_data("SELECT * from {$CONFIG->dbprefix}privileged_paths"); + $paths = get_data("SELECT * from {$CONFIG->dbprefix}privileged_paths"); + foreach ($paths as $p) - { - if (in_array($CONFIG->path . $p->path, $call_paths)) + { + if (in_array( $p->path, $call_paths)) return true; } diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index 0edf46bfb..464163f2b 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -304,6 +304,9 @@ */ 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; $site_guid = (int) $site_guid; @@ -320,6 +323,32 @@ return false; } + + /** + * Privileged execution so code can run before user logged in. + * + * @param array $params + * @return bool + */ + /*function __is_plugin_enabled_priv(array $params = null) + { + global $CONFIG; + + $plugin = $params['plugin']; + $site_guid = (int) $params['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; + + return false; + }*/ /** * Run once and only once. -- cgit v1.2.3