Completed
Push — master ( ed239d...1953a1 )
by Björn
09:21 queued 08:43
created
apps/dav/lib/Connector/Sabre/FilesPlugin.php 3 patches
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -245,7 +245,9 @@
 block discarded – undo
245 245
 	function httpGet(RequestInterface $request, ResponseInterface $response) {
246 246
 		// Only handle valid files
247 247
 		$node = $this->tree->getNodeForPath($request->getPath());
248
-		if (!($node instanceof IFile)) return;
248
+		if (!($node instanceof IFile)) {
249
+		    return;
250
+		}
249 251
 
250 252
 		// adds a 'Content-Disposition: attachment' header in case no disposition
251 253
 		// header has been set before
Please login to merge, or discard this patch.
Indentation   +399 added lines, -399 removed lines patch added patch discarded remove patch
@@ -50,407 +50,407 @@
 block discarded – undo
50 50
 
51 51
 class FilesPlugin extends ServerPlugin {
52 52
 
53
-	// namespace
54
-	const NS_OWNCLOUD = 'http://owncloud.org/ns';
55
-	const NS_NEXTCLOUD = 'http://nextcloud.org/ns';
56
-	const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id';
57
-	const INTERNAL_FILEID_PROPERTYNAME = '{http://owncloud.org/ns}fileid';
58
-	const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions';
59
-	const SHARE_PERMISSIONS_PROPERTYNAME = '{http://open-collaboration-services.org/ns}share-permissions';
60
-	const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL';
61
-	const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size';
62
-	const GETETAG_PROPERTYNAME = '{DAV:}getetag';
63
-	const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
64
-	const OWNER_ID_PROPERTYNAME = '{http://owncloud.org/ns}owner-id';
65
-	const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name';
66
-	const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums';
67
-	const DATA_FINGERPRINT_PROPERTYNAME = '{http://owncloud.org/ns}data-fingerprint';
68
-	const HAS_PREVIEW_PROPERTYNAME = '{http://nextcloud.org/ns}has-preview';
69
-	const MOUNT_TYPE_PROPERTYNAME = '{http://nextcloud.org/ns}mount-type';
70
-	const IS_ENCRYPTED_PROPERTYNAME = '{http://nextcloud.org/ns}is-encrypted';
71
-
72
-	/**
73
-	 * Reference to main server object
74
-	 *
75
-	 * @var \Sabre\DAV\Server
76
-	 */
77
-	private $server;
78
-
79
-	/**
80
-	 * @var Tree
81
-	 */
82
-	private $tree;
83
-
84
-	/**
85
-	 * Whether this is public webdav.
86
-	 * If true, some returned information will be stripped off.
87
-	 *
88
-	 * @var bool
89
-	 */
90
-	private $isPublic;
91
-
92
-	/**
93
-	 * @var bool
94
-	 */
95
-	private $downloadAttachment;
96
-
97
-	/**
98
-	 * @var IConfig
99
-	 */
100
-	private $config;
101
-
102
-	/**
103
-	 * @var IRequest
104
-	 */
105
-	private $request;
106
-
107
-	/**
108
-	 * @var IPreview
109
-	 */
110
-	private $previewManager;
111
-
112
-	/**
113
-	 * @param Tree $tree
114
-	 * @param IConfig $config
115
-	 * @param IRequest $request
116
-	 * @param IPreview $previewManager
117
-	 * @param bool $isPublic
118
-	 * @param bool $downloadAttachment
119
-	 */
120
-	public function __construct(Tree $tree,
121
-								IConfig $config,
122
-								IRequest $request,
123
-								IPreview $previewManager,
124
-								$isPublic = false,
125
-								$downloadAttachment = true) {
126
-		$this->tree = $tree;
127
-		$this->config = $config;
128
-		$this->request = $request;
129
-		$this->isPublic = $isPublic;
130
-		$this->downloadAttachment = $downloadAttachment;
131
-		$this->previewManager = $previewManager;
132
-	}
133
-
134
-	/**
135
-	 * This initializes the plugin.
136
-	 *
137
-	 * This function is called by \Sabre\DAV\Server, after
138
-	 * addPlugin is called.
139
-	 *
140
-	 * This method should set up the required event subscriptions.
141
-	 *
142
-	 * @param \Sabre\DAV\Server $server
143
-	 * @return void
144
-	 */
145
-	public function initialize(\Sabre\DAV\Server $server) {
146
-		$server->xml->namespaceMap[self::NS_OWNCLOUD] = 'oc';
147
-		$server->xml->namespaceMap[self::NS_NEXTCLOUD] = 'nc';
148
-		$server->protectedProperties[] = self::FILEID_PROPERTYNAME;
149
-		$server->protectedProperties[] = self::INTERNAL_FILEID_PROPERTYNAME;
150
-		$server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME;
151
-		$server->protectedProperties[] = self::SHARE_PERMISSIONS_PROPERTYNAME;
152
-		$server->protectedProperties[] = self::SIZE_PROPERTYNAME;
153
-		$server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME;
154
-		$server->protectedProperties[] = self::OWNER_ID_PROPERTYNAME;
155
-		$server->protectedProperties[] = self::OWNER_DISPLAY_NAME_PROPERTYNAME;
156
-		$server->protectedProperties[] = self::CHECKSUMS_PROPERTYNAME;
157
-		$server->protectedProperties[] = self::DATA_FINGERPRINT_PROPERTYNAME;
158
-		$server->protectedProperties[] = self::HAS_PREVIEW_PROPERTYNAME;
159
-		$server->protectedProperties[] = self::MOUNT_TYPE_PROPERTYNAME;
160
-		$server->protectedProperties[] = self::IS_ENCRYPTED_PROPERTYNAME;
161
-
162
-		// normally these cannot be changed (RFC4918), but we want them modifiable through PROPPATCH
163
-		$allowedProperties = ['{DAV:}getetag'];
164
-		$server->protectedProperties = array_diff($server->protectedProperties, $allowedProperties);
165
-
166
-		$this->server = $server;
167
-		$this->server->on('propFind', array($this, 'handleGetProperties'));
168
-		$this->server->on('propPatch', array($this, 'handleUpdateProperties'));
169
-		$this->server->on('afterBind', array($this, 'sendFileIdHeader'));
170
-		$this->server->on('afterWriteContent', array($this, 'sendFileIdHeader'));
171
-		$this->server->on('afterMethod:GET', [$this,'httpGet']);
172
-		$this->server->on('afterMethod:GET', array($this, 'handleDownloadToken'));
173
-		$this->server->on('afterResponse', function($request, ResponseInterface $response) {
174
-			$body = $response->getBody();
175
-			if (is_resource($body)) {
176
-				fclose($body);
177
-			}
178
-		});
179
-		$this->server->on('beforeMove', [$this, 'checkMove']);
180
-	}
181
-
182
-	/**
183
-	 * Plugin that checks if a move can actually be performed.
184
-	 *
185
-	 * @param string $source source path
186
-	 * @param string $destination destination path
187
-	 * @throws Forbidden
188
-	 * @throws NotFound
189
-	 */
190
-	function checkMove($source, $destination) {
191
-		$sourceNode = $this->tree->getNodeForPath($source);
192
-		if (!$sourceNode instanceof Node) {
193
-			return;
194
-		}
195
-		list($sourceDir,) = \Sabre\Uri\split($source);
196
-		list($destinationDir,) = \Sabre\Uri\split($destination);
197
-
198
-		if ($sourceDir !== $destinationDir) {
199
-			$sourceNodeFileInfo = $sourceNode->getFileInfo();
200
-			if ($sourceNodeFileInfo === null) {
201
-				throw new NotFound($source . ' does not exist');
202
- 			}
203
-
204
-			if (!$sourceNodeFileInfo->isDeletable()) {
205
-				throw new Forbidden($source . " cannot be deleted");
206
-			}
207
-		}
208
-	}
209
-
210
-	/**
211
-	 * This sets a cookie to be able to recognize the start of the download
212
-	 * the content must not be longer than 32 characters and must only contain
213
-	 * alphanumeric characters
214
-	 *
215
-	 * @param RequestInterface $request
216
-	 * @param ResponseInterface $response
217
-	 */
218
-	function handleDownloadToken(RequestInterface $request, ResponseInterface $response) {
219
-		$queryParams = $request->getQueryParameters();
220
-
221
-		/**
222
-		 * this sets a cookie to be able to recognize the start of the download
223
-		 * the content must not be longer than 32 characters and must only contain
224
-		 * alphanumeric characters
225
-		 */
226
-		if (isset($queryParams['downloadStartSecret'])) {
227
-			$token = $queryParams['downloadStartSecret'];
228
-			if (!isset($token[32])
229
-				&& preg_match('!^[a-zA-Z0-9]+$!', $token) === 1) {
230
-				// FIXME: use $response->setHeader() instead
231
-				setcookie('ocDownloadStarted', $token, time() + 20, '/');
232
-			}
233
-		}
234
-	}
235
-
236
-	/**
237
-	 * Add headers to file download
238
-	 *
239
-	 * @param RequestInterface $request
240
-	 * @param ResponseInterface $response
241
-	 */
242
-	function httpGet(RequestInterface $request, ResponseInterface $response) {
243
-		// Only handle valid files
244
-		$node = $this->tree->getNodeForPath($request->getPath());
245
-		if (!($node instanceof IFile)) return;
246
-
247
-		// adds a 'Content-Disposition: attachment' header in case no disposition
248
-		// header has been set before
249
-		if ($this->downloadAttachment &&
250
-			$response->getHeader('Content-Disposition') === null) {
251
-			$filename = $node->getName();
252
-			if ($this->request->isUserAgent(
253
-				[
254
-					Request::USER_AGENT_IE,
255
-					Request::USER_AGENT_ANDROID_MOBILE_CHROME,
256
-					Request::USER_AGENT_FREEBOX,
257
-				])) {
258
-				$response->addHeader('Content-Disposition', 'attachment; filename="' . rawurlencode($filename) . '"');
259
-			} else {
260
-				$response->addHeader('Content-Disposition', 'attachment; filename*=UTF-8\'\'' . rawurlencode($filename)
261
-													 . '; filename="' . rawurlencode($filename) . '"');
262
-			}
263
-		}
264
-
265
-		if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
266
-			//Add OC-Checksum header
267
-			/** @var $node File */
268
-			$checksum = $node->getChecksum();
269
-			if ($checksum !== null && $checksum !== '') {
270
-				$response->addHeader('OC-Checksum', $checksum);
271
-			}
272
-		}
273
-	}
274
-
275
-	/**
276
-	 * Adds all ownCloud-specific properties
277
-	 *
278
-	 * @param PropFind $propFind
279
-	 * @param \Sabre\DAV\INode $node
280
-	 * @return void
281
-	 */
282
-	public function handleGetProperties(PropFind $propFind, \Sabre\DAV\INode $node) {
283
-
284
-		$httpRequest = $this->server->httpRequest;
285
-
286
-		if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
287
-			/**
288
-			 * This was disabled, because it made dir listing throw an exception,
289
-			 * so users were unable to navigate into folders where one subitem
290
-			 * is blocked by the files_accesscontrol app, see:
291
-			 * https://github.com/nextcloud/files_accesscontrol/issues/65
53
+    // namespace
54
+    const NS_OWNCLOUD = 'http://owncloud.org/ns';
55
+    const NS_NEXTCLOUD = 'http://nextcloud.org/ns';
56
+    const FILEID_PROPERTYNAME = '{http://owncloud.org/ns}id';
57
+    const INTERNAL_FILEID_PROPERTYNAME = '{http://owncloud.org/ns}fileid';
58
+    const PERMISSIONS_PROPERTYNAME = '{http://owncloud.org/ns}permissions';
59
+    const SHARE_PERMISSIONS_PROPERTYNAME = '{http://open-collaboration-services.org/ns}share-permissions';
60
+    const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL';
61
+    const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size';
62
+    const GETETAG_PROPERTYNAME = '{DAV:}getetag';
63
+    const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
64
+    const OWNER_ID_PROPERTYNAME = '{http://owncloud.org/ns}owner-id';
65
+    const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name';
66
+    const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums';
67
+    const DATA_FINGERPRINT_PROPERTYNAME = '{http://owncloud.org/ns}data-fingerprint';
68
+    const HAS_PREVIEW_PROPERTYNAME = '{http://nextcloud.org/ns}has-preview';
69
+    const MOUNT_TYPE_PROPERTYNAME = '{http://nextcloud.org/ns}mount-type';
70
+    const IS_ENCRYPTED_PROPERTYNAME = '{http://nextcloud.org/ns}is-encrypted';
71
+
72
+    /**
73
+     * Reference to main server object
74
+     *
75
+     * @var \Sabre\DAV\Server
76
+     */
77
+    private $server;
78
+
79
+    /**
80
+     * @var Tree
81
+     */
82
+    private $tree;
83
+
84
+    /**
85
+     * Whether this is public webdav.
86
+     * If true, some returned information will be stripped off.
87
+     *
88
+     * @var bool
89
+     */
90
+    private $isPublic;
91
+
92
+    /**
93
+     * @var bool
94
+     */
95
+    private $downloadAttachment;
96
+
97
+    /**
98
+     * @var IConfig
99
+     */
100
+    private $config;
101
+
102
+    /**
103
+     * @var IRequest
104
+     */
105
+    private $request;
106
+
107
+    /**
108
+     * @var IPreview
109
+     */
110
+    private $previewManager;
111
+
112
+    /**
113
+     * @param Tree $tree
114
+     * @param IConfig $config
115
+     * @param IRequest $request
116
+     * @param IPreview $previewManager
117
+     * @param bool $isPublic
118
+     * @param bool $downloadAttachment
119
+     */
120
+    public function __construct(Tree $tree,
121
+                                IConfig $config,
122
+                                IRequest $request,
123
+                                IPreview $previewManager,
124
+                                $isPublic = false,
125
+                                $downloadAttachment = true) {
126
+        $this->tree = $tree;
127
+        $this->config = $config;
128
+        $this->request = $request;
129
+        $this->isPublic = $isPublic;
130
+        $this->downloadAttachment = $downloadAttachment;
131
+        $this->previewManager = $previewManager;
132
+    }
133
+
134
+    /**
135
+     * This initializes the plugin.
136
+     *
137
+     * This function is called by \Sabre\DAV\Server, after
138
+     * addPlugin is called.
139
+     *
140
+     * This method should set up the required event subscriptions.
141
+     *
142
+     * @param \Sabre\DAV\Server $server
143
+     * @return void
144
+     */
145
+    public function initialize(\Sabre\DAV\Server $server) {
146
+        $server->xml->namespaceMap[self::NS_OWNCLOUD] = 'oc';
147
+        $server->xml->namespaceMap[self::NS_NEXTCLOUD] = 'nc';
148
+        $server->protectedProperties[] = self::FILEID_PROPERTYNAME;
149
+        $server->protectedProperties[] = self::INTERNAL_FILEID_PROPERTYNAME;
150
+        $server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME;
151
+        $server->protectedProperties[] = self::SHARE_PERMISSIONS_PROPERTYNAME;
152
+        $server->protectedProperties[] = self::SIZE_PROPERTYNAME;
153
+        $server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME;
154
+        $server->protectedProperties[] = self::OWNER_ID_PROPERTYNAME;
155
+        $server->protectedProperties[] = self::OWNER_DISPLAY_NAME_PROPERTYNAME;
156
+        $server->protectedProperties[] = self::CHECKSUMS_PROPERTYNAME;
157
+        $server->protectedProperties[] = self::DATA_FINGERPRINT_PROPERTYNAME;
158
+        $server->protectedProperties[] = self::HAS_PREVIEW_PROPERTYNAME;
159
+        $server->protectedProperties[] = self::MOUNT_TYPE_PROPERTYNAME;
160
+        $server->protectedProperties[] = self::IS_ENCRYPTED_PROPERTYNAME;
161
+
162
+        // normally these cannot be changed (RFC4918), but we want them modifiable through PROPPATCH
163
+        $allowedProperties = ['{DAV:}getetag'];
164
+        $server->protectedProperties = array_diff($server->protectedProperties, $allowedProperties);
165
+
166
+        $this->server = $server;
167
+        $this->server->on('propFind', array($this, 'handleGetProperties'));
168
+        $this->server->on('propPatch', array($this, 'handleUpdateProperties'));
169
+        $this->server->on('afterBind', array($this, 'sendFileIdHeader'));
170
+        $this->server->on('afterWriteContent', array($this, 'sendFileIdHeader'));
171
+        $this->server->on('afterMethod:GET', [$this,'httpGet']);
172
+        $this->server->on('afterMethod:GET', array($this, 'handleDownloadToken'));
173
+        $this->server->on('afterResponse', function($request, ResponseInterface $response) {
174
+            $body = $response->getBody();
175
+            if (is_resource($body)) {
176
+                fclose($body);
177
+            }
178
+        });
179
+        $this->server->on('beforeMove', [$this, 'checkMove']);
180
+    }
181
+
182
+    /**
183
+     * Plugin that checks if a move can actually be performed.
184
+     *
185
+     * @param string $source source path
186
+     * @param string $destination destination path
187
+     * @throws Forbidden
188
+     * @throws NotFound
189
+     */
190
+    function checkMove($source, $destination) {
191
+        $sourceNode = $this->tree->getNodeForPath($source);
192
+        if (!$sourceNode instanceof Node) {
193
+            return;
194
+        }
195
+        list($sourceDir,) = \Sabre\Uri\split($source);
196
+        list($destinationDir,) = \Sabre\Uri\split($destination);
197
+
198
+        if ($sourceDir !== $destinationDir) {
199
+            $sourceNodeFileInfo = $sourceNode->getFileInfo();
200
+            if ($sourceNodeFileInfo === null) {
201
+                throw new NotFound($source . ' does not exist');
202
+                }
203
+
204
+            if (!$sourceNodeFileInfo->isDeletable()) {
205
+                throw new Forbidden($source . " cannot be deleted");
206
+            }
207
+        }
208
+    }
209
+
210
+    /**
211
+     * This sets a cookie to be able to recognize the start of the download
212
+     * the content must not be longer than 32 characters and must only contain
213
+     * alphanumeric characters
214
+     *
215
+     * @param RequestInterface $request
216
+     * @param ResponseInterface $response
217
+     */
218
+    function handleDownloadToken(RequestInterface $request, ResponseInterface $response) {
219
+        $queryParams = $request->getQueryParameters();
220
+
221
+        /**
222
+         * this sets a cookie to be able to recognize the start of the download
223
+         * the content must not be longer than 32 characters and must only contain
224
+         * alphanumeric characters
225
+         */
226
+        if (isset($queryParams['downloadStartSecret'])) {
227
+            $token = $queryParams['downloadStartSecret'];
228
+            if (!isset($token[32])
229
+                && preg_match('!^[a-zA-Z0-9]+$!', $token) === 1) {
230
+                // FIXME: use $response->setHeader() instead
231
+                setcookie('ocDownloadStarted', $token, time() + 20, '/');
232
+            }
233
+        }
234
+    }
235
+
236
+    /**
237
+     * Add headers to file download
238
+     *
239
+     * @param RequestInterface $request
240
+     * @param ResponseInterface $response
241
+     */
242
+    function httpGet(RequestInterface $request, ResponseInterface $response) {
243
+        // Only handle valid files
244
+        $node = $this->tree->getNodeForPath($request->getPath());
245
+        if (!($node instanceof IFile)) return;
246
+
247
+        // adds a 'Content-Disposition: attachment' header in case no disposition
248
+        // header has been set before
249
+        if ($this->downloadAttachment &&
250
+            $response->getHeader('Content-Disposition') === null) {
251
+            $filename = $node->getName();
252
+            if ($this->request->isUserAgent(
253
+                [
254
+                    Request::USER_AGENT_IE,
255
+                    Request::USER_AGENT_ANDROID_MOBILE_CHROME,
256
+                    Request::USER_AGENT_FREEBOX,
257
+                ])) {
258
+                $response->addHeader('Content-Disposition', 'attachment; filename="' . rawurlencode($filename) . '"');
259
+            } else {
260
+                $response->addHeader('Content-Disposition', 'attachment; filename*=UTF-8\'\'' . rawurlencode($filename)
261
+                                                        . '; filename="' . rawurlencode($filename) . '"');
262
+            }
263
+        }
264
+
265
+        if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
266
+            //Add OC-Checksum header
267
+            /** @var $node File */
268
+            $checksum = $node->getChecksum();
269
+            if ($checksum !== null && $checksum !== '') {
270
+                $response->addHeader('OC-Checksum', $checksum);
271
+            }
272
+        }
273
+    }
274
+
275
+    /**
276
+     * Adds all ownCloud-specific properties
277
+     *
278
+     * @param PropFind $propFind
279
+     * @param \Sabre\DAV\INode $node
280
+     * @return void
281
+     */
282
+    public function handleGetProperties(PropFind $propFind, \Sabre\DAV\INode $node) {
283
+
284
+        $httpRequest = $this->server->httpRequest;
285
+
286
+        if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
287
+            /**
288
+             * This was disabled, because it made dir listing throw an exception,
289
+             * so users were unable to navigate into folders where one subitem
290
+             * is blocked by the files_accesscontrol app, see:
291
+             * https://github.com/nextcloud/files_accesscontrol/issues/65
292 292
 			if (!$node->getFileInfo()->isReadable()) {
293 293
 				// avoid detecting files through this means
294 294
 				throw new NotFound();
295 295
 			}
296
-			 */
297
-
298
-			$propFind->handle(self::FILEID_PROPERTYNAME, function() use ($node) {
299
-				return $node->getFileId();
300
-			});
301
-
302
-			$propFind->handle(self::INTERNAL_FILEID_PROPERTYNAME, function() use ($node) {
303
-				return $node->getInternalFileId();
304
-			});
305
-
306
-			$propFind->handle(self::PERMISSIONS_PROPERTYNAME, function() use ($node) {
307
-				$perms = $node->getDavPermissions();
308
-				if ($this->isPublic) {
309
-					// remove mount information
310
-					$perms = str_replace(['S', 'M'], '', $perms);
311
-				}
312
-				return $perms;
313
-			});
314
-
315
-			$propFind->handle(self::SHARE_PERMISSIONS_PROPERTYNAME, function() use ($node, $httpRequest) {
316
-				return $node->getSharePermissions(
317
-					$httpRequest->getRawServerValue('PHP_AUTH_USER')
318
-				);
319
-			});
320
-
321
-			$propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) {
322
-				return $node->getETag();
323
-			});
324
-
325
-			$propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
326
-				$owner = $node->getOwner();
327
-				if (!$owner) {
328
-					return null;
329
-				} else {
330
-					return $owner->getUID();
331
-				}
332
-			});
333
-			$propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
334
-				$owner = $node->getOwner();
335
-				if (!$owner) {
336
-					return null;
337
-				} else {
338
-					return $owner->getDisplayName();
339
-				}
340
-			});
341
-
342
-			$propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
343
-				return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
344
-			});
345
-			$propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) {
346
-				return $node->getSize();
347
-			});
348
-			$propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) {
349
-				return $node->getFileInfo()->getMountPoint()->getMountType();
350
-			});
351
-		}
352
-
353
-		if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
354
-			$propFind->handle(self::DATA_FINGERPRINT_PROPERTYNAME, function() use ($node) {
355
-				return $this->config->getSystemValue('data-fingerprint', '');
356
-			});
357
-		}
358
-
359
-		if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
360
-			$propFind->handle(self::DOWNLOADURL_PROPERTYNAME, function() use ($node) {
361
-				/** @var $node \OCA\DAV\Connector\Sabre\File */
362
-				try {
363
-					$directDownloadUrl = $node->getDirectDownload();
364
-					if (isset($directDownloadUrl['url'])) {
365
-						return $directDownloadUrl['url'];
366
-					}
367
-				} catch (StorageNotAvailableException $e) {
368
-					return false;
369
-				} catch (ForbiddenException $e) {
370
-					return false;
371
-				}
372
-				return false;
373
-			});
374
-
375
-			$propFind->handle(self::CHECKSUMS_PROPERTYNAME, function() use ($node) {
376
-				$checksum = $node->getChecksum();
377
-				if ($checksum === NULL || $checksum === '') {
378
-					return null;
379
-				}
380
-
381
-				return new ChecksumList($checksum);
382
-			});
383
-
384
-		}
385
-
386
-		if ($node instanceof \OCA\DAV\Connector\Sabre\Directory) {
387
-			$propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) {
388
-				return $node->getSize();
389
-			});
390
-
391
-			$propFind->handle(self::IS_ENCRYPTED_PROPERTYNAME, function() use ($node) {
392
-				return $node->getFileInfo()->isEncrypted() ? '1' : '0';
393
-			});
394
-		}
395
-	}
396
-
397
-	/**
398
-	 * Update ownCloud-specific properties
399
-	 *
400
-	 * @param string $path
401
-	 * @param PropPatch $propPatch
402
-	 *
403
-	 * @return void
404
-	 */
405
-	public function handleUpdateProperties($path, PropPatch $propPatch) {
406
-		$node = $this->tree->getNodeForPath($path);
407
-		if (!($node instanceof \OCA\DAV\Connector\Sabre\Node)) {
408
-			return;
409
-		}
410
-
411
-		$propPatch->handle(self::LASTMODIFIED_PROPERTYNAME, function($time) use ($node) {
412
-			if (empty($time)) {
413
-				return false;
414
-			}
415
-			$node->touch($time);
416
-			return true;
417
-		});
418
-		$propPatch->handle(self::GETETAG_PROPERTYNAME, function($etag) use ($node) {
419
-			if (empty($etag)) {
420
-				return false;
421
-			}
422
-			if ($node->setEtag($etag) !== -1) {
423
-				return true;
424
-			}
425
-			return false;
426
-		});
427
-	}
428
-
429
-	/**
430
-	 * @param string $filePath
431
-	 * @param \Sabre\DAV\INode $node
432
-	 * @throws \Sabre\DAV\Exception\BadRequest
433
-	 */
434
-	public function sendFileIdHeader($filePath, \Sabre\DAV\INode $node = null) {
435
-		// chunked upload handling
436
-		if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
437
-			list($path, $name) = \Sabre\Uri\split($filePath);
438
-			$info = \OC_FileChunking::decodeName($name);
439
-			if (!empty($info)) {
440
-				$filePath = $path . '/' . $info['name'];
441
-			}
442
-		}
443
-
444
-		// we get the node for the given $filePath here because in case of afterCreateFile $node is the parent folder
445
-		if (!$this->server->tree->nodeExists($filePath)) {
446
-			return;
447
-		}
448
-		$node = $this->server->tree->getNodeForPath($filePath);
449
-		if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
450
-			$fileId = $node->getFileId();
451
-			if (!is_null($fileId)) {
452
-				$this->server->httpResponse->setHeader('OC-FileId', $fileId);
453
-			}
454
-		}
455
-	}
296
+             */
297
+
298
+            $propFind->handle(self::FILEID_PROPERTYNAME, function() use ($node) {
299
+                return $node->getFileId();
300
+            });
301
+
302
+            $propFind->handle(self::INTERNAL_FILEID_PROPERTYNAME, function() use ($node) {
303
+                return $node->getInternalFileId();
304
+            });
305
+
306
+            $propFind->handle(self::PERMISSIONS_PROPERTYNAME, function() use ($node) {
307
+                $perms = $node->getDavPermissions();
308
+                if ($this->isPublic) {
309
+                    // remove mount information
310
+                    $perms = str_replace(['S', 'M'], '', $perms);
311
+                }
312
+                return $perms;
313
+            });
314
+
315
+            $propFind->handle(self::SHARE_PERMISSIONS_PROPERTYNAME, function() use ($node, $httpRequest) {
316
+                return $node->getSharePermissions(
317
+                    $httpRequest->getRawServerValue('PHP_AUTH_USER')
318
+                );
319
+            });
320
+
321
+            $propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) {
322
+                return $node->getETag();
323
+            });
324
+
325
+            $propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
326
+                $owner = $node->getOwner();
327
+                if (!$owner) {
328
+                    return null;
329
+                } else {
330
+                    return $owner->getUID();
331
+                }
332
+            });
333
+            $propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
334
+                $owner = $node->getOwner();
335
+                if (!$owner) {
336
+                    return null;
337
+                } else {
338
+                    return $owner->getDisplayName();
339
+                }
340
+            });
341
+
342
+            $propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
343
+                return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
344
+            });
345
+            $propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) {
346
+                return $node->getSize();
347
+            });
348
+            $propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) {
349
+                return $node->getFileInfo()->getMountPoint()->getMountType();
350
+            });
351
+        }
352
+
353
+        if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
354
+            $propFind->handle(self::DATA_FINGERPRINT_PROPERTYNAME, function() use ($node) {
355
+                return $this->config->getSystemValue('data-fingerprint', '');
356
+            });
357
+        }
358
+
359
+        if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
360
+            $propFind->handle(self::DOWNLOADURL_PROPERTYNAME, function() use ($node) {
361
+                /** @var $node \OCA\DAV\Connector\Sabre\File */
362
+                try {
363
+                    $directDownloadUrl = $node->getDirectDownload();
364
+                    if (isset($directDownloadUrl['url'])) {
365
+                        return $directDownloadUrl['url'];
366
+                    }
367
+                } catch (StorageNotAvailableException $e) {
368
+                    return false;
369
+                } catch (ForbiddenException $e) {
370
+                    return false;
371
+                }
372
+                return false;
373
+            });
374
+
375
+            $propFind->handle(self::CHECKSUMS_PROPERTYNAME, function() use ($node) {
376
+                $checksum = $node->getChecksum();
377
+                if ($checksum === NULL || $checksum === '') {
378
+                    return null;
379
+                }
380
+
381
+                return new ChecksumList($checksum);
382
+            });
383
+
384
+        }
385
+
386
+        if ($node instanceof \OCA\DAV\Connector\Sabre\Directory) {
387
+            $propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) {
388
+                return $node->getSize();
389
+            });
390
+
391
+            $propFind->handle(self::IS_ENCRYPTED_PROPERTYNAME, function() use ($node) {
392
+                return $node->getFileInfo()->isEncrypted() ? '1' : '0';
393
+            });
394
+        }
395
+    }
396
+
397
+    /**
398
+     * Update ownCloud-specific properties
399
+     *
400
+     * @param string $path
401
+     * @param PropPatch $propPatch
402
+     *
403
+     * @return void
404
+     */
405
+    public function handleUpdateProperties($path, PropPatch $propPatch) {
406
+        $node = $this->tree->getNodeForPath($path);
407
+        if (!($node instanceof \OCA\DAV\Connector\Sabre\Node)) {
408
+            return;
409
+        }
410
+
411
+        $propPatch->handle(self::LASTMODIFIED_PROPERTYNAME, function($time) use ($node) {
412
+            if (empty($time)) {
413
+                return false;
414
+            }
415
+            $node->touch($time);
416
+            return true;
417
+        });
418
+        $propPatch->handle(self::GETETAG_PROPERTYNAME, function($etag) use ($node) {
419
+            if (empty($etag)) {
420
+                return false;
421
+            }
422
+            if ($node->setEtag($etag) !== -1) {
423
+                return true;
424
+            }
425
+            return false;
426
+        });
427
+    }
428
+
429
+    /**
430
+     * @param string $filePath
431
+     * @param \Sabre\DAV\INode $node
432
+     * @throws \Sabre\DAV\Exception\BadRequest
433
+     */
434
+    public function sendFileIdHeader($filePath, \Sabre\DAV\INode $node = null) {
435
+        // chunked upload handling
436
+        if (isset($_SERVER['HTTP_OC_CHUNKED'])) {
437
+            list($path, $name) = \Sabre\Uri\split($filePath);
438
+            $info = \OC_FileChunking::decodeName($name);
439
+            if (!empty($info)) {
440
+                $filePath = $path . '/' . $info['name'];
441
+            }
442
+        }
443
+
444
+        // we get the node for the given $filePath here because in case of afterCreateFile $node is the parent folder
445
+        if (!$this->server->tree->nodeExists($filePath)) {
446
+            return;
447
+        }
448
+        $node = $this->server->tree->getNodeForPath($filePath);
449
+        if ($node instanceof \OCA\DAV\Connector\Sabre\Node) {
450
+            $fileId = $node->getFileId();
451
+            if (!is_null($fileId)) {
452
+                $this->server->httpResponse->setHeader('OC-FileId', $fileId);
453
+            }
454
+        }
455
+    }
456 456
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -168,7 +168,7 @@  discard block
 block discarded – undo
