Completed
Branch develop (f5af02)
by
unknown
17:35
created
htdocs/includes/sabre/sabre/dav/lib/CardDAV/Xml/Filter/PropFilter.php 1 patch
Indentation   +61 added lines, -61 removed lines patch added patch discarded remove patch
@@ -25,71 +25,71 @@
 block discarded – undo
25 25
  */
26 26
 class PropFilter implements XmlDeserializable
27 27
 {
28
-    /**
29
-     * The deserialize method is called during xml parsing.
30
-     *
31
-     * This method is called statically, this is because in theory this method
32
-     * may be used as a type of constructor, or factory method.
33
-     *
34
-     * Often you want to return an instance of the current class, but you are
35
-     * free to return other data as well.
36
-     *
37
-     * You are responsible for advancing the reader to the next element. Not
38
-     * doing anything will result in a never-ending loop.
39
-     *
40
-     * If you just want to skip parsing for this element altogether, you can
41
-     * just call $reader->next();
42
-     *
43
-     * $reader->parseInnerTree() will parse the entire sub-tree, and advance to
44
-     * the next element.
45
-     *
46
-     * @return mixed
47
-     */
48
-    public static function xmlDeserialize(Reader $reader)
49
-    {
50
-        $result = [
51
-            'name' => null,
52
-            'test' => 'anyof',
53
-            'is-not-defined' => false,
54
-            'param-filters' => [],
55
-            'text-matches' => [],
56
-        ];
28
+	/**
29
+	 * The deserialize method is called during xml parsing.
30
+	 *
31
+	 * This method is called statically, this is because in theory this method
32
+	 * may be used as a type of constructor, or factory method.
33
+	 *
34
+	 * Often you want to return an instance of the current class, but you are
35
+	 * free to return other data as well.
36
+	 *
37
+	 * You are responsible for advancing the reader to the next element. Not
38
+	 * doing anything will result in a never-ending loop.
39
+	 *
40
+	 * If you just want to skip parsing for this element altogether, you can
41
+	 * just call $reader->next();
42
+	 *
43
+	 * $reader->parseInnerTree() will parse the entire sub-tree, and advance to
44
+	 * the next element.
45
+	 *
46
+	 * @return mixed
47
+	 */
48
+	public static function xmlDeserialize(Reader $reader)
49
+	{
50
+		$result = [
51
+			'name' => null,
52
+			'test' => 'anyof',
53
+			'is-not-defined' => false,
54
+			'param-filters' => [],
55
+			'text-matches' => [],
56
+		];
57 57
 
58
-        $att = $reader->parseAttributes();
59
-        $result['name'] = $att['name'];
58
+		$att = $reader->parseAttributes();
59
+		$result['name'] = $att['name'];
60 60
 
61
-        if (isset($att['test']) && 'allof' === $att['test']) {
62
-            $result['test'] = 'allof';
63
-        }
61
+		if (isset($att['test']) && 'allof' === $att['test']) {
62
+			$result['test'] = 'allof';
63
+		}
64 64
 
65
-        $elems = $reader->parseInnerTree();
65
+		$elems = $reader->parseInnerTree();
66 66
 
67
-        if (is_array($elems)) {
68
-            foreach ($elems as $elem) {
69
-                switch ($elem['name']) {
70
-                case '{'.Plugin::NS_CARDDAV.'}param-filter':
71
-                    $result['param-filters'][] = $elem['value'];
72
-                    break;
73
-                case '{'.Plugin::NS_CARDDAV.'}is-not-defined':
74
-                    $result['is-not-defined'] = true;
75
-                    break;
76
-                case '{'.Plugin::NS_CARDDAV.'}text-match':
77
-                    $matchType = isset($elem['attributes']['match-type']) ? $elem['attributes']['match-type'] : 'contains';
67
+		if (is_array($elems)) {
68
+			foreach ($elems as $elem) {
69
+				switch ($elem['name']) {
70
+				case '{'.Plugin::NS_CARDDAV.'}param-filter':
71
+					$result['param-filters'][] = $elem['value'];
72
+					break;
73
+				case '{'.Plugin::NS_CARDDAV.'}is-not-defined':
74
+					$result['is-not-defined'] = true;
75
+					break;
76
+				case '{'.Plugin::NS_CARDDAV.'}text-match':
77
+					$matchType = isset($elem['attributes']['match-type']) ? $elem['attributes']['match-type'] : 'contains';
78 78
 
79
-                    if (!in_array($matchType, ['contains', 'equals', 'starts-with', 'ends-with'])) {
80
-                        throw new BadRequest('Unknown match-type: '.$matchType);
81
-                    }
82
-                    $result['text-matches'][] = [
83
-                        'negate-condition' => isset($elem['attributes']['negate-condition']) && 'yes' === $elem['attributes']['negate-condition'],
84
-                        'collation' => isset($elem['attributes']['collation']) ? $elem['attributes']['collation'] : 'i;unicode-casemap',
85
-                        'value' => $elem['value'],
86
-                        'match-type' => $matchType,
87
-                    ];
88
-                    break;
89
-            }
90
-            }
91
-        }
79
+					if (!in_array($matchType, ['contains', 'equals', 'starts-with', 'ends-with'])) {
80
+						throw new BadRequest('Unknown match-type: '.$matchType);
81
+					}
82
+					$result['text-matches'][] = [
83
+						'negate-condition' => isset($elem['attributes']['negate-condition']) && 'yes' === $elem['attributes']['negate-condition'],
84
+						'collation' => isset($elem['attributes']['collation']) ? $elem['attributes']['collation'] : 'i;unicode-casemap',
85
+						'value' => $elem['value'],
86
+						'match-type' => $matchType,
87
+					];
88
+					break;
89
+			}
90
+			}
91
+		}
92 92
 
93
-        return $result;
94
-    }
93
+		return $result;
94
+	}
95 95
 }
Please login to merge, or discard this patch.
htdocs/includes/sabre/sabre/dav/lib/CardDAV/Xml/Filter/AddressData.php 1 patch
Indentation   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -25,42 +25,42 @@
 block discarded – undo
25 25
  */
26 26
 class AddressData implements XmlDeserializable
27 27
 {
28
-    /**
29
-     * The deserialize method is called during xml parsing.
30
-     *
31
-     * This method is called statically, this is because in theory this method
32
-     * may be used as a type of constructor, or factory method.
33
-     *
34
-     * Often you want to return an instance of the current class, but you are
35
-     * free to return other data as well.
36
-     *
37
-     * You are responsible for advancing the reader to the next element. Not
38
-     * doing anything will result in a never-ending loop.
39
-     *
40
-     * If you just want to skip parsing for this element altogether, you can
41
-     * just call $reader->next();
42
-     *
43
-     * $reader->parseInnerTree() will parse the entire sub-tree, and advance to
44
-     * the next element.
45
-     *
46
-     * @return mixed
47
-     */
48
-    public static function xmlDeserialize(Reader $reader)
49
-    {
50
-        $result = [
51
-            'contentType' => $reader->getAttribute('content-type') ?: 'text/vcard',
52
-            'version' => $reader->getAttribute('version') ?: '3.0',
53
-        ];
28
+	/**
29
+	 * The deserialize method is called during xml parsing.
30
+	 *
31
+	 * This method is called statically, this is because in theory this method
32
+	 * may be used as a type of constructor, or factory method.
33
+	 *
34
+	 * Often you want to return an instance of the current class, but you are
35
+	 * free to return other data as well.
36
+	 *
37
+	 * You are responsible for advancing the reader to the next element. Not
38
+	 * doing anything will result in a never-ending loop.
39
+	 *
40
+	 * If you just want to skip parsing for this element altogether, you can
41
+	 * just call $reader->next();
42
+	 *
43
+	 * $reader->parseInnerTree() will parse the entire sub-tree, and advance to
44
+	 * the next element.
45
+	 *
46
+	 * @return mixed
47
+	 */
48
+	public static function xmlDeserialize(Reader $reader)
49
+	{
50
+		$result = [
51
+			'contentType' => $reader->getAttribute('content-type') ?: 'text/vcard',
52
+			'version' => $reader->getAttribute('version') ?: '3.0',
53
+		];
54 54
 
55
-        $elems = (array) $reader->parseInnerTree();
56
-        $elems = array_filter($elems, function ($element) {
57
-            return '{urn:ietf:params:xml:ns:carddav}prop' === $element['name'] &&
58
-                isset($element['attributes']['name']);
59
-        });
60
-        $result['addressDataProperties'] = array_map(function ($element) {
61
-            return $element['attributes']['name'];
62
-        }, $elems);
55
+		$elems = (array) $reader->parseInnerTree();
56
+		$elems = array_filter($elems, function ($element) {
57
+			return '{urn:ietf:params:xml:ns:carddav}prop' === $element['name'] &&
58
+				isset($element['attributes']['name']);
59
+		});
60
+		$result['addressDataProperties'] = array_map(function ($element) {
61
+			return $element['attributes']['name'];
62
+		}, $elems);
63 63
 
64
-        return $result;
65
-    }
64
+		return $result;
65
+	}
66 66
 }
