source: pmb4.2/trunk/fuentes/pmb/admin/connecteurs/out/webdav/lib/Sabre/DAV/Property/ResourceType.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 2.9 KB
Line 
1<?php
2
3namespace Sabre\DAV\Property;
4
5use Sabre\DAV;
6
7/**
8 * This class represents the {DAV:}resourcetype property
9 *
10 * Normally for files this is empty, and for collection {DAV:}collection.
11 * However, other specs define different values for this.
12 *
13 * @copyright Copyright (C) 2007-2013 Rooftop Solutions. All rights reserved.
14 * @author Evert Pot (http://www.rooftopsolutions.nl/)
15 * @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
16 */
17class ResourceType extends DAV\Property {
18
19    /**
20     * resourceType
21     *
22     * @var array
23     */
24    public $resourceType = array();
25
26    /**
27     * __construct
28     *
29     * @param mixed $resourceType
30     */
31    public function __construct($resourceType = array()) {
32
33        if ($resourceType === DAV\Server::NODE_FILE)
34            $this->resourceType = array();
35        elseif ($resourceType === DAV\Server::NODE_DIRECTORY)
36            $this->resourceType = array('{DAV:}collection');
37        elseif (is_array($resourceType))
38            $this->resourceType = $resourceType;
39        else
40            $this->resourceType = array($resourceType);
41
42    }
43
44    /**
45     * serialize
46     *
47     * @param DAV\Server $server
48     * @param \DOMElement $prop
49     * @return void
50     */
51    public function serialize(DAV\Server $server, \DOMElement $prop) {
52
53        $propName = null;
54        $rt = $this->resourceType;
55
56        foreach($rt as $resourceType) {
57            if (preg_match('/^{([^}]*)}(.*)$/',$resourceType,$propName)) {
58
59                if (isset($server->xmlNamespaces[$propName[1]])) {
60                    $prop->appendChild($prop->ownerDocument->createElement($server->xmlNamespaces[$propName[1]] . ':' . $propName[2]));
61                } else {
62                    $prop->appendChild($prop->ownerDocument->createElementNS($propName[1],'custom:' . $propName[2]));
63                }
64
65            }
66        }
67
68    }
69
70    /**
71     * Returns the values in clark-notation
72     *
73     * For example array('{DAV:}collection')
74     *
75     * @return array
76     */
77    public function getValue() {
78
79        return $this->resourceType;
80
81    }
82
83    /**
84     * Checks if the principal contains a certain value
85     *
86     * @param string $type
87     * @return bool
88     */
89    public function is($type) {
90
91        return in_array($type, $this->resourceType);
92
93    }
94
95    /**
96     * Adds a resourcetype value to this property
97     *
98     * @param string $type
99     * @return void
100     */
101    public function add($type) {
102
103        $this->resourceType[] = $type;
104        $this->resourceType = array_unique($this->resourceType);
105
106    }
107
108    /**
109     * Unserializes a DOM element into a ResourceType property.
110     *
111     * @param \DOMElement $dom
112     * @return DAV\Property\ResourceType
113     */
114    static public function unserialize(\DOMElement $dom) {
115
116        $value = array();
117        foreach($dom->childNodes as $child) {
118
119            $value[] = DAV\XMLUtil::toClarkNotation($child);
120
121        }
122
123        return new self($value);
124
125    }
126
127}
Note: See TracBrowser for help on using the repository browser.