diff options
author | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-02-05 19:53:33 +0000 |
---|---|---|
committer | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2011-02-05 19:53:33 +0000 |
commit | 6eb504bde19818be812e6ba78c6c56a501405fec (patch) | |
tree | 39c3b2f65d3f77cd5272a822b9a61ba717d645a9 /engine | |
parent | e4689067e1c27cfc1ac7dbdcf8d3ab835eec0971 (diff) | |
download | elgg-6eb504bde19818be812e6ba78c6c56a501405fec.tar.gz elgg-6eb504bde19818be812e6ba78c6c56a501405fec.tar.bz2 |
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
Diffstat (limited to 'engine')
-rw-r--r-- | engine/classes/ElggPluginPackage.php | 25 | ||||
-rw-r--r-- | engine/lib/plugins.php | 5 |
2 files changed, 28 insertions, 2 deletions
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; |