1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * Plugin manifest.xml parser for Elgg 1.7 and lower.
- *
- * @package Elgg.Core
- * @subpackage Plugins
- * @since 1.8
- */
- class ElggPluginManifestParser17 extends \ElggPluginManifestParser {
- /**
- * The valid top level attributes and defaults for a 1.7 manifest
- */
- protected $validAttributes = array(
- 'author', 'version', 'description', 'website',
- 'copyright', 'license', 'licence', 'elgg_version',
- // were never really used and not enforced in code.
- 'requires', 'recommends', 'conflicts',
- // not a 1.7 field, but we need it
- 'name',
- );
- /**
- * Parse a manifest object from 1.7 or earlier.
- *
- * @return void
- */
- public function parse() {
- if (!isset($this->manifestObject->children)) {
- return false;
- }
- $elements = array();
- foreach ($this->manifestObject->children as $element) {
- $key = $element->attributes['key'];
- $value = $element->attributes['value'];
- // create arrays if multiple fields are set
- if (array_key_exists($key, $elements)) {
- if (!is_array($elements[$key])) {
- $orig = $elements[$key];
- $elements[$key] = array($orig);
- }
- $elements[$key][] = $value;
- } else {
- $elements[$key] = $value;
- }
- }
- if ($elements && !array_key_exists('name', $elements)) {
- $elements['name'] = $this->caller->getName();
- }
- $this->manifest = $elements;
- if (!$this->manifest) {
- return false;
- }
- return true;
- }
- /**
- * Return an attribute in the manifest.
- *
- * Overrides \ElggPluginManifestParser::getAttribute() because before 1.8
- * there were no rules...weeeeeeeee!
- *
- * @param string $name Attribute name
- * @return mixed
- */
- public function getAttribute($name) {
- if (isset($this->manifest[$name])) {
- return $this->manifest[$name];
- }
- return false;
- }
- }
|