168 168
 		$this->server->on('propPatch', array($this, 'handleUpdateProperties'));
169 169
 		$this->server->on('afterBind', array($this, 'sendFileIdHeader'));
170 170
 		$this->server->on('afterWriteContent', array($this, 'sendFileIdHeader'));
171
-		$this->server->on('afterMethod:GET', [$this,'httpGet']);
171
+		$this->server->on('afterMethod:GET', [$this, 'httpGet']);
172 172
 		$this->server->on('afterMethod:GET', array($this, 'handleDownloadToken'));
173 173
 		$this->server->on('afterResponse', function($request, ResponseInterface $response) {
174 174
 			$body = $response->getBody();
@@ -198,11 +198,11 @@  discard block
 block discarded – undo
198 198
 		if ($sourceDir !== $destinationDir) {
199 199
 			$sourceNodeFileInfo = $sourceNode->getFileInfo();
200 200
 			if ($sourceNodeFileInfo === null) {
201
-				throw new NotFound($source . ' does not exist');
201
+				throw new NotFound($source.' does not exist');
202 202
  			}
203 203
 
204 204
 			if (!$sourceNodeFileInfo->isDeletable()) {
205
-				throw new Forbidden($source . " cannot be deleted");
205
+				throw new Forbidden($source." cannot be deleted");
206 206
 			}
207 207
 		}
208 208
 	}
@@ -255,10 +255,10 @@  discard block
 block discarded – undo
255 255
 					Request::USER_AGENT_ANDROID_MOBILE_CHROME,
256 256
 					Request::USER_AGENT_FREEBOX,
257 257
 				])) {
258
-				$response->addHeader('Content-Disposition', 'attachment; filename="' . rawurlencode($filename) . '"');
258
+				$response->addHeader('Content-Disposition', 'attachment; filename="'.rawurlencode($filename).'"');
259 259
 			} else {
260
-				$response->addHeader('Content-Disposition', 'attachment; filename*=UTF-8\'\'' . rawurlencode($filename)
261
-													 . '; filename="' . rawurlencode($filename) . '"');
260
+				$response->addHeader('Content-Disposition', 'attachment; filename*=UTF-8\'\''.rawurlencode($filename)
261
+													 . '; filename="'.rawurlencode($filename).'"');
262 262
 			}
