106 lines
2.3 KiB
PHP
106 lines
2.3 KiB
PHP
<?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-2015 fruux GmbH (https://fruux.com/).
|
|
* @author Evert Pot (http://evertpot.com/)
|
|
* @license http://sabre.io/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);
|
|
|
|
}
|
|
|
|
}
|