Please login to merge, or discard this patch.
includes/sabre/sabre/dav/lib/CardDAV/Xml/Property/SupportedAddressData.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -24,54 +24,54 @@
 block discarded – undo
24 24
  */
25 25
 class SupportedAddressData implements XmlSerializable
26 26
 {
27
-    /**
28
-     * supported versions.
29
-     *
30
-     * @var array
31
-     */
32
-    protected $supportedData = [];
27
+	/**
28
+	 * supported versions.
29
+	 *
30
+	 * @var array
31
+	 */
32
+	protected $supportedData = [];
33 33
 
34
-    /**
35
-     * Creates the property.
36
-     */
37
-    public function __construct(array $supportedData = null)
38
-    {
39
-        if (is_null($supportedData)) {
40
-            $supportedData = [
41
-                ['contentType' => 'text/vcard', 'version' => '3.0'],
42
-                ['contentType' => 'text/vcard', 'version' => '4.0'],
43
-                ['contentType' => 'application/vcard+json', 'version' => '4.0'],
44
-            ];
45
-        }
34
+	/**
35
+	 * Creates the property.
36
+	 */
37
+	public function __construct(array $supportedData = null)
38
+	{
39
+		if (is_null($supportedData)) {
40
+			$supportedData = [
41
+				['contentType' => 'text/vcard', 'version' => '3.0'],
42
+				['contentType' => 'text/vcard', 'version' => '4.0'],
43
+				['contentType' => 'application/vcard+json', 'version' => '4.0'],
44
+			];
45
+		}
46 46
 
47
-        $this->supportedData = $supportedData;
48
-    }
47
+		$this->supportedData = $supportedData;
48
+	}
49 49
 
50
-    /**
51
-     * The xmlSerialize method is called during xml writing.
52
-     *
53
-     * Use the $writer argument to write its own xml serialization.
54
-     *
55
-     * An important note: do _not_ create a parent element. Any element
56
-     * implementing XmlSerializable should only ever write what's considered
57
-     * its 'inner xml'.
58
-     *
59
-     * The parent of the current element is responsible for writing a
60
-     * containing element.
61
-     *
62
-     * This allows serializers to be re-used for different element names.
63
-     *
64
-     * If you are opening new elements, you must also close them again.
65
-     */
66
-    public function xmlSerialize(Writer $writer)
67
-    {
68
-        foreach ($this->supportedData as $supported) {
69
-            $writer->startElement('{'.Plugin::NS_CARDDAV.'}address-data-type');
70
-            $writer->writeAttributes([
71
-                'content-type' => $supported['contentType'],
72
-                'version' => $supported['version'],
73
-                ]);
74
-            $writer->endElement(); // address-data-type
75
-        }
76
-    }
50
+	/**
51
+	 * The xmlSerialize method is called during xml writing.
52
+	 *
53
+	 * Use the $writer argument to write its own xml serialization.
54
+	 *
55
+	 * An important note: do _not_ create a parent element. Any element
56
+	 * implementing XmlSerializable should only ever write what's considered
57
+	 * its 'inner xml'.
58
+	 *
59
+	 * The parent of the current element is responsible for writing a
60
+	 * containing element.
61
+	 *
62
+	 * This allows serializers to be re-used for different element names.
63
+	 *
64
+	 * If you are opening new elements, you must also close them again.
65
+	 */
66
+	public function xmlSerialize(Writer $writer)
67
+	{
68
+		foreach ($this->supportedData as $supported) {
69
+			$writer->startElement('{'.Plugin::NS_CARDDAV.'}address-data-type');
70
+			$writer->writeAttributes([
71
+				'content-type' => $supported['contentType'],
72
+				'version' => $supported['version'],
73
+				]);
74
+			$writer->endElement(); // address-data-type
75
+		}
76
+	}
77 77
 }
Please login to merge, or discard this patch.
includes/sabre/sabre/dav/lib/CardDAV/Xml/Property/SupportedCollationSet.php 1 patch
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -19,26 +19,26 @@
 block discarded – undo
19 19
  */
20 20
 class SupportedCollationSet implements XmlSerializable
21 21
 {
22
-    /**
23
-     * The xmlSerialize method is called during xml writing.
24
-     *
25
-     * Use the $writer argument to write its own xml serialization.
26
-     *
27
-     * An important note: do _not_ create a parent element. Any element
28
-     * implementing XmlSerializable should only ever write what's considered
29
-     * its 'inner xml'.
30
-     *
31
-     * The parent of the current element is responsible for writing a
32
-     * containing element.
33
-     *
34
-     * This allows serializers to be re-used for different element names.
35
-     *
36
-     * If you are opening new elements, you must also close them again.
37
-     */
38
-    public function xmlSerialize(Writer $writer)
39
-    {
40
-        foreach (['i;ascii-casemap', 'i;octet', 'i;unicode-casemap'] as $coll) {
41
-            $writer->writeElement('{urn:ietf:params:xml:ns:carddav}supported-collation', $coll);
42
-        }
43
-    }
22
+	/**
23
+	 * The xmlSerialize method is called during xml writing.
24
+	 *
25
+	 * Use the $writer argument to write its own xml serialization.
26
+	 *
27
+	 * An important note: do _not_ create a parent element. Any element
28
+	 * implementing XmlSerializable should only ever write what's considered
29
+	 * its 'inner xml'.
30
+	 *
31
+	 * The parent of the current element is responsible for writing a
32
+	 * containing element.
33
+	 *
34
+	 * This allows serializers to be re-used for different element names.
35
+	 *
36
+	 * If you are opening new elements, you must also close them again.
37
+	 */
38
+	public function xmlSerialize(Writer $writer)
39
+	{
40
+		foreach (['i;ascii-casemap', 'i;octet', 'i;unicode-casemap'] as $coll) {
41
+			$writer->writeElement('{urn:ietf:params:xml:ns:carddav}supported-collation', $coll);
42
+		}
43
+	}
44 44
 }
Please login to merge, or discard this patch.
htdocs/includes/sabre/sabre/dav/lib/CardDAV/AddressBookHome.php 1 patch
Indentation   +155 added lines, -155 removed lines patch added patch discarded remove patch
@@ -20,159 +20,159 @@
 block discarded – undo
20 20
  */
21 21
 class AddressBookHome extends DAV\Collection implements DAV\IExtendedCollection, DAVACL\IACL
