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; | 
