From 6eb504bde19818be812e6ba78c6c56a501405fec Mon Sep 17 00:00:00 2001 From: brettp Date: Sat, 5 Feb 2011 19:53:33 +0000 Subject: Fixes #2852: Checking other plugins' conflicts to see if plugin is able to be activated in ElggPluginPackage->checkDependencies(). Some language clarification in admin panel. git-svn-id: http://code.elgg.org/elgg/trunk@8034 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/classes/ElggPluginPackage.php | 25 +++++++++++++++++++++++++ engine/lib/plugins.php | 5 +++-- 2 files changed, 28 insertions(+), 2 deletions(-) (limited to 'engine') diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php index 84cb8c1db..48a5fc4a8 100644 --- a/engine/classes/ElggPluginPackage.php +++ b/engine/classes/ElggPluginPackage.php @@ -313,8 +313,33 @@ class ElggPluginPackage { $requires = $this->getManifest()->getRequires(); $conflicts = $this->getManifest()->getConflicts(); $enabled_plugins = elgg_get_plugins('active'); + $this_id = $this->getID(); $report = array(); + // first, check if any active plugin conflicts with us. + foreach ($enabled_plugins as $plugin) { + $temp_conflicts = $plugin->manifest->getConflicts(); + foreach ($temp_conflicts as $conflict) { + if ($conflict['type'] == 'plugin' && $conflict['name'] == $this_id) { + $result = $this->checkDepPlugin($conflict, $enabled_plugins, false); + + // rewrite the conflict to show the originating plugin + $conflict['name'] = $plugin->manifest->getName(); + + if (!$full_report && !$result['status']) { + return $result['status']; + } else { + $report[] = array( + 'type' => 'conflicted', + 'dep' => $conflict, + 'status' => $result['status'], + 'value' => $this->getManifest()->getVersion() + ); + } + } + } + } + foreach (array('requires', 'conflicts') as $dep_type) { $inverse = ($dep_type == 'conflicts') ? true : false; diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index 5cb6d23f6..f356ed253 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -667,6 +667,7 @@ function elgg_get_plugin_dependency_strings($dep) { 'requires' 'plugin oauth_lib' <1.3 1.3 'downgrade' 'requires' 'php setting bob' >3 3 'change it' 'conflicts' 'php setting' >3 4 'change it' + 'conflicted''plugin profile' any 1.8 'disable profile' 'provides' 'plugin oauth_lib' 1.3 -- -- 'priority' 'before blog' -- after 'move it' */ @@ -705,9 +706,9 @@ function elgg_get_plugin_dependency_strings($dep) { case 'plugin': $strings['name'] = elgg_echo('ElggPlugin:Dependencies:Plugin', array($info['name'])); - $expected = $info['version'] ? "$comparison {$info['version']}" : ''; + $expected = $info['version'] ? "$comparison {$info['version']}" : elgg_echo('any'); $strings['expected_value'] = $expected; - $strings['local_value'] = $dep['value']; + $strings['local_value'] = $dep['value'] ? $dep['value'] : '--'; $strings['comment'] = ''; break; -- cgit v1.2.3