diff options
author | redmatrix <git@macgirvin.com> | 2016-07-28 19:58:05 -0700 |
---|---|---|
committer | redmatrix <git@macgirvin.com> | 2016-07-28 19:58:05 -0700 |
commit | ae5c10a71cd29722f63b379b62801dea52a9ab8f (patch) | |
tree | 5c9c0c6668369f5ffbd4f5c7b635c9c1ec96b996 /vendor/sabre/xml/lib | |
parent | 2d4b75428a87038b9a637bf49fc0a91c91b392fb (diff) | |
parent | 4d5202353fbce12f19fbe578205259d2a7bd3f04 (diff) | |
download | volse-hubzilla-1.10.tar.gz volse-hubzilla-1.10.tar.bz2 volse-hubzilla-1.10.zip |
Merge branch '1.10RC'1.10
Diffstat (limited to 'vendor/sabre/xml/lib')
-rw-r--r-- | vendor/sabre/xml/lib/Deserializer/functions.php | 7 | ||||
-rw-r--r-- | vendor/sabre/xml/lib/Reader.php | 20 | ||||
-rw-r--r-- | vendor/sabre/xml/lib/Service.php | 8 |
3 files changed, 30 insertions, 5 deletions
diff --git a/vendor/sabre/xml/lib/Deserializer/functions.php b/vendor/sabre/xml/lib/Deserializer/functions.php index fe88a6db8..2e5d877e9 100644 --- a/vendor/sabre/xml/lib/Deserializer/functions.php +++ b/vendor/sabre/xml/lib/Deserializer/functions.php @@ -14,7 +14,7 @@ use Sabre\Xml\Reader; * deserializer functions. */ -/* +/** * The 'keyValue' deserializer parses all child elements, and outputs them as * a "key=>value" array. * @@ -213,7 +213,7 @@ function valueObject(Reader $reader, $className, $namespace) { } -/* +/** * This deserializer helps you deserialize xml structures that look like * this: * @@ -240,6 +240,9 @@ function valueObject(Reader $reader, $className, $namespace) { */ function repeatingElements(Reader $reader, $childElementName) { + if ($childElementName[0] !== '{') { + $childElementName = '{}' . $childElementName; + } $result = []; foreach ($reader->parseGetElements() as $element) { diff --git a/vendor/sabre/xml/lib/Reader.php b/vendor/sabre/xml/lib/Reader.php index 7cba76c59..f35dc8537 100644 --- a/vendor/sabre/xml/lib/Reader.php +++ b/vendor/sabre/xml/lib/Reader.php @@ -142,7 +142,12 @@ class Reader extends XMLReader { // choice. See: // // https://bugs.php.net/bug.php?id=64230 - if (!@$this->read()) return false; + if (!@$this->read()) { + if (!is_null($elementMap)) { + $this->popContext(); + } + return false; + } while (true) { @@ -152,6 +157,9 @@ class Reader extends XMLReader { if ($errors) { libxml_clear_errors(); + if (!is_null($elementMap)) { + $this->popContext(); + } throw new LibXMLException($errors); } } @@ -170,6 +178,9 @@ class Reader extends XMLReader { $this->read(); break 2; case self::NONE : + if (!is_null($elementMap)) { + $this->popContext(); + } throw new ParseException('We hit the end of the document prematurely. This likely means that some parser "eats" too many elements. Do not attempt to continue parsing.'); default : // Advance to the next element @@ -282,8 +293,13 @@ class Reader extends XMLReader { */ function getDeserializerForElementName($name) { + if (!array_key_exists($name, $this->elementMap)) { - return ['Sabre\\Xml\\Element\\Base', 'xmlDeserialize']; + if (substr($name, 0, 2) == '{}' && array_key_exists(substr($name, 2), $this->elementMap)) { + $name = substr($name, 2); + } else { + return ['Sabre\\Xml\\Element\\Base', 'xmlDeserialize']; + } } $deserializer = $this->elementMap[$name]; diff --git a/vendor/sabre/xml/lib/Service.php b/vendor/sabre/xml/lib/Service.php index b2603a4c7..09ee341cf 100644 --- a/vendor/sabre/xml/lib/Service.php +++ b/vendor/sabre/xml/lib/Service.php @@ -151,8 +151,14 @@ class Service { $r->contextUri = $contextUri; $r->xml($input); + $rootElementName = (array)$rootElementName; + + foreach ($rootElementName as &$rEl) { + if ($rEl[0] !== '{') $rEl = '{}' . $rEl; + } + $result = $r->parse(); - if (!in_array($result['name'], (array)$rootElementName, true)) { + if (!in_array($result['name'], $rootElementName, true)) { throw new ParseException('Expected ' . implode(' or ', (array)$rootElementName) . ' but received ' . $result['name'] . ' as the root element'); } return $result['value']; |