diff options
Diffstat (limited to 'engine/classes/ElggPluginPackage.php')
-rw-r--r-- | engine/classes/ElggPluginPackage.php | 25 |
1 files changed, 25 insertions, 0 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; |