aboutsummaryrefslogtreecommitdiff
path: root/engine/classes/ElggPluginPackage.php
diff options
context:
space:
mode:
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-02-08 06:14:19 +0000
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-02-08 06:14:19 +0000
commitaf5896f771aa0d260659930dcb1d1f050e935ff9 (patch)
tree604f2622f2ce2edd9176edb878e284e2f1fd5a78 /engine/classes/ElggPluginPackage.php
parent5829097649009879edd325b38b978e4061553805 (diff)
downloadelgg-af5896f771aa0d260659930dcb1d1f050e935ff9.tar.gz
elgg-af5896f771aa0d260659930dcb1d1f050e935ff9.tar.bz2
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
Diffstat (limited to 'engine/classes/ElggPluginPackage.php')
-rw-r--r--engine/classes/ElggPluginPackage.php26
1 files changed, 18 insertions, 8 deletions
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