263 263
 		}
264 264
 
@@ -339,13 +339,13 @@  discard block
 block discarded – undo
339 339
 				}
340 340
 			});
341 341
 
342
-			$propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
342
+			$propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function() use ($node) {
343 343
 				return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
344 344
 			});
345 345
 			$propFind->handle(self::SIZE_PROPERTYNAME, function() use ($node) {
346 346
 				return $node->getSize();
347 347
 			});
348
-			$propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) {
348
+			$propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function() use ($node) {
349 349
 				return $node->getFileInfo()->getMountPoint()->getMountType();
350 350
 			});
351 351
 		}
@@ -437,7 +437,7 @@  discard block
 block discarded – undo
437 437
 			list($path, $name) = \Sabre\Uri\split($filePath);
438 438
 			$info = \OC_FileChunking::decodeName($name);
439 439
 			if (!empty($info)) {
440
-				$filePath = $path . '/' . $info['name'];
440
+				$filePath = $path.'/'.$info['name'];
441 441
 			}
442 442
 		}
443 443
 
Please login to merge, or discard this patch.
apps/dav/lib/Connector/LegacyDAVACL.php 3 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -60,9 +60,9 @@
 block discarded – undo
60 60
 
61 61
 	public function propFind(PropFind $propFind, INode $node) {
62 62
 		/* Overload current-user-principal */
63
-		$propFind->handle('{DAV:}current-user-principal', function () {
63
+		$propFind->handle('{DAV:}current-user-principal', function() {
64 64
 			if ($url = parent::getCurrentUserPrincipal()) {
65
-				return new Principal(Principal::HREF, $url . '/');
65
+				return new Principal(Principal::HREF, $url.'/');
66 66
 			} else {
67 67
 				return new Principal(Principal::UNAUTHENTICATED);
68 68
 			}
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -38,7 +38,9 @@
 block discarded – undo
38 38
 	public function getCurrentUserPrincipals() {
39 39
 		$principalV2 = $this->getCurrentUserPrincipal();
40 40
 
41
-		if (is_null($principalV2)) return [];
41
+		if (is_null($principalV2)) {
42
+		    return [];
43
+		}
42 44
 
43 45
 		$principalV1 = $this->convertPrincipal($principalV2, false);
44 46
 		return array_merge(
Please login to merge, or discard this patch.
Indentation   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -32,42 +32,42 @@
 block discarded – undo
32 32
 
33 33
 class LegacyDAVACL extends DavAclPlugin {
34 34
 
35
-	/**
36
-	 * @inheritdoc
37
-	 */
38
-	public function getCurrentUserPrincipals() {
39
-		$principalV2 = $this->getCurrentUserPrincipal();
35
+    /**
36
+     * @inheritdoc
37
+     */
38
+    public function getCurrentUserPrincipals() {
39
+        $principalV2 = $this->getCurrentUserPrincipal();
40 40
 
41
-		if (is_null($principalV2)) return [];
41
+        if (is_null($principalV2)) return [];
42 42
 
43
-		$principalV1 = $this->convertPrincipal($principalV2, false);
44
-		return array_merge(
45
-			[
46
-				$principalV2,
47
-				$principalV1
48
-			],
49
-			$this->getPrincipalMembership($principalV1)
50
-		);
51
-	}
43
+        $principalV1 = $this->convertPrincipal($principalV2, false);
44
+        return array_merge(
45
+            [
46
+                $principalV2,
47
+                $principalV1
48
+            ],
49
+            $this->getPrincipalMembership($principalV1)
50
+        );
51
+    }
52 52
 
53
-	private function convertPrincipal($principal, $toV2) {
54
-		list(, $name) = \Sabre\Uri\split($principal);
55
-		if ($toV2) {
56
-			return "principals/users/$name";
57
-		}
58
-		return "principals/$name";
59
-	}
53
+    private function convertPrincipal($principal, $toV2) {
54
+        list(, $name) = \Sabre\Uri\split($principal);
55
+        if ($toV2) {
56
+            return "principals/users/$name";
57
+        }
58
+        return "principals/$name";
59
+    }
60 60
 
61
-	public function propFind(PropFind $propFind, INode $node) {
62
-		/* Overload current-user-principal */
63
-		$propFind->handle('{DAV:}current-user-principal', function () {
64
-			if ($url = parent::getCurrentUserPrincipal()) {
65
-				return new Principal(Principal::HREF, $url . '/');
66
-			} else {
67
-				return new Principal(Principal::UNAUTHENTICATED);
68
-			}
69
-		});
61
+    public function propFind(PropFind $propFind, INode $node) {
62
+        /* Overload current-user-principal */
63
+        $propFind->handle('{DAV:}current-user-principal', function () {
64
+            if ($url = parent::getCurrentUserPrincipal()) {
65
+                return new Principal(Principal::HREF, $url . '/');
66
+            } else {
67
+                return new Principal(Principal::UNAUTHENTICATED);
68
+            }
69
+        });
70 70
 
71
-		return parent::propFind($propFind, $node);
72
-	}
71
+        return parent::propFind($propFind, $node);
72
+    }
73 73
 }
Please login to merge, or discard this patch.
apps/dav/lib/AppInfo/Application.php 3 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -70,7 +70,7 @@
 block discarded – undo
70 70
 		$dispatcher = $this->getContainer()->getServer()->getEventDispatcher();
71 71
 
72 72
 		// first time login event setup
73
-		$dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
73
+		$dispatcher->addListener(IUser::class.'::firstLogin', function($event) use ($hm) {
74 74
 			if ($event instanceof GenericEvent) {
75 75
 				$hm->firstLogin($event->getSubject());
76 76
 			}
Please login to merge, or discard this patch.
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -76,7 +76,7 @@
 block discarded – undo
76 76
 	}
77 77
 
78 78
 	/**
79
-	 * @param IManager $contactsManager
79
+	 * @param IContactsManager $contactsManager
80 80
 	 */
81 81
 	public function setupSystemContactsProvider(IContactsManager $contactsManager) {
82 82
 		/** @var ContactsManager $cm */
Please login to merge, or discard this patch.
Indentation   +177 added lines, -177 removed lines patch added patch discarded remove patch
@@ -43,184 +43,184 @@
 block discarded – undo
43 43
 
44 44
 class Application extends App {
45 45
 
46
-	/**
47
-	 * Application constructor.
48
-	 */
49
-	public function __construct() {
50
-		parent::__construct('dav');
51
-
52
-		$container = $this->getContainer();
53
-		$server = $container->getServer();
54
-
55
-		$container->registerService(PhotoCache::class, function(SimpleContainer $s) use ($server) {
56
-			return new PhotoCache(
57
-				$server->getAppDataDir('dav-photocache')
58
-			);
59
-		});
60
-
61
-		/*
46
+    /**
47
+     * Application constructor.
48
+     */
49
+    public function __construct() {
50
+        parent::__construct('dav');
51
+
52
+        $container = $this->getContainer();
53
+        $server = $container->getServer();
54
+
55
+        $container->registerService(PhotoCache::class, function(SimpleContainer $s) use ($server) {
56
+            return new PhotoCache(
57
+                $server->getAppDataDir('dav-photocache')
58
+            );
59
+        });
60
+
61
+        /*
62 62
 		 * Register capabilities
63 63
 		 */
64
-		$container->registerCapability(Capabilities::class);
65
-	}
66
-
67
-	/**
68
-	 * @param IContactsManager $contactsManager
69
-	 * @param string $userID
70
-	 */
71
-	public function setupContactsProvider(IContactsManager $contactsManager, $userID) {
72
-		/** @var ContactsManager $cm */
73
-		$cm = $this->getContainer()->query(ContactsManager::class);
74
-		$urlGenerator = $this->getContainer()->getServer()->getURLGenerator();
75
-		$cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
76
-	}
77
-
78
-	/**
79
-	 * @param IManager $contactsManager
80
-	 */
81
-	public function setupSystemContactsProvider(IContactsManager $contactsManager) {
82
-		/** @var ContactsManager $cm */
83
-		$cm = $this->getContainer()->query(ContactsManager::class);
84
-		$urlGenerator = $this->getContainer()->getServer()->getURLGenerator();
85
-		$cm->setupSystemContactsProvider($contactsManager, $urlGenerator);
86
-	}
87
-
88
-	/**
89
-	 * @param ICalendarManager $calendarManager
90
-	 * @param string $userId
91
-	 */
92
-	public function setupCalendarProvider(ICalendarManager $calendarManager, $userId) {
93
-		$cm = $this->getContainer()->query(CalendarManager::class);
94
-		$cm->setupCalendarProvider($calendarManager, $userId);
95
-	}
96
-
97
-	public function registerHooks() {
98
-		/** @var HookManager $hm */
99
-		$hm = $this->getContainer()->query(HookManager::class);
100
-		$hm->setup();
101
-
102
-		$dispatcher = $this->getContainer()->getServer()->getEventDispatcher();
103
-
104
-		// first time login event setup
105
-		$dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
106
-			if ($event instanceof GenericEvent) {
107
-				$hm->firstLogin($event->getSubject());
108
-			}
109
-		});
110
-
111
-		// carddav/caldav sync event setup
112
-		$listener = function($event) {
113
-			if ($event instanceof GenericEvent) {
114
-				/** @var BirthdayService $b */
115
-				$b = $this->getContainer()->query(BirthdayService::class);
116
-				$b->onCardChanged(
117
-					$event->getArgument('addressBookId'),
118
-					$event->getArgument('cardUri'),
119
-					$event->getArgument('cardData')
120
-				);
121
-			}
122
-		};
123
-
124
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $listener);
125
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $listener);
126
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function($event) {
127
-			if ($event instanceof GenericEvent) {
128
-				/** @var BirthdayService $b */
129
-				$b = $this->getContainer()->query(BirthdayService::class);
130
-				$b->onCardDeleted(
131
-					$event->getArgument('addressBookId'),
132
-					$event->getArgument('cardUri')
133
-				);
134
-			}
135
-		});
136
-
137
-		$clearPhotoCache = function($event) {
138
-			if ($event instanceof GenericEvent) {
139
-				/** @var PhotoCache $p */
140
-				$p = $this->getContainer()->query(PhotoCache::class);
141
-				$p->delete(
142
-					$event->getArgument('addressBookId'),
143
-					$event->getArgument('cardUri')
144
-				);
145
-			}
146
-		};
147
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
148
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
149
-
150
-		$dispatcher->addListener('OC\AccountManager::userUpdated', function(GenericEvent $event) {
151
-			$user = $event->getSubject();
152
-			$syncService = $this->getContainer()->query(SyncService::class);
153
-			$syncService->updateUser($user);
154
-		});
155
-
156
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createCalendar', function(GenericEvent $event) {
157
-			/** @var Backend $backend */
158
-			$backend = $this->getContainer()->query(Backend::class);
159
-			$backend->onCalendarAdd(
160
-				$event->getArgument('calendarData')
161
-			);
162
-		});
163
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar', function(GenericEvent $event) {
164
-			/** @var Backend $backend */
165
-			$backend = $this->getContainer()->query(Backend::class);
166
-			$backend->onCalendarUpdate(
167
-				$event->getArgument('calendarData'),
168
-				$event->getArgument('shares'),
169
-				$event->getArgument('propertyMutations')
170
-			);
171
-		});
172
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteCalendar', function(GenericEvent $event) {
173
-			/** @var Backend $backend */
174
-			$backend = $this->getContainer()->query(Backend::class);
175
-			$backend->onCalendarDelete(
176
-				$event->getArgument('calendarData'),
177
-				$event->getArgument('shares')
178
-			);
179
-		});
180
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function(GenericEvent $event) {
181
-			/** @var Backend $backend */
182
-			$backend = $this->getContainer()->query(Backend::class);
183
-			$backend->onCalendarUpdateShares(
184
-				$event->getArgument('calendarData'),
185
-				$event->getArgument('shares'),
186
-				$event->getArgument('add'),
187
-				$event->getArgument('remove')
188
-			);
189
-		});
190
-
191
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function(GenericEvent $event) {
192
-			/** @var Backend $backend */
193
-			$backend = $this->getContainer()->query(Backend::class);
194
-			$backend->onCalendarPublication(
195
-				$event->getArgument('calendarData'),
196
-				$event->getArgument('public')
197
-			);
198
-		});
199
-
200
-		$listener = function(GenericEvent $event, $eventName) {
201
-			/** @var Backend $backend */
202
-			$backend = $this->getContainer()->query(Backend::class);
203
-
204
-			$subject = Event::SUBJECT_OBJECT_ADD;
205
-			if ($eventName === '\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject') {
206
-				$subject = Event::SUBJECT_OBJECT_UPDATE;
207
-			} else if ($eventName === '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject') {
208
-				$subject = Event::SUBJECT_OBJECT_DELETE;
209
-			}
210
-			$backend->onTouchCalendarObject(
211
-				$subject,
212
-				$event->getArgument('calendarData'),
213
-				$event->getArgument('shares'),
214
-				$event->getArgument('objectData')
215
-			);
216
-		};
217
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', $listener);
218
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject', $listener);
219
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject', $listener);
220
-	}
221
-
222
-	public function getSyncService() {
223
-		return $this->getContainer()->query(SyncService::class);
224
-	}
64
+        $container->registerCapability(Capabilities::class);
65
+    }
66
+
67
+    /**
68
+     * @param IContactsManager $contactsManager
69
+     * @param string $userID
70
+     */
71
+    public function setupContactsProvider(IContactsManager $contactsManager, $userID) {
72
+        /** @var ContactsManager $cm */
73
+        $cm = $this->getContainer()->query(ContactsManager::class);
74
+        $urlGenerator = $this->getContainer()->getServer()->getURLGenerator();
75
+        $cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
76
+    }
77
+
78
+    /**
79
+     * @param IManager $contactsManager
80
+     */
81
+    public function setupSystemContactsProvider(IContactsManager $contactsManager) {
82
+        /** @var ContactsManager $cm */
83
+        $cm = $this->getContainer()->query(ContactsManager::class);
84
+        $urlGenerator = $this->getContainer()->getServer()->getURLGenerator();
85
+        $cm->setupSystemContactsProvider($contactsManager, $urlGenerator);
86
+    }
87
+
88
+    /**
89
+     * @param ICalendarManager $calendarManager
90
+     * @param string $userId
91
+     */
92
+    public function setupCalendarProvider(ICalendarManager $calendarManager, $userId) {
93
+        $cm = $this->getContainer()->query(CalendarManager::class);
94
+        $cm->setupCalendarProvider($calendarManager, $userId);
95
+    }
96
+
97
+    public function registerHooks() {
98
+        /** @var HookManager $hm */
99
+        $hm = $this->getContainer()->query(HookManager::class);
100
+        $hm->setup();
101
+
102
+        $dispatcher = $this->getContainer()->getServer()->getEventDispatcher();
103
+
104
+        // first time login event setup
105
+        $dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
106
+            if ($event instanceof GenericEvent) {
107
+                $hm->firstLogin($event->getSubject());
108
+            }
109
+        });
110
+
111
+        // carddav/caldav sync event setup
112
+        $listener = function($event) {
113
+            if ($event instanceof GenericEvent) {
114
+                /** @var BirthdayService $b */
115
+                $b = $this->getContainer()->query(BirthdayService::class);
116
+                $b->onCardChanged(
117
+                    $event->getArgument('addressBookId'),
118
+                    $event->getArgument('cardUri'),
119
+                    $event->getArgument('cardData')
120
+                );
121
+            }
122
+        };
123
+
124
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $listener);
125
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $listener);
126
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function($event) {
127
+            if ($event instanceof GenericEvent) {
128
+                /** @var BirthdayService $b */
129
+                $b = $this->getContainer()->query(BirthdayService::class);
130
+                $b->onCardDeleted(
131
+                    $event->getArgument('addressBookId'),
132
+                    $event->getArgument('cardUri')
133
+                );
134
+            }
135
+        });
136
+
137
+        $clearPhotoCache = function($event) {
138
+            if ($event instanceof GenericEvent) {
139
+                /** @var PhotoCache $p */
140
+                $p = $this->getContainer()->query(PhotoCache::class);
141
+                $p->delete(
142
+                    $event->getArgument('addressBookId'),
143
+                    $event->getArgument('cardUri')
144
+                );
145
+            }
146
+        };
147
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
148
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
149
+
150
+        $dispatcher->addListener('OC\AccountManager::userUpdated', function(GenericEvent $event) {
151
+            $user = $event->getSubject();
152
+            $syncService = $this->getContainer()->query(SyncService::class);
153
+            $syncService->updateUser($user);
154
+        });
155
+
156
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createCalendar', function(GenericEvent $event) {
157
+            /** @var Backend $backend */
158
+            $backend = $this->getContainer()->query(Backend::class);
159
+            $backend->onCalendarAdd(
160
+                $event->getArgument('calendarData')
161
+            );
162
+        });
163
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendar', function(GenericEvent $event) {
164
+            /** @var Backend $backend */
165
+            $backend = $this->getContainer()->query(Backend::class);
166
+            $backend->onCalendarUpdate(
167
+                $event->getArgument('calendarData'),
168
+                $event->getArgument('shares'),
169
+                $event->getArgument('propertyMutations')
170
+            );
171
+        });
172
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteCalendar', function(GenericEvent $event) {
173
+            /** @var Backend $backend */
174
+            $backend = $this->getContainer()->query(Backend::class);
175
+            $backend->onCalendarDelete(
176
+                $event->getArgument('calendarData'),
177
+                $event->getArgument('shares')
178
+            );
179
+        });
180
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function(GenericEvent $event) {
181
+            /** @var Backend $backend */
182
+            $backend = $this->getContainer()->query(Backend::class);
183
+            $backend->onCalendarUpdateShares(
184
+                $event->getArgument('calendarData'),
185
+                $event->getArgument('shares'),
186
+                $event->getArgument('add'),
187
+                $event->getArgument('remove')
188
+            );
189
+        });
190
+
191
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function(GenericEvent $event) {
192
+            /** @var Backend $backend */
193
+            $backend = $this->getContainer()->query(Backend::class);
194
+            $backend->onCalendarPublication(
195
+                $event->getArgument('calendarData'),
196
+                $event->getArgument('public')
197
+            );
198
+        });
199
+
200
+        $listener = function(GenericEvent $event, $eventName) {
201
+            /** @var Backend $backend */
202
+            $backend = $this->getContainer()->query(Backend::class);
203
+
204
+            $subject = Event::SUBJECT_OBJECT_ADD;
205
+            if ($eventName === '\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject') {
206
+                $subject = Event::SUBJECT_OBJECT_UPDATE;
207
+            } else if ($eventName === '\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject') {
208
+                $subject = Event::SUBJECT_OBJECT_DELETE;
209
+            }
210
+            $backend->onTouchCalendarObject(
211
+                $subject,
212
+                $event->getArgument('calendarData'),
213
+                $event->getArgument('shares'),
214
+                $event->getArgument('objectData')
215
+            );
216
+        };
217
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createCalendarObject', $listener);
218
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateCalendarObject', $listener);
219
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteCalendarObject', $listener);
220
+    }
221
+
222
+    public function getSyncService() {
223
+        return $this->getContainer()->query(SyncService::class);
224
+    }
225 225
 