22 22
 {
23
-    use DAVACL\ACLTrait;
24
-
25
-    /**
26
-     * Principal uri.
27
-     *
28
-     * @var array
29
-     */
30
-    protected $principalUri;
31
-
32
-    /**
33
-     * carddavBackend.
34
-     *
35
-     * @var Backend\BackendInterface
36
-     */
37
-    protected $carddavBackend;
38
-
39
-    /**
40
-     * Constructor.
41
-     *
42
-     * @param string $principalUri
43
-     */
44
-    public function __construct(Backend\BackendInterface $carddavBackend, $principalUri)
45
-    {
46
-        $this->carddavBackend = $carddavBackend;
47
-        $this->principalUri = $principalUri;
48
-    }
49
-
50
-    /**
51
-     * Returns the name of this object.
52
-     *
53
-     * @return string
54
-     */
55
-    public function getName()
56
-    {
57
-        list(, $name) = Uri\split($this->principalUri);
58
-
59
-        return $name;
60
-    }
61
-
62
-    /**
63
-     * Updates the name of this object.
64
-     *
65
-     * @param string $name
66
-     */
67
-    public function setName($name)
68
-    {
69
-        throw new DAV\Exception\MethodNotAllowed();
70
-    }
71
-
72
-    /**
73
-     * Deletes this object.
74
-     */
75
-    public function delete()
76
-    {
77
-        throw new DAV\Exception\MethodNotAllowed();
78
-    }
79
-
80
-    /**
81
-     * Returns the last modification date.
82
-     *
83
-     * @return int
84
-     */
85
-    public function getLastModified()
86
-    {
87
-        return null;
88
-    }
89
-
90
-    /**
91
-     * Creates a new file under this object.
92
-     *
93
-     * This is currently not allowed
94
-     *
95
-     * @param string   $filename
96
-     * @param resource $data
97
-     */
98
-    public function createFile($filename, $data = null)
99
-    {
100
-        throw new DAV\Exception\MethodNotAllowed('Creating new files in this collection is not supported');
101
-    }
102
-
103
-    /**
104
-     * Creates a new directory under this object.
105
-     *
106
-     * This is currently not allowed.
107
-     *
108
-     * @param string $filename
109
-     */
110
-    public function createDirectory($filename)
111
-    {
112
-        throw new DAV\Exception\MethodNotAllowed('Creating new collections in this collection is not supported');
113
-    }
114
-
115
-    /**
116
-     * Returns a single addressbook, by name.
117
-     *
118
-     * @param string $name
119
-     *
120
-     * @todo needs optimizing
121
-     *
122
-     * @return AddressBook
123
-     */
124
-    public function getChild($name)
125
-    {
126
-        foreach ($this->getChildren() as $child) {
127
-            if ($name == $child->getName()) {
128
-                return $child;
129
-            }
130
-        }
131
-        throw new DAV\Exception\NotFound('Addressbook with name \''.$name.'\' could not be found');
132
-    }
133
-
134
-    /**
135
-     * Returns a list of addressbooks.
136
-     *
137
-     * @return array
138
-     */
139
-    public function getChildren()
140
-    {
141
-        $addressbooks = $this->carddavBackend->getAddressBooksForUser($this->principalUri);
142
-        $objs = [];
143
-        foreach ($addressbooks as $addressbook) {
144
-            $objs[] = new AddressBook($this->carddavBackend, $addressbook);
145
-        }
146
-
147
-        return $objs;
148
-    }
149
-
150
-    /**
151
-     * Creates a new address book.
152
-     *
153
-     * @param string $name
154
-     *
155
-     * @throws DAV\Exception\InvalidResourceType
156
-     */
157
-    public function createExtendedCollection($name, MkCol $mkCol)
158
-    {
159
-        if (!$mkCol->hasResourceType('{'.Plugin::NS_CARDDAV.'}addressbook')) {
160
-            throw new DAV\Exception\InvalidResourceType('Unknown resourceType for this collection');
161
-        }
162
-        $properties = $mkCol->getRemainingValues();
163
-        $mkCol->setRemainingResultCode(201);
164
-        $this->carddavBackend->createAddressBook($this->principalUri, $name, $properties);
165
-    }
166
-
167
-    /**
168
-     * Returns the owner principal.
169
-     *
170
-     * This must be a url to a principal, or null if there's no owner
171
-     *
172
-     * @return string|null
173
-     */
174
-    public function getOwner()
175
-    {
176
-        return $this->principalUri;
177
-    }
23
+	use DAVACL\ACLTrait;
24
+
25
+	/**
26
+	 * Principal uri.
27
+	 *
28
+	 * @var array
29
+	 */
30
+	protected $principalUri;
31
+
32
+	/**
33
+	 * carddavBackend.
34
+	 *
35
+	 * @var Backend\BackendInterface
36
+	 */
37
+	protected $carddavBackend;
38
+
39
+	/**
40
+	 * Constructor.
41
+	 *
42
+	 * @param string $principalUri
43
+	 */
44
+	public function __construct(Backend\BackendInterface $carddavBackend, $principalUri)
45
+	{
46
+		$this->carddavBackend = $carddavBackend;
47
+		$this->principalUri = $principalUri;
48
+	}
49
+
50
+	/**
51
+	 * Returns the name of this object.
52
+	 *
53
+	 * @return string
54
+	 */
55
+	public function getName()
56
+	{
57
+		list(, $name) = Uri\split($this->principalUri);
58
+
59
+		return $name;
60
+	}
61
+
62
+	/**
63
+	 * Updates the name of this object.
64
+	 *
65
+	 * @param string $name
66
+	 */
67
+	public function setName($name)
68
+	{
69
+		throw new DAV\Exception\MethodNotAllowed();
70
+	}
71
+
72
+	/**
73
+	 * Deletes this object.
74
+	 */
75
+	public function delete()
76
+	{
77
+		throw new DAV\Exception\MethodNotAllowed();
78
+	}
79
+
80
+	/**
81
+	 * Returns the last modification date.
82
+	 *
83
+	 * @return int
84
+	 */
85
+	public function getLastModified()
86
+	{
87
+		return null;
88
+	}
89
+
90
+	/**
91
+	 * Creates a new file under this object.
92
+	 *
93
+	 * This is currently not allowed
94
+	 *
95
+	 * @param string   $filename
96
+	 * @param resource $data
97
+	 */
98
+	public function createFile($filename, $data = null)
99
+	{
100
+		throw new DAV\Exception\MethodNotAllowed('Creating new files in this collection is not supported');
101
+	}
102
+
103
+	/**
104
+	 * Creates a new directory under this object.
105
+	 *
106
+	 * This is currently not allowed.
107
+	 *
108
+	 * @param string $filename
109
+	 */
110
+	public function createDirectory($filename)
111
+	{
112
+		throw new DAV\Exception\MethodNotAllowed('Creating new collections in this collection is not supported');
113
+	}
114
+
115
+	/**
116
+	 * Returns a single addressbook, by name.
117
+	 *
118
+	 * @param string $name
119
+	 *
120
+	 * @todo needs optimizing
121
+	 *
122
+	 * @return AddressBook
123
+	 */
124
+	public function getChild($name)
125
+	{
126
+		foreach ($this->getChildren() as $child) {
127
+			if ($name == $child->getName()) {
128
+				return $child;
129
+			}
130
+		}
131
+		throw new DAV\Exception\NotFound('Addressbook with name \''.$name.'\' could not be found');
132
+	}
133
+
134
+	/**
135
+	 * Returns a list of addressbooks.
136
+	 *
137
+	 * @return array
138
+	 */
139
+	public function getChildren()
140
+	{
141
+		$addressbooks = $this->carddavBackend->getAddressBooksForUser($this->principalUri);
142
+		$objs = [];
143
+		foreach ($addressbooks as $addressbook) {
144
+			$objs[] = new AddressBook($this->carddavBackend, $addressbook);
145
+		}
146
+
147
+		return $objs;
148
+	}
149
+
150
+	/**
151
+	 * Creates a new address book.
152
+	 *
153
+	 * @param string $name
154
+	 *
155
+	 * @throws DAV\Exception\InvalidResourceType
156
+	 */
157
+	public function createExtendedCollection($name, MkCol $mkCol)
158
+	{
159
+		if (!$mkCol->hasResourceType('{'.Plugin::NS_CARDDAV.'}addressbook')) {
160
+			throw new DAV\Exception\InvalidResourceType('Unknown resourceType for this collection');
161
+		}
162
+		$properties = $mkCol->getRemainingValues();
163
+		$mkCol->setRemainingResultCode(201);
164
+		$this->carddavBackend->createAddressBook($this->principalUri, $name, $properties);
165
+	}
166
+
167
+	/**
168
+	 * Returns the owner principal.
169
+	 *
170
+	 * This must be a url to a principal, or null if there's no owner
171
+	 *
172
+	 * @return string|null
173
+	 */
174
+	public function getOwner()
175
+	{
176
+		return $this->principalUri;
177
+	}
178 178
 }
Please login to merge, or discard this patch.
htdocs/includes/sabre/sabre/dav/lib/CardDAV/Card.php 1 patch
Indentation   +183 added lines, -183 removed lines patch added patch discarded remove patch
@@ -16,187 +16,187 @@
 block discarded – undo
16 16
  */
17 17
 class Card extends DAV\File implements ICard, DAVACL\IACL
