diff options
Diffstat (limited to 'vendor/sabre/dav/lib/Sabre/DAV/Property/HrefList.php')
-rw-r--r-- | vendor/sabre/dav/lib/Sabre/DAV/Property/HrefList.php | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/vendor/sabre/dav/lib/Sabre/DAV/Property/HrefList.php b/vendor/sabre/dav/lib/Sabre/DAV/Property/HrefList.php new file mode 100644 index 000000000..3eab755ca --- /dev/null +++ b/vendor/sabre/dav/lib/Sabre/DAV/Property/HrefList.php @@ -0,0 +1,105 @@ +<?php + +namespace Sabre\DAV\Property; + +use Sabre\DAV; + +/** + * HrefList property + * + * This property contains multiple {DAV:}href elements, each containing a url. + * + * @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/). + * @author Evert Pot (http://evertpot.com/) + * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License + */ +class HrefList extends DAV\Property { + + /** + * hrefs + * + * @var array + */ + private $hrefs; + + /** + * Automatically prefix the url with the server base directory + * + * @var bool + */ + private $autoPrefix = true; + + /** + * __construct + * + * @param array $hrefs + * @param bool $autoPrefix + */ + public function __construct(array $hrefs, $autoPrefix = true) { + + $this->hrefs = $hrefs; + $this->autoPrefix = $autoPrefix; + + } + + /** + * Returns the uris + * + * @return array + */ + public function getHrefs() { + + return $this->hrefs; + + } + + /** + * Serializes this property. + * + * It will additionally prepend the href property with the server's base uri. + * + * @param DAV\Server $server + * @param \DOMElement $dom + * @return void + */ + public function serialize(DAV\Server $server,\DOMElement $dom) { + + $prefix = $server->xmlNamespaces['DAV:']; + + foreach($this->hrefs as $href) { + + $elem = $dom->ownerDocument->createElement($prefix . ':href'); + if ($this->autoPrefix) { + $value = $server->getBaseUri() . DAV\URLUtil::encodePath($href); + } else { + $value = $href; + } + $elem->appendChild($dom->ownerDocument->createTextNode($value)); + + $dom->appendChild($elem); + } + + } + + /** + * Unserializes this property from a DOM Element + * + * This method returns an instance of this class. + * It will only decode {DAV:}href values. + * + * @param \DOMElement $dom + * @return DAV\Property\HrefList + */ + static function unserialize(\DOMElement $dom) { + + $hrefs = array(); + foreach($dom->childNodes as $child) { + if (DAV\XMLUtil::toClarkNotation($child)==='{DAV:}href') { + $hrefs[] = $child->textContent; + } + } + return new self($hrefs, false); + + } + +} |