226 226
 }
Please login to merge, or discard this patch.
apps/dav/lib/Migration/FixBirthdayCalendarComponent.php 1 patch
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -28,35 +28,35 @@
 block discarded – undo
28 28
 
29 29
 class FixBirthdayCalendarComponent implements IRepairStep {
30 30
 
31
-	/** @var IDBConnection */
32
-	private $connection;
33
-
34
-	/**
35
-	 * FixBirthdayCalendarComponent constructor.
36
-	 *
37
-	 * @param IDBConnection $connection
38
-	 */
39
-	public function __construct(IDBConnection $connection) {
40
-		$this->connection = $connection;
41
-	}
42
-
43
-	/**
44
-	 * @inheritdoc
45
-	 */
46
-	public function getName() {
47
-		return 'Fix component of birthday calendars';
48
-	}
49
-
50
-	/**
51
-	 * @inheritdoc
52
-	 */
53
-	public function run(IOutput $output) {
54
-		$query = $this->connection->getQueryBuilder();
55
-		$updated = $query->update('calendars')
56
-			->set('components', $query->createNamedParameter('VEVENT'))
57
-			->where($query->expr()->eq('uri', $query->createNamedParameter(BirthdayService::BIRTHDAY_CALENDAR_URI)))
58
-			->execute();
59
-
60
-		$output->info("$updated birthday calendars updated.");
61
-	}
31
+    /** @var IDBConnection */
32
+    private $connection;
33
+
34
+    /**
35
+     * FixBirthdayCalendarComponent constructor.
36
+     *
37
+     * @param IDBConnection $connection
38
+     */
39
+    public function __construct(IDBConnection $connection) {
40
+        $this->connection = $connection;
41
+    }
42
+
43
+    /**
44
+     * @inheritdoc
45
+     */
46
+    public function getName() {
47
+        return 'Fix component of birthday calendars';
48
+    }
49
+
50
+    /**
51
+     * @inheritdoc
52
+     */
53
+    public function run(IOutput $output) {
54
+        $query = $this->connection->getQueryBuilder();
55
+        $updated = $query->update('calendars')
56
+            ->set('components', $query->createNamedParameter('VEVENT'))
57
+            ->where($query->expr()->eq('uri', $query->createNamedParameter(BirthdayService::BIRTHDAY_CALENDAR_URI)))
58
+            ->execute();
59
+
60
+        $output->info("$updated birthday calendars updated.");
61
+    }
62 62
 }
