diff options
-rw-r--r-- | engine/classes/ElggPluginManifest.php | 40 | ||||
-rw-r--r-- | engine/classes/ElggPluginManifestParser17.php | 4 | ||||
-rw-r--r-- | engine/classes/ElggPluginManifestParser18.php | 4 | ||||
-rw-r--r-- | engine/classes/ElggPluginPackage.php | 10 | ||||
-rw-r--r-- | engine/tests/api/plugins.php | 10 | ||||
-rw-r--r-- | engine/tests/test_files/plugin_18/manifest.xml | 2 |
6 files changed, 53 insertions, 17 deletions
diff --git a/engine/classes/ElggPluginManifest.php b/engine/classes/ElggPluginManifest.php index ccd0d984a..01dcd1046 100644 --- a/engine/classes/ElggPluginManifest.php +++ b/engine/classes/ElggPluginManifest.php @@ -234,7 +234,9 @@ class ElggPluginManifest { * @return string */ public function getBlurb() { - if (!$blurb = elgg_echo($this->parser->getAttribute('blurb'))) { + $blurb = elgg_echo($this->parser->getAttribute('blurb')); + + if (!$blurb) { $blurb = elgg_get_excerpt($this->getDescription()); } @@ -293,7 +295,9 @@ class ElggPluginManifest { * @return array */ public function getCategories() { - if (!$cats = $this->parser->getAttribute('category')) { + $cats = $this->parser->getAttribute('category'); + + if (!$cats) { $cats = array(); } @@ -306,7 +310,9 @@ class ElggPluginManifest { * @return array */ public function getScreenshots() { - if (!$ss = $this->parser->getAttribute('screenshot')) { + $ss = $this->parser->getAttribute('screenshot'); + + if (!$ss) { $ss = array(); } @@ -324,7 +330,9 @@ class ElggPluginManifest { * @return array */ public function getProvides() { - if (!$provides = $this->parser->getAttribute('provides')) { + $provides = $this->parser->getAttribute('provides'); + + if (!$provides) { $provides = array(); } @@ -351,7 +359,23 @@ class ElggPluginManifest { * @return array */ public function getRequires() { - if (!$reqs = $this->parser->getAttribute('requires')) { + // rewrite the 1.7 style elgg_version as a real requires. + if ($this->apiVersion < 1.8) { + $elgg_version = $this->parser->getAttribute('elgg_version'); + if ($elgg_version) { + $reqs = array( + array( + 'type' => 'elgg_version', + 'version' => $elgg_version, + 'comparison' => 'ge' + ) + ); + } + } else { + $reqs = $this->parser->getAttribute('requires'); + } + + if (!$reqs) { $reqs = array(); } @@ -359,7 +383,7 @@ class ElggPluginManifest { foreach ($reqs as $req) { switch ($req['type']) { - case 'elgg': + case 'elgg_version': case 'elgg_release': $struct = $this->_depsRequiresStructElgg; break; @@ -441,7 +465,9 @@ class ElggPluginManifest { * @return array */ public function getConflicts() { - if (!$conflicts = $this->parser->getAttribute('conflicts')) { + $conflicts = $this->parser->getAttribute('conflicts'); + + if (!$conflicts) { $conflicts = array(); } diff --git a/engine/classes/ElggPluginManifestParser17.php b/engine/classes/ElggPluginManifestParser17.php index f439b5af0..8e4a79e4f 100644 --- a/engine/classes/ElggPluginManifestParser17.php +++ b/engine/classes/ElggPluginManifestParser17.php @@ -45,7 +45,9 @@ class ElggPluginManifestParser17 extends ElggPluginManifestParser { } } - if (!$this->manifest = $elements) { + $this->manifest = $elements; + + if (!$this->manifest) { return false; } diff --git a/engine/classes/ElggPluginManifestParser18.php b/engine/classes/ElggPluginManifestParser18.php index 54aa9603f..9a4cfb2b7 100644 --- a/engine/classes/ElggPluginManifestParser18.php +++ b/engine/classes/ElggPluginManifestParser18.php @@ -91,7 +91,9 @@ class ElggPluginManifestParser18 extends ElggPluginManifestParser { } } - if (!$this->manifest = $parsed) { + $this->manifest = $parsed; + + if (!$this->manifest) { return false; } diff --git a/engine/classes/ElggPluginPackage.php b/engine/classes/ElggPluginPackage.php index c00df7f8d..8bb1f2a69 100644 --- a/engine/classes/ElggPluginPackage.php +++ b/engine/classes/ElggPluginPackage.php @@ -42,7 +42,7 @@ class ElggPluginPackage { * @var array */ private $_depsSupportedTypes = array( - 'elgg', 'elgg_release', 'php_extension', 'php_ini', 'plugin' + 'elgg_version', 'elgg_release', 'php_extension', 'php_ini', 'plugin' ); /** @@ -274,7 +274,9 @@ class ElggPluginPackage { */ private function _loadManifest() { $file = $this->path . 'manifest.xml'; - if ($this->manifest = new ElggPluginManifest($file, $this->id)) { + $this->manifest = new ElggPluginManifest($file, $this->id); + + if ($this->manifest) { return true; } @@ -312,7 +314,7 @@ class ElggPluginPackage { foreach (${$dep_type} as $dep) { switch ($dep['type']) { - case 'elgg': + case 'elgg_version': $result = $this->_checkDepElgg($dep, get_version()); break; @@ -484,7 +486,7 @@ class ElggPluginPackage { foreach ($requires as $require) { switch ($require['type']) { - case 'elgg': + case 'elgg_version': $result = $this->_checkRequiresElgg($require, get_version()); break; diff --git a/engine/tests/api/plugins.php b/engine/tests/api/plugins.php index 61e2cdde6..c99609559 100644 --- a/engine/tests/api/plugins.php +++ b/engine/tests/api/plugins.php @@ -72,7 +72,7 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest { 'license' => 'GNU Public License version 2', 'requires' => array( - array('type' => 'elgg', 'version' => '3009030802', 'comparison' => 'lt'), + array('type' => 'elgg_version', 'version' => '3009030802', 'comparison' => 'lt'), array('type' => 'elgg_release', 'version' => '1.8-svn'), array('type' => 'php_extension', 'name' => 'gd'), array('type' => 'php_ini', 'name' => 'short_open_tag', 'value' => 'off'), @@ -175,7 +175,7 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest { public function testElggPluginManifestGetRequires() { $requires = array( - array('type' => 'elgg', 'version' => '3009030802', 'comparison' => 'lt'), + array('type' => 'elgg_version', 'version' => '3009030802', 'comparison' => 'lt'), array('type' => 'elgg_release', 'version' => '1.8-svn', 'comparison' => 'ge'), array('type' => 'php_extension', 'name' => 'gd', 'version' => '', 'comparison' => '='), array('type' => 'php_ini', 'name' => 'short_open_tag', 'value' => 'off', 'comparison' => '='), @@ -187,7 +187,11 @@ class ElggCorePluginsAPITest extends ElggCoreUnitTest { $this->assertEqual($this->package18->getManifest()->getRequires(), $requires); - $this->assertEqual($this->package17->getManifest()->getRequires(), array()); + $requires = array( + array('type' => 'elgg_version', 'version' => '2009030702', 'comparison' => 'ge') + ); + + $this->assertEqual($this->package17->getManifest()->getRequires(), $requires); } public function testElggPluginManifestGetDescription() { diff --git a/engine/tests/test_files/plugin_18/manifest.xml b/engine/tests/test_files/plugin_18/manifest.xml index 182117a50..454a418f6 100644 --- a/engine/tests/test_files/plugin_18/manifest.xml +++ b/engine/tests/test_files/plugin_18/manifest.xml @@ -10,7 +10,7 @@ <license>GNU Public License version 2</license> <requires> - <type>elgg</type> + <type>elgg_version</type> <version>3009030802</version> <comparison>lt</comparison> </requires> |