18 18
 {
19
-    use DAVACL\ACLTrait;
20
-
21
-    /**
22
-     * CardDAV backend.
23
-     *
24
-     * @var Backend\BackendInterface
25
-     */
26
-    protected $carddavBackend;
27
-
28
-    /**
29
-     * Array with information about this Card.
30
-     *
31
-     * @var array
32
-     */
33
-    protected $cardData;
34
-
35
-    /**
36
-     * Array with information about the containing addressbook.
37
-     *
38
-     * @var array
39
-     */
40
-    protected $addressBookInfo;
41
-
42
-    /**
43
-     * Constructor.
44
-     */
45
-    public function __construct(Backend\BackendInterface $carddavBackend, array $addressBookInfo, array $cardData)
46
-    {
47
-        $this->carddavBackend = $carddavBackend;
48
-        $this->addressBookInfo = $addressBookInfo;
49
-        $this->cardData = $cardData;
50
-    }
51
-
52
-    /**
53
-     * Returns the uri for this object.
54
-     *
55
-     * @return string
56
-     */
57
-    public function getName()
58
-    {
59
-        return $this->cardData['uri'];
60
-    }
61
-
62
-    /**
63
-     * Returns the VCard-formatted object.
64
-     *
65
-     * @return string
66
-     */
67
-    public function get()
68
-    {
69
-        // Pre-populating 'carddata' is optional. If we don't yet have it
70
-        // already, we fetch it from the backend.
71
-        if (!isset($this->cardData['carddata'])) {
72
-            $this->cardData = $this->carddavBackend->getCard($this->addressBookInfo['id'], $this->cardData['uri']);
73
-        }
74
-
75
-        return $this->cardData['carddata'];
76
-    }
77
-
78
-    /**
79
-     * Updates the VCard-formatted object.
80
-     *
81
-     * @param string $cardData
82
-     *
83
-     * @return string|null
84
-     */
85
-    public function put($cardData)
86
-    {
87
-        if (is_resource($cardData)) {
88
-            $cardData = stream_get_contents($cardData);
89
-        }
90
-
91
-        // Converting to UTF-8, if needed
92
-        $cardData = DAV\StringUtil::ensureUTF8($cardData);
93
-
94
-        $etag = $this->carddavBackend->updateCard($this->addressBookInfo['id'], $this->cardData['uri'], $cardData);
95
-        $this->cardData['carddata'] = $cardData;
96
-        $this->cardData['etag'] = $etag;
97
-
98
-        return $etag;
99
-    }
100
-
101
-    /**
102
-     * Deletes the card.
103
-     */
104
-    public function delete()
105
-    {
106
-        $this->carddavBackend->deleteCard($this->addressBookInfo['id'], $this->cardData['uri']);
107
-    }
108
-
109
-    /**
110
-     * Returns the mime content-type.
111
-     *
112
-     * @return string
113
-     */
114
-    public function getContentType()
115
-    {
116
-        return 'text/vcard; charset=utf-8';
117
-    }
118
-
119
-    /**
120
-     * Returns an ETag for this object.
121
-     *
122
-     * @return string
123
-     */
124
-    public function getETag()
125
-    {
126
-        if (isset($this->cardData['etag'])) {
127
-            return $this->cardData['etag'];
128
-        } else {
129
-            $data = $this->get();
130
-            if (is_string($data)) {
131
-                return '"'.md5($data).'"';
132
-            } else {
133
-                // We refuse to calculate the md5 if it's a stream.
134
-                return null;
135
-            }
136
-        }
137
-    }
138
-
139
-    /**
140
-     * Returns the last modification date as a unix timestamp.
141
-     *
142
-     * @return int
143
-     */
144
-    public function getLastModified()
145
-    {
146
-        return isset($this->cardData['lastmodified']) ? $this->cardData['lastmodified'] : null;
147
-    }
148
-
149
-    /**
150
-     * Returns the size of this object in bytes.
151
-     *
152
-     * @return int
153
-     */
154
-    public function getSize()
155
-    {
156
-        if (array_key_exists('size', $this->cardData)) {
157
-            return $this->cardData['size'];
158
-        } else {
159
-            return strlen($this->get());
160
-        }
161
-    }
162
-
163
-    /**
164
-     * Returns the owner principal.
165
-     *
166
-     * This must be a url to a principal, or null if there's no owner
167
-     *
168
-     * @return string|null
169
-     */
170
-    public function getOwner()
171
-    {
172
-        return $this->addressBookInfo['principaluri'];
173
-    }
174
-
175
-    /**
176
-     * Returns a list of ACE's for this node.
177
-     *
178
-     * Each ACE has the following properties:
179
-     *   * 'privilege', a string such as {DAV:}read or {DAV:}write. These are
180
-     *     currently the only supported privileges
181
-     *   * 'principal', a url to the principal who owns the node
182
-     *   * 'protected' (optional), indicating that this ACE is not allowed to
183
-     *      be updated.
184
-     *
185
-     * @return array
186
-     */
187
-    public function getACL()
188
-    {
189
-        // An alternative acl may be specified through the cardData array.
190
-        if (isset($this->cardData['acl'])) {
191
-            return $this->cardData['acl'];
192
-        }
193
-
194
-        return [
195
-            [
196
-                'privilege' => '{DAV:}all',
197
-                'principal' => $this->addressBookInfo['principaluri'],
198
-                'protected' => true,
199
-            ],
200
-        ];
201
-    }
19
+	use DAVACL\ACLTrait;
20
+
21
+	/**
22
+	 * CardDAV backend.
23
+	 *
24
+	 * @var Backend\BackendInterface
25
+	 */
26
+	protected $carddavBackend;
27
+
28
+	/**
29
+	 * Array with information about this Card.
30
+	 *
31
+	 * @var array
32
+	 */
33
+	protected $cardData;
34
+
35
+	/**
36
+	 * Array with information about the containing addressbook.
37
+	 *
38
+	 * @var array
39
+	 */
40
+	protected $addressBookInfo;
41
+
42
+	/**
43
+	 * Constructor.
44
+	 */
45
+	public function __construct(Backend\BackendInterface $carddavBackend, array $addressBookInfo, array $cardData)
46
+	{
47
+		$this->carddavBackend = $carddavBackend;
48
+		$this->addressBookInfo = $addressBookInfo;
49
+		$this->cardData = $cardData;
50
+	}
51
+
52
+	/**
53
+	 * Returns the uri for this object.
54
+	 *
55
+	 * @return string
56
+	 */
57
+	public function getName()
58
+	{
59
+		return $this->cardData['uri'];
60
+	}
61
+
62
+	/**
63
+	 * Returns the VCard-formatted object.
64
+	 *
65
+	 * @return string
66
+	 */
67
+	public function get()
68
+	{
69
+		// Pre-populating 'carddata' is optional. If we don't yet have it
70
+		// already, we fetch it from the backend.
71
+		if (!isset($this->cardData['carddata'])) {
72
+			$this->cardData = $this->carddavBackend->getCard($this->addressBookInfo['id'], $this->cardData['uri']);
73
+		}
74
+
75
+		return $this->cardData['carddata'];
76
+	}
77
+
78
+	/**
79
+	 * Updates the VCard-formatted object.
80
+	 *
81
+	 * @param string $cardData
82
+	 *
83
+	 * @return string|null
84
+	 */
85
+	public function put($cardData)
86
+	{
87
+		if (is_resource($cardData)) {
88
+			$cardData = stream_get_contents($cardData);
89
+		}
90
+
91
+		// Converting to UTF-8, if needed
92
+		$cardData = DAV\StringUtil::ensureUTF8($cardData);
93
+
94
+		$etag = $this->carddavBackend->updateCard($this->addressBookInfo['id'], $this->cardData['uri'], $cardData);
95
+		$this->cardData['carddata'] = $cardData;
96
+		$this->cardData['etag'] = $etag;
97
+
98
+		return $etag;
99
+	}
100
+
101
+	/**
102
+	 * Deletes the card.
103
+	 */
104
+	public function delete()
105
+	{
106
+		$this->carddavBackend->deleteCard($this->addressBookInfo['id'], $this->cardData['uri']);
107
+	}
108
+
109
+	/**
110
+	 * Returns the mime content-type.
111
+	 *
112
+	 * @return string
113
+	 */
114
+	public function getContentType()
115
+	{
116
+		return 'text/vcard; charset=utf-8';
117
+	}
118
+
119
+	/**
120
+	 * Returns an ETag for this object.
121
+	 *
122
+	 * @return string
123
+	 */
124
+	public function getETag()
125
+	{
126
+		if (isset($this->cardData['etag'])) {
127
+			return $this->cardData['etag'];
128
+		} else {
129
+			$data = $this->get();
130
+			if (is_string($data)) {
131
+				return '"'.md5($data).'"';
132
+			} else {
133
+				// We refuse to calculate the md5 if it's a stream.
134
+				return null;
135
+			}
136
+		}
137
+	}
138
+
139
+	/**
140
+	 * Returns the last modification date as a unix timestamp.
141
+	 *
142
+	 * @return int
143
+	 */
144
+	public function getLastModified()
145
+	{
146
+		return isset($this->cardData['lastmodified']) ? $this->cardData['lastmodified'] : null;
147
+	}
148
+
149
+	/**
150
+	 * Returns the size of this object in bytes.
151
+	 *
152
+	 * @return int
153
+	 */
154
+	public function getSize()
155
+	{
156
+		if (array_key_exists('size', $this->cardData)) {
157
+			return $this->cardData['size'];
158
+		} else {
159
+			return strlen($this->get());
160
+		}
161
+	}
162
+
163
+	/**
164
+	 * Returns the owner principal.
165
+	 *
166
+	 * This must be a url to a principal, or null if there's no owner
167
+	 *
168
+	 * @return string|null
169
+	 */
170
+	public function getOwner()
171
+	{
172
+		return $this->addressBookInfo['principaluri'];
173
+	}
174
+
175
+	/**
176
+	 * Returns a list of ACE's for this node.
177
+	 *
178
+	 * Each ACE has the following properties:
179
+	 *   * 'privilege', a string such as {DAV:}read or {DAV:}write. These are
180
+	 *     currently the only supported privileges
181
+	 *   * 'principal', a url to the principal who owns the node
182
+	 *   * 'protected' (optional), indicating that this ACE is not allowed to
183
+	 *      be updated.
184
+	 *
185
+	 * @return array
186
+	 */
187
+	public function getACL()
188
+	{
189
+		// An alternative acl may be specified through the cardData array.
190
+		if (isset($this->cardData['acl'])) {
191
+			return $this->cardData['acl'];
192
+		}
193
+
194
+		return [
195
+			[
196
+				'privilege' => '{DAV:}all',
197
+				'principal' => $this->addressBookInfo['principaluri'],
198
+				'protected' => true,
199
+			],
200
+		];
201
+	}
202 202
 }