Please login to merge, or discard this patch.
apps/dav/lib/Command/SyncSystemAddressBook.php 1 patch
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -31,36 +31,36 @@
 block discarded – undo
31 31
 
32 32
 class SyncSystemAddressBook extends Command {
33 33
 
34
-	/** @var SyncService */
35
-	private $syncService;
34
+    /** @var SyncService */
35
+    private $syncService;
36 36
 
37
-	/**
38
-	 * @param SyncService $syncService
39
-	 */
40
-	function __construct(SyncService $syncService) {
41
-		parent::__construct();
42
-		$this->syncService = $syncService;
43
-	}
37
+    /**
38
+     * @param SyncService $syncService
39
+     */
40
+    function __construct(SyncService $syncService) {
41
+        parent::__construct();
42
+        $this->syncService = $syncService;
43
+    }
44 44
 
45
-	protected function configure() {
46
-		$this
47
-			->setName('dav:sync-system-addressbook')
48
-			->setDescription('Synchronizes users to the system addressbook');
49
-	}
45
+    protected function configure() {
46
+        $this
47
+            ->setName('dav:sync-system-addressbook')
48
+            ->setDescription('Synchronizes users to the system addressbook');
49
+    }
50 50
 
51
-	/**
52
-	 * @param InputInterface $input
53
-	 * @param OutputInterface $output
54
-	 */
55
-	protected function execute(InputInterface $input, OutputInterface $output) {
56
-		$output->writeln('Syncing users ...');
57
-		$progress = new ProgressBar($output);
58
-		$progress->start();
59
-		$this->syncService->syncInstance(function() use ($progress) {
60
-			$progress->advance();
61
-		});
51
+    /**
52
+     * @param InputInterface $input
53
+     * @param OutputInterface $output
54
+     */
55
+    protected function execute(InputInterface $input, OutputInterface $output) {
56
+        $output->writeln('Syncing users ...');
57
+        $progress = new ProgressBar($output);
58
+        $progress->start();
59
+        $this->syncService->syncInstance(function() use ($progress) {
60
+            $progress->advance();
61
+        });
62 62
 
63
-		$progress->finish();
64
-		$output->writeln('');
65
-	}
63
+        $progress->finish();
64
+        $output->writeln('');
65
+    }
66 66
 }
