Passed
Push — master ( d23e96...1bc100 )
by Roeland
11:25 queued 10s
created
lib/private/Preview/Movie.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -84,15 +84,15 @@
 block discarded – undo
84 84
 		$tmpPath = \OC::$server->getTempManager()->getTemporaryFile();
85 85
 
86 86
 		if (self::$avconvBinary) {
87
-			$cmd = self::$avconvBinary . ' -y -ss ' . escapeshellarg($second) .
88
-				' -i ' . escapeshellarg($absPath) .
89
-				' -an -f mjpeg -vframes 1 -vsync 1 ' . escapeshellarg($tmpPath) .
87
+			$cmd = self::$avconvBinary.' -y -ss '.escapeshellarg($second).
88
+				' -i '.escapeshellarg($absPath).
89
+				' -an -f mjpeg -vframes 1 -vsync 1 '.escapeshellarg($tmpPath).
90 90
 				' > /dev/null 2>&1';
91 91
 		} else {
92
-			$cmd = self::$ffmpegBinary . ' -y -ss ' . escapeshellarg($second) .
93
-				' -i ' . escapeshellarg($absPath) .
94
-				' -f mjpeg -vframes 1' .
95
-				' ' . escapeshellarg($tmpPath) .
92
+			$cmd = self::$ffmpegBinary.' -y -ss '.escapeshellarg($second).
93
+				' -i '.escapeshellarg($absPath).
94
+				' -f mjpeg -vframes 1'.
95
+				' '.escapeshellarg($tmpPath).
96 96
 				' > /dev/null 2>&1';
97 97
 		}
98 98
 
Please login to merge, or discard this patch.
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -29,73 +29,73 @@
 block discarded – undo
29 29
 use OCP\IImage;
30 30
 
31 31
 class Movie extends ProviderV2 {
32
-	public static $avconvBinary;
33
-	public static $ffmpegBinary;
32
+    public static $avconvBinary;
33
+    public static $ffmpegBinary;
34 34
 
35
-	/**
36
-	 * {@inheritDoc}
37
-	 */
38
-	public function getMimeType(): string {
39
-		return '/video\/.*/';
40
-	}
35
+    /**
36
+     * {@inheritDoc}
37
+     */
38
+    public function getMimeType(): string {
39
+        return '/video\/.*/';
40
+    }
41 41
 
42
-	/**
43
-	 * {@inheritDoc}
44
-	 */
45
-	public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
46
-		// TODO: use proc_open() and stream the source file ?
42
+    /**
43
+     * {@inheritDoc}
44
+     */
45
+    public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
46
+        // TODO: use proc_open() and stream the source file ?
47 47
 
48
-		$absPath = $this->getLocalFile($file, 5242880); // only use the first 5MB
48
+        $absPath = $this->getLocalFile($file, 5242880); // only use the first 5MB
49 49
 
50
-		$result = $this->generateThumbNail($maxX, $maxY, $absPath, 5);
51
-		if ($result === false) {
52
-			$result = $this->generateThumbNail($maxX, $maxY, $absPath, 1);
53
-			if ($result === false) {
54
-				$result = $this->generateThumbNail($maxX, $maxY, $absPath, 0);
55
-			}
56
-		}
50
+        $result = $this->generateThumbNail($maxX, $maxY, $absPath, 5);
51
+        if ($result === false) {
52
+            $result = $this->generateThumbNail($maxX, $maxY, $absPath, 1);
53
+            if ($result === false) {
54
+                $result = $this->generateThumbNail($maxX, $maxY, $absPath, 0);
55
+            }
56
+        }
57 57
 
58
-		$this->cleanTmpFiles();
58
+        $this->cleanTmpFiles();
59 59
 
60
-		return $result;
61
-	}
60
+        return $result;
61
+    }
62 62
 
63
-	/**
64
-	 * @param int $maxX
65
-	 * @param int $maxY
66
-	 * @param string $absPath
67
-	 * @param int $second
68
-	 * @return null|\OCP\IImage
69
-	 */
70
-	private function generateThumbNail($maxX, $maxY, $absPath, $second): ?IImage {
71
-		$tmpPath = \OC::$server->getTempManager()->getTemporaryFile();
63
+    /**
64
+     * @param int $maxX
65
+     * @param int $maxY
66
+     * @param string $absPath
67
+     * @param int $second
68
+     * @return null|\OCP\IImage
69
+     */
70
+    private function generateThumbNail($maxX, $maxY, $absPath, $second): ?IImage {
71
+        $tmpPath = \OC::$server->getTempManager()->getTemporaryFile();
72 72
 
73
-		if (self::$avconvBinary) {
74
-			$cmd = self::$avconvBinary . ' -y -ss ' . escapeshellarg($second) .
75
-				' -i ' . escapeshellarg($absPath) .
76
-				' -an -f mjpeg -vframes 1 -vsync 1 ' . escapeshellarg($tmpPath) .
77
-				' > /dev/null 2>&1';
78
-		} else {
79
-			$cmd = self::$ffmpegBinary . ' -y -ss ' . escapeshellarg($second) .
80
-				' -i ' . escapeshellarg($absPath) .
81
-				' -f mjpeg -vframes 1' .
82
-				' ' . escapeshellarg($tmpPath) .
83
-				' > /dev/null 2>&1';
84
-		}
73
+        if (self::$avconvBinary) {
74
+            $cmd = self::$avconvBinary . ' -y -ss ' . escapeshellarg($second) .
75
+                ' -i ' . escapeshellarg($absPath) .
76
+                ' -an -f mjpeg -vframes 1 -vsync 1 ' . escapeshellarg($tmpPath) .
77
+                ' > /dev/null 2>&1';
78
+        } else {
79
+            $cmd = self::$ffmpegBinary . ' -y -ss ' . escapeshellarg($second) .
80
+                ' -i ' . escapeshellarg($absPath) .
81
+                ' -f mjpeg -vframes 1' .
82
+                ' ' . escapeshellarg($tmpPath) .
83
+                ' > /dev/null 2>&1';
84
+        }
85 85
 
86
-		exec($cmd, $output, $returnCode);
86
+        exec($cmd, $output, $returnCode);
87 87
 
88
-		if ($returnCode === 0) {
89
-			$image = new \OC_Image();
90
-			$image->loadFromFile($tmpPath);
91
-			unlink($tmpPath);
92
-			if ($image->valid()) {
93
-				$image->scaleDownToFit($maxX, $maxY);
88
+        if ($returnCode === 0) {
89
+            $image = new \OC_Image();
90
+            $image->loadFromFile($tmpPath);
91
+            unlink($tmpPath);
92
+            if ($image->valid()) {
93
+                $image->scaleDownToFit($maxX, $maxY);
94 94
 
95
-				return $image;
96
-			}
97
-		}
98
-		unlink($tmpPath);
99
-		return null;
100
-	}
95
+                return $image;
96
+            }
97
+        }
98
+        unlink($tmpPath);
99
+        return null;
100
+    }
101 101
 }
Please login to merge, or discard this patch.
lib/private/Share20/Hooks.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -22,15 +22,15 @@
 block discarded – undo
22 22
 namespace OC\Share20;
23 23
 
24 24
 class Hooks {
25
-	public static function post_deleteUser($arguments) {
26
-		\OC::$server->getShareManager()->userDeleted($arguments['uid']);
27
-	}
25
+    public static function post_deleteUser($arguments) {
26
+        \OC::$server->getShareManager()->userDeleted($arguments['uid']);
27
+    }
28 28
 
29
-	public static function post_deleteGroup($arguments) {
30
-		\OC::$server->getShareManager()->groupDeleted($arguments['gid']);
31
-	}
29
+    public static function post_deleteGroup($arguments) {
30
+        \OC::$server->getShareManager()->groupDeleted($arguments['gid']);
31
+    }
32 32
 
33
-	public static function post_removeFromGroup($arguments) {
34
-		\OC::$server->getShareManager()->userDeletedFromGroup($arguments['uid'], $arguments['gid']);
35
-	}
33
+    public static function post_removeFromGroup($arguments) {
34
+        \OC::$server->getShareManager()->userDeletedFromGroup($arguments['uid'], $arguments['gid']);
35
+    }
36 36
 }
Please login to merge, or discard this patch.
lib/private/Share20/Share.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -86,10 +86,10 @@  discard block
 block discarded – undo
86 86
 	 */