Please login to merge, or discard this patch.
htdocs/includes/sabre/sabre/dav/lib/CardDAV/AddressBook.php 1 patch
Indentation   +290 added lines, -290 removed lines patch added patch discarded remove patch
@@ -18,318 +18,318 @@
 block discarded – undo
18 18
  */
19 19
 class AddressBook extends DAV\Collection implements IAddressBook, DAV\IProperties, DAVACL\IACL, DAV\Sync\ISyncCollection, DAV\IMultiGet
20 20
 {
21
-    use DAVACL\ACLTrait;
21
+	use DAVACL\ACLTrait;
22 22
 
23
-    /**
24
-     * This is an array with addressbook information.
25
-     *
26
-     * @var array
27
-     */
28
-    protected $addressBookInfo;
23
+	/**
24
+	 * This is an array with addressbook information.
25
+	 *
26
+	 * @var array
27
+	 */
28
+	protected $addressBookInfo;
29 29
 
30
-    /**
31
-     * CardDAV backend.
32
-     *
33
-     * @var Backend\BackendInterface
34
-     */
35
-    protected $carddavBackend;
30
+	/**
31
+	 * CardDAV backend.
32
+	 *
33
+	 * @var Backend\BackendInterface
34
+	 */
35
+	protected $carddavBackend;
36 36
 
37
-    /**
38
-     * Constructor.
39
-     */
40
-    public function __construct(Backend\BackendInterface $carddavBackend, array $addressBookInfo)
41
-    {
42
-        $this->carddavBackend = $carddavBackend;
43
-        $this->addressBookInfo = $addressBookInfo;
44
-    }
37
+	/**
38
+	 * Constructor.
39
+	 */
40
+	public function __construct(Backend\BackendInterface $carddavBackend, array $addressBookInfo)
41
+	{
42
+		$this->carddavBackend = $carddavBackend;
43
+		$this->addressBookInfo = $addressBookInfo;
44
+	}
45 45
 
46
-    /**
47
-     * Returns the name of the addressbook.
48
-     *
49
-     * @return string
50
-     */
51
-    public function getName()
52
-    {
53
-        return $this->addressBookInfo['uri'];
54
-    }
46
+	/**
47
+	 * Returns the name of the addressbook.
48
+	 *
49
+	 * @return string
50
+	 */
51
+	public function getName()
52
+	{
53
+		return $this->addressBookInfo['uri'];
54
+	}
55 55
 
56
-    /**
57
-     * Returns a card.
58
-     *
59
-     * @param string $name
60
-     *
61
-     * @return Card
62
-     */
63
-    public function getChild($name)
64
-    {
65
-        $obj = $this->carddavBackend->getCard($this->addressBookInfo['id'], $name);
66
-        if (!$obj) {
67
-            throw new DAV\Exception\NotFound('Card not found');
68
-        }
56
+	/**
57
+	 * Returns a card.
58
+	 *
59
+	 * @param string $name
60
+	 *
61
+	 * @return Card
62
+	 */
63
+	public function getChild($name)
64
+	{
65
+		$obj = $this->carddavBackend->getCard($this->addressBookInfo['id'], $name);
66
+		if (!$obj) {
67
+			throw new DAV\Exception\NotFound('Card not found');
68
+		}
69 69
 
70
-        return new Card($this->carddavBackend, $this->addressBookInfo, $obj);
71
-    }
70
+		return new Card($this->carddavBackend, $this->addressBookInfo, $obj);
71
+	}
72 72
 
73
-    /**
74
-     * Returns the full list of cards.
75
-     *
76
-     * @return array
77
-     */
78
-    public function getChildren()
79
-    {
80
-        $objs = $this->carddavBackend->getCards($this->addressBookInfo['id']);
81
-        $children = [];
82
-        foreach ($objs as $obj) {
83
-            $obj['acl'] = $this->getChildACL();
84
-            $children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
85
-        }
73
+	/**
74
+	 * Returns the full list of cards.
75
+	 *
76
+	 * @return array
77
+	 */
78
+	public function getChildren()
79
+	{
80
+		$objs = $this->carddavBackend->getCards($this->addressBookInfo['id']);
81
+		$children = [];
82
+		foreach ($objs as $obj) {
83
+			$obj['acl'] = $this->getChildACL();
84
+			$children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
85
+		}
86 86
 
87
-        return $children;
88
-    }
87
+		return $children;
88
+	}
89 89
 
90
-    /**
91
-     * This method receives a list of paths in it's first argument.
92
-     * It must return an array with Node objects.
93
-     *
94
-     * If any children are not found, you do not have to return them.
95
-     *
96
-     * @param string[] $paths
97
-     *
98
-     * @return array
99
-     */
100
-    public function getMultipleChildren(array $paths)
101
-    {
102
-        $objs = $this->carddavBackend->getMultipleCards($this->addressBookInfo['id'], $paths);
103
-        $children = [];
104
-        foreach ($objs as $obj) {
105
-            $obj['acl'] = $this->getChildACL();
106
-            $children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
107
-        }
90
+	/**
91
+	 * This method receives a list of paths in it's first argument.
92
+	 * It must return an array with Node objects.
93
+	 *
94
+	 * If any children are not found, you do not have to return them.
95
+	 *
96
+	 * @param string[] $paths
97
+	 *
98
+	 * @return array
99
+	 */
100
+	public function getMultipleChildren(array $paths)
101
+	{
102
+		$objs = $this->carddavBackend->getMultipleCards($this->addressBookInfo['id'], $paths);
103
+		$children = [];
104
+		foreach ($objs as $obj) {
105
+			$obj['acl'] = $this->getChildACL();
106
+			$children[] = new Card($this->carddavBackend, $this->addressBookInfo, $obj);
107
+		}
108 108
 
109
-        return $children;
110
-    }
109
+		return $children;
110
+	}
111 111
 
112
-    /**
113
-     * Creates a new directory.
114
-     *
115
-     * We actually block this, as subdirectories are not allowed in addressbooks.
116
-     *
117
-     * @param string $name
118
-     */
119
-    public function createDirectory($name)
120
-    {
121
-        throw new DAV\Exception\MethodNotAllowed('Creating collections in addressbooks is not allowed');
122
-    }
112
+	/**
113
+	 * Creates a new directory.
114
+	 *
115
+	 * We actually block this, as subdirectories are not allowed in addressbooks.
116
+	 *
117
+	 * @param string $name
118
+	 */
119
+	public function createDirectory($name)
120
+	{
121
+		throw new DAV\Exception\MethodNotAllowed('Creating collections in addressbooks is not allowed');
122
+	}
123 123
 
124
-    /**
125
-     * Creates a new file.
126
-     *
127
-     * The contents of the new file must be a valid VCARD.
128
-     *
129
-     * This method may return an ETag.
130
-     *
131
-     * @param string   $name
132
-     * @param resource $vcardData
133
-     *
134
-     * @return string|null
135
-     */
136
-    public function createFile($name, $vcardData = null)
137
-    {
138
-        if (is_resource($vcardData)) {
139
-            $vcardData = stream_get_contents($vcardData);
140
-        }
141
-        // Converting to UTF-8, if needed
142
-        $vcardData = DAV\StringUtil::ensureUTF8($vcardData);
124
+	/**
125
+	 * Creates a new file.
126
+	 *
127
+	 * The contents of the new file must be a valid VCARD.
128
+	 *
129
+	 * This method may return an ETag.
130
+	 *
131
+	 * @param string   $name
132
+	 * @param resource $vcardData
133
+	 *
134
+	 * @return string|null
135
+	 */
136
+	public function createFile($name, $vcardData = null)
137
+	{
138
+		if (is_resource($vcardData)) {
139
+			$vcardData = stream_get_contents($vcardData);
140
+		}
141
+		// Converting to UTF-8, if needed
142
+		$vcardData = DAV\StringUtil::ensureUTF8($vcardData);
143 143
 
144
-        return $this->carddavBackend->createCard($this->addressBookInfo['id'], $name, $vcardData);
145
-    }
144
+		return $this->carddavBackend->createCard($this->addressBookInfo['id'], $name, $vcardData);
145
+	}
146 146
 
147
-    /**
148
-     * Deletes the entire addressbook.
149
-     */
150
-    public function delete()
151
-    {
152
-        $this->carddavBackend->deleteAddressBook($this->addressBookInfo['id']);
153
-    }
147
+	/**
148
+	 * Deletes the entire addressbook.
149
+	 */
150
+	public function delete()
151
+	{
152
+		$this->carddavBackend->deleteAddressBook($this->addressBookInfo['id']);
153
+	}
154 154
 
155
-    /**
156
-     * Renames the addressbook.
157
-     *
158
-     * @param string $newName
159
-     */
160
-    public function setName($newName)
161
-    {
162
-        throw new DAV\Exception\MethodNotAllowed('Renaming addressbooks is not yet supported');
163
-    }
155
+	/**
156
+	 * Renames the addressbook.
157
+	 *
158
+	 * @param string $newName
159
+	 */
160
+	public function setName($newName)
161
+	{
162
+		throw new DAV\Exception\MethodNotAllowed('Renaming addressbooks is not yet supported');
163
+	}
164 164
 
165
-    /**
166
-     * Returns the last modification date as a unix timestamp.
167
-     */
168
-    public function getLastModified()
169
-    {
170
-        return null;
171
-    }
165
+	/**
166
+	 * Returns the last modification date as a unix timestamp.
167
+	 */
168
+	public function getLastModified()
169
+	{
170
+		return null;
171
+	}
172 172
 
173
-    /**
174
-     * Updates properties on this node.
175
-     *
176
-     * This method received a PropPatch object, which contains all the
177
-     * information about the update.
178
-     *
179
-     * To update specific properties, call the 'handle' method on this object.
180
-     * Read the PropPatch documentation for more information.
181
-     */
182
-    public function propPatch(DAV\PropPatch $propPatch)
183
-    {
184
-        return $this->carddavBackend->updateAddressBook($this->addressBookInfo['id'], $propPatch);
185
-    }
173
+	/**
174
+	 * Updates properties on this node.
175
+	 *
176
+	 * This method received a PropPatch object, which contains all the
177
+	 * information about the update.
178
+	 *
179
+	 * To update specific properties, call the 'handle' method on this object.
180
+	 * Read the PropPatch documentation for more information.
181
+	 */
182
+	public function propPatch(DAV\PropPatch $propPatch)
183
+	{
184
+		return $this->carddavBackend->updateAddressBook($this->addressBookInfo['id'], $propPatch);
185
+	}
186 186
 
187
-    /**
188
-     * Returns a list of properties for this nodes.
189
-     *
190
-     * The properties list is a list of propertynames the client requested,
191
-     * encoded in clark-notation {xmlnamespace}tagname
192
-     *
193
-     * If the array is empty, it means 'all properties' were requested.
194
-     *
195
-     * @param array $properties
196
-     *
197
-     * @return array
198
-     */
199
-    public function getProperties($properties)
200
-    {
201
-        $response = [];
202
-        foreach ($properties as $propertyName) {
203
-            if (isset($this->addressBookInfo[$propertyName])) {
204
-                $response[$propertyName] = $this->addressBookInfo[$propertyName];
205
-            }
206
-        }
187
+	/**
188
+	 * Returns a list of properties for this nodes.
189
+	 *
190
+	 * The properties list is a list of propertynames the client requested,
191
+	 * encoded in clark-notation {xmlnamespace}tagname
192
+	 *
193
+	 * If the array is empty, it means 'all properties' were requested.
194
+	 *
195
+	 * @param array $properties
196
+	 *
197
+	 * @return array
198
+	 */
199
+	public function getProperties($properties)
200
+	{
201
+		$response = [];
202
+		foreach ($properties as $propertyName) {
203
+			if (isset($this->addressBookInfo[$propertyName])) {
204
+				$response[$propertyName] = $this->addressBookInfo[$propertyName];
205
+			}
206
+		}
207 207
 
208
-        return $response;
209
-    }
208
+		return $response;
209
+	}
210 210
 
211
-    /**
212
-     * Returns the owner principal.
213
-     *
214
-     * This must be a url to a principal, or null if there's no owner
215
-     *
216
-     * @return string|null
217
-     */
218
-    public function getOwner()
219
-    {
220
-        return $this->addressBookInfo['principaluri'];
221
-    }
211
+	/**
212
+	 * Returns the owner principal.
213
+	 *
214
+	 * This must be a url to a principal, or null if there's no owner
215
+	 *
216
+	 * @return string|null
217
+	 */
218
+	public function getOwner()
219
+	{
220
+		return $this->addressBookInfo['principaluri'];
221
+	}
222 222
 
223
-    /**
224
-     * This method returns the ACL's for card nodes in this address book.
225
-     * The result of this method automatically gets passed to the
226
-     * card nodes in this address book.
227
-     *
228
-     * @return array
229
-     */
230
-    public function getChildACL()
231
-    {
232
-        return [
233
-            [
234
-                'privilege' => '{DAV:}all',
235
-                'principal' => $this->getOwner(),
236
-                'protected' => true,
237
-            ],
238
-        ];
239
-    }
223
+	/**
224
+	 * This method returns the ACL's for card nodes in this address book.
225
+	 * The result of this method automatically gets passed to the
226
+	 * card nodes in this address book.
227
+	 *
228
+	 * @return array
229
+	 */
230
+	public function getChildACL()
231
+	{
232
+		return [
233
+			[
234
+				'privilege' => '{DAV:}all',
235
+				'principal' => $this->getOwner(),
236
+				'protected' => true,
237
+			],
238
+		];
239
+	}
240 240
 
241
-    /**
242
-     * This method returns the current sync-token for this collection.
243
-     * This can be any string.
244
-     *
245
-     * If null is returned from this function, the plugin assumes there's no
246
-     * sync information available.
247
-     *
248
-     * @return string|null
249
-     */
250
-    public function getSyncToken()
251
-    {
252
-        if (
253
-            $this->carddavBackend instanceof Backend\SyncSupport &&
254
-            isset($this->addressBookInfo['{DAV:}sync-token'])
255
-        ) {
256
-            return $this->addressBookInfo['{DAV:}sync-token'];
257
-        }
258
-        if (
259
-            $this->carddavBackend instanceof Backend\SyncSupport &&
260
-            isset($this->addressBookInfo['{http://sabredav.org/ns}sync-token'])
261
-        ) {
262
-            return $this->addressBookInfo['{http://sabredav.org/ns}sync-token'];
263
-        }
264
-    }
241
+	/**
242
+	 * This method returns the current sync-token for this collection.
243
+	 * This can be any string.
244
+	 *
245
+	 * If null is returned from this function, the plugin assumes there's no
246
+	 * sync information available.
247
+	 *
248
+	 * @return string|null
249
+	 */
250
+	public function getSyncToken()
251
+	{
252
+		if (
253
+			$this->carddavBackend instanceof Backend\SyncSupport &&
254
+			isset($this->addressBookInfo['{DAV:}sync-token'])
255
+		) {
256
+			return $this->addressBookInfo['{DAV:}sync-token'];
257
+		}
258
+		if (
259
+			$this->carddavBackend instanceof Backend\SyncSupport &&
260
+			isset($this->addressBookInfo['{http://sabredav.org/ns}sync-token'])
261
+		) {
262
+			return $this->addressBookInfo['{http://sabredav.org/ns}sync-token'];
263
+		}
264
+	}
265 265
 
266
-    /**
267
-     * The getChanges method returns all the changes that have happened, since
268
-     * the specified syncToken and the current collection.
269
-     *
270
-     * This function should return an array, such as the following:
271
-     *
272
-     * [
273
-     *   'syncToken' => 'The current synctoken',
274
-     *   'added'   => [
275
-     *      'new.txt',
276
-     *   ],
277
-     *   'modified'   => [
278
-     *      'modified.txt',
279
-     *   ],
280
-     *   'deleted' => [
281
-     *      'foo.php.bak',
282
-     *      'old.txt'
283
-     *   ]
284
-     * ];
285
-     *
286
-     * The syncToken property should reflect the *current* syncToken of the
287
-     * collection, as reported getSyncToken(). This is needed here too, to
288
-     * ensure the operation is atomic.
289
-     *
290
-     * If the syncToken is specified as null, this is an initial sync, and all
291
-     * members should be reported.
292
-     *
293
-     * The modified property is an array of nodenames that have changed since
294
-     * the last token.
295
-     *
296
-     * The deleted property is an array with nodenames, that have been deleted
297
-     * from collection.
298
-     *
299
-     * The second argument is basically the 'depth' of the report. If it's 1,
300
-     * you only have to report changes that happened only directly in immediate
301
-     * descendants. If it's 2, it should also include changes from the nodes
302
-     * below the child collections. (grandchildren)
303
-     *
304
-     * The third (optional) argument allows a client to specify how many
305
-     * results should be returned at most. If the limit is not specified, it
306
-     * should be treated as infinite.
307
-     *
308
-     * If the limit (infinite or not) is higher than you're willing to return,
309
-     * you should throw a Sabre\DAV\Exception\TooMuchMatches() exception.
310
-     *
311
-     * If the syncToken is expired (due to data cleanup) or unknown, you must
312
-     * return null.
313
-     *
314
-     * The limit is 'suggestive'. You are free to ignore it.
315
-     *
316
-     * @param string $syncToken
317
-     * @param int    $syncLevel
318
-     * @param int    $limit
319
-     *
320
-     * @return array
321
-     */
322
-    public function getChanges($syncToken, $syncLevel, $limit = null)
323
-    {
324
-        if (!$this->carddavBackend instanceof Backend\SyncSupport) {
325
-            return null;
326
-        }
266
+	/**
267
+	 * The getChanges method returns all the changes that have happened, since
268
+	 * the specified syncToken and the current collection.
269
+	 *
270
+	 * This function should return an array, such as the following:
271
+	 *
272
+	 * [
273
+	 *   'syncToken' => 'The current synctoken',
274
+	 *   'added'   => [
275
+	 *      'new.txt',
276
+	 *   ],
277
+	 *   'modified'   => [
278
+	 *      'modified.txt',
279
+	 *   ],
280
+	 *   'deleted' => [
281
+	 *      'foo.php.bak',
282
+	 *      'old.txt'
283
+	 *   ]
284
+	 * ];
285
+	 *
286
+	 * The syncToken property should reflect the *current* syncToken of the
287
+	 * collection, as reported getSyncToken(). This is needed here too, to
288
+	 * ensure the operation is atomic.
289
+	 *
290
+	 * If the syncToken is specified as null, this is an initial sync, and all
291
+	 * members should be reported.
292
+	 *
293
+	 * The modified property is an array of nodenames that have changed since
294
+	 * the last token.
295
+	 *
296
+	 * The deleted property is an array with nodenames, that have been deleted
297
+	 * from collection.
298
+	 *
299
+	 * The second argument is basically the 'depth' of the report. If it's 1,
300
+	 * you only have to report changes that happened only directly in immediate
301
+	 * descendants. If it's 2, it should also include changes from the nodes
302
+	 * below the child collections. (grandchildren)
303
+	 *
304
+	 * The third (optional) argument allows a client to specify how many
305
+	 * results should be returned at most. If the limit is not specified, it
306
+	 * should be treated as infinite.
307
+	 *
308
+	 * If the limit (infinite or not) is higher than you're willing to return,
309
+	 * you should throw a Sabre\DAV\Exception\TooMuchMatches() exception.
310
+	 *
311
+	 * If the syncToken is expired (due to data cleanup) or unknown, you must
312
+	 * return null.
313
+	 *
314
+	 * The limit is 'suggestive'. You are free to ignore it.
315
+	 *
316
+	 * @param string $syncToken
317
+	 * @param int    $syncLevel
318
+	 * @param int    $limit
319
+	 *
320
+	 * @return array
321
+	 */
322
+	public function getChanges($syncToken, $syncLevel, $limit = null)
323
+	{
324
+		if (!$this->carddavBackend instanceof Backend\SyncSupport) {
325
+			return null;
326
+		}
327 327
 
328
-        return $this->carddavBackend->getChangesForAddressBook(
329
-            $this->addressBookInfo['id'],
330
-            $syncToken,
331
-            $syncLevel,
332
-            $limit
333
-        );
334
-    }
328
+		return $this->carddavBackend->getChangesForAddressBook(
329
+			$this->addressBookInfo['id'],
330
+			$syncToken,
331
+			$syncLevel,
332
+			$limit
333
+		);
334
+	}
335 335
 }