Please login to merge, or discard this patch.
apps/dav/lib/Command/CreateAddressBook.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -36,43 +36,43 @@
 block discarded – undo
36 36
 
37 37
 class CreateAddressBook extends Command {
38 38
 
39
-	/** @var IUserManager */
40
-	private $userManager;
39
+    /** @var IUserManager */
40
+    private $userManager;
41 41
 
42
-	/** @var CardDavBackend */
43
-	private $cardDavBackend;
42
+    /** @var CardDavBackend */
43
+    private $cardDavBackend;
44 44
 
45
-	/**
46
-	 * @param IUserManager $userManager
47
-	 * @param CardDavBackend $cardDavBackend
48
-	 */
49
-	function __construct(IUserManager $userManager,
50
-						 CardDavBackend $cardDavBackend
51
-	) {
52
-		parent::__construct();
53
-		$this->userManager = $userManager;
54
-		$this->cardDavBackend = $cardDavBackend;
55
-	}
45
+    /**
46
+     * @param IUserManager $userManager
47
+     * @param CardDavBackend $cardDavBackend
48
+     */
49
+    function __construct(IUserManager $userManager,
50
+                            CardDavBackend $cardDavBackend
51
+    ) {
52
+        parent::__construct();
53
+        $this->userManager = $userManager;
54
+        $this->cardDavBackend = $cardDavBackend;
55
+    }
56 56
 
57
-	protected function configure() {
58
-		$this
59
-				->setName('dav:create-addressbook')
60
-				->setDescription('Create a dav addressbook')
61
-				->addArgument('user',
62
-						InputArgument::REQUIRED,
63
-						'User for whom the addressbook will be created')
64
-				->addArgument('name',
65
-						InputArgument::REQUIRED,
66
-						'Name of the addressbook');
67
-	}
57
+    protected function configure() {
58
+        $this
59
+                ->setName('dav:create-addressbook')
60
+                ->setDescription('Create a dav addressbook')
61
+                ->addArgument('user',
62
+                        InputArgument::REQUIRED,
63
+                        'User for whom the addressbook will be created')
64
+                ->addArgument('name',
65
+                        InputArgument::REQUIRED,
66
+                        'Name of the addressbook');
67
+    }
68 68
 
69
-	protected function execute(InputInterface $input, OutputInterface $output) {
70
-		$user = $input->getArgument('user');
71
-		if (!$this->userManager->userExists($user)) {
72
-			throw new \InvalidArgumentException("User <$user> in unknown.");
73
-		}
69
+    protected function execute(InputInterface $input, OutputInterface $output) {
70
+        $user = $input->getArgument('user');
71
+        if (!$this->userManager->userExists($user)) {
72
+            throw new \InvalidArgumentException("User <$user> in unknown.");
73
+        }
74 74
 
75
-		$name = $input->getArgument('name');
76
-		$this->cardDavBackend->createAddressBook("principals/users/$user", $name, []);
77
-	}
75
+        $name = $input->getArgument('name');
76
+        $this->cardDavBackend->createAddressBook("principals/users/$user", $name, []);
77
+    }
78 78
 }