87 87
 	public function setId($id) {
88 88
 		if (is_int($id)) {
89
-			$id = (string)$id;
89
+			$id = (string) $id;
90 90
 		}
91 91
 
92
-		if(!is_string($id)) {
92
+		if (!is_string($id)) {
93 93
 			throw new \InvalidArgumentException('String expected.');
94 94
 		}
95 95
 
@@ -115,14 +115,14 @@  discard block
 block discarded – undo
115 115
 		if ($this->providerId === null || $this->id === null) {
116 116
 			throw new \UnexpectedValueException;
117 117
 		}
118
-		return $this->providerId . ':' . $this->id;
118
+		return $this->providerId.':'.$this->id;
119 119
 	}
120 120
 
121 121
 	/**
122 122
 	 * @inheritdoc
123 123
 	 */
124 124
 	public function setProviderId($id) {
125
-		if(!is_string($id)) {
125
+		if (!is_string($id)) {
126 126
 			throw new \InvalidArgumentException('String expected.');
127 127
 		}
128 128
 
@@ -156,7 +156,7 @@  discard block
 block discarded – undo
156 156
 
157 157
 			// for federated shares the owner can be a remote user, in this
158 158
 			// case we use the initiator
159
-			if($this->userManager->userExists($this->shareOwner)) {
159
+			if ($this->userManager->userExists($this->shareOwner)) {
160 160
 				$userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
161 161
 			} else {
162 162
 				$userFolder = $this->rootFolder->getUserFolder($this->sharedBy);
@@ -164,7 +164,7 @@  discard block
 block discarded – undo
164 164
 
165 165
 			$nodes = $userFolder->getById($this->fileId);
166 166
 			if (empty($nodes)) {
167
-				throw new NotFoundException('Node for share not found, fileid: ' . $this->fileId);
167
+				throw new NotFoundException('Node for share not found, fileid: '.$this->fileId);
168 168
 			}
169 169
 
170 170
 			$this->node = $nodes[0];
Please login to merge, or discard this patch.
Indentation   +518 added lines, -518 removed lines patch added patch discarded remove patch
@@ -34,522 +34,522 @@
 block discarded – undo
34 34
 
35 35
 class Share implements \OCP\Share\IShare {
36 36
 
37
-	/** @var string */
38
-	private $id;
39
-	/** @var string */
40
-	private $providerId;
41
-	/** @var Node */
42
-	private $node;
43
-	/** @var int */
44
-	private $fileId;
45
-	/** @var string */
46
-	private $nodeType;
47
-	/** @var int */
48
-	private $shareType;
49
-	/** @var string */
50
-	private $sharedWith;
51
-	/** @var string */
52
-	private $sharedWithDisplayName;
53
-	/** @var string */
54
-	private $sharedWithAvatar;
55
-	/** @var string */
56
-	private $sharedBy;
57
-	/** @var string */
58
-	private $shareOwner;
59
-	/** @var int */
60
-	private $permissions;
61
-	/** @var string */
62
-	private $note = '';
63
-	/** @var \DateTime */
64
-	private $expireDate;
65
-	/** @var string */
66
-	private $password;
67
-	/** @var bool */
68
-	private $sendPasswordByTalk = false;
69
-	/** @var string */
70
-	private $token;
71
-	/** @var int */
72
-	private $parent;
73
-	/** @var string */
74
-	private $target;
75
-	/** @var \DateTime */
76
-	private $shareTime;
77
-	/** @var bool */
78
-	private $mailSend;
79
-	/** @var string */
80
-	private $label = '';
81
-
82
-	/** @var IRootFolder */
83
-	private $rootFolder;
84
-
85
-	/** @var IUserManager */
86
-	private $userManager;
87
-
88
-	/** @var ICacheEntry|null */
89
-	private $nodeCacheEntry;
90
-
91
-	/** @var bool */
92
-	private $hideDownload = false;
93
-
94
-	public function __construct(IRootFolder $rootFolder, IUserManager $userManager) {
95
-		$this->rootFolder = $rootFolder;
96
-		$this->userManager = $userManager;
97
-	}
98
-
99
-	/**
100
-	 * @inheritdoc
101
-	 */
102
-	public function setId($id) {
103
-		if (is_int($id)) {
104
-			$id = (string)$id;
105
-		}
106
-
107
-		if(!is_string($id)) {
108
-			throw new \InvalidArgumentException('String expected.');
109
-		}
110
-
111
-		if ($this->id !== null) {
112
-			throw new IllegalIDChangeException('Not allowed to assign a new internal id to a share');
113
-		}
114
-
115
-		$this->id = trim($id);
116
-		return $this;
117
-	}
118
-
119
-	/**
120
-	 * @inheritdoc
121
-	 */
122
-	public function getId() {
123
-		return $this->id;
124
-	}
125
-
126
-	/**
127
-	 * @inheritdoc
128
-	 */
129
-	public function getFullId() {
130
-		if ($this->providerId === null || $this->id === null) {
131
-			throw new \UnexpectedValueException;
132
-		}
133
-		return $this->providerId . ':' . $this->id;
134
-	}
135
-
136
-	/**
137
-	 * @inheritdoc
138
-	 */
139
-	public function setProviderId($id) {
140
-		if(!is_string($id)) {
141
-			throw new \InvalidArgumentException('String expected.');
142
-		}
143
-
144
-		if ($this->providerId !== null) {
145
-			throw new IllegalIDChangeException('Not allowed to assign a new provider id to a share');
146
-		}
147
-
148
-		$this->providerId = trim($id);
149
-		return $this;
150
-	}
151
-
152
-	/**
153
-	 * @inheritdoc
154
-	 */
155
-	public function setNode(Node $node) {
156
-		$this->fileId = null;
157
-		$this->nodeType = null;
158
-		$this->node = $node;
159
-		return $this;
160
-	}
161
-
162
-	/**
163
-	 * @inheritdoc
164
-	 */
165
-	public function getNode() {
166
-		if ($this->node === null) {
167
-
168
-			if ($this->shareOwner === null || $this->fileId === null) {
169
-				throw new NotFoundException();
170
-			}
171
-
172
-			// for federated shares the owner can be a remote user, in this
173
-			// case we use the initiator
174
-			if($this->userManager->userExists($this->shareOwner)) {
175
-				$userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
176
-			} else {
177
-				$userFolder = $this->rootFolder->getUserFolder($this->sharedBy);
178
-			}
179
-
180
-			$nodes = $userFolder->getById($this->fileId);
181
-			if (empty($nodes)) {
182
-				throw new NotFoundException('Node for share not found, fileid: ' . $this->fileId);
183
-			}
184
-
185
-			$this->node = $nodes[0];
186
-		}
187
-
188
-		return $this->node;
189
-	}
190
-
191
-	/**
192
-	 * @inheritdoc
193
-	 */
194
-	public function setNodeId($fileId) {
195
-		$this->node = null;
196
-		$this->fileId = $fileId;
197
-		return $this;
198
-	}
199
-
200
-	/**
201
-	 * @inheritdoc
202
-	 */
203
-	public function getNodeId() {
204
-		if ($this->fileId === null) {
205
-			$this->fileId = $this->getNode()->getId();
206
-		}
207
-
208
-		return $this->fileId;
209
-	}
210
-
211
-	/**
212
-	 * @inheritdoc
213
-	 */
214
-	public function setNodeType($type) {
215
-		if ($type !== 'file' && $type !== 'folder') {
216
-			throw new \InvalidArgumentException();
217
-		}
218
-
219
-		$this->nodeType = $type;
220
-		return $this;
221
-	}
222
-
223
-	/**
224
-	 * @inheritdoc
225
-	 */
226
-	public function getNodeType() {
227
-		if ($this->nodeType === null) {
228
-			$node = $this->getNode();
229
-			$this->nodeType = $node instanceof File ? 'file' : 'folder';
230
-		}
231
-
232
-		return $this->nodeType;
233
-	}
234
-
235
-	/**
236
-	 * @inheritdoc
237
-	 */
238
-	public function setShareType($shareType) {
239
-		$this->shareType = $shareType;
240
-		return $this;
241
-	}
242
-
243
-	/**
244
-	 * @inheritdoc
245
-	 */
246
-	public function getShareType() {
247
-		return $this->shareType;
248
-	}
249
-
250
-	/**
251
-	 * @inheritdoc
252
-	 */
253
-	public function setSharedWith($sharedWith) {
254
-		if (!is_string($sharedWith)) {
255
-			throw new \InvalidArgumentException();
256
-		}
257
-		$this->sharedWith = $sharedWith;
258
-		return $this;
259
-	}
260
-
261
-	/**
262
-	 * @inheritdoc
263
-	 */
264
-	public function getSharedWith() {
265
-		return $this->sharedWith;
266
-	}
267
-
268
-	/**
269
-	 * @inheritdoc
270
-	 */
271
-	public function setSharedWithDisplayName($displayName) {
272
-		if (!is_string($displayName)) {
273
-			throw new \InvalidArgumentException();
274
-		}
275
-		$this->sharedWithDisplayName = $displayName;
276
-		return $this;
277
-	}
278
-
279
-	/**
280
-	 * @inheritdoc
281
-	 */
282
-	public function getSharedWithDisplayName() {
283
-		return $this->sharedWithDisplayName;
284
-	}
285
-
286
-	/**
287
-	 * @inheritdoc
288
-	 */
289
-	public function setSharedWithAvatar($src) {
290
-		if (!is_string($src)) {
291
-			throw new \InvalidArgumentException();
292
-		}
293
-		$this->sharedWithAvatar = $src;
294
-		return $this;
295
-	}
296
-
297
-	/**
298
-	 * @inheritdoc
299
-	 */
300
-	public function getSharedWithAvatar() {
301
-		return $this->sharedWithAvatar;
302
-	}
303
-
304
-	/**
305
-	 * @inheritdoc
306
-	 */
307
-	public function setPermissions($permissions) {
308
-		//TODO checkes
309
-
310
-		$this->permissions = $permissions;
311
-		return $this;
312
-	}
313
-
314
-	/**
315
-	 * @inheritdoc
316
-	 */
317
-	public function getPermissions() {
318
-		return $this->permissions;
319
-	}
320
-
321
-	/**
322
-	 * @inheritdoc
323
-	 */
324
-	public function setNote($note) {
325
-		$this->note = $note;
326
-		return $this;
327
-	}
328
-
329
-	/**
330
-	 * @inheritdoc
331
-	 */
332
-	public function getNote() {
333
-		if (is_string($this->note)) {
334
-			return $this->note;
335
-		}
336
-		return '';
337
-	}
338
-
339
-	/**
340
-	 * @inheritdoc
341
-	 */
342
-	public function setLabel($label) {
343
-		$this->label = $label;
344
-		return $this;
345
-	}
346
-
347
-	/**
348
-	 * @inheritdoc
349
-	 */
350
-	public function getLabel() {
351
-		return $this->label;
352
-	}
353
-
354
-	/**
355
-	 * @inheritdoc
356
-	 */
357
-	public function setExpirationDate($expireDate) {
358
-		//TODO checks
359
-
360
-		$this->expireDate = $expireDate;
361
-		return $this;
362
-	}
363
-
364
-	/**
365
-	 * @inheritdoc
366
-	 */
367
-	public function getExpirationDate() {
368
-		return $this->expireDate;
369
-	}
370
-
371
-	/**
372
-	 * @inheritdoc
373
-	 */
374
-	public function isExpired() {
375
-		return $this->getExpirationDate() !== null &&
376
-			$this->getExpirationDate() <= new \DateTime();
377
-	}
378
-
379
-	/**
380
-	 * @inheritdoc
381
-	 */
382
-	public function setSharedBy($sharedBy) {
383
-		if (!is_string($sharedBy)) {
384
-			throw new \InvalidArgumentException();
385
-		}
386
-		//TODO checks
387
-		$this->sharedBy = $sharedBy;
388
-
389
-		return $this;
390
-	}
391
-
392
-	/**
393
-	 * @inheritdoc
394
-	 */
395
-	public function getSharedBy() {
396
-		//TODO check if set
397
-		return $this->sharedBy;
398
-	}
399
-
400
-	/**
401
-	 * @inheritdoc
402
-	 */
403
-	public function setShareOwner($shareOwner) {
404
-		if (!is_string($shareOwner)) {
405
-			throw new \InvalidArgumentException();
406
-		}
407
-		//TODO checks
408
-
409
-		$this->shareOwner = $shareOwner;
410
-		return $this;
411
-	}
412
-
413
-	/**
414
-	 * @inheritdoc
415
-	 */
416
-	public function getShareOwner() {
417
-		//TODO check if set
418
-		return $this->shareOwner;
419
-	}
420
-
421
-	/**
422
-	 * @inheritdoc
423
-	 */
424
-	public function setPassword($password) {
425
-		$this->password = $password;
426
-		return $this;
427
-	}
428
-
429
-	/**
430
-	 * @inheritdoc
431
-	 */
432
-	public function getPassword() {
433
-		return $this->password;
434
-	}
435
-
436
-	/**
437
-	 * @inheritdoc
438
-	 */
439
-	public function setSendPasswordByTalk(bool $sendPasswordByTalk) {
440
-		$this->sendPasswordByTalk = $sendPasswordByTalk;
441
-		return $this;
442
-	}
443
-
444
-	/**
445
-	 * @inheritdoc
446
-	 */
447
-	public function getSendPasswordByTalk(): bool {
448
-		return $this->sendPasswordByTalk;
449
-	}
450
-
451
-	/**
452
-	 * @inheritdoc
453
-	 */
454
-	public function setToken($token) {
455
-		$this->token = $token;
456
-		return $this;
457
-	}
458
-
459
-	/**
460
-	 * @inheritdoc
461
-	 */
462
-	public function getToken() {
463
-		return $this->token;
464
-	}
465
-
466
-	/**
467
-	 * Set the parent of this share
468
-	 *
469
-	 * @param int parent
470
-	 * @return \OCP\Share\IShare
471
-	 * @deprecated The new shares do not have parents. This is just here for legacy reasons.
472
-	 */
473
-	public function setParent($parent) {
474
-		$this->parent = $parent;
475
-		return $this;
476
-	}
477
-
478
-	/**
479
-	 * Get the parent of this share.
480
-	 *
481
-	 * @return int
482
-	 * @deprecated The new shares do not have parents. This is just here for legacy reasons.
483
-	 */
484
-	public function getParent() {
485
-		return $this->parent;
486
-	}
487
-
488
-	/**
489
-	 * @inheritdoc
490
-	 */
491
-	public function setTarget($target) {
492
-		$this->target = $target;
493
-		return $this;
494
-	}
495
-
496
-	/**
497
-	 * @inheritdoc
498
-	 */
499
-	public function getTarget() {
500
-		return $this->target;
501
-	}
502
-
503
-	/**
504
-	 * @inheritdoc
505
-	 */
506
-	public function setShareTime(\DateTime $shareTime) {
507
-		$this->shareTime = $shareTime;
508
-		return $this;
509
-	}
510
-
511
-	/**
512
-	 * @inheritdoc
513
-	 */
514
-	public function getShareTime() {
515
-		return $this->shareTime;
516
-	}
517
-
518
-	/**
519
-	 * @inheritdoc
520
-	 */
521
-	public function setMailSend($mailSend) {
522
-		$this->mailSend = $mailSend;
523
-		return $this;
524
-	}
525
-
526
-	/**
527
-	 * @inheritdoc
528
-	 */
529
-	public function getMailSend() {
530
-		return $this->mailSend;
531
-	}
532
-
533
-	/**
534
-	 * @inheritdoc
535
-	 */
536
-	public function setNodeCacheEntry(ICacheEntry $entry) {
537
-		$this->nodeCacheEntry = $entry;
538
-	}
539
-
540
-	/**
541
-	 * @inheritdoc
542
-	 */
543
-	public function getNodeCacheEntry() {
544
-		return $this->nodeCacheEntry;
545
-	}
546
-
547
-	public function setHideDownload(bool $hide): IShare {
548
-		$this->hideDownload = $hide;
549
-		return $this;
550
-	}
551
-
552
-	public function getHideDownload(): bool {
553
-		return $this->hideDownload;
554
-	}
37
+    /** @var string */
38
+    private $id;
39
+    /** @var string */
40
+    private $providerId;
41
+    /** @var Node */
42
+    private $node;
43
+    /** @var int */
44
+    private $fileId;
45
+    /** @var string */
46
+    private $nodeType;
47
+    /** @var int */
48
+    private $shareType;
49
+    /** @var string */
50
+    private $sharedWith;
51
+    /** @var string */
52
+    private $sharedWithDisplayName;
53
+    /** @var string */
54
+    private $sharedWithAvatar;
55
+    /** @var string */
56
+    private $sharedBy;
57
+    /** @var string */
58
+    private $shareOwner;
59
+    /** @var int */
60
+    private $permissions;
61
+    /** @var string */
62
+    private $note = '';
63
+    /** @var \DateTime */
64
+    private $expireDate;
65
+    /** @var string */
66
+    private $password;
67
+    /** @var bool */
68
+    private $sendPasswordByTalk = false;
69
+    /** @var string */
70
+    private $token;
71
+    /** @var int */
72
+    private $parent;
73
+    /** @var string */
74
+    private $target;
75
+    /** @var \DateTime */
76
+    private $shareTime;
77
+    /** @var bool */
78
+    private $mailSend;
79
+    /** @var string */
80
+    private $label = '';
81
+
82
+    /** @var IRootFolder */
83
+    private $rootFolder;
84
+
85
+    /** @var IUserManager */
86
+    private $userManager;
87
+
88
+    /** @var ICacheEntry|null */
89
+    private $nodeCacheEntry;
90
+
91
+    /** @var bool */
92
+    private $hideDownload = false;
93
+
94
+    public function __construct(IRootFolder $rootFolder, IUserManager $userManager) {
95
+        $this->rootFolder = $rootFolder;
96
+        $this->userManager = $userManager;
97
+    }
98
+
99
+    /**
100
+     * @inheritdoc
101
+     */
102
+    public function setId($id) {
103
+        if (is_int($id)) {
104
+            $id = (string)$id;
105
+        }
106
+
107
+        if(!is_string($id)) {
108
+            throw new \InvalidArgumentException('String expected.');
109
+        }
110
+
111
+        if ($this->id !== null) {
112
+            throw new IllegalIDChangeException('Not allowed to assign a new internal id to a share');
113
+        }
114
+
115
+        $this->id = trim($id);
116
+        return $this;
117
+    }
118
+
119
+    /**
120
+     * @inheritdoc
121
+     */
122
+    public function getId() {
123
+        return $this->id;
124
+    }
125
+
126
+    /**
127
+     * @inheritdoc
128
+     */
129
+    public function getFullId() {
130
+        if ($this->providerId === null || $this->id === null) {
131
+            throw new \UnexpectedValueException;
132
+        }
133
+        return $this->providerId . ':' . $this->id;
134
+    }
135
+
136
+    /**
137
+     * @inheritdoc
138
+     */
139
+    public function setProviderId($id) {
140
+        if(!is_string($id)) {
141
+            throw new \InvalidArgumentException('String expected.');
142
+        }
143
+
144
+        if ($this->providerId !== null) {
145
+            throw new IllegalIDChangeException('Not allowed to assign a new provider id to a share');
146
+        }
147
+
148
+        $this->providerId = trim($id);
149
+        return $this;
150
+    }
151
+
152
+    /**
153
+     * @inheritdoc
154
+     */
155
+    public function setNode(Node $node) {
156
+        $this->fileId = null;
157
+        $this->nodeType = null;
158
+        $this->node = $node;
159
+        return $this;
160
+    }
161
+
162
+    /**
163
+     * @inheritdoc
164
+     */
165
+    public function getNode() {
166
+        if ($this->node === null) {
167
+
168
+            if ($this->shareOwner === null || $this->fileId === null) {
169
+                throw new NotFoundException();
170
+            }
171
+
172
+            // for federated shares the owner can be a remote user, in this
173
+            // case we use the initiator
174
+            if($this->userManager->userExists($this->shareOwner)) {
175
+                $userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
176
+            } else {
177
+                $userFolder = $this->rootFolder->getUserFolder($this->sharedBy);
178
+            }
179
+
180
+            $nodes = $userFolder->getById($this->fileId);
181
+            if (empty($nodes)) {
182
+                throw new NotFoundException('Node for share not found, fileid: ' . $this->fileId);
183
+            }
184
+
185
+            $this->node = $nodes[0];
186
+        }
187
+
188
+        return $this->node;
189
+    }
190
+
191
+    /**
192
+     * @inheritdoc
193
+     */
194
+    public function setNodeId($fileId) {
195
+        $this->node = null;
196
+        $this->fileId = $fileId;
197
+        return $this;
198
+    }
199
+
200
+    /**
201
+     * @inheritdoc
202
+     */
203
+    public function getNodeId() {
204
+        if ($this->fileId === null) {
205
+            $this->fileId = $this->getNode()->getId();
206
+        }
207
+
208
+        return $this->fileId;
209
+    }
210
+
211
+    /**
212
+     * @inheritdoc
213
+     */
214
+    public function setNodeType($type) {
215
+        if ($type !== 'file' && $type !== 'folder') {
216
+            throw new \InvalidArgumentException();
217
+        }
218
+
219
+        $this->nodeType = $type;
220
+        return $this;
221
+    }
222
+
223
+    /**
224
+     * @inheritdoc
225
+     */
226
+    public function getNodeType() {
227
+        if ($this->nodeType === null) {
228
+            $node = $this->getNode();
229
+            $this->nodeType = $node instanceof File ? 'file' : 'folder';
230
+        }
231
+
232
+        return $this->nodeType;
233
+    }
234
+
235
+    /**
236
+     * @inheritdoc
237
+     */
238
+    public function setShareType($shareType) {
239
+        $this->shareType = $shareType;
240
+        return $this;
241
+    }
242
+
243
+    /**
244
+     * @inheritdoc
245
+     */
246
+    public function getShareType() {
247
+        return $this->shareType;
248
+    }
249
+
250
+    /**
251
+     * @inheritdoc
252
+     */
253
+    public function setSharedWith($sharedWith) {
254
+        if (!is_string($sharedWith)) {
255
+            throw new \InvalidArgumentException();
256
+        }
257
+        $this->sharedWith = $sharedWith;
258
+        return $this;
259
+    }
260
+
261
+    /**
262
+     * @inheritdoc
263
+     */
264
+    public function getSharedWith() {
265
+        return $this->sharedWith;
266
+    }
267
+
268
+    /**
269
+     * @inheritdoc
270
+     */
271
+    public function setSharedWithDisplayName($displayName) {
272
+        if (!is_string($displayName)) {
273
+            throw new \InvalidArgumentException();
274
+        }
275
+        $this->sharedWithDisplayName = $displayName;
276
+        return $this;
277
+    }
278
+
279
+    /**
280
+     * @inheritdoc
281
+     */
282
+    public function getSharedWithDisplayName() {
283
+        return $this->sharedWithDisplayName;
284
+    }
285
+
286
+    /**
287
+     * @inheritdoc
288
+     */
289
+    public function setSharedWithAvatar($src) {
290
+        if (!is_string($src)) {
291
+            throw new \InvalidArgumentException();
292
+        }
293
+        $this->sharedWithAvatar = $src;
294
+        return $this;
295
+    }
296
+
297
+    /**
298
+     * @inheritdoc
299
+     */
300
+    public function getSharedWithAvatar() {
301
+        return $this->sharedWithAvatar;
302
+    }
303
+
304
+    /**
305
+     * @inheritdoc
306
+     */
307
+    public function setPermissions($permissions) {
308
+        //TODO checkes
309
+
310
+        $this->permissions = $permissions;
311
+        return $this;
312
+    }
313
+
314
+    /**
315
+     * @inheritdoc
316
+     */
317
+    public function getPermissions() {
318
+        return $this->permissions;
319
+    }
320
+
321
+    /**
322
+     * @inheritdoc
323
+     */
324
+    public function setNote($note) {
325
+        $this->note = $note;
326
+        return $this;
327
+    }
328
+
329
+    /**
330
+     * @inheritdoc
331
+     */
332
+    public function getNote() {
333
+        if (is_string($this->note)) {
334
+            return $this->note;
335
+        }
336
+        return '';
337
+    }
338
+
339
+    /**
340
+     * @inheritdoc
341
+     */
342
+    public function setLabel($label) {
343
+        $this->label = $label;
344
+        return $this;
345
+    }
346
+
347
+    /**
348
+     * @inheritdoc
349
+     */
350
+    public function getLabel() {
351
+        return $this->label;
352
+    }
353
+
354
+    /**
355
+     * @inheritdoc
356
+     */
357
+    public function setExpirationDate($expireDate) {
358
+        //TODO checks
359
+
360
+        $this->expireDate = $expireDate;
361
+        return $this;
362
+    }
363
+
364
+    /**
365
+     * @inheritdoc
366
+     */
367
+    public function getExpirationDate() {
368
+        return $this->expireDate;
369
+    }
370
+
371
+    /**
372
+     * @inheritdoc
373
+     */
374
+    public function isExpired() {
375
+        return $this->getExpirationDate() !== null &&
376
+            $this->getExpirationDate() <= new \DateTime();
377
+    }
378
+
379
+    /**
380
+     * @inheritdoc
381
+     */
382
+    public function setSharedBy($sharedBy) {
383
+        if (!is_string($sharedBy)) {
384
+            throw new \InvalidArgumentException();
385
+        }
386
+        //TODO checks
387
+        $this->sharedBy = $sharedBy;
388
+
389
+        return $this;
390
+    }
391
+
392
+    /**
393
+     * @inheritdoc
394
+     */
395
+    public function getSharedBy() {
396
+        //TODO check if set
397
+        return $this->sharedBy;
398
+    }
399
+
400
+    /**
401
+     * @inheritdoc
402
+     */
403
+    public function setShareOwner($shareOwner) {
404
+        if (!is_string($shareOwner)) {
405
+            throw new \InvalidArgumentException();
406
+        }
407
+        //TODO checks
408
+
409
+        $this->shareOwner = $shareOwner;
410
+        return $this;
411
+    }
412
+
413
+    /**
414
+     * @inheritdoc
415
+     */
416
+    public function getShareOwner() {
417
+        //TODO check if set
418
+        return $this->shareOwner;
419
+    }
420
+
421
+    /**
422
+     * @inheritdoc
423
+     */
424
+    public function setPassword($password) {
425
+        $this->password = $password;
426
+        return $this;
427
+    }
428
+
429
+    /**
430
+     * @inheritdoc
431
+     */
432
+    public function getPassword() {
433
+        return $this->password;
434
+    }
435
+
436
+    /**
437
+     * @inheritdoc
438
+     */
439
+    public function setSendPasswordByTalk(bool $sendPasswordByTalk) {
440
+        $this->sendPasswordByTalk = $sendPasswordByTalk;
441
+        return $this;
442
+    }
443
+
444
+    /**
445
+     * @inheritdoc
446
+     */
447
+    public function getSendPasswordByTalk(): bool {
448
+        return $this->sendPasswordByTalk;
449
+    }
450
+
451
+    /**
452
+     * @inheritdoc
453
+     */
454
+    public function setToken($token) {
455
+        $this->token = $token;
456
+        return $this;
457
+    }
458
+
459
+    /**
460
+     * @inheritdoc
461
+     */
462
+    public function getToken() {
463
+        return $this->token;
464
+    }
465
+
466
+    /**
467
+     * Set the parent of this share
468
+     *
469
+     * @param int parent
470
+     * @return \OCP\Share\IShare
471
+     * @deprecated The new shares do not have parents. This is just here for legacy reasons.
472
+     */
473
+    public function setParent($parent) {
474
+        $this->parent = $parent;
475
+        return $this;
476
+    }
477
+
478
+    /**
479
+     * Get the parent of this share.
480
+     *
481
+     * @return int
482
+     * @deprecated The new shares do not have parents. This is just here for legacy reasons.
483
+     */
484
+    public function getParent() {
485
+        return $this->parent;
486
+    }
487
+
488
+    /**
489
+     * @inheritdoc
490
+     */
491
+    public function setTarget($target) {
492
+        $this->target = $target;
493
+        return $this;
494
+    }
495
+
496
+    /**
497
+     * @inheritdoc
498
+     */
499
+    public function getTarget() {
500
+        return $this->target;
501
+    }
502
+
503
+    /**
504
+     * @inheritdoc
505
+     */
506
+    public function setShareTime(\DateTime $shareTime) {
507
+        $this->shareTime = $shareTime;
508
+        return $this;
509
+    }
510
+
511
+    /**
512
+     * @inheritdoc
513
+     */
514
+    public function getShareTime() {
515
+        return $this->shareTime;
516
+    }
517
+
518
+    /**
519
+     * @inheritdoc
520
+     */
521
+    public function setMailSend($mailSend) {
522
+        $this->mailSend = $mailSend;
523
+        return $this;
524
+    }
525
+
526
+    /**
527
+     * @inheritdoc
528
+     */
529
+    public function getMailSend() {
530
+        return $this->mailSend;
531
+    }
532
+
533
+    /**
534
+     * @inheritdoc
535
+     */
536
+    public function setNodeCacheEntry(ICacheEntry $entry) {
537
+        $this->nodeCacheEntry = $entry;
538
+    }
539
+
540
+    /**
541
+     * @inheritdoc
542
+     */
543
+    public function getNodeCacheEntry() {
544
+        return $this->nodeCacheEntry;
545
+    }
546
+
547
+    public function setHideDownload(bool $hide): IShare {
548
+        $this->hideDownload = $hide;
549
+        return $this;
550
+    }
551
+
552
+    public function getHideDownload(): bool {
553
+        return $this->hideDownload;
554
+    }
555 555
 }
Please login to merge, or discard this patch.
lib/private/Setup/AbstractDatabase.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -68,14 +68,14 @@
 block discarded – undo
68 68
 
69 69
 	public function validate($config) {
70 70
 		$errors = array();
71
-		if(empty($config['dbuser']) && empty($config['dbname'])) {
71
+		if (empty($config['dbuser']) && empty($config['dbname'])) {
72 72
 			$errors[] = $this->trans->t("%s enter the database username and name.", array($this->dbprettyname));
73
-		} else if(empty($config['dbuser'])) {
73
+		} else if (empty($config['dbuser'])) {
74 74
 			$errors[] = $this->trans->t("%s enter the database username.", array($this->dbprettyname));
75
-		} else if(empty($config['dbname'])) {
75
+		} else if (empty($config['dbname'])) {
76 76
 			$errors[] = $this->trans->t("%s enter the database name.", array($this->dbprettyname));
77 77
 		}
78
-		if(substr_count($config['dbname'], '.') >= 1) {
78
+		if (substr_count($config['dbname'], '.') >= 1) {
79 79
 			$errors[] = $this->trans->t("%s you may not use dots in the database name", array($this->dbprettyname));
80 80
 		}
81 81
 		return $errors;
Please login to merge, or discard this patch.
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -35,118 +35,118 @@
 block discarded – undo
35 35
 
36 36
 abstract class AbstractDatabase {
37 37
 
38
-	/** @var IL10N */
39
-	protected $trans;
40
-	/** @var string */
41
-	protected $dbUser;
42
-	/** @var string */
43
-	protected $dbPassword;
44
-	/** @var string */
45
-	protected $dbName;
46
-	/** @var string */
47
-	protected $dbHost;
48
-	/** @var string */
49
-	protected $dbPort;
50
-	/** @var string */
51
-	protected $tablePrefix;
52
-	/** @var SystemConfig */
53
-	protected $config;
54
-	/** @var ILogger */
55
-	protected $logger;
56
-	/** @var ISecureRandom */
57
-	protected $random;
38
+    /** @var IL10N */
39
+    protected $trans;
40
+    /** @var string */
41
+    protected $dbUser;
42
+    /** @var string */
43
+    protected $dbPassword;
44
+    /** @var string */
45
+    protected $dbName;
46
+    /** @var string */
47
+    protected $dbHost;
48
+    /** @var string */
49
+    protected $dbPort;
50
+    /** @var string */
51
+    protected $tablePrefix;
52
+    /** @var SystemConfig */
53
+    protected $config;
54
+    /** @var ILogger */
55
+    protected $logger;
56
+    /** @var ISecureRandom */
57
+    protected $random;
58 58
 
59
-	public function __construct(IL10N $trans, SystemConfig $config, ILogger $logger, ISecureRandom $random) {
60
-		$this->trans = $trans;
61
-		$this->config = $config;
62
-		$this->logger = $logger;
63
-		$this->random = $random;
64
-	}
59
+    public function __construct(IL10N $trans, SystemConfig $config, ILogger $logger, ISecureRandom $random) {
60
+        $this->trans = $trans;
61
+        $this->config = $config;
62
+        $this->logger = $logger;
63
+        $this->random = $random;
64
+    }
65 65
 
66
-	public function validate($config) {
67
-		$errors = array();
68
-		if(empty($config['dbuser']) && empty($config['dbname'])) {
69
-			$errors[] = $this->trans->t("%s enter the database username and name.", array($this->dbprettyname));
70
-		} else if(empty($config['dbuser'])) {
71
-			$errors[] = $this->trans->t("%s enter the database username.", array($this->dbprettyname));
72
-		} else if(empty($config['dbname'])) {
73
-			$errors[] = $this->trans->t("%s enter the database name.", array($this->dbprettyname));
74
-		}
75
-		if(substr_count($config['dbname'], '.') >= 1) {
76
-			$errors[] = $this->trans->t("%s you may not use dots in the database name", array($this->dbprettyname));
77
-		}
78
-		return $errors;
79
-	}
66
+    public function validate($config) {
67
+        $errors = array();
68
+        if(empty($config['dbuser']) && empty($config['dbname'])) {
69
+            $errors[] = $this->trans->t("%s enter the database username and name.", array($this->dbprettyname));
70
+        } else if(empty($config['dbuser'])) {
71
+            $errors[] = $this->trans->t("%s enter the database username.", array($this->dbprettyname));
72
+        } else if(empty($config['dbname'])) {
73
+            $errors[] = $this->trans->t("%s enter the database name.", array($this->dbprettyname));
74
+        }
75
+        if(substr_count($config['dbname'], '.') >= 1) {
76
+            $errors[] = $this->trans->t("%s you may not use dots in the database name", array($this->dbprettyname));
77
+        }
78
+        return $errors;
79
+    }
80 80
 
81
-	public function initialize($config) {
82
-		$dbUser = $config['dbuser'];
83
-		$dbPass = $config['dbpass'];
84
-		$dbName = $config['dbname'];
85
-		$dbHost = !empty($config['dbhost']) ? $config['dbhost'] : 'localhost';
86
-		$dbPort = !empty($config['dbport']) ? $config['dbport'] : '';
87
-		$dbTablePrefix = isset($config['dbtableprefix']) ? $config['dbtableprefix'] : 'oc_';
81
+    public function initialize($config) {
82
+        $dbUser = $config['dbuser'];
83
+        $dbPass = $config['dbpass'];
84
+        $dbName = $config['dbname'];
85
+        $dbHost = !empty($config['dbhost']) ? $config['dbhost'] : 'localhost';
86
+        $dbPort = !empty($config['dbport']) ? $config['dbport'] : '';
87
+        $dbTablePrefix = isset($config['dbtableprefix']) ? $config['dbtableprefix'] : 'oc_';
88 88
 
89
-		$this->config->setValues([
90
-			'dbname'		=> $dbName,
91
-			'dbhost'		=> $dbHost,
92
-			'dbport' => $dbPort,
93
-			'dbtableprefix'	=> $dbTablePrefix,
94
-		]);
89
+        $this->config->setValues([
90
+            'dbname'		=> $dbName,
91
+            'dbhost'		=> $dbHost,
92
+            'dbport' => $dbPort,
93
+            'dbtableprefix'	=> $dbTablePrefix,
94
+        ]);
95 95
 
96
-		$this->dbUser = $dbUser;
97
-		$this->dbPassword = $dbPass;
98
-		$this->dbName = $dbName;
99
-		$this->dbHost = $dbHost;
100
-		$this->dbPort = $dbPort;
101
-		$this->tablePrefix = $dbTablePrefix;
102
-	}
96
+        $this->dbUser = $dbUser;
97
+        $this->dbPassword = $dbPass;
98
+        $this->dbName = $dbName;
99
+        $this->dbHost = $dbHost;
100
+        $this->dbPort = $dbPort;
101
+        $this->tablePrefix = $dbTablePrefix;
102
+    }
103 103
 
104
-	/**
105
-	 * @param array $configOverwrite
106
-	 * @return \OC\DB\Connection
107
-	 */
108
-	protected function connect(array $configOverwrite = []) {
109
-		$connectionParams = array(
110
-			'host' => $this->dbHost,
111
-			'user' => $this->dbUser,
112
-			'password' => $this->dbPassword,
113
-			'tablePrefix' => $this->tablePrefix,
114
-			'dbname' => $this->dbName
115
-		);
104
+    /**
105
+     * @param array $configOverwrite
106
+     * @return \OC\DB\Connection
107
+     */
108
+    protected function connect(array $configOverwrite = []) {
109
+        $connectionParams = array(
110
+            'host' => $this->dbHost,
111
+            'user' => $this->dbUser,
112
+            'password' => $this->dbPassword,
113
+            'tablePrefix' => $this->tablePrefix,
114
+            'dbname' => $this->dbName
115
+        );
116 116
 
117
-		// adding port support through installer
118
-		if (!empty($this->dbPort)) {
119
-			if (ctype_digit($this->dbPort)) {
120
-				$connectionParams['port'] = $this->dbPort;
121
-			} else {
122
-				$connectionParams['unix_socket'] = $this->dbPort;
123
-			}
124
-		} else if (strpos($this->dbHost, ':')) {
125
-			// Host variable may carry a port or socket.
126
-			list($host, $portOrSocket) = explode(':', $this->dbHost, 2);
127
-			if (ctype_digit($portOrSocket)) {
128
-				$connectionParams['port'] = $portOrSocket;
129
-			} else {
130
-				$connectionParams['unix_socket'] = $portOrSocket;
131
-			}
132
-			$connectionParams['host'] = $host;
133
-		}
117
+        // adding port support through installer
118
+        if (!empty($this->dbPort)) {
119
+            if (ctype_digit($this->dbPort)) {
120
+                $connectionParams['port'] = $this->dbPort;
121
+            } else {
122
+                $connectionParams['unix_socket'] = $this->dbPort;
123
+            }
124
+        } else if (strpos($this->dbHost, ':')) {
125
+            // Host variable may carry a port or socket.
126
+            list($host, $portOrSocket) = explode(':', $this->dbHost, 2);
127
+            if (ctype_digit($portOrSocket)) {
128
+                $connectionParams['port'] = $portOrSocket;
129
+            } else {
130
+                $connectionParams['unix_socket'] = $portOrSocket;
131
+            }
132
+            $connectionParams['host'] = $host;
133
+        }
134 134
 
135
-		$connectionParams = array_merge($connectionParams, $configOverwrite);
136
-		$cf = new ConnectionFactory($this->config);
137
-		return $cf->getConnection($this->config->getValue('dbtype', 'sqlite'), $connectionParams);
138
-	}
135
+        $connectionParams = array_merge($connectionParams, $configOverwrite);
136
+        $cf = new ConnectionFactory($this->config);
137
+        return $cf->getConnection($this->config->getValue('dbtype', 'sqlite'), $connectionParams);
138
+    }
139 139
 
140
-	/**
141
-	 * @param string $userName
142
-	 */
143
-	abstract public function setupDatabase($userName);
140
+    /**
141
+     * @param string $userName
142
+     */
143
+    abstract public function setupDatabase($userName);
144 144
 
145
-	public function runMigrations() {
146
-		if (!is_dir(\OC::$SERVERROOT."/core/Migrations")) {
147
-			return;
148
-		}
149
-		$ms = new MigrationService('core', \OC::$server->getDatabaseConnection());
150
-		$ms->migrate();
151
-	}
145
+    public function runMigrations() {
146
+        if (!is_dir(\OC::$SERVERROOT."/core/Migrations")) {
147
+            return;
148
+        }
149
+        $ms = new MigrationService('core', \OC::$server->getDatabaseConnection());
150
+        $ms->migrate();
151
+    }
152 152
 }
Please login to merge, or discard this patch.
lib/private/PreviewManager.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
 		}
245 245
 
246 246
 		$mount = $file->getMountPoint();
247
-		if ($mount and !$mount->getOption('previews', true)){
247
+		if ($mount and !$mount->getOption('previews', true)) {
248 248
 			return false;
249 249
 		}
250 250
 
@@ -330,7 +330,7 @@  discard block
 block discarded – undo
330 330
 	 */
331 331
 	protected function registerCoreProvider($class, $mimeType, $options = []) {
332 332
 		if (in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) {
333
-			$this->registerProvider($mimeType, function () use ($class, $options) {
333
+			$this->registerProvider($mimeType, function() use ($class, $options) {
334 334
 				return new $class($options);
335 335
 			});
336 336
 		}
Please login to merge, or discard this patch.
Indentation   +359 added lines, -359 removed lines patch added patch discarded remove patch
@@ -39,368 +39,368 @@
 block discarded – undo
39 39
 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
40 40
 
41 41
 class PreviewManager implements IPreview {
42
-	/** @var IConfig */
43
-	protected $config;
42
+    /** @var IConfig */
43
+    protected $config;
44 44
 
45
-	/** @var IRootFolder */
46
-	protected $rootFolder;
45
+    /** @var IRootFolder */
46
+    protected $rootFolder;
47 47
 
48
-	/** @var IAppData */
49
-	protected $appData;
48
+    /** @var IAppData */
49
+    protected $appData;
50 50
 
51
-	/** @var EventDispatcherInterface */
52
-	protected $eventDispatcher;
51
+    /** @var EventDispatcherInterface */
52
+    protected $eventDispatcher;
53 53
 
54
-	/** @var Generator */
55
-	private $generator;
54
+    /** @var Generator */
55
+    private $generator;
56 56
 	
57
-	/** @var GeneratorHelper */
58
-	private $helper;
59
-
60
-	/** @var bool */
61
-	protected $providerListDirty = false;
62
-
63
-	/** @var bool */
64
-	protected $registeredCoreProviders = false;
65
-
66
-	/** @var array */
67
-	protected $providers = [];
68
-
69
-	/** @var array mime type => support status */
70
-	protected $mimeTypeSupportMap = [];
71
-
72
-	/** @var array */
73
-	protected $defaultProviders;
74
-
75
-	/** @var string */
76
-	protected $userId;
77
-
78
-	/**
79
-	 * PreviewManager constructor.
80
-	 *
81
-	 * @param IConfig $config
82
-	 * @param IRootFolder $rootFolder
83
-	 * @param IAppData $appData
84
-	 * @param EventDispatcherInterface $eventDispatcher
85
-	 * @param string $userId
86
-	 */
87
-	public function __construct(IConfig $config,
88
-								IRootFolder $rootFolder,
89
-								IAppData $appData,
90
-								EventDispatcherInterface $eventDispatcher,
91
-								GeneratorHelper $helper,
92
-								$userId) {
93
-		$this->config = $config;
94
-		$this->rootFolder = $rootFolder;
95
-		$this->appData = $appData;
96
-		$this->eventDispatcher = $eventDispatcher;
97
-		$this->helper = $helper;
98
-		$this->userId = $userId;
99
-	}
100
-
101
-	/**
102
-	 * In order to improve lazy loading a closure can be registered which will be
103
-	 * called in case preview providers are actually requested
104
-	 *
105
-	 * $callable has to return an instance of \OCP\Preview\IProvider or \OCP\Preview\IProviderV2
106
-	 *
107
-	 * @param string $mimeTypeRegex Regex with the mime types that are supported by this provider
108
-	 * @param \Closure $callable
109
-	 * @return void
110
-	 */
111
-	public function registerProvider($mimeTypeRegex, \Closure $callable) {
112
-		if (!$this->config->getSystemValue('enable_previews', true)) {
113
-			return;
114
-		}
115
-
116
-		if (!isset($this->providers[$mimeTypeRegex])) {
117
-			$this->providers[$mimeTypeRegex] = [];
118
-		}
119
-		$this->providers[$mimeTypeRegex][] = $callable;
120
-		$this->providerListDirty = true;
121
-	}
122
-
123
-	/**
124
-	 * Get all providers
125
-	 * @return array
126
-	 */
127
-	public function getProviders() {
128
-		if (!$this->config->getSystemValue('enable_previews', true)) {
129
-			return [];
130
-		}
131
-
132
-		$this->registerCoreProviders();
133
-		if ($this->providerListDirty) {
134
-			$keys = array_map('strlen', array_keys($this->providers));
135
-			array_multisort($keys, SORT_DESC, $this->providers);
136
-			$this->providerListDirty = false;
137
-		}
138
-
139
-		return $this->providers;
140
-	}
141
-
142
-	/**
143
-	 * Does the manager have any providers
144
-	 * @return bool
145
-	 */
146
-	public function hasProviders() {
147
-		$this->registerCoreProviders();
148
-		return !empty($this->providers);
149
-	}
150
-
151
-	/**
152
-	 * Returns a preview of a file
153
-	 *
154
-	 * The cache is searched first and if nothing usable was found then a preview is
155
-	 * generated by one of the providers
156
-	 *
157
-	 * @param File $file
158
-	 * @param int $width
159
-	 * @param int $height
160
-	 * @param bool $crop
161
-	 * @param string $mode
162
-	 * @param string $mimeType
163
-	 * @return ISimpleFile
164
-	 * @throws NotFoundException
165
-	 * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
166
-	 * @since 11.0.0 - \InvalidArgumentException was added in 12.0.0
167
-	 */
168
-	public function getPreview(File $file, $width = -1, $height = -1, $crop = false, $mode = IPreview::MODE_FILL, $mimeType = null) {
169
-		if ($this->generator === null) {
170
-			$this->generator = new Generator(
171
-				$this->config,
172
-				$this,
173
-				$this->appData,
174
-				new GeneratorHelper(
175
-					$this->rootFolder,
176
-					$this->config
177
-				),
178
-				$this->eventDispatcher
179
-			);
180
-		}
181
-
182
-		return $this->generator->getPreview($file, $width, $height, $crop, $mode, $mimeType);
183
-	}
184
-
185
-	/**
186
-	 * returns true if the passed mime type is supported
187
-	 *
188
-	 * @param string $mimeType
189
-	 * @return boolean
190
-	 */
191
-	public function isMimeSupported($mimeType = '*') {
192
-		if (!$this->config->getSystemValue('enable_previews', true)) {
193
-			return false;
194
-		}
195
-
196
-		if (isset($this->mimeTypeSupportMap[$mimeType])) {
197
-			return $this->mimeTypeSupportMap[$mimeType];
198
-		}
199
-
200
-		$this->registerCoreProviders();
201
-		$providerMimeTypes = array_keys($this->providers);
202
-		foreach ($providerMimeTypes as $supportedMimeType) {
203
-			if (preg_match($supportedMimeType, $mimeType)) {
204
-				$this->mimeTypeSupportMap[$mimeType] = true;
205
-				return true;
206
-			}
207
-		}
208
-		$this->mimeTypeSupportMap[$mimeType] = false;
209
-		return false;
210
-	}
211
-
212
-	/**
213
-	 * Check if a preview can be generated for a file
214
-	 *
215
-	 * @param \OCP\Files\FileInfo $file
216
-	 * @return bool
217
-	 */
218
-	public function isAvailable(\OCP\Files\FileInfo $file) {
219
-		if (!$this->config->getSystemValue('enable_previews', true)) {
220
-			return false;
221
-		}
222
-
223
-		$this->registerCoreProviders();
224
-		if (!$this->isMimeSupported($file->getMimetype())) {
225
-			return false;
226
-		}
227
-
228
-		$mount = $file->getMountPoint();
229
-		if ($mount and !$mount->getOption('previews', true)){
230
-			return false;
231
-		}
232
-
233
-		foreach ($this->providers as $supportedMimeType => $providers) {
234
-			if (preg_match($supportedMimeType, $file->getMimetype())) {
235
-				foreach ($providers as $providerClosure) {
236
-					$provider = $this->helper->getProvider($providerClosure);
237
-					if (!($provider instanceof IProviderV2)) {
238
-						continue;
239
-					}
240
-
241
-					/** @var $provider IProvider */
242
-					if ($provider->isAvailable($file)) {
243
-						return true;
244
-					}
245
-				}
246
-			}
247
-		}
248
-		return false;
249
-	}
250
-
251
-	/**
252
-	 * List of enabled default providers
253
-	 *
254
-	 * The following providers are enabled by default:
255
-	 *  - OC\Preview\PNG
256
-	 *  - OC\Preview\JPEG
257
-	 *  - OC\Preview\GIF
258
-	 *  - OC\Preview\BMP
259
-	 *  - OC\Preview\HEIC
260
-	 *  - OC\Preview\XBitmap
261
-	 *  - OC\Preview\MarkDown
262
-	 *  - OC\Preview\MP3
263
-	 *  - OC\Preview\TXT
264
-	 *
265
-	 * The following providers are disabled by default due to performance or privacy concerns:
266
-	 *  - OC\Preview\Font
267
-	 *  - OC\Preview\Illustrator
268
-	 *  - OC\Preview\Movie
269
-	 *  - OC\Preview\MSOfficeDoc
270
-	 *  - OC\Preview\MSOffice2003
271
-	 *  - OC\Preview\MSOffice2007
272
-	 *  - OC\Preview\OpenDocument
273
-	 *  - OC\Preview\PDF
274
-	 *  - OC\Preview\Photoshop
275
-	 *  - OC\Preview\Postscript
276
-	 *  - OC\Preview\StarOffice
277
-	 *  - OC\Preview\SVG
278
-	 *  - OC\Preview\TIFF
279
-	 *
280
-	 * @return array
281
-	 */
282
-	protected function getEnabledDefaultProvider() {
283
-		if ($this->defaultProviders !== null) {
284
-			return $this->defaultProviders;
285
-		}
286
-
287
-		$imageProviders = [
288
-			Preview\PNG::class,
289
-			Preview\JPEG::class,
290
-			Preview\GIF::class,
291
-			Preview\BMP::class,
292
-			Preview\HEIC::class,
293
-			Preview\XBitmap::class
294
-		];
295
-
296
-		$this->defaultProviders = $this->config->getSystemValue('enabledPreviewProviders', array_merge([
297
-			Preview\MarkDown::class,
298
-			Preview\MP3::class,
299
-			Preview\TXT::class,
300
-		], $imageProviders));
301
-
302
-		if (in_array(Preview\Image::class, $this->defaultProviders)) {
303
-			$this->defaultProviders = array_merge($this->defaultProviders, $imageProviders);
304
-		}
305
-		$this->defaultProviders = array_unique($this->defaultProviders);
306
-		return $this->defaultProviders;
307
-	}
308
-
309
-	/**
310
-	 * Register the default providers (if enabled)
311
-	 *
312
-	 * @param string $class
313
-	 * @param string $mimeType
314
-	 */
315
-	protected function registerCoreProvider($class, $mimeType, $options = []) {
316
-		if (in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) {
317
-			$this->registerProvider($mimeType, function () use ($class, $options) {
318
-				return new $class($options);
319
-			});
320
-		}
321
-	}
322
-
323
-	/**
324
-	 * Register the default providers (if enabled)
325
-	 */
326
-	protected function registerCoreProviders() {
327
-		if ($this->registeredCoreProviders) {
328
-			return;
329
-		}
330
-		$this->registeredCoreProviders = true;
331
-
332
-		$this->registerCoreProvider(Preview\TXT::class, '/text\/plain/');
333
-		$this->registerCoreProvider(Preview\MarkDown::class, '/text\/(x-)?markdown/');
334
-		$this->registerCoreProvider(Preview\PNG::class, '/image\/png/');
335
-		$this->registerCoreProvider(Preview\JPEG::class, '/image\/jpeg/');
336
-		$this->registerCoreProvider(Preview\GIF::class, '/image\/gif/');
337
-		$this->registerCoreProvider(Preview\BMP::class, '/image\/bmp/');
338
-		$this->registerCoreProvider(Preview\XBitmap::class, '/image\/x-xbitmap/');
339
-		$this->registerCoreProvider(Preview\MP3::class, '/audio\/mpeg/');
340
-
341
-		// SVG, Office and Bitmap require imagick
342
-		if (extension_loaded('imagick')) {
343
-			$checkImagick = new \Imagick();
344
-
345
-			$imagickProviders = [
346
-				'SVG'	=> ['mimetype' => '/image\/svg\+xml/', 'class' => Preview\SVG::class],
347
-				'TIFF'	=> ['mimetype' => '/image\/tiff/', 'class' => Preview\TIFF::class],
348
-				'PDF'	=> ['mimetype' => '/application\/pdf/', 'class' => Preview\PDF::class],
349
-				'AI'	=> ['mimetype' => '/application\/illustrator/', 'class' => Preview\Illustrator::class],
350
-				'PSD'	=> ['mimetype' => '/application\/x-photoshop/', 'class' => Preview\Photoshop::class],
351
-				'EPS'	=> ['mimetype' => '/application\/postscript/', 'class' => Preview\Postscript::class],
352
-				'TTF'	=> ['mimetype' => '/application\/(?:font-sfnt|x-font$)/', 'class' => Preview\Font::class],
353
-				'HEIC'  => ['mimetype' => '/image\/hei(f|c)/', 'class' => Preview\HEIC::class],
354
-			];
355
-
356
-			foreach ($imagickProviders as $queryFormat => $provider) {
357
-				$class = $provider['class'];
358
-				if (!in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) {
359
-					continue;
360
-				}
361
-
362
-				if (count($checkImagick->queryFormats($queryFormat)) === 1) {
363
-					$this->registerCoreProvider($class, $provider['mimetype']);
364
-				}
365
-			}
366
-
367
-			if (count($checkImagick->queryFormats('PDF')) === 1) {
368
-				if (\OC_Helper::is_function_enabled('shell_exec')) {
369
-					$officeFound = is_string($this->config->getSystemValue('preview_libreoffice_path', null));
370
-
371
-					if (!$officeFound) {
372
-						//let's see if there is libreoffice or openoffice on this machine
373
-						$whichLibreOffice = shell_exec('command -v libreoffice');
374
-						$officeFound = !empty($whichLibreOffice);
375
-						if (!$officeFound) {
376
-							$whichOpenOffice = shell_exec('command -v openoffice');
377
-							$officeFound = !empty($whichOpenOffice);
378
-						}
379
-					}
380
-
381
-					if ($officeFound) {
382
-						$this->registerCoreProvider(Preview\MSOfficeDoc::class, '/application\/msword/');
383
-						$this->registerCoreProvider(Preview\MSOffice2003::class, '/application\/vnd.ms-.*/');
384
-						$this->registerCoreProvider(Preview\MSOffice2007::class, '/application\/vnd.openxmlformats-officedocument.*/');
385
-						$this->registerCoreProvider(Preview\OpenDocument::class, '/application\/vnd.oasis.opendocument.*/');
386
-						$this->registerCoreProvider(Preview\StarOffice::class, '/application\/vnd.sun.xml.*/');
387
-					}
388
-				}
389
-			}
390
-		}
391
-
392
-		// Video requires avconv or ffmpeg
393
-		if (in_array(Preview\Movie::class, $this->getEnabledDefaultProvider())) {
394
-			$avconvBinary = \OC_Helper::findBinaryPath('avconv');
395
-			$ffmpegBinary = $avconvBinary ? null : \OC_Helper::findBinaryPath('ffmpeg');
396
-
397
-			if ($avconvBinary || $ffmpegBinary) {
398
-				// FIXME // a bit hacky but didn't want to use subclasses
399
-				\OC\Preview\Movie::$avconvBinary = $avconvBinary;
400
-				\OC\Preview\Movie::$ffmpegBinary = $ffmpegBinary;
401
-
402
-				$this->registerCoreProvider(Preview\Movie::class, '/video\/.*/');
403
-			}
404
-		}
405
-	}
57
+    /** @var GeneratorHelper */
58
+    private $helper;
59
+
60
+    /** @var bool */
61
+    protected $providerListDirty = false;
62
+
63
+    /** @var bool */
64
+    protected $registeredCoreProviders = false;
65
+
66
+    /** @var array */
67
+    protected $providers = [];
68
+
69
+    /** @var array mime type => support status */
70
+    protected $mimeTypeSupportMap = [];
71
+
72
+    /** @var array */
73
+    protected $defaultProviders;
74
+
75
+    /** @var string */
76
+    protected $userId;
77
+
78
+    /**
79
+     * PreviewManager constructor.
80
+     *
81
+     * @param IConfig $config
82
+     * @param IRootFolder $rootFolder
83
+     * @param IAppData $appData
84
+     * @param EventDispatcherInterface $eventDispatcher
85
+     * @param string $userId
86
+     */
87
+    public function __construct(IConfig $config,
88
+                                IRootFolder $rootFolder,
89
+                                IAppData $appData,
90
+                                EventDispatcherInterface $eventDispatcher,
91
+                                GeneratorHelper $helper,
92
+                                $userId) {
93
+        $this->config = $config;
94
+        $this->rootFolder = $rootFolder;
95
+        $this->appData = $appData;
96
+        $this->eventDispatcher = $eventDispatcher;
97
+        $this->helper = $helper;
98
+        $this->userId = $userId;
99
+    }
100
+
101
+    /**
102
+     * In order to improve lazy loading a closure can be registered which will be
103
+     * called in case preview providers are actually requested
104
+     *
105
+     * $callable has to return an instance of \OCP\Preview\IProvider or \OCP\Preview\IProviderV2
106
+     *
107
+     * @param string $mimeTypeRegex Regex with the mime types that are supported by this provider
108
+     * @param \Closure $callable
109
+     * @return void
110
+     */
111
+    public function registerProvider($mimeTypeRegex, \Closure $callable) {
112
+        if (!$this->config->getSystemValue('enable_previews', true)) {
113
+            return;
114
+        }
115
+
116
+        if (!isset($this->providers[$mimeTypeRegex])) {
117
+            $this->providers[$mimeTypeRegex] = [];
118
+        }
119
+        $this->providers[$mimeTypeRegex][] = $callable;
120
+        $this->providerListDirty = true;
121
+    }
122
+
123
+    /**
124
+     * Get all providers
125
+     * @return array
126
+     */
127
+    public function getProviders() {
128
+        if (!$this->config->getSystemValue('enable_previews', true)) {
129
+            return [];
130
+        }
131
+
132
+        $this->registerCoreProviders();
133
+        if ($this->providerListDirty) {
134
+            $keys = array_map('strlen', array_keys($this->providers));
135
+            array_multisort($keys, SORT_DESC, $this->providers);
136
+            $this->providerListDirty = false;
137
+        }
138
+
139
+        return $this->providers;
140
+    }
141
+
142
+    /**
143
+     * Does the manager have any providers
144
+     * @return bool
145
+     */
146
+    public function hasProviders() {
147
+        $this->registerCoreProviders();
148
+        return !empty($this->providers);
149
+    }
150
+
151
+    /**
152
+     * Returns a preview of a file
153
+     *
154
+     * The cache is searched first and if nothing usable was found then a preview is
155
+     * generated by one of the providers
156
+     *
157
+     * @param File $file
158
+     * @param int $width
159
+     * @param int $height
160
+     * @param bool $crop
161
+     * @param string $mode
162
+     * @param string $mimeType
163
+     * @return ISimpleFile
164
+     * @throws NotFoundException
165
+     * @throws \InvalidArgumentException if the preview would be invalid (in case the original image is invalid)
166
+     * @since 11.0.0 - \InvalidArgumentException was added in 12.0.0
167
+     */
168
+    public function getPreview(File $file, $width = -1, $height = -1, $crop = false, $mode = IPreview::MODE_FILL, $mimeType = null) {
169
+        if ($this->generator === null) {
170
+            $this->generator = new Generator(
171
+                $this->config,
172
+                $this,
173
+                $this->appData,
174
+                new GeneratorHelper(
175
+                    $this->rootFolder,
176
+                    $this->config
177
+                ),
178
+                $this->eventDispatcher
179
+            );
180
+        }
181
+
182
+        return $this->generator->getPreview($file, $width, $height, $crop, $mode, $mimeType);
183
+    }
184
+
185
+    /**
186
+     * returns true if the passed mime type is supported
187
+     *
188
+     * @param string $mimeType
189
+     * @return boolean
190
+     */
191
+    public function isMimeSupported($mimeType = '*') {
192
+        if (!$this->config->getSystemValue('enable_previews', true)) {
193
+            return false;
194
+        }
195
+
196
+        if (isset($this->mimeTypeSupportMap[$mimeType])) {
197
+            return $this->mimeTypeSupportMap[$mimeType];
198
+        }
199
+
200
+        $this->registerCoreProviders();
201
+        $providerMimeTypes = array_keys($this->providers);
202
+        foreach ($providerMimeTypes as $supportedMimeType) {
203
+            if (preg_match($supportedMimeType, $mimeType)) {
204
+                $this->mimeTypeSupportMap[$mimeType] = true;
205
+                return true;
206
+            }
207
+        }
208
+        $this->mimeTypeSupportMap[$mimeType] = false;
209
+        return false;
210
+    }
211
+
212
+    /**
213
+     * Check if a preview can be generated for a file
214
+     *
215
+     * @param \OCP\Files\FileInfo $file
216
+     * @return bool
217
+     */
218
+    public function isAvailable(\OCP\Files\FileInfo $file) {
219
+        if (!$this->config->getSystemValue('enable_previews', true)) {
220
+            return false;
221
+        }
222
+
223
+        $this->registerCoreProviders();
224
+        if (!$this->isMimeSupported($file->getMimetype())) {
225
+            return false;
226
+        }
227
+
228
+        $mount = $file->getMountPoint();
229
+        if ($mount and !$mount->getOption('previews', true)){
230
+            return false;
231
+        }
232
+
233
+        foreach ($this->providers as $supportedMimeType => $providers) {
234
+            if (preg_match($supportedMimeType, $file->getMimetype())) {
235
+                foreach ($providers as $providerClosure) {
236
+                    $provider = $this->helper->getProvider($providerClosure);
237
+                    if (!($provider instanceof IProviderV2)) {
238
+                        continue;
239
+                    }
240
+
241
+                    /** @var $provider IProvider */
242
+                    if ($provider->isAvailable($file)) {
243
+                        return true;
244
+                    }
245
+                }
246
+            }
247
+        }
248
+        return false;
249
+    }
250
+
251
+    /**
252
+     * List of enabled default providers
253
+     *
254
+     * The following providers are enabled by default:
255
+     *  - OC\Preview\PNG
256
+     *  - OC\Preview\JPEG
257
+     *  - OC\Preview\GIF
258
+     *  - OC\Preview\BMP
259
+     *  - OC\Preview\HEIC
260
+     *  - OC\Preview\XBitmap
261
+     *  - OC\Preview\MarkDown
262
+     *  - OC\Preview\MP3
263
+     *  - OC\Preview\TXT
264
+     *
265
+     * The following providers are disabled by default due to performance or privacy concerns:
266
+     *  - OC\Preview\Font
267
+     *  - OC\Preview\Illustrator
268
+     *  - OC\Preview\Movie
269
+     *  - OC\Preview\MSOfficeDoc
270
+     *  - OC\Preview\MSOffice2003
271
+     *  - OC\Preview\MSOffice2007
272
+     *  - OC\Preview\OpenDocument
273
+     *  - OC\Preview\PDF
274
+     *  - OC\Preview\Photoshop
275
+     *  - OC\Preview\Postscript
276
+     *  - OC\Preview\StarOffice
277
+     *  - OC\Preview\SVG
278
+     *  - OC\Preview\TIFF
279
+     *
280
+     * @return array
281
+     */
282
+    protected function getEnabledDefaultProvider() {
283
+        if ($this->defaultProviders !== null) {
284
+            return $this->defaultProviders;
285
+        }
286
+
287
+        $imageProviders = [
288
+            Preview\PNG::class,
289
+            Preview\JPEG::class,
290
+            Preview\GIF::class,
291
+            Preview\BMP::class,
292
+            Preview\HEIC::class,
293
+            Preview\XBitmap::class
294
+        ];
295
+
296
+        $this->defaultProviders = $this->config->getSystemValue('enabledPreviewProviders', array_merge([
297
+            Preview\MarkDown::class,
298
+            Preview\MP3::class,
299
+            Preview\TXT::class,
300
+        ], $imageProviders));
301
+
302
+        if (in_array(Preview\Image::class, $this->defaultProviders)) {
303
+            $this->defaultProviders = array_merge($this->defaultProviders, $imageProviders);
304
+        }
305
+        $this->defaultProviders = array_unique($this->defaultProviders);
306
+        return $this->defaultProviders;
307
+    }
308
+
309
+    /**
310
+     * Register the default providers (if enabled)
311
+     *
312
+     * @param string $class
313
+     * @param string $mimeType
314
+     */
315
+    protected function registerCoreProvider($class, $mimeType, $options = []) {
316
+        if (in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) {
317
+            $this->registerProvider($mimeType, function () use ($class, $options) {
318
+                return new $class($options);
319
+            });
320
+        }
321
+    }
322
+
323
+    /**
324
+     * Register the default providers (if enabled)
325
+     */
326
+    protected function registerCoreProviders() {
327
+        if ($this->registeredCoreProviders) {
328
+            return;
329
+        }
330
+        $this->registeredCoreProviders = true;
331
+
332
+        $this->registerCoreProvider(Preview\TXT::class, '/text\/plain/');
333
+        $this->registerCoreProvider(Preview\MarkDown::class, '/text\/(x-)?markdown/');
334
+        $this->registerCoreProvider(Preview\PNG::class, '/image\/png/');
335
+        $this->registerCoreProvider(Preview\JPEG::class, '/image\/jpeg/');
336
+        $this->registerCoreProvider(Preview\GIF::class, '/image\/gif/');
337
+        $this->registerCoreProvider(Preview\BMP::class, '/image\/bmp/');
338
+        $this->registerCoreProvider(Preview\XBitmap::class, '/image\/x-xbitmap/');
339
+        $this->registerCoreProvider(Preview\MP3::class, '/audio\/mpeg/');
340
+
341
+        // SVG, Office and Bitmap require imagick
342
+        if (extension_loaded('imagick')) {
343
+            $checkImagick = new \Imagick();
344
+
345
+            $imagickProviders = [
346
+                'SVG'	=> ['mimetype' => '/image\/svg\+xml/', 'class' => Preview\SVG::class],
347
+                'TIFF'	=> ['mimetype' => '/image\/tiff/', 'class' => Preview\TIFF::class],
348
+                'PDF'	=> ['mimetype' => '/application\/pdf/', 'class' => Preview\PDF::class],
349
+                'AI'	=> ['mimetype' => '/application\/illustrator/', 'class' => Preview\Illustrator::class],
350
+                'PSD'	=> ['mimetype' => '/application\/x-photoshop/', 'class' => Preview\Photoshop::class],
351
+                'EPS'	=> ['mimetype' => '/application\/postscript/', 'class' => Preview\Postscript::class],
352
+                'TTF'	=> ['mimetype' => '/application\/(?:font-sfnt|x-font$)/', 'class' => Preview\Font::class],
353
+                'HEIC'  => ['mimetype' => '/image\/hei(f|c)/', 'class' => Preview\HEIC::class],
354
+            ];
355
+
356
+            foreach ($imagickProviders as $queryFormat => $provider) {
357
+                $class = $provider['class'];
358
+                if (!in_array(trim($class, '\\'), $this->getEnabledDefaultProvider())) {
359
+                    continue;
360
+                }
361
+
362
+                if (count($checkImagick->queryFormats($queryFormat)) === 1) {
363
+                    $this->registerCoreProvider($class, $provider['mimetype']);
364
+                }
365
+            }
366
+
367
+            if (count($checkImagick->queryFormats('PDF')) === 1) {
368
+                if (\OC_Helper::is_function_enabled('shell_exec')) {
369
+                    $officeFound = is_string($this->config->getSystemValue('preview_libreoffice_path', null));
370
+
371
+                    if (!$officeFound) {
372
+                        //let's see if there is libreoffice or openoffice on this machine
373
+                        $whichLibreOffice = shell_exec('command -v libreoffice');
374
+                        $officeFound = !empty($whichLibreOffice);
375
+                        if (!$officeFound) {
376
+                            $whichOpenOffice = shell_exec('command -v openoffice');
377
+                            $officeFound = !empty($whichOpenOffice);
378
+                        }
379
+                    }
380
+
381
+                    if ($officeFound) {
382
+                        $this->registerCoreProvider(Preview\MSOfficeDoc::class, '/application\/msword/');
383
+                        $this->registerCoreProvider(Preview\MSOffice2003::class, '/application\/vnd.ms-.*/');
384
+                        $this->registerCoreProvider(Preview\MSOffice2007::class, '/application\/vnd.openxmlformats-officedocument.*/');
385
+                        $this->registerCoreProvider(Preview\OpenDocument::class, '/application\/vnd.oasis.opendocument.*/');
386
+                        $this->registerCoreProvider(Preview\StarOffice::class, '/application\/vnd.sun.xml.*/');
387
+                    }
388
+                }
389
+            }
390
+        }
391
+
392
+        // Video requires avconv or ffmpeg
393
+        if (in_array(Preview\Movie::class, $this->getEnabledDefaultProvider())) {
394
+            $avconvBinary = \OC_Helper::findBinaryPath('avconv');
395
+            $ffmpegBinary = $avconvBinary ? null : \OC_Helper::findBinaryPath('ffmpeg');
396
+
397
+            if ($avconvBinary || $ffmpegBinary) {
398
+                // FIXME // a bit hacky but didn't want to use subclasses
399
+                \OC\Preview\Movie::$avconvBinary = $avconvBinary;
400
+                \OC\Preview\Movie::$ffmpegBinary = $ffmpegBinary;
401
+
402
+                $this->registerCoreProvider(Preview\Movie::class, '/video\/.*/');
403
+            }
404
+        }
405
+    }
406 406
 }
Please login to merge, or discard this patch.
lib/private/Encryption/Update.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -87,7 +87,7 @@  discard block
 block discarded – undo
87 87
 			if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
88 88
 				$path = Filesystem::getPath($params['fileSource']);
89 89
 				list($owner, $ownerPath) = $this->getOwnerPath($path);
90
-				$absPath = '/' . $owner . '/files/' . $ownerPath;
90
+				$absPath = '/'.$owner.'/files/'.$ownerPath;
91 91
 				$this->update($absPath);
92 92
 			}
93 93
 		}
@@ -103,7 +103,7 @@  discard block
 block discarded – undo
103 103
 			if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
104 104
 				$path = Filesystem::getPath($params['fileSource']);
105 105
 				list($owner, $ownerPath) = $this->getOwnerPath($path);
106
-				$absPath = '/' . $owner . '/files/' . $ownerPath;
106
+				$absPath = '/'.$owner.'/files/'.$ownerPath;
107 107
 				$this->update($absPath);
108 108
 			}
109 109
 		}
@@ -117,7 +117,7 @@  discard block
 block discarded – undo
117 117
 	 */
118 118
 	public function postRestore($params) {
119 119
 		if ($this->encryptionManager->isEnabled()) {
120
-			$path = Filesystem::normalizePath('/' . $this->uid . '/files/' . $params['filePath']);
120
+			$path = Filesystem::normalizePath('/'.$this->uid.'/files/'.$params['filePath']);
121 121
 			$this->update($path);
122 122
 		}
123 123
 	}
@@ -131,12 +131,12 @@  discard block
 block discarded – undo
131 131
 	public function postRename($params) {
132 132
 		$source = $params['oldpath'];
133 133
 		$target = $params['newpath'];
134
-		if(
134
+		if (
135 135
 			$this->encryptionManager->isEnabled() &&
136 136
 			dirname($source) !== dirname($target)
137 137
 		) {
138 138
 				list($owner, $ownerPath) = $this->getOwnerPath($target);
139
-				$absPath = '/' . $owner . '/files/' . $ownerPath;
139
+				$absPath = '/'.$owner.'/files/'.$ownerPath;
140 140
 				$this->update($absPath);
141 141
 		}
142 142
 	}
@@ -151,10 +151,10 @@  discard block
 block discarded – undo
151 151
 	protected function getOwnerPath($path) {
152 152
 		$info = Filesystem::getFileInfo($path);
153 153
 		$owner = Filesystem::getOwner($path);
154
-		$view = new View('/' . $owner . '/files');
154
+		$view = new View('/'.$owner.'/files');
155 155
 		$path = $view->getPath($info->getId());
156 156
 		if ($path === null) {
157
-			throw new \InvalidArgumentException('No file found for ' . $info->getId());
157
+			throw new \InvalidArgumentException('No file found for '.$info->getId());
158 158
 		}
159 159
 
160 160
 		return array($owner, $path);
Please login to merge, or discard this patch.
Indentation   +157 added lines, -157 removed lines patch added patch discarded remove patch
@@ -33,162 +33,162 @@
 block discarded – undo
33 33
  */
34 34
 class Update {
35 35
 
36
-	/** @var \OC\Files\View */
37
-	protected $view;
38
-
39
-	/** @var \OC\Encryption\Util */
40
-	protected $util;
41
-
42
-	 /** @var \OC\Files\Mount\Manager */
43
-	protected $mountManager;
44
-
45
-	/** @var \OC\Encryption\Manager */
46
-	protected $encryptionManager;
47
-
48
-	/** @var string */
49
-	protected $uid;
50
-
51
-	/** @var \OC\Encryption\File */
52
-	protected $file;
53
-
54
-	/**
55
-	 *
56
-	 * @param \OC\Files\View $view
57
-	 * @param \OC\Encryption\Util $util
58
-	 * @param \OC\Files\Mount\Manager $mountManager
59
-	 * @param \OC\Encryption\Manager $encryptionManager
60
-	 * @param \OC\Encryption\File $file
61
-	 * @param string $uid
62
-	 */
63
-	public function __construct(
64
-			View $view,
65
-			Util $util,
66
-			Mount\Manager $mountManager,
67
-			Manager $encryptionManager,
68
-			File $file,
69
-			$uid
70
-		) {
71
-
72
-		$this->view = $view;
73
-		$this->util = $util;
74
-		$this->mountManager = $mountManager;
75
-		$this->encryptionManager = $encryptionManager;
76
-		$this->file = $file;
77
-		$this->uid = $uid;
78
-	}
79
-
80
-	/**
81
-	 * hook after file was shared
82
-	 *
83
-	 * @param array $params
84
-	 */
85
-	public function postShared($params) {
86
-		if ($this->encryptionManager->isEnabled()) {
87
-			if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
88
-				$path = Filesystem::getPath($params['fileSource']);
89
-				list($owner, $ownerPath) = $this->getOwnerPath($path);
90
-				$absPath = '/' . $owner . '/files/' . $ownerPath;
91
-				$this->update($absPath);
92
-			}
93
-		}
94
-	}
95
-
96
-	/**
97
-	 * hook after file was unshared
98
-	 *
99
-	 * @param array $params
100
-	 */
101
-	public function postUnshared($params) {
102
-		if ($this->encryptionManager->isEnabled()) {
103
-			if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
104
-				$path = Filesystem::getPath($params['fileSource']);
105
-				list($owner, $ownerPath) = $this->getOwnerPath($path);
106
-				$absPath = '/' . $owner . '/files/' . $ownerPath;
107
-				$this->update($absPath);
108
-			}
109
-		}
110
-	}
111
-
112
-	/**
113
-	 * inform encryption module that a file was restored from the trash bin,
114
-	 * e.g. to update the encryption keys
115
-	 *
116
-	 * @param array $params
117
-	 */
118
-	public function postRestore($params) {
119
-		if ($this->encryptionManager->isEnabled()) {
120
-			$path = Filesystem::normalizePath('/' . $this->uid . '/files/' . $params['filePath']);
121
-			$this->update($path);
122
-		}
123
-	}
124
-
125
-	/**
126
-	 * inform encryption module that a file was renamed,
127
-	 * e.g. to update the encryption keys
128
-	 *
129
-	 * @param array $params
130
-	 */
131
-	public function postRename($params) {
132
-		$source = $params['oldpath'];
133
-		$target = $params['newpath'];
134
-		if(
135
-			$this->encryptionManager->isEnabled() &&
136
-			dirname($source) !== dirname($target)
137
-		) {
138
-				list($owner, $ownerPath) = $this->getOwnerPath($target);
139
-				$absPath = '/' . $owner . '/files/' . $ownerPath;
140
-				$this->update($absPath);
141
-		}
142
-	}
143
-
144
-	/**
145
-	 * get owner and path relative to data/<owner>/files
146
-	 *
147
-	 * @param string $path path to file for current user
148
-	 * @return array ['owner' => $owner, 'path' => $path]
149
-	 * @throw \InvalidArgumentException
150
-	 */
151
-	protected function getOwnerPath($path) {
152
-		$info = Filesystem::getFileInfo($path);
153
-		$owner = Filesystem::getOwner($path);
154
-		$view = new View('/' . $owner . '/files');
155
-		$path = $view->getPath($info->getId());
156
-		if ($path === null) {
157
-			throw new \InvalidArgumentException('No file found for ' . $info->getId());
158
-		}
159
-
160
-		return array($owner, $path);
161
-	}
162
-
163
-	/**
164
-	 * notify encryption module about added/removed users from a file/folder
165
-	 *
166
-	 * @param string $path relative to data/
167
-	 * @throws Exceptions\ModuleDoesNotExistsException
168
-	 */
169
-	public function update($path) {
170
-
171
-		$encryptionModule = $this->encryptionManager->getEncryptionModule();
172
-
173
-		// if the encryption module doesn't encrypt the files on a per-user basis
174
-		// we have nothing to do here.
175
-		if ($encryptionModule->needDetailedAccessList() === false) {
176
-			return;
177
-		}
178
-
179
-		// if a folder was shared, get a list of all (sub-)folders
180
-		if ($this->view->is_dir($path)) {
181
-			$allFiles = $this->util->getAllFiles($path);
182
-		} else {
183
-			$allFiles = array($path);
184
-		}
185
-
186
-
187
-
188
-		foreach ($allFiles as $file) {
189
-			$usersSharing = $this->file->getAccessList($file);
190
-			$encryptionModule->update($file, $this->uid, $usersSharing);
191
-		}
192
-	}
36
+    /** @var \OC\Files\View */
37
+    protected $view;
38
+
39
+    /** @var \OC\Encryption\Util */
40
+    protected $util;
41
+
42
+        /** @var \OC\Files\Mount\Manager */
43
+    protected $mountManager;
44
+
45
+    /** @var \OC\Encryption\Manager */
46
+    protected $encryptionManager;
47
+
48
+    /** @var string */
49
+    protected $uid;
50
+
51
+    /** @var \OC\Encryption\File */
52
+    protected $file;
53
+
54
+    /**
55
+     *
56
+     * @param \OC\Files\View $view
57
+     * @param \OC\Encryption\Util $util
58
+     * @param \OC\Files\Mount\Manager $mountManager
59
+     * @param \OC\Encryption\Manager $encryptionManager
60
+     * @param \OC\Encryption\File $file
61
+     * @param string $uid
62
+     */
63
+    public function __construct(
64
+            View $view,
65
+            Util $util,
66
+            Mount\Manager $mountManager,
67
+            Manager $encryptionManager,
68
+            File $file,
69
+            $uid
70
+        ) {
71
+
72
+        $this->view = $view;
73
+        $this->util = $util;
74
+        $this->mountManager = $mountManager;
75
+        $this->encryptionManager = $encryptionManager;
76
+        $this->file = $file;
77
+        $this->uid = $uid;
78
+    }
79
+
80
+    /**
81
+     * hook after file was shared
82
+     *
83
+     * @param array $params
84
+     */
85
+    public function postShared($params) {
86
+        if ($this->encryptionManager->isEnabled()) {
87
+            if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
88
+                $path = Filesystem::getPath($params['fileSource']);
89
+                list($owner, $ownerPath) = $this->getOwnerPath($path);
90
+                $absPath = '/' . $owner . '/files/' . $ownerPath;
91
+                $this->update($absPath);
92
+            }
93
+        }
94
+    }
95
+
96
+    /**
97
+     * hook after file was unshared
98
+     *
99
+     * @param array $params
100
+     */
101
+    public function postUnshared($params) {
102
+        if ($this->encryptionManager->isEnabled()) {
103
+            if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
104
+                $path = Filesystem::getPath($params['fileSource']);
105
+                list($owner, $ownerPath) = $this->getOwnerPath($path);
106
+                $absPath = '/' . $owner . '/files/' . $ownerPath;
107
+                $this->update($absPath);
108
+            }
109
+        }
110
+    }
111
+
112
+    /**
113
+     * inform encryption module that a file was restored from the trash bin,
114
+     * e.g. to update the encryption keys
115
+     *
116
+     * @param array $params
117
+     */
118
+    public function postRestore($params) {
119
+        if ($this->encryptionManager->isEnabled()) {
120
+            $path = Filesystem::normalizePath('/' . $this->uid . '/files/' . $params['filePath']);
121
+            $this->update($path);
122
+        }
123
+    }
124
+
125
+    /**
126
+     * inform encryption module that a file was renamed,
127
+     * e.g. to update the encryption keys
128
+     *
129
+     * @param array $params
130
+     */
131
+    public function postRename($params) {
132
+        $source = $params['oldpath'];
133
+        $target = $params['newpath'];
134
+        if(
135
+            $this->encryptionManager->isEnabled() &&
136
+            dirname($source) !== dirname($target)
137
+        ) {
138
+                list($owner, $ownerPath) = $this->getOwnerPath($target);
139
+                $absPath = '/' . $owner . '/files/' . $ownerPath;
140
+                $this->update($absPath);
141
+        }
142
+    }
143
+
144
+    /**
145
+     * get owner and path relative to data/<owner>/files
146
+     *
147
+     * @param string $path path to file for current user
148
+     * @return array ['owner' => $owner, 'path' => $path]
149
+     * @throw \InvalidArgumentException
150
+     */
151
+    protected function getOwnerPath($path) {
152
+        $info = Filesystem::getFileInfo($path);
153
+        $owner = Filesystem::getOwner($path);
154
+        $view = new View('/' . $owner . '/files');
155
+        $path = $view->getPath($info->getId());
156
+        if ($path === null) {
157
+            throw new \InvalidArgumentException('No file found for ' . $info->getId());
158
+        }
159
+
160
+        return array($owner, $path);
161
+    }
162
+
163
+    /**
164
+     * notify encryption module about added/removed users from a file/folder
165
+     *
166
+     * @param string $path relative to data/
167
+     * @throws Exceptions\ModuleDoesNotExistsException
168
+     */
169
+    public function update($path) {
170
+
171
+        $encryptionModule = $this->encryptionManager->getEncryptionModule();
172
+
173
+        // if the encryption module doesn't encrypt the files on a per-user basis
174
+        // we have nothing to do here.
175
+        if ($encryptionModule->needDetailedAccessList() === false) {
176
+            return;
177
+        }
178
+
179
+        // if a folder was shared, get a list of all (sub-)folders
180
+        if ($this->view->is_dir($path)) {
181
+            $allFiles = $this->util->getAllFiles($path);
182
+        } else {
183
+            $allFiles = array($path);
184
+        }
185
+
186
+
187
+
188
+        foreach ($allFiles as $file) {
189
+            $usersSharing = $this->file->getAccessList($file);
190
+            $encryptionModule->update($file, $this->uid, $usersSharing);
191
+        }
192
+    }
193 193
 
194 194
 }
Please login to merge, or discard this patch.
lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php 2 patches
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -27,12 +27,12 @@
 block discarded – undo
27 27
 
28 28
 class ModuleAlreadyExistsException extends GenericEncryptionException {
29 29
 
30
-	/**
31
-	 * @param string $id
32
-	 * @param string $name
33
-	 */
34
-	public function __construct($id, $name) {
35
-		parent::__construct('Id "' . $id . '" already used by encryption module "' . $name . '"');
36
-	}
30
+    /**
31
+     * @param string $id
32
+     * @param string $name
33
+     */
34
+    public function __construct($id, $name) {
35
+        parent::__construct('Id "' . $id . '" already used by encryption module "' . $name . '"');
36
+    }
37 37
 
38 38
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@
 block discarded – undo
32 32
 	 * @param string $name
33 33
 	 */
34 34
 	public function __construct($id, $name) {
35
-		parent::__construct('Id "' . $id . '" already used by encryption module "' . $name . '"');
35
+		parent::__construct('Id "'.$id.'" already used by encryption module "'.$name.'"');
36 36
 	}
37 37
 
38 38
 }
Please login to merge, or discard this patch.
lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php 1 patch
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -28,8 +28,8 @@
 block discarded – undo
28 28
 
29 29
 class EncryptionHeaderToLargeException extends GenericEncryptionException {
30 30
 
31
-	public function __construct() {
32
-		parent::__construct('max header size exceeded');
33
-	}
31
+    public function __construct() {
32
+        parent::__construct('max header size exceeded');
33
+    }
34 34
 
35 35
 }
Please login to merge, or discard this patch.
lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php 2 patches
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -27,10 +27,10 @@
 block discarded – undo
27 27
 
28 28
 class EncryptionHeaderKeyExistsException extends GenericEncryptionException {
29 29
 
30
-	/**
31
-	 * @param string $key
32
-	 */
33
-	public function __construct($key) {
34
-		parent::__construct('header key "'. $key . '" already reserved by ownCloud');
35
-	}
30
+    /**
31
+     * @param string $key
32
+     */
33
+    public function __construct($key) {
34
+        parent::__construct('header key "'. $key . '" already reserved by ownCloud');
35
+    }
36 36
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -31,6 +31,6 @@
 block discarded – undo
31 31
 	 * @param string $key
32 32
 	 */
33 33
 	public function __construct($key) {
34
-		parent::__construct('header key "'. $key . '" already reserved by ownCloud');
34
+		parent::__construct('header key "'.$key.'" already reserved by ownCloud');
35 35
 	}
36 36
 }
Please login to merge, or discard this patch.