Please login to merge, or discard this patch.
htdocs/includes/sabre/sabre/dav/lib/DAVACL/IACL.php 1 patch
Indentation   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -17,56 +17,56 @@
 block discarded – undo
17 17
  */
18 18
 interface IACL extends DAV\INode
19 19
 {
20
-    /**
21
-     * Returns the owner principal.
22
-     *
23
-     * This must be a url to a principal, or null if there's no owner
24
-     *
25
-     * @return string|null
26
-     */
27
-    public function getOwner();
20
+	/**
21
+	 * Returns the owner principal.
22
+	 *
23
+	 * This must be a url to a principal, or null if there's no owner
24
+	 *
25
+	 * @return string|null
26
+	 */
27
+	public function getOwner();
28 28
 
29
-    /**
30
-     * Returns a group principal.
31
-     *
32
-     * This must be a url to a principal, or null if there's no owner
33
-     *
34
-     * @return string|null
35
-     */
36
-    public function getGroup();
29
+	/**
30
+	 * Returns a group principal.
31
+	 *
32
+	 * This must be a url to a principal, or null if there's no owner
33
+	 *
34
+	 * @return string|null
35
+	 */
36
+	public function getGroup();
37 37
 
38
-    /**
39
-     * Returns a list of ACE's for this node.
40
-     *
41
-     * Each ACE has the following properties:
42
-     *   * 'privilege', a string such as {DAV:}read or {DAV:}write. These are
43
-     *     currently the only supported privileges
44
-     *   * 'principal', a url to the principal who owns the node
45
-     *   * 'protected' (optional), indicating that this ACE is not allowed to
46
-     *      be updated.
47
-     *
48
-     * @return array
49
-     */
50
-    public function getACL();
38
+	/**
39
+	 * Returns a list of ACE's for this node.
40
+	 *
41
+	 * Each ACE has the following properties:
42
+	 *   * 'privilege', a string such as {DAV:}read or {DAV:}write. These are
43
+	 *     currently the only supported privileges
44
+	 *   * 'principal', a url to the principal who owns the node
45
+	 *   * 'protected' (optional), indicating that this ACE is not allowed to
46
+	 *      be updated.
47
+	 *
48
+	 * @return array
49
+	 */
50
+	public function getACL();
51 51
 
52
-    /**
53
-     * Updates the ACL.
54
-     *
55
-     * This method will receive a list of new ACE's as an array argument.
56
-     */
57
-    public function setACL(array $acl);
52
+	/**
53
+	 * Updates the ACL.
54
+	 *
55
+	 * This method will receive a list of new ACE's as an array argument.
56
+	 */
57
+	public function setACL(array $acl);
58 58
 
59
-    /**
60
-     * Returns the list of supported privileges for this node.
61
-     *
62
-     * The returned data structure is a list of nested privileges.
63
-     * See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
64
-     * standard structure.
65
-     *
66
-     * If null is returned from this method, the default privilege set is used,
67
-     * which is fine for most common usecases.
68
-     *
69
-     * @return array|null
70
-     */
71
-    public function getSupportedPrivilegeSet();
59
+	/**
60
+	 * Returns the list of supported privileges for this node.
61
+	 *
62
+	 * The returned data structure is a list of nested privileges.
63
+	 * See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
64
+	 * standard structure.
65
+	 *
66
+	 * If null is returned from this method, the default privilege set is used,
67
+	 * which is fine for most common usecases.
68
+	 *
69
+	 * @return array|null
70
+	 */
71
+	public function getSupportedPrivilegeSet();
72 72
 }