Please login to merge, or discard this patch.
apps/dav/lib/Capabilities.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -26,11 +26,11 @@
 block discarded – undo
26 26
 
27 27
 class Capabilities implements ICapability {
28 28
 
29
-	public function getCapabilities() {
30
-		return [
31
-			'dav' => [
32
-				'chunking' => '1.0',
33
-			]
34
-		];
35
-	}
29
+    public function getCapabilities() {
30
+        return [
31
+            'dav' => [
32
+                'chunking' => '1.0',
33
+            ]
34
+        ];
35
+    }
36 36
 }
Please login to merge, or discard this patch.
apps/dav/lib/Files/BrowserErrorPagePlugin.php 1 patch
Indentation   +69 added lines, -69 removed lines patch added patch discarded remove patch
@@ -31,78 +31,78 @@
 block discarded – undo
31 31
 use Sabre\DAV\ServerPlugin;
32 32
 
33 33
 class BrowserErrorPagePlugin extends ServerPlugin {
34
-	/** @var Server */
35
-	private $server;
34
+    /** @var Server */
35
+    private $server;
36 36
 
37
-	/**
38
-	 * This initializes the plugin.
39
-	 *
40
-	 * This function is called by Sabre\DAV\Server, after
41
-	 * addPlugin is called.
42
-	 *
43
-	 * This method should set up the required event subscriptions.
44
-	 *
45
-	 * @param Server $server
46
-	 * @return void
47
-	 */
48
-	function initialize(Server $server) {
49
-		$this->server = $server;
50
-		$server->on('exception', array($this, 'logException'), 1000);
51
-	}
37
+    /**
38
+     * This initializes the plugin.
39
+     *
40
+     * This function is called by Sabre\DAV\Server, after
41
+     * addPlugin is called.
42
+     *
43
+     * This method should set up the required event subscriptions.
44
+     *
45
+     * @param Server $server
46
+     * @return void
47
+     */
48
+    function initialize(Server $server) {
49
+        $this->server = $server;
50
+        $server->on('exception', array($this, 'logException'), 1000);
51
+    }
52 52
 
53
-	/**
54
-	 * @param IRequest $request
55
-	 * @return bool
56
-	 */
57
-	public static function isBrowserRequest(IRequest $request) {
58
-		if ($request->getMethod() !== 'GET') {
59
-			return false;
60
-		}
61
-		return $request->isUserAgent([
62
-			Request::USER_AGENT_IE,
63
-			Request::USER_AGENT_MS_EDGE,
64
-			Request::USER_AGENT_CHROME,
65
-			Request::USER_AGENT_FIREFOX,
66
-			Request::USER_AGENT_SAFARI,
67
-		]);
68
-	}
53
+    /**
54
+     * @param IRequest $request
55
+     * @return bool
56
+     */
57
+    public static function isBrowserRequest(IRequest $request) {
58
+        if ($request->getMethod() !== 'GET') {
59
+            return false;
60
+        }
61
+        return $request->isUserAgent([
62
+            Request::USER_AGENT_IE,
63
+            Request::USER_AGENT_MS_EDGE,
64
+            Request::USER_AGENT_CHROME,
65
+            Request::USER_AGENT_FIREFOX,
66
+            Request::USER_AGENT_SAFARI,
67
+        ]);
68
+    }
69 69
 
70
-	/**
71
-	 * @param \Exception $ex
72
-	 */
73
-	public function logException(\Exception $ex) {
74
-		if ($ex instanceof Exception) {
75
-			$httpCode = $ex->getHTTPCode();
76
-			$headers = $ex->getHTTPHeaders($this->server);
77
-		} else {
78
-			$httpCode = 500;
79
-			$headers = [];
80
-		}
81
-		$this->server->httpResponse->addHeaders($headers);
82
-		$this->server->httpResponse->setStatus($httpCode);
83
-		$body = $this->generateBody();
84
-		$this->server->httpResponse->setBody($body);
85
-		$this->sendResponse();
86
-	}
70
+    /**
71
+     * @param \Exception $ex
72
+     */
73
+    public function logException(\Exception $ex) {
74
+        if ($ex instanceof Exception) {
75
+            $httpCode = $ex->getHTTPCode();
76
+            $headers = $ex->getHTTPHeaders($this->server);
77
+        } else {
78
+            $httpCode = 500;
79
+            $headers = [];
80
+        }
81
+        $this->server->httpResponse->addHeaders($headers);
82
+        $this->server->httpResponse->setStatus($httpCode);
83
+        $body = $this->generateBody();
84
+        $this->server->httpResponse->setBody($body);
85
+        $this->sendResponse();
86
+    }
87 87
 
88
-	/**
89
-	 * @codeCoverageIgnore
90
-	 * @return bool|string
91
-	 */
92
-	public function generateBody() {
93
-		$request = \OC::$server->getRequest();
94
-		$content = new OC_Template('dav', 'exception', 'guest');
95
-		$content->assign('title', $this->server->httpResponse->getStatusText());
96
-		$content->assign('remoteAddr', $request->getRemoteAddress());
97
-		$content->assign('requestID', $request->getId());
98
-		return $content->fetchPage();
99
-	}
88
+    /**
89
+     * @codeCoverageIgnore
90
+     * @return bool|string
91
+     */
92
+    public function generateBody() {
93
+        $request = \OC::$server->getRequest();
94
+        $content = new OC_Template('dav', 'exception', 'guest');
95
+        $content->assign('title', $this->server->httpResponse->getStatusText());
96
+        $content->assign('remoteAddr', $request->getRemoteAddress());
97
+        $content->assign('requestID', $request->getId());
98
+        return $content->fetchPage();
99
+    }
100 100
 
101
-	/**
102
-	 * @codeCoverageIgnore
103
-	 */
104
-	public function sendResponse() {
105
-		$this->server->sapi->sendResponse($this->server->httpResponse);
106
-		exit();
107
-	}
101
+    /**
102
+     * @codeCoverageIgnore
103
+     */
104
+    public function sendResponse() {
105
+        $this->server->sapi->sendResponse($this->server->httpResponse);
106
+        exit();
107
+    }
108 108
 }
