From af5896f771aa0d260659930dcb1d1f050e935ff9 Mon Sep 17 00:00:00 2001 From: brettp Date: Tue, 8 Feb 2011 06:14:19 +0000 Subject: Fixes #2863: Can now use all 6 dep types with conflicts. git-svn-id: http://code.elgg.org/elgg/trunk@8071 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/classes/ElggPluginManifest.php | 6 +++--- engine/classes/ElggPluginPackage.php | 26 ++++++++++++++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/engine/classes/ElggPluginManifest.php b/engine/classes/ElggPluginManifest.php index 7c9c0670e..bef099dcd 100644 --- a/engine/classes/ElggPluginManifest.php +++ b/engine/classes/ElggPluginManifest.php @@ -23,7 +23,7 @@ class ElggPluginManifest { protected $parser; /** - * The expected structure of a requires element + * The expected structure of a plugins requires element */ private $depsStructPlugin = array( 'type' => '', @@ -33,7 +33,7 @@ class ElggPluginManifest { ); /** - * The expected structure of a requires element + * The expected structure of a priority element */ private $depsStructPriority = array( 'type' => '', @@ -42,7 +42,7 @@ class ElggPluginManifest { ); /* - * The expected structure of elgg and elgg_release requires element + * The expected structure of elgg_version and elgg_release requires element */ private $depsStructElgg = array( 'type' => '', diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php index 2ae686b25..cc23dcf21 100644 --- a/engine/classes/ElggPluginPackage.php +++ b/engine/classes/ElggPluginPackage.php @@ -353,11 +353,11 @@ class ElggPluginPackage { foreach (${$dep_type} as $dep) { switch ($dep['type']) { case 'elgg_version': - $result = $this->checkDepElgg($dep, get_version()); + $result = $this->checkDepElgg($dep, get_version(), $inverse); break; case 'elgg_release': - $result = $this->checkDepElgg($dep, get_version(true)); + $result = $this->checkDepElgg($dep, get_version(true), $inverse); break; case 'plugin': @@ -369,11 +369,11 @@ class ElggPluginPackage { break; case 'php_extension': - $result = $this->checkDepPhpExtension($dep); + $result = $this->checkDepPhpExtension($dep, $inverse); break; case 'php_ini': - $result = $this->checkDepPhpIni($dep); + $result = $this->checkDepPhpIni($dep, $inverse); break; } @@ -506,13 +506,14 @@ class ElggPluginPackage { * * @todo Can this be merged with the plugin checker? * - * @param array $dep An Elgg manifest.xml deps array + * @param array $dep An Elgg manifest.xml deps array + * @param bool $inverse Inverse the result to use as a conflicts. * @return array An array in the form array( * 'status' => bool * 'value' => string The version provided * ) */ - private function checkDepPhpExtension(array $dep) { + private function checkDepPhpExtension(array $dep, $inverse = false) { $name = $dep['name']; $version = $dep['version']; $comparison = $dep['comparison']; @@ -542,6 +543,10 @@ class ElggPluginPackage { $ext_version = $provides['value']; } + if ($inverse) { + $status = !$status; + } + return array( 'status' => $status, 'value' => $ext_version @@ -551,10 +556,11 @@ class ElggPluginPackage { /** * Check if the PHP ini setting satisfies $dep. * - * @param array $dep An Elgg manifest.xml deps array + * @param array $dep An Elgg manifest.xml deps array + * @param bool $inverse Inverse the result to use as a conflicts. * @return bool */ - private function checkDepPhpIni($dep) { + private function checkDepPhpIni($dep, $inverse = false) { $name = $dep['name']; $value = $dep['value']; $comparison = $dep['comparison']; @@ -570,6 +576,10 @@ class ElggPluginPackage { $status = version_compare($setting, $value, $comparison); + if ($inverse) { + $status = !$status; + } + return array( 'status' => $status, 'value' => $setting -- cgit v1.2.3