Please login to merge, or discard this patch.
htdocs/includes/sabre/sabre/dav/lib/DAVACL/Principal.php 1 patch
Indentation   +172 added lines, -172 removed lines patch added patch discarded remove patch
@@ -24,176 +24,176 @@
 block discarded – undo
24 24
  */
25 25
 class Principal extends DAV\Node implements IPrincipal, DAV\IProperties, IACL
26 26
 {
27
-    use ACLTrait;
28
-
29
-    /**
30
-     * Struct with principal information.
31
-     *
32
-     * @var array
33
-     */
34
-    protected $principalProperties;
35
-
36
-    /**
37
-     * Principal backend.
38
-     *
39
-     * @var PrincipalBackend\BackendInterface
40
-     */
41
-    protected $principalBackend;
42
-
43
-    /**
44
-     * Creates the principal object.
45
-     */
46
-    public function __construct(PrincipalBackend\BackendInterface $principalBackend, array $principalProperties = [])
47
-    {
48
-        if (!isset($principalProperties['uri'])) {
49
-            throw new DAV\Exception('The principal properties must at least contain the \'uri\' key');
50
-        }
51
-        $this->principalBackend = $principalBackend;
52
-        $this->principalProperties = $principalProperties;
53
-    }
54
-
55
-    /**
56
-     * Returns the full principal url.
57
-     *
58
-     * @return string
59
-     */
60
-    public function getPrincipalUrl()
61
-    {
62
-        return $this->principalProperties['uri'];
63
-    }
64
-
65
-    /**
66
-     * Returns a list of alternative urls for a principal.
67
-     *
68
-     * This can for example be an email address, or ldap url.
69
-     *
70
-     * @return array
71
-     */
72
-    public function getAlternateUriSet()
73
-    {
74
-        $uris = [];
75
-        if (isset($this->principalProperties['{DAV:}alternate-URI-set'])) {
76
-            $uris = $this->principalProperties['{DAV:}alternate-URI-set'];
77
-        }
78
-
79
-        if (isset($this->principalProperties['{http://sabredav.org/ns}email-address'])) {
80
-            $uris[] = 'mailto:'.$this->principalProperties['{http://sabredav.org/ns}email-address'];
81
-        }
82
-
83
-        return array_unique($uris);
84
-    }
85
-
86
-    /**
87
-     * Returns the list of group members.
88
-     *
89
-     * If this principal is a group, this function should return
90
-     * all member principal uri's for the group.
91
-     *
92
-     * @return array
93
-     */
94
-    public function getGroupMemberSet()
95
-    {
96
-        return $this->principalBackend->getGroupMemberSet($this->principalProperties['uri']);
97
-    }
98
-
99
-    /**
100
-     * Returns the list of groups this principal is member of.
101
-     *
102
-     * If this principal is a member of a (list of) groups, this function
103
-     * should return a list of principal uri's for it's members.
104
-     *
105
-     * @return array
106
-     */
107
-    public function getGroupMembership()
108
-    {
109
-        return $this->principalBackend->getGroupMemberShip($this->principalProperties['uri']);
110
-    }
111
-
112
-    /**
113
-     * Sets a list of group members.
114
-     *
115
-     * If this principal is a group, this method sets all the group members.
116
-     * The list of members is always overwritten, never appended to.
117
-     *
118
-     * This method should throw an exception if the members could not be set.
119
-     */
120
-    public function setGroupMemberSet(array $groupMembers)
121
-    {
122
-        $this->principalBackend->setGroupMemberSet($this->principalProperties['uri'], $groupMembers);
123
-    }
124
-
125
-    /**
126
-     * Returns this principals name.
127
-     *
128
-     * @return string
129
-     */
130
-    public function getName()
131
-    {
132
-        $uri = $this->principalProperties['uri'];
133
-        list(, $name) = Uri\split($uri);
134
-
135
-        return $name;
136
-    }
137
-
138
-    /**
139
-     * Returns the name of the user.
140
-     *
141
-     * @return string
142
-     */
143
-    public function getDisplayName()
144
-    {
145
-        if (isset($this->principalProperties['{DAV:}displayname'])) {
146
-            return $this->principalProperties['{DAV:}displayname'];
147
-        } else {
148
-            return $this->getName();
149
-        }
150
-    }
151
-
152
-    /**
153
-     * Returns a list of properties.
154
-     *
155
-     * @param array $requestedProperties
156
-     *
157
-     * @return array
158
-     */
159
-    public function getProperties($requestedProperties)
160
-    {
161
-        $newProperties = [];
162
-        foreach ($requestedProperties as $propName) {
163
-            if (isset($this->principalProperties[$propName])) {
164
-                $newProperties[$propName] = $this->principalProperties[$propName];
165
-            }
166
-        }
167
-
168
-        return $newProperties;
169
-    }
170
-
171
-    /**
172
-     * Updates properties on this node.
173
-     *
174
-     * This method received a PropPatch object, which contains all the
175
-     * information about the update.
176
-     *
177
-     * To update specific properties, call the 'handle' method on this object.
178
-     * Read the PropPatch documentation for more information.
179
-     */
180
-    public function propPatch(DAV\PropPatch $propPatch)
181
-    {
182
-        return $this->principalBackend->updatePrincipal(
183
-            $this->principalProperties['uri'],
184
-            $propPatch
185
-        );
186
-    }
187
-
188
-    /**
189
-     * Returns the owner principal.
190
-     *
191
-     * This must be a url to a principal, or null if there's no owner
192
-     *
193
-     * @return string|null
194
-     */
195
-    public function getOwner()
196
-    {
197
-        return $this->principalProperties['uri'];
198
-    }
27
+	use ACLTrait;
28
+
29
+	/**
30
+	 * Struct with principal information.
31
+	 *
32
+	 * @var array
33
+	 */
34
+	protected $principalProperties;
35
+
36
+	/**
37
+	 * Principal backend.
38
+	 *
39
+	 * @var PrincipalBackend\BackendInterface
40
+	 */
41
+	protected $principalBackend;
42
+
43
+	/**
44
+	 * Creates the principal object.
45
+	 */
46
+	public function __construct(PrincipalBackend\BackendInterface $principalBackend, array $principalProperties = [])
47
+	{
48
+		if (!isset($principalProperties['uri'])) {
49
+			throw new DAV\Exception('The principal properties must at least contain the \'uri\' key');
50
+		}
51
+		$this->principalBackend = $principalBackend;
52
+		$this->principalProperties = $principalProperties;
53
+	}
54
+
55
+	/**
56
+	 * Returns the full principal url.
57
+	 *
58
+	 * @return string
59
+	 */
60
+	public function getPrincipalUrl()
61
+	{
62
+		return $this->principalProperties['uri'];
63
+	}
64
+
65
+	/**
66
+	 * Returns a list of alternative urls for a principal.
67
+	 *
68
+	 * This can for example be an email address, or ldap url.
69
+	 *
70
+	 * @return array
71
+	 */
72
+	public function getAlternateUriSet()
73
+	{
74
+		$uris = [];
75
+		if (isset($this->principalProperties['{DAV:}alternate-URI-set'])) {
76
+			$uris = $this->principalProperties['{DAV:}alternate-URI-set'];
77
+		}
78
+
79
+		if (isset($this->principalProperties['{http://sabredav.org/ns}email-address'])) {
80
+			$uris[] = 'mailto:'.$this->principalProperties['{http://sabredav.org/ns}email-address'];
81
+		}
82
+
83
+		return array_unique($uris);
84
+	}
85
+
86
+	/**
87
+	 * Returns the list of group members.
88
+	 *
89
+	 * If this principal is a group, this function should return
90
+	 * all member principal uri's for the group.
91
+	 *
92
+	 * @return array
93
+	 */
94
+	public function getGroupMemberSet()
95
+	{
96
+		return $this->principalBackend->getGroupMemberSet($this->principalProperties['uri']);
97
+	}
98
+
99
+	/**
100
+	 * Returns the list of groups this principal is member of.
101
+	 *
102
+	 * If this principal is a member of a (list of) groups, this function
103
+	 * should return a list of principal uri's for it's members.
104
+	 *
105
+	 * @return array
106
+	 */
107
+	public function getGroupMembership()
108
+	{
109
+		return $this->principalBackend->getGroupMemberShip($this->principalProperties['uri']);
110
+	}
111
+
112
+	/**
113
+	 * Sets a list of group members.
114
+	 *
115
+	 * If this principal is a group, this method sets all the group members.
116
+	 * The list of members is always overwritten, never appended to.
117
+	 *
118
+	 * This method should throw an exception if the members could not be set.
119
+	 */
120
+	public function setGroupMemberSet(array $groupMembers)
121
+	{
122
+		$this->principalBackend->setGroupMemberSet($this->principalProperties['uri'], $groupMembers);
123
+	}
124
+
125
+	/**
126
+	 * Returns this principals name.
127
+	 *
128
+	 * @return string
129
+	 */
130
+	public function getName()
131
+	{
132
+		$uri = $this->principalProperties['uri'];
133
+		list(, $name) = Uri\split($uri);
134
+
135
+		return $name;
136
+	}
137
+
138
+	/**
139
+	 * Returns the name of the user.
140
+	 *
141
+	 * @return string
142
+	 */
143
+	public function getDisplayName()
144
+	{
145
+		if (isset($this->principalProperties['{DAV:}displayname'])) {
146
+			return $this->principalProperties['{DAV:}displayname'];
147
+		} else {
148
+			return $this->getName();
149
+		}
150
+	}
151
+
152
+	/**
153
+	 * Returns a list of properties.
154
+	 *
155
+	 * @param array $requestedProperties
156
+	 *
157
+	 * @return array
158
+	 */
159
+	public function getProperties($requestedProperties)
160
+	{
161
+		$newProperties = [];
162
+		foreach ($requestedProperties as $propName) {
163
+			if (isset($this->principalProperties[$propName])) {
164
+				$newProperties[$propName] = $this->principalProperties[$propName];
165
+			}
166
+		}
167
+
168
+		return $newProperties;
169
+	}
170
+
171
+	/**
172
+	 * Updates properties on this node.
173
+	 *
174
+	 * This method received a PropPatch object, which contains all the
175
+	 * information about the update.
176
+	 *
177
+	 * To update specific properties, call the 'handle' method on this object.
178
+	 * Read the PropPatch documentation for more information.
179
+	 */
180
+	public function propPatch(DAV\PropPatch $propPatch)
181
+	{
182
+		return $this->principalBackend->updatePrincipal(
183
+			$this->principalProperties['uri'],
184
+			$propPatch
185
+		);
186
+	}
187
+
188
+	/**
189
+	 * Returns the owner principal.
190
+	 *
191
+	 * This must be a url to a principal, or null if there's no owner
192
+	 *
193
+	 * @return string|null
194
+	 */
195
+	public function getOwner()
196
+	{
197
+		return $this->principalProperties['uri'];
198
+	}
199 199
 }
Please login to merge, or discard this patch.