Please login to merge, or discard this patch.
apps/dav/lib/Files/Sharing/PublicLinkCheckPlugin.php 2 patches
Indentation   +26 added lines, -26 removed lines patch added patch discarded remove patch
@@ -32,33 +32,33 @@
 block discarded – undo
32 32
  * Verify that the public link share is valid
33 33
  */
34 34
 class PublicLinkCheckPlugin extends ServerPlugin {
35
-	/**
36
-	 * @var FileInfo
37
-	 */
38
-	private $fileInfo;
35
+    /**
36
+     * @var FileInfo
37
+     */
38
+    private $fileInfo;
39 39
 
40
-	/**
41
-	 * @param FileInfo $fileInfo
42
-	 */
43
-	public function setFileInfo($fileInfo) {
44
-		$this->fileInfo = $fileInfo;
45
-	}
40
+    /**
41
+     * @param FileInfo $fileInfo
42
+     */
43
+    public function setFileInfo($fileInfo) {
44
+        $this->fileInfo = $fileInfo;
45
+    }
46 46
 
47
-	/**
48
-	 * This initializes the plugin.
49
-	 *
50
-	 * @param \Sabre\DAV\Server $server Sabre server
51
-	 *
52
-	 * @return void
53
-	 */
54
-	public function initialize(\Sabre\DAV\Server $server) {
55
-		$server->on('beforeMethod', [$this, 'beforeMethod']);
56
-	}
47
+    /**
48
+     * This initializes the plugin.
49
+     *
50
+     * @param \Sabre\DAV\Server $server Sabre server
51
+     *
52
+     * @return void
53
+     */
54
+    public function initialize(\Sabre\DAV\Server $server) {
55
+        $server->on('beforeMethod', [$this, 'beforeMethod']);
56
+    }
57 57
 
58
-	public function beforeMethod(RequestInterface $request, ResponseInterface $response){
59
-		// verify that the owner didn't have his share permissions revoked
60
-		if ($this->fileInfo && !$this->fileInfo->isShareable()) {
61
-			throw new NotFound();
62
-		}
63
-	}
58
+    public function beforeMethod(RequestInterface $request, ResponseInterface $response){
59
+        // verify that the owner didn't have his share permissions revoked
60
+        if ($this->fileInfo && !$this->fileInfo->isShareable()) {
61
+            throw new NotFound();
62
+        }
63
+    }
64 64
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@
 block discarded – undo
55 55
 		$server->on('beforeMethod', [$this, 'beforeMethod']);
56 56
 	}
57 57
 
58
-	public function beforeMethod(RequestInterface $request, ResponseInterface $response){
58
+	public function beforeMethod(RequestInterface $request, ResponseInterface $response) {
59 59
 		// verify that the owner didn't have his share permissions revoked
60 60
 		if ($this->fileInfo && !$this->fileInfo->isShareable()) {
61 61
 			throw new NotFound();
Please login to merge, or discard this patch.