Completed
Push — stable13 ( 8a0ced...f67879 )
by
unknown
23:00 queued 11:14
created
lib/private/Files/Node/Root.php 1 patch
Indentation   +334 added lines, -334 removed lines patch added patch discarded remove patch
@@ -59,338 +59,338 @@
 block discarded – undo
59 59
  * @package OC\Files\Node
60 60
  */
61 61
 class Root extends Folder implements IRootFolder {
62
-	/** @var Manager */
63
-	private $mountManager;
64
-	/** @var PublicEmitter */
65
-	private $emitter;
66
-	/** @var null|\OC\User\User */
67
-	private $user;
68
-	/** @var CappedMemoryCache */
69
-	private $userFolderCache;
70
-	/** @var IUserMountCache */
71
-	private $userMountCache;
72
-	/** @var ILogger */
73
-	private $logger;
74
-	/** @var IUserManager */
75
-	private $userManager;
76
-
77
-	/**
78
-	 * @param \OC\Files\Mount\Manager $manager
79
-	 * @param \OC\Files\View $view
80
-	 * @param \OC\User\User|null $user
81
-	 * @param IUserMountCache $userMountCache
82
-	 * @param ILogger $logger
83
-	 * @param IUserManager $userManager
84
-	 */
85
-	public function __construct($manager,
86
-								$view,
87
-								$user,
88
-								IUserMountCache $userMountCache,
89
-								ILogger $logger,
90
-								IUserManager $userManager) {
91
-		parent::__construct($this, $view, '');
92
-		$this->mountManager = $manager;
93
-		$this->user = $user;
94
-		$this->emitter = new PublicEmitter();
95
-		$this->userFolderCache = new CappedMemoryCache();
96
-		$this->userMountCache = $userMountCache;
97
-		$this->logger = $logger;
98
-		$this->userManager = $userManager;
99
-	}
100
-
101
-	/**
102
-	 * Get the user for which the filesystem is setup
103
-	 *
104
-	 * @return \OC\User\User
105
-	 */
106
-	public function getUser() {
107
-		return $this->user;
108
-	}
109
-
110
-	/**
111
-	 * @param string $scope
112
-	 * @param string $method
113
-	 * @param callable $callback
114
-	 */
115
-	public function listen($scope, $method, callable $callback) {
116
-		$this->emitter->listen($scope, $method, $callback);
117
-	}
118
-
119
-	/**
120
-	 * @param string $scope optional
121
-	 * @param string $method optional
122
-	 * @param callable $callback optional
123
-	 */
124
-	public function removeListener($scope = null, $method = null, callable $callback = null) {
125
-		$this->emitter->removeListener($scope, $method, $callback);
126
-	}
127
-
128
-	/**
129
-	 * @param string $scope
130
-	 * @param string $method
131
-	 * @param Node[] $arguments
132
-	 */
133
-	public function emit($scope, $method, $arguments = array()) {
134
-		$this->emitter->emit($scope, $method, $arguments);
135
-	}
136
-
137
-	/**
138
-	 * @param \OC\Files\Storage\Storage $storage
139
-	 * @param string $mountPoint
140
-	 * @param array $arguments
141
-	 */
142
-	public function mount($storage, $mountPoint, $arguments = array()) {
143
-		$mount = new MountPoint($storage, $mountPoint, $arguments);
144
-		$this->mountManager->addMount($mount);
145
-	}
146
-
147
-	/**
148
-	 * @param string $mountPoint
149
-	 * @return \OC\Files\Mount\MountPoint
150
-	 */
151
-	public function getMount($mountPoint) {
152
-		return $this->mountManager->find($mountPoint);
153
-	}
154
-
155
-	/**
156
-	 * @param string $mountPoint
157
-	 * @return \OC\Files\Mount\MountPoint[]
158
-	 */
159
-	public function getMountsIn($mountPoint) {
160
-		return $this->mountManager->findIn($mountPoint);
161
-	}
162
-
163
-	/**
164
-	 * @param string $storageId
165
-	 * @return \OC\Files\Mount\MountPoint[]
166
-	 */
167
-	public function getMountByStorageId($storageId) {
168
-		return $this->mountManager->findByStorageId($storageId);
169
-	}
170
-
171
-	/**
172
-	 * @param int $numericId
173
-	 * @return MountPoint[]
174
-	 */
175
-	public function getMountByNumericStorageId($numericId) {
176
-		return $this->mountManager->findByNumericId($numericId);
177
-	}
178
-
179
-	/**
180
-	 * @param \OC\Files\Mount\MountPoint $mount
181
-	 */
182
-	public function unMount($mount) {
183
-		$this->mountManager->remove($mount);
184
-	}
185
-
186
-	/**
187
-	 * @param string $path
188
-	 * @throws \OCP\Files\NotFoundException
189
-	 * @throws \OCP\Files\NotPermittedException
190
-	 * @return string
191
-	 */
192
-	public function get($path) {
193
-		$path = $this->normalizePath($path);
194
-		if ($this->isValidPath($path)) {
195
-			$fullPath = $this->getFullPath($path);
196
-			$fileInfo = $this->view->getFileInfo($fullPath);
197
-			if ($fileInfo) {
198
-				return $this->createNode($fullPath, $fileInfo);
199
-			} else {
200
-				throw new NotFoundException($path);
201
-			}
202
-		} else {
203
-			throw new NotPermittedException();
204
-		}
205
-	}
206
-
207
-	//most operations can't be done on the root
208
-
209
-	/**
210
-	 * @param string $targetPath
211
-	 * @throws \OCP\Files\NotPermittedException
212
-	 * @return \OC\Files\Node\Node
213
-	 */
214
-	public function rename($targetPath) {
215
-		throw new NotPermittedException();
216
-	}
217
-
218
-	public function delete() {
219
-		throw new NotPermittedException();
220
-	}
221
-
222
-	/**
223
-	 * @param string $targetPath
224
-	 * @throws \OCP\Files\NotPermittedException
225
-	 * @return \OC\Files\Node\Node
226
-	 */
227
-	public function copy($targetPath) {
228
-		throw new NotPermittedException();
229
-	}
230
-
231
-	/**
232
-	 * @param int $mtime
233
-	 * @throws \OCP\Files\NotPermittedException
234
-	 */
235
-	public function touch($mtime = null) {
236
-		throw new NotPermittedException();
237
-	}
238
-
239
-	/**
240
-	 * @return \OC\Files\Storage\Storage
241
-	 * @throws \OCP\Files\NotFoundException
242
-	 */
243
-	public function getStorage() {
244
-		throw new NotFoundException();
245
-	}
246
-
247
-	/**
248
-	 * @return string
249
-	 */
250
-	public function getPath() {
251
-		return '/';
252
-	}
253
-
254
-	/**
255
-	 * @return string
256
-	 */
257
-	public function getInternalPath() {
258
-		return '';
259
-	}
260
-
261
-	/**
262
-	 * @return int
263
-	 */
264
-	public function getId() {
265
-		return null;
266
-	}
267
-
268
-	/**
269
-	 * @return array
270
-	 */
271
-	public function stat() {
272
-		return null;
273
-	}
274
-
275
-	/**
276
-	 * @return int
277
-	 */
278
-	public function getMTime() {
279
-		return null;
280
-	}
281
-
282
-	/**
283
-	 * @return int
284
-	 */
285
-	public function getSize() {
286
-		return null;
287
-	}
288
-
289
-	/**
290
-	 * @return string
291
-	 */
292
-	public function getEtag() {
293
-		return null;
294
-	}
295
-
296
-	/**
297
-	 * @return int
298
-	 */
299
-	public function getPermissions() {
300
-		return \OCP\Constants::PERMISSION_CREATE;
301
-	}
302
-
303
-	/**
304
-	 * @return bool
305
-	 */
306
-	public function isReadable() {
307
-		return false;
308
-	}
309
-
310
-	/**
311
-	 * @return bool
312
-	 */
313
-	public function isUpdateable() {
314
-		return false;
315
-	}
316
-
317
-	/**
318
-	 * @return bool
319
-	 */
320
-	public function isDeletable() {
321
-		return false;
322
-	}
323
-
324
-	/**
325
-	 * @return bool
326
-	 */
327
-	public function isShareable() {
328
-		return false;
329
-	}
330
-
331
-	/**
332
-	 * @return Node
333
-	 * @throws \OCP\Files\NotFoundException
334
-	 */
335
-	public function getParent() {
336
-		throw new NotFoundException();
337
-	}
338
-
339
-	/**
340
-	 * @return string
341
-	 */
342
-	public function getName() {
343
-		return '';
344
-	}
345
-
346
-	/**
347
-	 * Returns a view to user's files folder
348
-	 *
349
-	 * @param String $userId user ID
350
-	 * @return \OCP\Files\Folder
351
-	 * @throws \OC\User\NoUserException
352
-	 */
353
-	public function getUserFolder($userId) {
354
-		$userObject = $this->userManager->get($userId);
355
-
356
-		if (is_null($userObject)) {
357
-			$this->logger->error(
358
-				sprintf(
359
-					'Backends provided no user object for %s',
360
-					$userId
361
-				),
362
-				[
363
-					'app' => 'files',
364
-				]
365
-			);
366
-			throw new \OC\User\NoUserException('Backends provided no user object');
367
-		}
368
-
369
-		$userId = $userObject->getUID();
370
-
371
-		if (!$this->userFolderCache->hasKey($userId)) {
372
-			\OC\Files\Filesystem::initMountPoints($userId);
373
-
374
-			try {
375
-				$folder = $this->get('/' . $userId . '/files');
376
-			} catch (NotFoundException $e) {
377
-				if (!$this->nodeExists('/' . $userId)) {
378
-					$this->newFolder('/' . $userId);
379
-				}
380
-				$folder = $this->newFolder('/' . $userId . '/files');
381
-			}
382
-
383
-			$this->userFolderCache->set($userId, $folder);
384
-		}
385
-
386
-		return $this->userFolderCache->get($userId);
387
-	}
388
-
389
-	public function clearCache() {
390
-		$this->userFolderCache = new CappedMemoryCache();
391
-	}
392
-
393
-	public function getUserMountCache() {
394
-		return $this->userMountCache;
395
-	}
62
+    /** @var Manager */
63
+    private $mountManager;
64
+    /** @var PublicEmitter */
65
+    private $emitter;
66
+    /** @var null|\OC\User\User */
67
+    private $user;
68
+    /** @var CappedMemoryCache */
69
+    private $userFolderCache;
70
+    /** @var IUserMountCache */
71
+    private $userMountCache;
72
+    /** @var ILogger */
73
+    private $logger;
74
+    /** @var IUserManager */
75
+    private $userManager;
76
+
77
+    /**
78
+     * @param \OC\Files\Mount\Manager $manager
79
+     * @param \OC\Files\View $view
80
+     * @param \OC\User\User|null $user
81
+     * @param IUserMountCache $userMountCache
82
+     * @param ILogger $logger
83
+     * @param IUserManager $userManager
84
+     */
85
+    public function __construct($manager,
86
+                                $view,
87
+                                $user,
88
+                                IUserMountCache $userMountCache,
89
+                                ILogger $logger,
90
+                                IUserManager $userManager) {
91
+        parent::__construct($this, $view, '');
92
+        $this->mountManager = $manager;
93
+        $this->user = $user;
94
+        $this->emitter = new PublicEmitter();
95
+        $this->userFolderCache = new CappedMemoryCache();
96
+        $this->userMountCache = $userMountCache;
97
+        $this->logger = $logger;
98
+        $this->userManager = $userManager;
99
+    }
100
+
101
+    /**
102
+     * Get the user for which the filesystem is setup
103
+     *
104
+     * @return \OC\User\User
105
+     */
106
+    public function getUser() {
107
+        return $this->user;
108
+    }
109
+
110
+    /**
111
+     * @param string $scope
112
+     * @param string $method
113
+     * @param callable $callback
114
+     */
115
+    public function listen($scope, $method, callable $callback) {
116
+        $this->emitter->listen($scope, $method, $callback);
117
+    }
118
+
119
+    /**
120
+     * @param string $scope optional
121
+     * @param string $method optional
122
+     * @param callable $callback optional
123
+     */
124
+    public function removeListener($scope = null, $method = null, callable $callback = null) {
125
+        $this->emitter->removeListener($scope, $method, $callback);
126
+    }
127
+
128
+    /**
129
+     * @param string $scope
130
+     * @param string $method
131
+     * @param Node[] $arguments
132
+     */
133
+    public function emit($scope, $method, $arguments = array()) {
134
+        $this->emitter->emit($scope, $method, $arguments);
135
+    }
136
+
137
+    /**
138
+     * @param \OC\Files\Storage\Storage $storage
139
+     * @param string $mountPoint
140
+     * @param array $arguments
141
+     */
142
+    public function mount($storage, $mountPoint, $arguments = array()) {
143
+        $mount = new MountPoint($storage, $mountPoint, $arguments);
144
+        $this->mountManager->addMount($mount);
145
+    }
146
+
147
+    /**
148
+     * @param string $mountPoint
149
+     * @return \OC\Files\Mount\MountPoint
150
+     */
151
+    public function getMount($mountPoint) {
152
+        return $this->mountManager->find($mountPoint);
153
+    }
154
+
155
+    /**
156
+     * @param string $mountPoint
157
+     * @return \OC\Files\Mount\MountPoint[]
158
+     */
159
+    public function getMountsIn($mountPoint) {
160
+        return $this->mountManager->findIn($mountPoint);
161
+    }
162
+
163
+    /**
164
+     * @param string $storageId
165
+     * @return \OC\Files\Mount\MountPoint[]
166
+     */
167
+    public function getMountByStorageId($storageId) {
168
+        return $this->mountManager->findByStorageId($storageId);
169
+    }
170
+
171
+    /**
172
+     * @param int $numericId
173
+     * @return MountPoint[]
174
+     */
175
+    public function getMountByNumericStorageId($numericId) {
176
+        return $this->mountManager->findByNumericId($numericId);
177
+    }
178
+
179
+    /**
180
+     * @param \OC\Files\Mount\MountPoint $mount
181
+     */
182
+    public function unMount($mount) {
183
+        $this->mountManager->remove($mount);
184
+    }
185
+
186
+    /**
187
+     * @param string $path
188
+     * @throws \OCP\Files\NotFoundException
189
+     * @throws \OCP\Files\NotPermittedException
190
+     * @return string
191
+     */
192
+    public function get($path) {
193
+        $path = $this->normalizePath($path);
194
+        if ($this->isValidPath($path)) {
195
+            $fullPath = $this->getFullPath($path);
196
+            $fileInfo = $this->view->getFileInfo($fullPath);
197
+            if ($fileInfo) {
198
+                return $this->createNode($fullPath, $fileInfo);
199
+            } else {
200
+                throw new NotFoundException($path);
201
+            }
202
+        } else {
203
+            throw new NotPermittedException();
204
+        }
205
+    }
206
+
207
+    //most operations can't be done on the root
208
+
209
+    /**
210
+     * @param string $targetPath
211
+     * @throws \OCP\Files\NotPermittedException
212
+     * @return \OC\Files\Node\Node
213
+     */
214
+    public function rename($targetPath) {
215
+        throw new NotPermittedException();
216
+    }
217
+
218
+    public function delete() {
219
+        throw new NotPermittedException();
220
+    }
221
+
222
+    /**
223
+     * @param string $targetPath
224
+     * @throws \OCP\Files\NotPermittedException
225
+     * @return \OC\Files\Node\Node
226
+     */
227
+    public function copy($targetPath) {
228
+        throw new NotPermittedException();
229
+    }
230
+
231
+    /**
232
+     * @param int $mtime
233
+     * @throws \OCP\Files\NotPermittedException
234
+     */
235
+    public function touch($mtime = null) {
236
+        throw new NotPermittedException();
237
+    }
238
+
239
+    /**
240
+     * @return \OC\Files\Storage\Storage
241
+     * @throws \OCP\Files\NotFoundException
242
+     */
243
+    public function getStorage() {
244
+        throw new NotFoundException();
245
+    }
246
+
247
+    /**
248
+     * @return string
249
+     */
250
+    public function getPath() {
251
+        return '/';
252
+    }
253
+
254
+    /**
255
+     * @return string
256
+     */
257
+    public function getInternalPath() {
258
+        return '';
259
+    }
260
+
261
+    /**
262
+     * @return int
263
+     */
264
+    public function getId() {
265
+        return null;
266
+    }
267
+
268
+    /**
269
+     * @return array
270
+     */
271
+    public function stat() {
272
+        return null;
273
+    }
274
+
275
+    /**
276
+     * @return int
277
+     */
278
+    public function getMTime() {
279
+        return null;
280
+    }
281
+
282
+    /**
283
+     * @return int
284
+     */
285
+    public function getSize() {
286
+        return null;
287
+    }
288
+
289
+    /**
290
+     * @return string
291
+     */
292
+    public function getEtag() {
293
+        return null;
294
+    }
295
+
296
+    /**
297
+     * @return int
298
+     */
299
+    public function getPermissions() {
300
+        return \OCP\Constants::PERMISSION_CREATE;
301
+    }
302
+
303
+    /**
304
+     * @return bool
305
+     */
306
+    public function isReadable() {
307
+        return false;
308
+    }
309
+
310
+    /**
311
+     * @return bool
312
+     */
313
+    public function isUpdateable() {
314
+        return false;
315
+    }
316
+
317
+    /**
318
+     * @return bool
319
+     */
320
+    public function isDeletable() {
321
+        return false;
322
+    }
323
+
324
+    /**
325
+     * @return bool
326
+     */
327
+    public function isShareable() {
328
+        return false;
329
+    }
330
+
331
+    /**
332
+     * @return Node
333
+     * @throws \OCP\Files\NotFoundException
334
+     */
335
+    public function getParent() {
336
+        throw new NotFoundException();
337
+    }
338
+
339
+    /**
340
+     * @return string
341
+     */
342
+    public function getName() {
343
+        return '';
344
+    }
345
+
346
+    /**
347
+     * Returns a view to user's files folder
348
+     *
349
+     * @param String $userId user ID
350
+     * @return \OCP\Files\Folder
351
+     * @throws \OC\User\NoUserException
352
+     */
353
+    public function getUserFolder($userId) {
354
+        $userObject = $this->userManager->get($userId);
355
+
356
+        if (is_null($userObject)) {
357
+            $this->logger->error(
358
+                sprintf(
359
+                    'Backends provided no user object for %s',
360
+                    $userId
361
+                ),
362
+                [
363
+                    'app' => 'files',
364
+                ]
365
+            );
366
+            throw new \OC\User\NoUserException('Backends provided no user object');
367
+        }
368
+
369
+        $userId = $userObject->getUID();
370
+
371
+        if (!$this->userFolderCache->hasKey($userId)) {
372
+            \OC\Files\Filesystem::initMountPoints($userId);
373
+
374
+            try {
375
+                $folder = $this->get('/' . $userId . '/files');
376
+            } catch (NotFoundException $e) {
377
+                if (!$this->nodeExists('/' . $userId)) {
378
+                    $this->newFolder('/' . $userId);
379
+                }
380
+                $folder = $this->newFolder('/' . $userId . '/files');
381
+            }
382
+
383
+            $this->userFolderCache->set($userId, $folder);
384
+        }
385
+
386
+        return $this->userFolderCache->get($userId);
387
+    }
388
+
389
+    public function clearCache() {
390
+        $this->userFolderCache = new CappedMemoryCache();
391
+    }
392
+
393
+    public function getUserMountCache() {
394
+        return $this->userMountCache;
395
+    }
396 396
 }
Please login to merge, or discard this patch.
lib/private/Files/Node/File.php 1 patch
Indentation   +102 added lines, -102 removed lines patch added patch discarded remove patch
@@ -29,113 +29,113 @@
 block discarded – undo
29 29
 use OCP\Files\NotPermittedException;
30 30
 
31 31
 class File extends Node implements \OCP\Files\File {
32
-	/**
33
-	 * Creates a Folder that represents a non-existing path
34
-	 *
35
-	 * @param string $path path
36
-	 * @return string non-existing node class
37
-	 */
38
-	protected function createNonExistingNode($path) {
39
-		return new NonExistingFile($this->root, $this->view, $path);
40
-	}
32
+    /**
33
+     * Creates a Folder that represents a non-existing path
34
+     *
35
+     * @param string $path path
36
+     * @return string non-existing node class
37
+     */
38
+    protected function createNonExistingNode($path) {
39
+        return new NonExistingFile($this->root, $this->view, $path);
40
+    }
41 41
 
42
-	/**
43
-	 * @return string
44
-	 * @throws \OCP\Files\NotPermittedException
45
-	 */
46
-	public function getContent() {
47
-		if ($this->checkPermissions(\OCP\Constants::PERMISSION_READ)) {
48
-			/**
49
-			 * @var \OC\Files\Storage\Storage $storage;
50
-			 */
51
-			return $this->view->file_get_contents($this->path);
52
-		} else {
53
-			throw new NotPermittedException();
54
-		}
55
-	}
42
+    /**
43
+     * @return string
44
+     * @throws \OCP\Files\NotPermittedException
45
+     */
46
+    public function getContent() {
47
+        if ($this->checkPermissions(\OCP\Constants::PERMISSION_READ)) {
48
+            /**
49
+             * @var \OC\Files\Storage\Storage $storage;
50
+             */
51
+            return $this->view->file_get_contents($this->path);
52
+        } else {
53
+            throw new NotPermittedException();
54
+        }
55
+    }
56 56
 
57
-	/**
58
-	 * @param string $data
59
-	 * @throws \OCP\Files\NotPermittedException
60
-	 */
61
-	public function putContent($data) {
62
-		if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
63
-			$this->sendHooks(array('preWrite'));
64
-			$this->view->file_put_contents($this->path, $data);
65
-			$this->fileInfo = null;
66
-			$this->sendHooks(array('postWrite'));
67
-		} else {
68
-			throw new NotPermittedException();
69
-		}
70
-	}
57
+    /**
58
+     * @param string $data
59
+     * @throws \OCP\Files\NotPermittedException
60
+     */
61
+    public function putContent($data) {
62
+        if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
63
+            $this->sendHooks(array('preWrite'));
64
+            $this->view->file_put_contents($this->path, $data);
65
+            $this->fileInfo = null;
66
+            $this->sendHooks(array('postWrite'));
67
+        } else {
68
+            throw new NotPermittedException();
69
+        }
70
+    }
71 71
 
72
-	/**
73
-	 * @param string $mode
74
-	 * @return resource
75
-	 * @throws \OCP\Files\NotPermittedException
76
-	 */
77
-	public function fopen($mode) {
78
-		$preHooks = array();
79
-		$postHooks = array();
80
-		$requiredPermissions = \OCP\Constants::PERMISSION_READ;
81
-		switch ($mode) {
82
-			case 'r+':
83
-			case 'rb+':
84
-			case 'w+':
85
-			case 'wb+':
86
-			case 'x+':
87
-			case 'xb+':
88
-			case 'a+':
89
-			case 'ab+':
90
-			case 'w':
91
-			case 'wb':
92
-			case 'x':
93
-			case 'xb':
94
-			case 'a':
95
-			case 'ab':
96
-				$preHooks[] = 'preWrite';
97
-				$postHooks[] = 'postWrite';
98
-				$requiredPermissions |= \OCP\Constants::PERMISSION_UPDATE;
99
-				break;
100
-		}
72
+    /**
73
+     * @param string $mode
74
+     * @return resource
75
+     * @throws \OCP\Files\NotPermittedException
76
+     */
77
+    public function fopen($mode) {
78
+        $preHooks = array();
79
+        $postHooks = array();
80
+        $requiredPermissions = \OCP\Constants::PERMISSION_READ;
81
+        switch ($mode) {
82
+            case 'r+':
83
+            case 'rb+':
84
+            case 'w+':
85
+            case 'wb+':
86
+            case 'x+':
87
+            case 'xb+':
88
+            case 'a+':
89
+            case 'ab+':
90
+            case 'w':
91
+            case 'wb':
92
+            case 'x':
93
+            case 'xb':
94
+            case 'a':
95
+            case 'ab':
96
+                $preHooks[] = 'preWrite';
97
+                $postHooks[] = 'postWrite';
98
+                $requiredPermissions |= \OCP\Constants::PERMISSION_UPDATE;
99
+                break;
100
+        }
101 101
 
102
-		if ($this->checkPermissions($requiredPermissions)) {
103
-			$this->sendHooks($preHooks);
104
-			$result = $this->view->fopen($this->path, $mode);
105
-			$this->sendHooks($postHooks);
106
-			return $result;
107
-		} else {
108
-			throw new NotPermittedException();
109
-		}
110
-	}
102
+        if ($this->checkPermissions($requiredPermissions)) {
103
+            $this->sendHooks($preHooks);
104
+            $result = $this->view->fopen($this->path, $mode);
105
+            $this->sendHooks($postHooks);
106
+            return $result;
107
+        } else {
108
+            throw new NotPermittedException();
109
+        }
110
+    }
111 111
 
112
-	public function delete() {
113
-		if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) {
114
-			$this->sendHooks(array('preDelete'));
115
-			$fileInfo = $this->getFileInfo();
116
-			$this->view->unlink($this->path);
117
-			$nonExisting = new NonExistingFile($this->root, $this->view, $this->path, $fileInfo);
118
-			$this->root->emit('\OC\Files', 'postDelete', array($nonExisting));
119
-			$this->exists = false;
120
-			$this->fileInfo = null;
121
-		} else {
122
-			throw new NotPermittedException();
123
-		}
124
-	}
112
+    public function delete() {
113
+        if ($this->checkPermissions(\OCP\Constants::PERMISSION_DELETE)) {
114
+            $this->sendHooks(array('preDelete'));
115
+            $fileInfo = $this->getFileInfo();
116
+            $this->view->unlink($this->path);
117
+            $nonExisting = new NonExistingFile($this->root, $this->view, $this->path, $fileInfo);
118
+            $this->root->emit('\OC\Files', 'postDelete', array($nonExisting));
119
+            $this->exists = false;
120
+            $this->fileInfo = null;
121
+        } else {
122
+            throw new NotPermittedException();
123
+        }
124
+    }
125 125
 
126
-	/**
127
-	 * @param string $type
128
-	 * @param bool $raw
129
-	 * @return string
130
-	 */
131
-	public function hash($type, $raw = false) {
132
-		return $this->view->hash($type, $this->path, $raw);
133
-	}
126
+    /**
127
+     * @param string $type
128
+     * @param bool $raw
129
+     * @return string
130
+     */
131
+    public function hash($type, $raw = false) {
132
+        return $this->view->hash($type, $this->path, $raw);
133
+    }
134 134
 
135
-	/**
136
-	 * @inheritdoc
137
-	 */
138
-	public function getChecksum() {
139
-		return $this->getFileInfo()->getChecksum();
140
-	}
135
+    /**
136
+     * @inheritdoc
137
+     */
138
+    public function getChecksum() {
139
+        return $this->getFileInfo()->getChecksum();
140
+    }
141 141
 }
Please login to merge, or discard this patch.
lib/private/Files/Node/HookConnector.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -28,138 +28,138 @@
 block discarded – undo
28 28
 use OCP\Util;
29 29
 
30 30
 class HookConnector {
31
-	/**
32
-	 * @var Root
33
-	 */
34
-	private $root;
35
-
36
-	/**
37
-	 * @var View
38
-	 */
39
-	private $view;
40
-
41
-	/**
42
-	 * @var FileInfo[]
43
-	 */
44
-	private $deleteMetaCache = [];
45
-
46
-	/**
47
-	 * HookConnector constructor.
48
-	 *
49
-	 * @param Root $root
50
-	 * @param View $view
51
-	 */
52
-	public function __construct(Root $root, View $view) {
53
-		$this->root = $root;
54
-		$this->view = $view;
55
-	}
56
-
57
-	public function viewToNode() {
58
-		Util::connectHook('OC_Filesystem', 'write', $this, 'write');
59
-		Util::connectHook('OC_Filesystem', 'post_write', $this, 'postWrite');
60
-
61
-		Util::connectHook('OC_Filesystem', 'create', $this, 'create');
62
-		Util::connectHook('OC_Filesystem', 'post_create', $this, 'postCreate');
63
-
64
-		Util::connectHook('OC_Filesystem', 'delete', $this, 'delete');
65
-		Util::connectHook('OC_Filesystem', 'post_delete', $this, 'postDelete');
66
-
67
-		Util::connectHook('OC_Filesystem', 'rename', $this, 'rename');
68
-		Util::connectHook('OC_Filesystem', 'post_rename', $this, 'postRename');
69
-
70
-		Util::connectHook('OC_Filesystem', 'copy', $this, 'copy');
71
-		Util::connectHook('OC_Filesystem', 'post_copy', $this, 'postCopy');
72
-
73
-		Util::connectHook('OC_Filesystem', 'touch', $this, 'touch');
74
-		Util::connectHook('OC_Filesystem', 'post_touch', $this, 'postTouch');
75
-	}
76
-
77
-	public function write($arguments) {
78
-		$node = $this->getNodeForPath($arguments['path']);
79
-		$this->root->emit('\OC\Files', 'preWrite', [$node]);
80
-	}
81
-
82
-	public function postWrite($arguments) {
83
-		$node = $this->getNodeForPath($arguments['path']);
84
-		$this->root->emit('\OC\Files', 'postWrite', [$node]);
85
-	}
86
-
87
-	public function create($arguments) {
88
-		$node = $this->getNodeForPath($arguments['path']);
89
-		$this->root->emit('\OC\Files', 'preCreate', [$node]);
90
-	}
91
-
92
-	public function postCreate($arguments) {
93
-		$node = $this->getNodeForPath($arguments['path']);
94
-		$this->root->emit('\OC\Files', 'postCreate', [$node]);
95
-	}
96
-
97
-	public function delete($arguments) {
98
-		$node = $this->getNodeForPath($arguments['path']);
99
-		$this->deleteMetaCache[$node->getPath()] = $node->getFileInfo();
100
-		$this->root->emit('\OC\Files', 'preDelete', [$node]);
101
-	}
102
-
103
-	public function postDelete($arguments) {
104
-		$node = $this->getNodeForPath($arguments['path']);
105
-		unset($this->deleteMetaCache[$node->getPath()]);
106
-		$this->root->emit('\OC\Files', 'postDelete', [$node]);
107
-	}
108
-
109
-	public function touch($arguments) {
110
-		$node = $this->getNodeForPath($arguments['path']);
111
-		$this->root->emit('\OC\Files', 'preTouch', [$node]);
112
-	}
113
-
114
-	public function postTouch($arguments) {
115
-		$node = $this->getNodeForPath($arguments['path']);
116
-		$this->root->emit('\OC\Files', 'postTouch', [$node]);
117
-	}
118
-
119
-	public function rename($arguments) {
120
-		$source = $this->getNodeForPath($arguments['oldpath']);
121
-		$target = $this->getNodeForPath($arguments['newpath']);
122
-		$this->root->emit('\OC\Files', 'preRename', [$source, $target]);
123
-	}
124
-
125
-	public function postRename($arguments) {
126
-		$source = $this->getNodeForPath($arguments['oldpath']);
127
-		$target = $this->getNodeForPath($arguments['newpath']);
128
-		$this->root->emit('\OC\Files', 'postRename', [$source, $target]);
129
-	}
130
-
131
-	public function copy($arguments) {
132
-		$source = $this->getNodeForPath($arguments['oldpath']);
133
-		$target = $this->getNodeForPath($arguments['newpath']);
134
-		$this->root->emit('\OC\Files', 'preCopy', [$source, $target]);
135
-	}
136
-
137
-	public function postCopy($arguments) {
138
-		$source = $this->getNodeForPath($arguments['oldpath']);
139
-		$target = $this->getNodeForPath($arguments['newpath']);
140
-		$this->root->emit('\OC\Files', 'postCopy', [$source, $target]);
141
-	}
142
-
143
-	private function getNodeForPath($path) {
144
-		$info = Filesystem::getView()->getFileInfo($path);
145
-		if (!$info) {
146
-
147
-			$fullPath = Filesystem::getView()->getAbsolutePath($path);
148
-			if (isset($this->deleteMetaCache[$fullPath])) {
149
-				$info = $this->deleteMetaCache[$fullPath];
150
-			} else {
151
-				$info = null;
152
-			}
153
-			if (Filesystem::is_dir($path)) {
154
-				return new NonExistingFolder($this->root, $this->view, $fullPath, $info);
155
-			} else {
156
-				return new NonExistingFile($this->root, $this->view, $fullPath, $info);
157
-			}
158
-		}
159
-		if ($info->getType() === FileInfo::TYPE_FILE) {
160
-			return new File($this->root, $this->view, $info->getPath(), $info);
161
-		} else {
162
-			return new Folder($this->root, $this->view, $info->getPath(), $info);
163
-		}
164
-	}
31
+    /**
32
+     * @var Root
33
+     */
34
+    private $root;
35
+
36
+    /**
37
+     * @var View
38
+     */
39
+    private $view;
40
+
41
+    /**
42
+     * @var FileInfo[]
43
+     */
44
+    private $deleteMetaCache = [];
45
+
46
+    /**
47
+     * HookConnector constructor.
48
+     *
49
+     * @param Root $root
50
+     * @param View $view
51
+     */
52
+    public function __construct(Root $root, View $view) {
53
+        $this->root = $root;
54
+        $this->view = $view;
55
+    }
56
+
57
+    public function viewToNode() {
58
+        Util::connectHook('OC_Filesystem', 'write', $this, 'write');
59
+        Util::connectHook('OC_Filesystem', 'post_write', $this, 'postWrite');
60
+
61
+        Util::connectHook('OC_Filesystem', 'create', $this, 'create');
62
+        Util::connectHook('OC_Filesystem', 'post_create', $this, 'postCreate');
63
+
64
+        Util::connectHook('OC_Filesystem', 'delete', $this, 'delete');
65
+        Util::connectHook('OC_Filesystem', 'post_delete', $this, 'postDelete');
66
+
67
+        Util::connectHook('OC_Filesystem', 'rename', $this, 'rename');
68
+        Util::connectHook('OC_Filesystem', 'post_rename', $this, 'postRename');
69
+
70
+        Util::connectHook('OC_Filesystem', 'copy', $this, 'copy');
71
+        Util::connectHook('OC_Filesystem', 'post_copy', $this, 'postCopy');
72
+
73
+        Util::connectHook('OC_Filesystem', 'touch', $this, 'touch');
74
+        Util::connectHook('OC_Filesystem', 'post_touch', $this, 'postTouch');
75
+    }
76
+
77
+    public function write($arguments) {
78
+        $node = $this->getNodeForPath($arguments['path']);
79
+        $this->root->emit('\OC\Files', 'preWrite', [$node]);
80
+    }
81
+
82
+    public function postWrite($arguments) {
83
+        $node = $this->getNodeForPath($arguments['path']);
84
+        $this->root->emit('\OC\Files', 'postWrite', [$node]);
85
+    }
86
+
87
+    public function create($arguments) {
88
+        $node = $this->getNodeForPath($arguments['path']);
89
+        $this->root->emit('\OC\Files', 'preCreate', [$node]);
90
+    }
91
+
92
+    public function postCreate($arguments) {
93
+        $node = $this->getNodeForPath($arguments['path']);
94
+        $this->root->emit('\OC\Files', 'postCreate', [$node]);
95
+    }
96
+
97
+    public function delete($arguments) {
98
+        $node = $this->getNodeForPath($arguments['path']);
99
+        $this->deleteMetaCache[$node->getPath()] = $node->getFileInfo();
100
+        $this->root->emit('\OC\Files', 'preDelete', [$node]);
101
+    }
102
+
103
+    public function postDelete($arguments) {
104
+        $node = $this->getNodeForPath($arguments['path']);
105
+        unset($this->deleteMetaCache[$node->getPath()]);
106
+        $this->root->emit('\OC\Files', 'postDelete', [$node]);
107
+    }
108
+
109
+    public function touch($arguments) {
110
+        $node = $this->getNodeForPath($arguments['path']);
111
+        $this->root->emit('\OC\Files', 'preTouch', [$node]);
112
+    }
113
+
114
+    public function postTouch($arguments) {
115
+        $node = $this->getNodeForPath($arguments['path']);
116
+        $this->root->emit('\OC\Files', 'postTouch', [$node]);
117
+    }
118
+
119
+    public function rename($arguments) {
120
+        $source = $this->getNodeForPath($arguments['oldpath']);
121
+        $target = $this->getNodeForPath($arguments['newpath']);
122
+        $this->root->emit('\OC\Files', 'preRename', [$source, $target]);
123
+    }
124
+
125
+    public function postRename($arguments) {
126
+        $source = $this->getNodeForPath($arguments['oldpath']);
127
+        $target = $this->getNodeForPath($arguments['newpath']);
128
+        $this->root->emit('\OC\Files', 'postRename', [$source, $target]);
129
+    }
130
+
131
+    public function copy($arguments) {
132
+        $source = $this->getNodeForPath($arguments['oldpath']);
133
+        $target = $this->getNodeForPath($arguments['newpath']);
134
+        $this->root->emit('\OC\Files', 'preCopy', [$source, $target]);
135
+    }
136
+
137
+    public function postCopy($arguments) {
138
+        $source = $this->getNodeForPath($arguments['oldpath']);
139
+        $target = $this->getNodeForPath($arguments['newpath']);
140
+        $this->root->emit('\OC\Files', 'postCopy', [$source, $target]);
141
+    }
142
+
143
+    private function getNodeForPath($path) {
144
+        $info = Filesystem::getView()->getFileInfo($path);
145
+        if (!$info) {
146
+
147
+            $fullPath = Filesystem::getView()->getAbsolutePath($path);
148
+            if (isset($this->deleteMetaCache[$fullPath])) {
149
+                $info = $this->deleteMetaCache[$fullPath];
150
+            } else {
151
+                $info = null;
152
+            }
153
+            if (Filesystem::is_dir($path)) {
154
+                return new NonExistingFolder($this->root, $this->view, $fullPath, $info);
155
+            } else {
156
+                return new NonExistingFile($this->root, $this->view, $fullPath, $info);
157
+            }
158
+        }
159
+        if ($info->getType() === FileInfo::TYPE_FILE) {
160
+            return new File($this->root, $this->view, $info->getPath(), $info);
161
+        } else {
162
+            return new Folder($this->root, $this->view, $info->getPath(), $info);
163
+        }
164
+    }
165 165
 }
Please login to merge, or discard this patch.
lib/private/Files/Node/Node.php 1 patch
Indentation   +389 added lines, -389 removed lines patch added patch discarded remove patch
@@ -35,394 +35,394 @@
 block discarded – undo
35 35
 
36 36
 // FIXME: this class really should be abstract
37 37
 class Node implements \OCP\Files\Node {
38
-	/**
39
-	 * @var \OC\Files\View $view
40
-	 */
41
-	protected $view;
42
-
43
-	/**
44
-	 * @var \OC\Files\Node\Root $root
45
-	 */
46
-	protected $root;
47
-
48
-	/**
49
-	 * @var string $path
50
-	 */
51
-	protected $path;
52
-
53
-	/**
54
-	 * @var \OCP\Files\FileInfo
55
-	 */
56
-	protected $fileInfo;
57
-
58
-	/**
59
-	 * @param \OC\Files\View $view
60
-	 * @param \OCP\Files\IRootFolder $root
61
-	 * @param string $path
62
-	 * @param FileInfo $fileInfo
63
-	 */
64
-	public function __construct($root, $view, $path, $fileInfo = null) {
65
-		$this->view = $view;
66
-		$this->root = $root;
67
-		$this->path = $path;
68
-		$this->fileInfo = $fileInfo;
69
-	}
70
-
71
-	/**
72
-	 * Creates a Node of the same type that represents a non-existing path
73
-	 *
74
-	 * @param string $path path
75
-	 * @return string non-existing node class
76
-	 */
77
-	protected function createNonExistingNode($path) {
78
-		throw new \Exception('Must be implemented by subclasses');
79
-	}
80
-
81
-	/**
82
-	 * Returns the matching file info
83
-	 *
84
-	 * @return FileInfo
85
-	 * @throws InvalidPathException
86
-	 * @throws NotFoundException
87
-	 */
88
-	public function getFileInfo() {
89
-		if (!Filesystem::isValidPath($this->path)) {
90
-			throw new InvalidPathException();
91
-		}
92
-		if (!$this->fileInfo) {
93
-			$fileInfo = $this->view->getFileInfo($this->path);
94
-			if ($fileInfo instanceof FileInfo) {
95
-				$this->fileInfo = $fileInfo;
96
-			} else {
97
-				throw new NotFoundException();
98
-			}
99
-		}
100
-		return $this->fileInfo;
101
-	}
102
-
103
-	/**
104
-	 * @param string[] $hooks
105
-	 */
106
-	protected function sendHooks($hooks) {
107
-		foreach ($hooks as $hook) {
108
-			$this->root->emit('\OC\Files', $hook, array($this));
109
-		}
110
-	}
111
-
112
-	/**
113
-	 * @param int $permissions
114
-	 * @return bool
115
-	 */
116
-	protected function checkPermissions($permissions) {
117
-		return ($this->getPermissions() & $permissions) === $permissions;
118
-	}
119
-
120
-	public function delete() {
121
-		return;
122
-	}
123
-
124
-	/**
125
-	 * @param int $mtime
126
-	 * @throws \OCP\Files\NotPermittedException
127
-	 */
128
-	public function touch($mtime = null) {
129
-		if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
130
-			$this->sendHooks(array('preTouch'));
131
-			$this->view->touch($this->path, $mtime);
132
-			$this->sendHooks(array('postTouch'));
133
-			if ($this->fileInfo) {
134
-				if (is_null($mtime)) {
135
-					$mtime = time();
136
-				}
137
-				$this->fileInfo['mtime'] = $mtime;
138
-			}
139
-		} else {
140
-			throw new NotPermittedException();
141
-		}
142
-	}
143
-
144
-	/**
145
-	 * @return \OC\Files\Storage\Storage
146
-	 * @throws \OCP\Files\NotFoundException
147
-	 */
148
-	public function getStorage() {
149
-		list($storage,) = $this->view->resolvePath($this->path);
150
-		return $storage;
151
-	}
152
-
153
-	/**
154
-	 * @return string
155
-	 */
156
-	public function getPath() {
157
-		return $this->path;
158
-	}
159
-
160
-	/**
161
-	 * @return string
162
-	 */
163
-	public function getInternalPath() {
164
-		list(, $internalPath) = $this->view->resolvePath($this->path);
165
-		return $internalPath;
166
-	}
167
-
168
-	/**
169
-	 * @return int
170
-	 * @throws InvalidPathException
171
-	 * @throws NotFoundException
172
-	 */
173
-	public function getId() {
174
-		return $this->getFileInfo()->getId();
175
-	}
176
-
177
-	/**
178
-	 * @return array
179
-	 */
180
-	public function stat() {
181
-		return $this->view->stat($this->path);
182
-	}
183
-
184
-	/**
185
-	 * @return int
186
-	 * @throws InvalidPathException
187
-	 * @throws NotFoundException
188
-	 */
189
-	public function getMTime() {
190
-		return $this->getFileInfo()->getMTime();
191
-	}
192
-
193
-	/**
194
-	 * @return int
195
-	 * @throws InvalidPathException
196
-	 * @throws NotFoundException
197
-	 */
198
-	public function getSize() {
199
-		return $this->getFileInfo()->getSize();
200
-	}
201
-
202
-	/**
203
-	 * @return string
204
-	 * @throws InvalidPathException
205
-	 * @throws NotFoundException
206
-	 */
207
-	public function getEtag() {
208
-		return $this->getFileInfo()->getEtag();
209
-	}
210
-
211
-	/**
212
-	 * @return int
213
-	 * @throws InvalidPathException
214
-	 * @throws NotFoundException
215
-	 */
216
-	public function getPermissions() {
217
-		return $this->getFileInfo()->getPermissions();
218
-	}
219
-
220
-	/**
221
-	 * @return bool
222
-	 * @throws InvalidPathException
223
-	 * @throws NotFoundException
224
-	 */
225
-	public function isReadable() {
226
-		return $this->getFileInfo()->isReadable();
227
-	}
228
-
229
-	/**
230
-	 * @return bool
231
-	 * @throws InvalidPathException
232
-	 * @throws NotFoundException
233
-	 */
234
-	public function isUpdateable() {
235
-		return $this->getFileInfo()->isUpdateable();
236
-	}
237
-
238
-	/**
239
-	 * @return bool
240
-	 * @throws InvalidPathException
241
-	 * @throws NotFoundException
242
-	 */
243
-	public function isDeletable() {
244
-		return $this->getFileInfo()->isDeletable();
245
-	}
246
-
247
-	/**
248
-	 * @return bool
249
-	 * @throws InvalidPathException
250
-	 * @throws NotFoundException
251
-	 */
252
-	public function isShareable() {
253
-		return $this->getFileInfo()->isShareable();
254
-	}
255
-
256
-	/**
257
-	 * @return bool
258
-	 * @throws InvalidPathException
259
-	 * @throws NotFoundException
260
-	 */
261
-	public function isCreatable() {
262
-		return $this->getFileInfo()->isCreatable();
263
-	}
264
-
265
-	/**
266
-	 * @return Node
267
-	 */
268
-	public function getParent() {
269
-		return $this->root->get(dirname($this->path));
270
-	}
271
-
272
-	/**
273
-	 * @return string
274
-	 */
275
-	public function getName() {
276
-		return basename($this->path);
277
-	}
278
-
279
-	/**
280
-	 * @param string $path
281
-	 * @return string
282
-	 */
283
-	protected function normalizePath($path) {
284
-		if ($path === '' or $path === '/') {
285
-			return '/';
286
-		}
287
-		//no windows style slashes
288
-		$path = str_replace('\\', '/', $path);
289
-		//add leading slash
290
-		if ($path[0] !== '/') {
291
-			$path = '/' . $path;
292
-		}
293
-		//remove duplicate slashes
294
-		while (strpos($path, '//') !== false) {
295
-			$path = str_replace('//', '/', $path);
296
-		}
297
-		//remove trailing slash
298
-		$path = rtrim($path, '/');
299
-
300
-		return $path;
301
-	}
302
-
303
-	/**
304
-	 * check if the requested path is valid
305
-	 *
306
-	 * @param string $path
307
-	 * @return bool
308
-	 */
309
-	public function isValidPath($path) {
310
-		if (!$path || $path[0] !== '/') {
311
-			$path = '/' . $path;
312
-		}
313
-		if (strstr($path, '/../') || strrchr($path, '/') === '/..') {
314
-			return false;
315
-		}
316
-		return true;
317
-	}
318
-
319
-	public function isMounted() {
320
-		return $this->getFileInfo()->isMounted();
321
-	}
322
-
323
-	public function isShared() {
324
-		return $this->getFileInfo()->isShared();
325
-	}
326
-
327
-	public function getMimeType() {
328
-		return $this->getFileInfo()->getMimetype();
329
-	}
330
-
331
-	public function getMimePart() {
332
-		return $this->getFileInfo()->getMimePart();
333
-	}
334
-
335
-	public function getType() {
336
-		return $this->getFileInfo()->getType();
337
-	}
338
-
339
-	public function isEncrypted() {
340
-		return $this->getFileInfo()->isEncrypted();
341
-	}
342
-
343
-	public function getMountPoint() {
344
-		return $this->getFileInfo()->getMountPoint();
345
-	}
346
-
347
-	public function getOwner() {
348
-		return $this->getFileInfo()->getOwner();
349
-	}
350
-
351
-	public function getChecksum() {
352
-		return;
353
-	}
354
-
355
-	/**
356
-	 * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
357
-	 * @throws \OCP\Lock\LockedException
358
-	 */
359
-	public function lock($type) {
360
-		$this->view->lockFile($this->path, $type);
361
-	}
362
-
363
-	/**
364
-	 * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
365
-	 * @throws \OCP\Lock\LockedException
366
-	 */
367
-	public function changeLock($type) {
368
-		$this->view->changeLock($this->path, $type);
369
-	}
370
-
371
-	/**
372
-	 * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
373
-	 * @throws \OCP\Lock\LockedException
374
-	 */
375
-	public function unlock($type) {
376
-		$this->view->unlockFile($this->path, $type);
377
-	}
378
-
379
-	/**
380
-	 * @param string $targetPath
381
-	 * @throws \OCP\Files\NotPermittedException if copy not allowed or failed
382
-	 * @return \OC\Files\Node\Node
383
-	 */
384
-	public function copy($targetPath) {
385
-		$targetPath = $this->normalizePath($targetPath);
386
-		$parent = $this->root->get(dirname($targetPath));
387
-		if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) {
388
-			$nonExisting = $this->createNonExistingNode($targetPath);
389
-			$this->root->emit('\OC\Files', 'preCopy', [$this, $nonExisting]);
390
-			$this->root->emit('\OC\Files', 'preWrite', [$nonExisting]);
391
-			if (!$this->view->copy($this->path, $targetPath)) {
392
-				throw new NotPermittedException('Could not copy ' . $this->path . ' to ' . $targetPath);
393
-			}
394
-			$targetNode = $this->root->get($targetPath);
395
-			$this->root->emit('\OC\Files', 'postCopy', [$this, $targetNode]);
396
-			$this->root->emit('\OC\Files', 'postWrite', [$targetNode]);
397
-			return $targetNode;
398
-		} else {
399
-			throw new NotPermittedException('No permission to copy to path ' . $targetPath);
400
-		}
401
-	}
402
-
403
-	/**
404
-	 * @param string $targetPath
405
-	 * @throws \OCP\Files\NotPermittedException if move not allowed or failed
406
-	 * @return \OC\Files\Node\Node
407
-	 */
408
-	public function move($targetPath) {
409
-		$targetPath = $this->normalizePath($targetPath);
410
-		$parent = $this->root->get(dirname($targetPath));
411
-		if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) {
412
-			$nonExisting = $this->createNonExistingNode($targetPath);
413
-			$this->root->emit('\OC\Files', 'preRename', [$this, $nonExisting]);
414
-			$this->root->emit('\OC\Files', 'preWrite', [$nonExisting]);
415
-			if (!$this->view->rename($this->path, $targetPath)) {
416
-				throw new NotPermittedException('Could not move ' . $this->path . ' to ' . $targetPath);
417
-			}
418
-			$targetNode = $this->root->get($targetPath);
419
-			$this->root->emit('\OC\Files', 'postRename', [$this, $targetNode]);
420
-			$this->root->emit('\OC\Files', 'postWrite', [$targetNode]);
421
-			$this->path = $targetPath;
422
-			return $targetNode;
423
-		} else {
424
-			throw new NotPermittedException('No permission to move to path ' . $targetPath);
425
-		}
426
-	}
38
+    /**
39
+     * @var \OC\Files\View $view
40
+     */
41
+    protected $view;
42
+
43
+    /**
44
+     * @var \OC\Files\Node\Root $root
45
+     */
46
+    protected $root;
47
+
48
+    /**
49
+     * @var string $path
50
+     */
51
+    protected $path;
52
+
53
+    /**
54
+     * @var \OCP\Files\FileInfo
55
+     */
56
+    protected $fileInfo;
57
+
58
+    /**
59
+     * @param \OC\Files\View $view
60
+     * @param \OCP\Files\IRootFolder $root
61
+     * @param string $path
62
+     * @param FileInfo $fileInfo
63
+     */
64
+    public function __construct($root, $view, $path, $fileInfo = null) {
65
+        $this->view = $view;
66
+        $this->root = $root;
67
+        $this->path = $path;
68
+        $this->fileInfo = $fileInfo;
69
+    }
70
+
71
+    /**
72
+     * Creates a Node of the same type that represents a non-existing path
73
+     *
74
+     * @param string $path path
75
+     * @return string non-existing node class
76
+     */
77
+    protected function createNonExistingNode($path) {
78
+        throw new \Exception('Must be implemented by subclasses');
79
+    }
80
+
81
+    /**
82
+     * Returns the matching file info
83
+     *
84
+     * @return FileInfo
85
+     * @throws InvalidPathException
86
+     * @throws NotFoundException
87
+     */
88
+    public function getFileInfo() {
89
+        if (!Filesystem::isValidPath($this->path)) {
90
+            throw new InvalidPathException();
91
+        }
92
+        if (!$this->fileInfo) {
93
+            $fileInfo = $this->view->getFileInfo($this->path);
94
+            if ($fileInfo instanceof FileInfo) {
95
+                $this->fileInfo = $fileInfo;
96
+            } else {
97
+                throw new NotFoundException();
98
+            }
99
+        }
100
+        return $this->fileInfo;
101
+    }
102
+
103
+    /**
104
+     * @param string[] $hooks
105
+     */
106
+    protected function sendHooks($hooks) {
107
+        foreach ($hooks as $hook) {
108
+            $this->root->emit('\OC\Files', $hook, array($this));
109
+        }
110
+    }
111
+
112
+    /**
113
+     * @param int $permissions
114
+     * @return bool
115
+     */
116
+    protected function checkPermissions($permissions) {
117
+        return ($this->getPermissions() & $permissions) === $permissions;
118
+    }
119
+
120
+    public function delete() {
121
+        return;
122
+    }
123
+
124
+    /**
125
+     * @param int $mtime
126
+     * @throws \OCP\Files\NotPermittedException
127
+     */
128
+    public function touch($mtime = null) {
129
+        if ($this->checkPermissions(\OCP\Constants::PERMISSION_UPDATE)) {
130
+            $this->sendHooks(array('preTouch'));
131
+            $this->view->touch($this->path, $mtime);
132
+            $this->sendHooks(array('postTouch'));
133
+            if ($this->fileInfo) {
134
+                if (is_null($mtime)) {
135
+                    $mtime = time();
136
+                }
137
+                $this->fileInfo['mtime'] = $mtime;
138
+            }
139
+        } else {
140
+            throw new NotPermittedException();
141
+        }
142
+    }
143
+
144
+    /**
145
+     * @return \OC\Files\Storage\Storage
146
+     * @throws \OCP\Files\NotFoundException
147
+     */
148
+    public function getStorage() {
149
+        list($storage,) = $this->view->resolvePath($this->path);
150
+        return $storage;
151
+    }
152
+
153
+    /**
154
+     * @return string
155
+     */
156
+    public function getPath() {
157
+        return $this->path;
158
+    }
159
+
160
+    /**
161
+     * @return string
162
+     */
163
+    public function getInternalPath() {
164
+        list(, $internalPath) = $this->view->resolvePath($this->path);
165
+        return $internalPath;
166
+    }
167
+
168
+    /**
169
+     * @return int
170
+     * @throws InvalidPathException
171
+     * @throws NotFoundException
172
+     */
173
+    public function getId() {
174
+        return $this->getFileInfo()->getId();
175
+    }
176
+
177
+    /**
178
+     * @return array
179
+     */
180
+    public function stat() {
181
+        return $this->view->stat($this->path);
182
+    }
183
+
184
+    /**
185
+     * @return int
186
+     * @throws InvalidPathException
187
+     * @throws NotFoundException
188
+     */
189
+    public function getMTime() {
190
+        return $this->getFileInfo()->getMTime();
191
+    }
192
+
193
+    /**
194
+     * @return int
195
+     * @throws InvalidPathException
196
+     * @throws NotFoundException
197
+     */
198
+    public function getSize() {
199
+        return $this->getFileInfo()->getSize();
200
+    }
201
+
202
+    /**
203
+     * @return string
204
+     * @throws InvalidPathException
205
+     * @throws NotFoundException
206
+     */
207
+    public function getEtag() {
208
+        return $this->getFileInfo()->getEtag();
209
+    }
210
+
211
+    /**
212
+     * @return int
213
+     * @throws InvalidPathException
214
+     * @throws NotFoundException
215
+     */
216
+    public function getPermissions() {
217
+        return $this->getFileInfo()->getPermissions();
218
+    }
219
+
220
+    /**
221
+     * @return bool
222
+     * @throws InvalidPathException
223
+     * @throws NotFoundException
224
+     */
225
+    public function isReadable() {
226
+        return $this->getFileInfo()->isReadable();
227
+    }
228
+
229
+    /**
230
+     * @return bool
231
+     * @throws InvalidPathException
232
+     * @throws NotFoundException
233
+     */
234
+    public function isUpdateable() {
235
+        return $this->getFileInfo()->isUpdateable();
236
+    }
237
+
238
+    /**
239
+     * @return bool
240
+     * @throws InvalidPathException
241
+     * @throws NotFoundException
242
+     */
243
+    public function isDeletable() {
244
+        return $this->getFileInfo()->isDeletable();
245
+    }
246
+
247
+    /**
248
+     * @return bool
249
+     * @throws InvalidPathException
250
+     * @throws NotFoundException
251
+     */
252
+    public function isShareable() {
253
+        return $this->getFileInfo()->isShareable();
254
+    }
255
+
256
+    /**
257
+     * @return bool
258
+     * @throws InvalidPathException
259
+     * @throws NotFoundException
260
+     */
261
+    public function isCreatable() {
262
+        return $this->getFileInfo()->isCreatable();
263
+    }
264
+
265
+    /**
266
+     * @return Node
267
+     */
268
+    public function getParent() {
269
+        return $this->root->get(dirname($this->path));
270
+    }
271
+
272
+    /**
273
+     * @return string
274
+     */
275
+    public function getName() {
276
+        return basename($this->path);
277
+    }
278
+
279
+    /**
280
+     * @param string $path
281
+     * @return string
282
+     */
283
+    protected function normalizePath($path) {
284
+        if ($path === '' or $path === '/') {
285
+            return '/';
286
+        }
287
+        //no windows style slashes
288
+        $path = str_replace('\\', '/', $path);
289
+        //add leading slash
290
+        if ($path[0] !== '/') {
291
+            $path = '/' . $path;
292
+        }
293
+        //remove duplicate slashes
294
+        while (strpos($path, '//') !== false) {
295
+            $path = str_replace('//', '/', $path);
296
+        }
297
+        //remove trailing slash
298
+        $path = rtrim($path, '/');
299
+
300
+        return $path;
301
+    }
302
+
303
+    /**
304
+     * check if the requested path is valid
305
+     *
306
+     * @param string $path
307
+     * @return bool
308
+     */
309
+    public function isValidPath($path) {
310
+        if (!$path || $path[0] !== '/') {
311
+            $path = '/' . $path;
312
+        }
313
+        if (strstr($path, '/../') || strrchr($path, '/') === '/..') {
314
+            return false;
315
+        }
316
+        return true;
317
+    }
318
+
319
+    public function isMounted() {
320
+        return $this->getFileInfo()->isMounted();
321
+    }
322
+
323
+    public function isShared() {
324
+        return $this->getFileInfo()->isShared();
325
+    }
326
+
327
+    public function getMimeType() {
328
+        return $this->getFileInfo()->getMimetype();
329
+    }
330
+
331
+    public function getMimePart() {
332
+        return $this->getFileInfo()->getMimePart();
333
+    }
334
+
335
+    public function getType() {
336
+        return $this->getFileInfo()->getType();
337
+    }
338
+
339
+    public function isEncrypted() {
340
+        return $this->getFileInfo()->isEncrypted();
341
+    }
342
+
343
+    public function getMountPoint() {
344
+        return $this->getFileInfo()->getMountPoint();
345
+    }
346
+
347
+    public function getOwner() {
348
+        return $this->getFileInfo()->getOwner();
349
+    }
350
+
351
+    public function getChecksum() {
352
+        return;
353
+    }
354
+
355
+    /**
356
+     * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
357
+     * @throws \OCP\Lock\LockedException
358
+     */
359
+    public function lock($type) {
360
+        $this->view->lockFile($this->path, $type);
361
+    }
362
+
363
+    /**
364
+     * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
365
+     * @throws \OCP\Lock\LockedException
366
+     */
367
+    public function changeLock($type) {
368
+        $this->view->changeLock($this->path, $type);
369
+    }
370
+
371
+    /**
372
+     * @param int $type \OCP\Lock\ILockingProvider::LOCK_SHARED or \OCP\Lock\ILockingProvider::LOCK_EXCLUSIVE
373
+     * @throws \OCP\Lock\LockedException
374
+     */
375
+    public function unlock($type) {
376
+        $this->view->unlockFile($this->path, $type);
377
+    }
378
+
379
+    /**
380
+     * @param string $targetPath
381
+     * @throws \OCP\Files\NotPermittedException if copy not allowed or failed
382
+     * @return \OC\Files\Node\Node
383
+     */
384
+    public function copy($targetPath) {
385
+        $targetPath = $this->normalizePath($targetPath);
386
+        $parent = $this->root->get(dirname($targetPath));
387
+        if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) {
388
+            $nonExisting = $this->createNonExistingNode($targetPath);
389
+            $this->root->emit('\OC\Files', 'preCopy', [$this, $nonExisting]);
390
+            $this->root->emit('\OC\Files', 'preWrite', [$nonExisting]);
391
+            if (!$this->view->copy($this->path, $targetPath)) {
392
+                throw new NotPermittedException('Could not copy ' . $this->path . ' to ' . $targetPath);
393
+            }
394
+            $targetNode = $this->root->get($targetPath);
395
+            $this->root->emit('\OC\Files', 'postCopy', [$this, $targetNode]);
396
+            $this->root->emit('\OC\Files', 'postWrite', [$targetNode]);
397
+            return $targetNode;
398
+        } else {
399
+            throw new NotPermittedException('No permission to copy to path ' . $targetPath);
400
+        }
401
+    }
402
+
403
+    /**
404
+     * @param string $targetPath
405
+     * @throws \OCP\Files\NotPermittedException if move not allowed or failed
406
+     * @return \OC\Files\Node\Node
407
+     */
408
+    public function move($targetPath) {
409
+        $targetPath = $this->normalizePath($targetPath);
410
+        $parent = $this->root->get(dirname($targetPath));
411
+        if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) {
412
+            $nonExisting = $this->createNonExistingNode($targetPath);
413
+            $this->root->emit('\OC\Files', 'preRename', [$this, $nonExisting]);
414
+            $this->root->emit('\OC\Files', 'preWrite', [$nonExisting]);
415
+            if (!$this->view->rename($this->path, $targetPath)) {
416
+                throw new NotPermittedException('Could not move ' . $this->path . ' to ' . $targetPath);
417
+            }
418
+            $targetNode = $this->root->get($targetPath);
419
+            $this->root->emit('\OC\Files', 'postRename', [$this, $targetNode]);
420
+            $this->root->emit('\OC\Files', 'postWrite', [$targetNode]);
421
+            $this->path = $targetPath;
422
+            return $targetNode;
423
+        } else {
424
+            throw new NotPermittedException('No permission to move to path ' . $targetPath);
425
+        }
426
+    }
427 427
 
428 428
 }
Please login to merge, or discard this patch.
lib/private/Files/Node/NonExistingFile.php 1 patch
Indentation   +115 added lines, -115 removed lines patch added patch discarded remove patch
@@ -26,119 +26,119 @@
 block discarded – undo
26 26
 use OCP\Files\NotFoundException;
27 27
 
28 28
 class NonExistingFile extends File {
29
-	/**
30
-	 * @param string $newPath
31
-	 * @throws \OCP\Files\NotFoundException
32
-	 */
33
-	public function rename($newPath) {
34
-		throw new NotFoundException();
35
-	}
36
-
37
-	public function delete() {
38
-		throw new NotFoundException();
39
-	}
40
-
41
-	public function copy($newPath) {
42
-		throw new NotFoundException();
43
-	}
44
-
45
-	public function touch($mtime = null) {
46
-		throw new NotFoundException();
47
-	}
48
-
49
-	public function getId() {
50
-		if ($this->fileInfo) {
51
-			return parent::getId();
52
-		} else {
53
-			throw new NotFoundException();
54
-		}
55
-	}
56
-
57
-	public function stat() {
58
-		throw new NotFoundException();
59
-	}
60
-
61
-	public function getMTime() {
62
-		if ($this->fileInfo) {
63
-			return parent::getMTime();
64
-		} else {
65
-			throw new NotFoundException();
66
-		}
67
-	}
68
-
69
-	public function getSize() {
70
-		if ($this->fileInfo) {
71
-			return parent::getSize();
72
-		} else {
73
-			throw new NotFoundException();
74
-		}
75
-	}
76
-
77
-	public function getEtag() {
78
-		if ($this->fileInfo) {
79
-			return parent::getEtag();
80
-		} else {
81
-			throw new NotFoundException();
82
-		}
83
-	}
84
-
85
-	public function getPermissions() {
86
-		if ($this->fileInfo) {
87
-			return parent::getPermissions();
88
-		} else {
89
-			throw new NotFoundException();
90
-		}
91
-	}
92
-
93
-	public function isReadable() {
94
-		if ($this->fileInfo) {
95
-			return parent::isReadable();
96
-		} else {
97
-			throw new NotFoundException();
98
-		}
99
-	}
100
-
101
-	public function isUpdateable() {
102
-		if ($this->fileInfo) {
103
-			return parent::isUpdateable();
104
-		} else {
105
-			throw new NotFoundException();
106
-		}
107
-	}
108
-
109
-	public function isDeletable() {
110
-		if ($this->fileInfo) {
111
-			return parent::isDeletable();
112
-		} else {
113
-			throw new NotFoundException();
114
-		}
115
-	}
116
-
117
-	public function isShareable() {
118
-		if ($this->fileInfo) {
119
-			return parent::isShareable();
120
-		} else {
121
-			throw new NotFoundException();
122
-		}
123
-	}
124
-
125
-	public function getContent() {
126
-		throw new NotFoundException();
127
-	}
128
-
129
-	public function putContent($data) {
130
-		throw new NotFoundException();
131
-	}
132
-
133
-	public function getMimeType() {
134
-		if ($this->fileInfo) {
135
-			return parent::getMimeType();
136
-		} else {
137
-			throw new NotFoundException();
138
-		}
139
-	}
140
-
141
-	public function fopen($mode) {
142
-		throw new NotFoundException();
143
-	}
29
+    /**
30
+     * @param string $newPath
31
+     * @throws \OCP\Files\NotFoundException
32
+     */
33
+    public function rename($newPath) {
34
+        throw new NotFoundException();
35
+    }
36
+
37
+    public function delete() {
38
+        throw new NotFoundException();
39
+    }
40
+
41
+    public function copy($newPath) {
42
+        throw new NotFoundException();
43
+    }
44
+
45
+    public function touch($mtime = null) {
46
+        throw new NotFoundException();
47
+    }
48
+
49
+    public function getId() {
50
+        if ($this->fileInfo) {
51
+            return parent::getId();
52
+        } else {
53
+            throw new NotFoundException();
54
+        }
55
+    }
56
+
57
+    public function stat() {
58
+        throw new NotFoundException();
59
+    }
60
+
61
+    public function getMTime() {
62
+        if ($this->fileInfo) {
63
+            return parent::getMTime();
64
+        } else {
65
+            throw new NotFoundException();
66
+        }
67
+    }
68
+
69
+    public function getSize() {
70
+        if ($this->fileInfo) {
71
+            return parent::getSize();
72
+        } else {
73
+            throw new NotFoundException();
74
+        }
75
+    }
76
+
77
+    public function getEtag() {
78
+        if ($this->fileInfo) {
79
+            return parent::getEtag();
80
+        } else {
81
+            throw new NotFoundException();
82
+        }
83
+    }
84
+
85
+    public function getPermissions() {
86
+        if ($this->fileInfo) {
87
+            return parent::getPermissions();
88
+        } else {
89
+            throw new NotFoundException();
90
+        }
91
+    }
92
+
93
+    public function isReadable() {
94
+        if ($this->fileInfo) {
95
+            return parent::isReadable();
96
+        } else {
97
+            throw new NotFoundException();
98
+        }
99
+    }
100
+
101
+    public function isUpdateable() {
102
+        if ($this->fileInfo) {
103
+            return parent::isUpdateable();
104
+        } else {
105
+            throw new NotFoundException();
106
+        }
107
+    }
108
+
109
+    public function isDeletable() {
110
+        if ($this->fileInfo) {
111
+            return parent::isDeletable();
112
+        } else {
113
+            throw new NotFoundException();
114
+        }
115
+    }
116
+
117
+    public function isShareable() {
118
+        if ($this->fileInfo) {
119
+            return parent::isShareable();
120
+        } else {
121
+            throw new NotFoundException();
122
+        }
123
+    }
124
+
125
+    public function getContent() {
126
+        throw new NotFoundException();
127
+    }
128
+
129
+    public function putContent($data) {
130
+        throw new NotFoundException();
131
+    }
132
+
133
+    public function getMimeType() {
134
+        if ($this->fileInfo) {
135
+            return parent::getMimeType();
136
+        } else {
137
+            throw new NotFoundException();
138
+        }
139
+    }
140
+
141
+    public function fopen($mode) {
142
+        throw new NotFoundException();
143
+    }
144 144
 }
Please login to merge, or discard this patch.
lib/private/Files/Node/LazyRoot.php 1 patch
Indentation   +443 added lines, -443 removed lines patch added patch discarded remove patch
@@ -34,447 +34,447 @@
 block discarded – undo
34 34
  * @package OC\Files\Node
35 35
  */
36 36
 class LazyRoot implements IRootFolder {
37
-	/** @var \Closure */
38
-	private $rootFolderClosure;
39
-
40
-	/** @var IRootFolder */
41
-	private $rootFolder;
42
-
43
-	/**
44
-	 * LazyRoot constructor.
45
-	 *
46
-	 * @param \Closure $rootFolderClosure
47
-	 */
48
-	public function __construct(\Closure $rootFolderClosure) {
49
-		$this->rootFolderClosure = $rootFolderClosure;
50
-	}
51
-
52
-	/**
53
-	 * Magic method to first get the real rootFolder and then
54
-	 * call $method with $args on it
55
-	 *
56
-	 * @param $method
57
-	 * @param $args
58
-	 * @return mixed
59
-	 */
60
-	public function __call($method, $args) {
61
-		if ($this->rootFolder === null) {
62
-			$this->rootFolder = call_user_func($this->rootFolderClosure);
63
-		}
64
-
65
-		return call_user_func_array([$this->rootFolder, $method], $args);
66
-	}
67
-
68
-	/**
69
-	 * @inheritDoc
70
-	 */
71
-	public function getUser() {
72
-		return $this->__call(__FUNCTION__, func_get_args());
73
-	}
74
-
75
-	/**
76
-	 * @inheritDoc
77
-	 */
78
-	public function listen($scope, $method, callable $callback) {
79
-		$this->__call(__FUNCTION__, func_get_args());
80
-	}
81
-
82
-	/**
83
-	 * @inheritDoc
84
-	 */
85
-	public function removeListener($scope = null, $method = null, callable $callback = null) {
86
-		$this->__call(__FUNCTION__, func_get_args());
87
-	}
88
-
89
-	/**
90
-	 * @inheritDoc
91
-	 */
92
-	public function emit($scope, $method, $arguments = array()) {
93
-		$this->__call(__FUNCTION__, func_get_args());
94
-	}
95
-
96
-	/**
97
-	 * @inheritDoc
98
-	 */
99
-	public function mount($storage, $mountPoint, $arguments = array()) {
100
-		$this->__call(__FUNCTION__, func_get_args());
101
-	}
102
-
103
-	/**
104
-	 * @inheritDoc
105
-	 */
106
-	public function getMount($mountPoint) {
107
-		return $this->__call(__FUNCTION__, func_get_args());
108
-	}
109
-
110
-	/**
111
-	 * @inheritDoc
112
-	 */
113
-	public function getMountsIn($mountPoint) {
114
-		return $this->__call(__FUNCTION__, func_get_args());
115
-	}
116
-
117
-	/**
118
-	 * @inheritDoc
119
-	 */
120
-	public function getMountByStorageId($storageId) {
121
-		return $this->__call(__FUNCTION__, func_get_args());
122
-	}
123
-
124
-	/**
125
-	 * @inheritDoc
126
-	 */
127
-	public function getMountByNumericStorageId($numericId) {
128
-		return $this->__call(__FUNCTION__, func_get_args());
129
-	}
130
-
131
-	/**
132
-	 * @inheritDoc
133
-	 */
134
-	public function unMount($mount) {
135
-		$this->__call(__FUNCTION__, func_get_args());
136
-	}
137
-
138
-	/**
139
-	 * @inheritDoc
140
-	 */
141
-	public function get($path) {
142
-		return $this->__call(__FUNCTION__, func_get_args());
143
-	}
144
-
145
-	/**
146
-	 * @inheritDoc
147
-	 */
148
-	public function rename($targetPath) {
149
-		return $this->__call(__FUNCTION__, func_get_args());
150
-	}
151
-
152
-	/**
153
-	 * @inheritDoc
154
-	 */
155
-	public function delete() {
156
-		return $this->__call(__FUNCTION__, func_get_args());
157
-	}
158
-
159
-	/**
160
-	 * @inheritDoc
161
-	 */
162
-	public function copy($targetPath) {
163
-		return $this->__call(__FUNCTION__, func_get_args());
164
-	}
165
-
166
-	/**
167
-	 * @inheritDoc
168
-	 */
169
-	public function touch($mtime = null) {
170
-		$this->__call(__FUNCTION__, func_get_args());
171
-	}
172
-
173
-	/**
174
-	 * @inheritDoc
175
-	 */
176
-	public function getStorage() {
177
-		return $this->__call(__FUNCTION__, func_get_args());
178
-	}
179
-
180
-	/**
181
-	 * @inheritDoc
182
-	 */
183
-	public function getPath() {
184
-		return $this->__call(__FUNCTION__, func_get_args());
185
-	}
186
-
187
-	/**
188
-	 * @inheritDoc
189
-	 */
190
-	public function getInternalPath() {
191
-		return $this->__call(__FUNCTION__, func_get_args());
192
-	}
193
-
194
-	/**
195
-	 * @inheritDoc
196
-	 */
197
-	public function getId() {
198
-		return $this->__call(__FUNCTION__, func_get_args());
199
-	}
200
-
201
-	/**
202
-	 * @inheritDoc
203
-	 */
204
-	public function stat() {
205
-		return $this->__call(__FUNCTION__, func_get_args());
206
-	}
207
-
208
-	/**
209
-	 * @inheritDoc
210
-	 */
211
-	public function getMTime() {
212
-		return $this->__call(__FUNCTION__, func_get_args());
213
-	}
214
-
215
-	/**
216
-	 * @inheritDoc
217
-	 */
218
-	public function getSize() {
219
-		return $this->__call(__FUNCTION__, func_get_args());
220
-	}
221
-
222
-	/**
223
-	 * @inheritDoc
224
-	 */
225
-	public function getEtag() {
226
-		return $this->__call(__FUNCTION__, func_get_args());
227
-	}
228
-
229
-	/**
230
-	 * @inheritDoc
231
-	 */
232
-	public function getPermissions() {
233
-		return $this->__call(__FUNCTION__, func_get_args());
234
-	}
235
-
236
-	/**
237
-	 * @inheritDoc
238
-	 */
239
-	public function isReadable() {
240
-		return $this->__call(__FUNCTION__, func_get_args());
241
-	}
242
-
243
-	/**
244
-	 * @inheritDoc
245
-	 */
246
-	public function isUpdateable() {
247
-		return $this->__call(__FUNCTION__, func_get_args());
248
-	}
249
-
250
-	/**
251
-	 * @inheritDoc
252
-	 */
253
-	public function isDeletable() {
254
-		return $this->__call(__FUNCTION__, func_get_args());
255
-	}
256
-
257
-	/**
258
-	 * @inheritDoc
259
-	 */
260
-	public function isShareable() {
261
-		return $this->__call(__FUNCTION__, func_get_args());
262
-	}
263
-
264
-	/**
265
-	 * @inheritDoc
266
-	 */
267
-	public function getParent() {
268
-		return $this->__call(__FUNCTION__, func_get_args());
269
-	}
270
-
271
-	/**
272
-	 * @inheritDoc
273
-	 */
274
-	public function getName() {
275
-		return $this->__call(__FUNCTION__, func_get_args());
276
-	}
277
-
278
-	/**
279
-	 * @inheritDoc
280
-	 */
281
-	public function getUserFolder($userId) {
282
-		return $this->__call(__FUNCTION__, func_get_args());
283
-	}
284
-
285
-	/**
286
-	 * @inheritDoc
287
-	 */
288
-	public function getMimetype() {
289
-		return $this->__call(__FUNCTION__, func_get_args());
290
-	}
291
-
292
-	/**
293
-	 * @inheritDoc
294
-	 */
295
-	public function getMimePart() {
296
-		return $this->__call(__FUNCTION__, func_get_args());
297
-	}
298
-
299
-	/**
300
-	 * @inheritDoc
301
-	 */
302
-	public function isEncrypted() {
303
-		return $this->__call(__FUNCTION__, func_get_args());
304
-	}
305
-
306
-	/**
307
-	 * @inheritDoc
308
-	 */
309
-	public function getType() {
310
-		return $this->__call(__FUNCTION__, func_get_args());
311
-	}
312
-
313
-	/**
314
-	 * @inheritDoc
315
-	 */
316
-	public function isShared() {
317
-		return $this->__call(__FUNCTION__, func_get_args());
318
-	}
319
-
320
-	/**
321
-	 * @inheritDoc
322
-	 */
323
-	public function isMounted() {
324
-		return $this->__call(__FUNCTION__, func_get_args());
325
-	}
326
-
327
-	/**
328
-	 * @inheritDoc
329
-	 */
330
-	public function getMountPoint() {
331
-		return $this->__call(__FUNCTION__, func_get_args());
332
-	}
333
-
334
-	/**
335
-	 * @inheritDoc
336
-	 */
337
-	public function getOwner() {
338
-		return $this->__call(__FUNCTION__, func_get_args());
339
-	}
340
-
341
-	/**
342
-	 * @inheritDoc
343
-	 */
344
-	public function getChecksum() {
345
-		return $this->__call(__FUNCTION__, func_get_args());
346
-	}
347
-
348
-	/**
349
-	 * @inheritDoc
350
-	 */
351
-	public function getFullPath($path) {
352
-		return $this->__call(__FUNCTION__, func_get_args());
353
-	}
354
-
355
-	/**
356
-	 * @inheritDoc
357
-	 */
358
-	public function getRelativePath($path) {
359
-		return $this->__call(__FUNCTION__, func_get_args());
360
-	}
361
-
362
-	/**
363
-	 * @inheritDoc
364
-	 */
365
-	public function isSubNode($node) {
366
-		return $this->__call(__FUNCTION__, func_get_args());
367
-	}
368
-
369
-	/**
370
-	 * @inheritDoc
371
-	 */
372
-	public function getDirectoryListing() {
373
-		return $this->__call(__FUNCTION__, func_get_args());
374
-	}
375
-
376
-	/**
377
-	 * @inheritDoc
378
-	 */
379
-	public function nodeExists($path) {
380
-		return $this->__call(__FUNCTION__, func_get_args());
381
-	}
382
-
383
-	/**
384
-	 * @inheritDoc
385
-	 */
386
-	public function newFolder($path) {
387
-		return $this->__call(__FUNCTION__, func_get_args());
388
-	}
389
-
390
-	/**
391
-	 * @inheritDoc
392
-	 */
393
-	public function newFile($path) {
394
-		return $this->__call(__FUNCTION__, func_get_args());
395
-	}
396
-
397
-	/**
398
-	 * @inheritDoc
399
-	 */
400
-	public function search($query) {
401
-		return $this->__call(__FUNCTION__, func_get_args());
402
-	}
403
-
404
-	/**
405
-	 * @inheritDoc
406
-	 */
407
-	public function searchByMime($mimetype) {
408
-		return $this->__call(__FUNCTION__, func_get_args());
409
-	}
410
-
411
-	/**
412
-	 * @inheritDoc
413
-	 */
414
-	public function searchByTag($tag, $userId) {
415
-		return $this->__call(__FUNCTION__, func_get_args());
416
-	}
417
-
418
-	/**
419
-	 * @inheritDoc
420
-	 */
421
-	public function getById($id) {
422
-		return $this->__call(__FUNCTION__, func_get_args());
423
-	}
424
-
425
-	/**
426
-	 * @inheritDoc
427
-	 */
428
-	public function getFreeSpace() {
429
-		return $this->__call(__FUNCTION__, func_get_args());
430
-	}
431
-
432
-	/**
433
-	 * @inheritDoc
434
-	 */
435
-	public function isCreatable() {
436
-		return $this->__call(__FUNCTION__, func_get_args());
437
-	}
438
-
439
-	/**
440
-	 * @inheritDoc
441
-	 */
442
-	public function getNonExistingName($name) {
443
-		return $this->__call(__FUNCTION__, func_get_args());
444
-	}
445
-
446
-	/**
447
-	 * @inheritDoc
448
-	 */
449
-	public function move($targetPath) {
450
-		return $this->__call(__FUNCTION__, func_get_args());
451
-	}
452
-
453
-	/**
454
-	 * @inheritDoc
455
-	 */
456
-	public function lock($type) {
457
-		return $this->__call(__FUNCTION__, func_get_args());
458
-	}
459
-
460
-	/**
461
-	 * @inheritDoc
462
-	 */
463
-	public function changeLock($targetType) {
464
-		return $this->__call(__FUNCTION__, func_get_args());
465
-	}
466
-
467
-	/**
468
-	 * @inheritDoc
469
-	 */
470
-	public function unlock($type) {
471
-		return $this->__call(__FUNCTION__, func_get_args());
472
-	}
473
-
474
-	/**
475
-	 * @inheritDoc
476
-	 */
477
-	public function getRecent($limit, $offset = 0) {
478
-		return $this->__call(__FUNCTION__, func_get_args());
479
-	}
37
+    /** @var \Closure */
38
+    private $rootFolderClosure;
39
+
40
+    /** @var IRootFolder */
41
+    private $rootFolder;
42
+
43
+    /**
44
+     * LazyRoot constructor.
45
+     *
46
+     * @param \Closure $rootFolderClosure
47
+     */
48
+    public function __construct(\Closure $rootFolderClosure) {
49
+        $this->rootFolderClosure = $rootFolderClosure;
50
+    }
51
+
52
+    /**
53
+     * Magic method to first get the real rootFolder and then
54
+     * call $method with $args on it
55
+     *
56
+     * @param $method
57
+     * @param $args
58
+     * @return mixed
59
+     */
60
+    public function __call($method, $args) {
61
+        if ($this->rootFolder === null) {
62
+            $this->rootFolder = call_user_func($this->rootFolderClosure);
63
+        }
64
+
65
+        return call_user_func_array([$this->rootFolder, $method], $args);
66
+    }
67
+
68
+    /**
69
+     * @inheritDoc
70
+     */
71
+    public function getUser() {
72
+        return $this->__call(__FUNCTION__, func_get_args());
73
+    }
74
+
75
+    /**
76
+     * @inheritDoc
77
+     */
78
+    public function listen($scope, $method, callable $callback) {
79
+        $this->__call(__FUNCTION__, func_get_args());
80
+    }
81
+
82
+    /**
83
+     * @inheritDoc
84
+     */
85
+    public function removeListener($scope = null, $method = null, callable $callback = null) {
86
+        $this->__call(__FUNCTION__, func_get_args());
87
+    }
88
+
89
+    /**
90
+     * @inheritDoc
91
+     */
92
+    public function emit($scope, $method, $arguments = array()) {
93
+        $this->__call(__FUNCTION__, func_get_args());
94
+    }
95
+
96
+    /**
97
+     * @inheritDoc
98
+     */
99
+    public function mount($storage, $mountPoint, $arguments = array()) {
100
+        $this->__call(__FUNCTION__, func_get_args());
101
+    }
102
+
103
+    /**
104
+     * @inheritDoc
105
+     */
106
+    public function getMount($mountPoint) {
107
+        return $this->__call(__FUNCTION__, func_get_args());
108
+    }
109
+
110
+    /**
111
+     * @inheritDoc
112
+     */
113
+    public function getMountsIn($mountPoint) {
114
+        return $this->__call(__FUNCTION__, func_get_args());
115
+    }
116
+
117
+    /**
118
+     * @inheritDoc
119
+     */
120
+    public function getMountByStorageId($storageId) {
121
+        return $this->__call(__FUNCTION__, func_get_args());
122
+    }
123
+
124
+    /**
125
+     * @inheritDoc
126
+     */
127
+    public function getMountByNumericStorageId($numericId) {
128
+        return $this->__call(__FUNCTION__, func_get_args());
129
+    }
130
+
131
+    /**
132
+     * @inheritDoc
133
+     */
134
+    public function unMount($mount) {
135
+        $this->__call(__FUNCTION__, func_get_args());
136
+    }
137
+
138
+    /**
139
+     * @inheritDoc
140
+     */
141
+    public function get($path) {
142
+        return $this->__call(__FUNCTION__, func_get_args());
143
+    }
144
+
145
+    /**
146
+     * @inheritDoc
147
+     */
148
+    public function rename($targetPath) {
149
+        return $this->__call(__FUNCTION__, func_get_args());
150
+    }
151
+
152
+    /**
153
+     * @inheritDoc
154
+     */
155
+    public function delete() {
156
+        return $this->__call(__FUNCTION__, func_get_args());
157
+    }
158
+
159
+    /**
160
+     * @inheritDoc
161
+     */
162
+    public function copy($targetPath) {
163
+        return $this->__call(__FUNCTION__, func_get_args());
164
+    }
165
+
166
+    /**
167
+     * @inheritDoc
168
+     */
169
+    public function touch($mtime = null) {
170
+        $this->__call(__FUNCTION__, func_get_args());
171
+    }
172
+
173
+    /**
174
+     * @inheritDoc
175
+     */
176
+    public function getStorage() {
177
+        return $this->__call(__FUNCTION__, func_get_args());
178
+    }
179
+
180
+    /**
181
+     * @inheritDoc
182
+     */
183
+    public function getPath() {
184
+        return $this->__call(__FUNCTION__, func_get_args());
185
+    }
186
+
187
+    /**
188
+     * @inheritDoc
189
+     */
190
+    public function getInternalPath() {
191
+        return $this->__call(__FUNCTION__, func_get_args());
192
+    }
193
+
194
+    /**
195
+     * @inheritDoc
196
+     */
197
+    public function getId() {
198
+        return $this->__call(__FUNCTION__, func_get_args());
199
+    }
200
+
201
+    /**
202
+     * @inheritDoc
203
+     */
204
+    public function stat() {
205
+        return $this->__call(__FUNCTION__, func_get_args());
206
+    }
207
+
208
+    /**
209
+     * @inheritDoc
210
+     */
211
+    public function getMTime() {
212
+        return $this->__call(__FUNCTION__, func_get_args());
213
+    }
214
+
215
+    /**
216
+     * @inheritDoc
217
+     */
218
+    public function getSize() {
219
+        return $this->__call(__FUNCTION__, func_get_args());
220
+    }
221
+
222
+    /**
223
+     * @inheritDoc
224
+     */
225
+    public function getEtag() {
226
+        return $this->__call(__FUNCTION__, func_get_args());
227
+    }
228
+
229
+    /**
230
+     * @inheritDoc
231
+     */
232
+    public function getPermissions() {
233
+        return $this->__call(__FUNCTION__, func_get_args());
234
+    }
235
+
236
+    /**
237
+     * @inheritDoc
238
+     */
239
+    public function isReadable() {
240
+        return $this->__call(__FUNCTION__, func_get_args());
241
+    }
242
+
243
+    /**
244
+     * @inheritDoc
245
+     */
246
+    public function isUpdateable() {
247
+        return $this->__call(__FUNCTION__, func_get_args());
248
+    }
249
+
250
+    /**
251
+     * @inheritDoc
252
+     */
253
+    public function isDeletable() {
254
+        return $this->__call(__FUNCTION__, func_get_args());
255
+    }
256
+
257
+    /**
258
+     * @inheritDoc
259
+     */
260
+    public function isShareable() {
261
+        return $this->__call(__FUNCTION__, func_get_args());
262
+    }
263
+
264
+    /**
265
+     * @inheritDoc
266
+     */
267
+    public function getParent() {
268
+        return $this->__call(__FUNCTION__, func_get_args());
269
+    }
270
+
271
+    /**
272
+     * @inheritDoc
273
+     */
274
+    public function getName() {
275
+        return $this->__call(__FUNCTION__, func_get_args());
276
+    }
277
+
278
+    /**
279
+     * @inheritDoc
280
+     */
281
+    public function getUserFolder($userId) {
282
+        return $this->__call(__FUNCTION__, func_get_args());
283
+    }
284
+
285
+    /**
286
+     * @inheritDoc
287
+     */
288
+    public function getMimetype() {
289
+        return $this->__call(__FUNCTION__, func_get_args());
290
+    }
291
+
292
+    /**
293
+     * @inheritDoc
294
+     */
295
+    public function getMimePart() {
296
+        return $this->__call(__FUNCTION__, func_get_args());
297
+    }
298
+
299
+    /**
300
+     * @inheritDoc
301
+     */
302
+    public function isEncrypted() {
303
+        return $this->__call(__FUNCTION__, func_get_args());
304
+    }
305
+
306
+    /**
307
+     * @inheritDoc
308
+     */
309
+    public function getType() {
310
+        return $this->__call(__FUNCTION__, func_get_args());
311
+    }
312
+
313
+    /**
314
+     * @inheritDoc
315
+     */
316
+    public function isShared() {
317
+        return $this->__call(__FUNCTION__, func_get_args());
318
+    }
319
+
320
+    /**
321
+     * @inheritDoc
322
+     */
323
+    public function isMounted() {
324
+        return $this->__call(__FUNCTION__, func_get_args());
325
+    }
326
+
327
+    /**
328
+     * @inheritDoc
329
+     */
330
+    public function getMountPoint() {
331
+        return $this->__call(__FUNCTION__, func_get_args());
332
+    }
333
+
334
+    /**
335
+     * @inheritDoc
336
+     */
337
+    public function getOwner() {
338
+        return $this->__call(__FUNCTION__, func_get_args());
339
+    }
340
+
341
+    /**
342
+     * @inheritDoc
343
+     */
344
+    public function getChecksum() {
345
+        return $this->__call(__FUNCTION__, func_get_args());
346
+    }
347
+
348
+    /**
349
+     * @inheritDoc
350
+     */
351
+    public function getFullPath($path) {
352
+        return $this->__call(__FUNCTION__, func_get_args());
353
+    }
354
+
355
+    /**
356
+     * @inheritDoc
357
+     */
358
+    public function getRelativePath($path) {
359
+        return $this->__call(__FUNCTION__, func_get_args());
360
+    }
361
+
362
+    /**
363
+     * @inheritDoc
364
+     */
365
+    public function isSubNode($node) {
366
+        return $this->__call(__FUNCTION__, func_get_args());
367
+    }
368
+
369
+    /**
370
+     * @inheritDoc
371
+     */
372
+    public function getDirectoryListing() {
373
+        return $this->__call(__FUNCTION__, func_get_args());
374
+    }
375
+
376
+    /**
377
+     * @inheritDoc
378
+     */
379
+    public function nodeExists($path) {
380
+        return $this->__call(__FUNCTION__, func_get_args());
381
+    }
382
+
383
+    /**
384
+     * @inheritDoc
385
+     */
386
+    public function newFolder($path) {
387
+        return $this->__call(__FUNCTION__, func_get_args());
388
+    }
389
+
390
+    /**
391
+     * @inheritDoc
392
+     */
393
+    public function newFile($path) {
394
+        return $this->__call(__FUNCTION__, func_get_args());
395
+    }
396
+
397
+    /**
398
+     * @inheritDoc
399
+     */
400
+    public function search($query) {
401
+        return $this->__call(__FUNCTION__, func_get_args());
402
+    }
403
+
404
+    /**
405
+     * @inheritDoc
406
+     */
407
+    public function searchByMime($mimetype) {
408
+        return $this->__call(__FUNCTION__, func_get_args());
409
+    }
410
+
411
+    /**
412
+     * @inheritDoc
413
+     */
414
+    public function searchByTag($tag, $userId) {
415
+        return $this->__call(__FUNCTION__, func_get_args());
416
+    }
417
+
418
+    /**
419
+     * @inheritDoc
420
+     */
421
+    public function getById($id) {
422
+        return $this->__call(__FUNCTION__, func_get_args());
423
+    }
424
+
425
+    /**
426
+     * @inheritDoc
427
+     */
428
+    public function getFreeSpace() {
429
+        return $this->__call(__FUNCTION__, func_get_args());
430
+    }
431
+
432
+    /**
433
+     * @inheritDoc
434
+     */
435
+    public function isCreatable() {
436
+        return $this->__call(__FUNCTION__, func_get_args());
437
+    }
438
+
439
+    /**
440
+     * @inheritDoc
441
+     */
442
+    public function getNonExistingName($name) {
443
+        return $this->__call(__FUNCTION__, func_get_args());
444
+    }
445
+
446
+    /**
447
+     * @inheritDoc
448
+     */
449
+    public function move($targetPath) {
450
+        return $this->__call(__FUNCTION__, func_get_args());
451
+    }
452
+
453
+    /**
454
+     * @inheritDoc
455
+     */
456
+    public function lock($type) {
457
+        return $this->__call(__FUNCTION__, func_get_args());
458
+    }
459
+
460
+    /**
461
+     * @inheritDoc
462
+     */
463
+    public function changeLock($targetType) {
464
+        return $this->__call(__FUNCTION__, func_get_args());
465
+    }
466
+
467
+    /**
468
+     * @inheritDoc
469
+     */
470
+    public function unlock($type) {
471
+        return $this->__call(__FUNCTION__, func_get_args());
472
+    }
473
+
474
+    /**
475
+     * @inheritDoc
476
+     */
477
+    public function getRecent($limit, $offset = 0) {
478
+        return $this->__call(__FUNCTION__, func_get_args());
479
+    }
480 480
 }
Please login to merge, or discard this patch.
lib/private/Files/Mount/ObjectHomeMountProvider.php 1 patch
Indentation   +99 added lines, -99 removed lines patch added patch discarded remove patch
@@ -32,106 +32,106 @@
 block discarded – undo
32 32
  * Mount provider for object store home storages
33 33
  */
34 34
 class ObjectHomeMountProvider implements IHomeMountProvider {
35
-	/**
36
-	 * @var IConfig
37
-	 */
38
-	private $config;
39
-
40
-	/**
41
-	 * ObjectStoreHomeMountProvider constructor.
42
-	 *
43
-	 * @param IConfig $config
44
-	 */
45
-	public function __construct(IConfig $config) {
46
-		$this->config = $config;
47
-	}
48
-
49
-	/**
50
-	 * Get the cache mount for a user
51
-	 *
52
-	 * @param IUser $user
53
-	 * @param IStorageFactory $loader
54
-	 * @return \OCP\Files\Mount\IMountPoint
55
-	 */
56
-	public function getHomeMountForUser(IUser $user, IStorageFactory $loader) {
57
-
58
-		$config = $this->getMultiBucketObjectStoreConfig($user);
59
-		if ($config === null) {
60
-			$config = $this->getSingleBucketObjectStoreConfig($user);
61
-		}
62
-
63
-		if ($config === null) {
64
-			return null;
65
-		}
66
-
67
-		return new MountPoint('\OC\Files\ObjectStore\HomeObjectStoreStorage', '/' . $user->getUID(), $config['arguments'], $loader);
68
-	}
69
-
70
-	/**
71
-	 * @param IUser $user
72
-	 * @return array|null
73
-	 */
74
-	private function getSingleBucketObjectStoreConfig(IUser $user) {
75
-		$config = $this->config->getSystemValue('objectstore');
76
-		if (!is_array($config)) {
77
-			return null;
78
-		}
79
-
80
-		// sanity checks
81
-		if (empty($config['class'])) {
82
-			\OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
83
-		}
84
-		if (!isset($config['arguments'])) {
85
-			$config['arguments'] = [];
86
-		}
87
-		$config['arguments']['user'] = $user;
88
-		// instantiate object store implementation
89
-		$config['arguments']['objectstore'] = new $config['class']($config['arguments']);
90
-
91
-		return $config;
92
-	}
93
-
94
-	/**
95
-	 * @param IUser $user
96
-	 * @return array|null
97
-	 */
98
-	private function getMultiBucketObjectStoreConfig(IUser $user) {
99
-		$config = $this->config->getSystemValue('objectstore_multibucket');
100
-		if (!is_array($config)) {
101
-			return null;
102
-		}
103
-
104
-		// sanity checks
105
-		if (empty($config['class'])) {
106
-			\OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
107
-		}
108
-		if (!isset($config['arguments'])) {
109
-			$config['arguments'] = [];
110
-		}
111
-		$config['arguments']['user'] = $user;
112
-
113
-		$bucket = $this->config->getUserValue($user->getUID(), 'homeobjectstore', 'bucket', null);
114
-
115
-		if ($bucket === null) {
116
-			/*
35
+    /**
36
+     * @var IConfig
37
+     */
38
+    private $config;
39
+
40
+    /**
41
+     * ObjectStoreHomeMountProvider constructor.
42
+     *
43
+     * @param IConfig $config
44
+     */
45
+    public function __construct(IConfig $config) {
46
+        $this->config = $config;
47
+    }
48
+
49
+    /**
50
+     * Get the cache mount for a user
51
+     *
52
+     * @param IUser $user
53
+     * @param IStorageFactory $loader
54
+     * @return \OCP\Files\Mount\IMountPoint
55
+     */
56
+    public function getHomeMountForUser(IUser $user, IStorageFactory $loader) {
57
+
58
+        $config = $this->getMultiBucketObjectStoreConfig($user);
59
+        if ($config === null) {
60
+            $config = $this->getSingleBucketObjectStoreConfig($user);
61
+        }
62
+
63
+        if ($config === null) {
64
+            return null;
65
+        }
66
+
67
+        return new MountPoint('\OC\Files\ObjectStore\HomeObjectStoreStorage', '/' . $user->getUID(), $config['arguments'], $loader);
68
+    }
69
+
70
+    /**
71
+     * @param IUser $user
72
+     * @return array|null
73
+     */
74
+    private function getSingleBucketObjectStoreConfig(IUser $user) {
75
+        $config = $this->config->getSystemValue('objectstore');
76
+        if (!is_array($config)) {
77
+            return null;
78
+        }
79
+
80
+        // sanity checks
81
+        if (empty($config['class'])) {
82
+            \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
83
+        }
84
+        if (!isset($config['arguments'])) {
85
+            $config['arguments'] = [];
86
+        }
87
+        $config['arguments']['user'] = $user;
88
+        // instantiate object store implementation
89
+        $config['arguments']['objectstore'] = new $config['class']($config['arguments']);
90
+
91
+        return $config;
92
+    }
93
+
94
+    /**
95
+     * @param IUser $user
96
+     * @return array|null
97
+     */
98
+    private function getMultiBucketObjectStoreConfig(IUser $user) {
99
+        $config = $this->config->getSystemValue('objectstore_multibucket');
100
+        if (!is_array($config)) {
101
+            return null;
102
+        }
103
+
104
+        // sanity checks
105
+        if (empty($config['class'])) {
106
+            \OCP\Util::writeLog('files', 'No class given for objectstore', \OCP\Util::ERROR);
107
+        }
108
+        if (!isset($config['arguments'])) {
109
+            $config['arguments'] = [];
110
+        }
111
+        $config['arguments']['user'] = $user;
112
+
113
+        $bucket = $this->config->getUserValue($user->getUID(), 'homeobjectstore', 'bucket', null);
114
+
115
+        if ($bucket === null) {
116
+            /*
117 117
 			 * Use any provided bucket argument as prefix
118 118
 			 * and add the mapping from username => bucket
119 119
 			 */
120
-			if (!isset($config['arguments']['bucket'])) {
121
-				$config['arguments']['bucket'] = '';
122
-			}
123
-			$mapper = new \OC\Files\ObjectStore\Mapper($user);
124
-			$numBuckets = isset($config['arguments']['num_buckets']) ? $config['arguments']['num_buckets'] : 64;
125
-			$config['arguments']['bucket'] .= $mapper->getBucket($numBuckets);
126
-
127
-			$this->config->setUserValue($user->getUID(), 'homeobjectstore', 'bucket', $config['arguments']['bucket']);
128
-		} else {
129
-			$config['arguments']['bucket'] = $bucket;
130
-		}
131
-
132
-		// instantiate object store implementation
133
-		$config['arguments']['objectstore'] = new $config['class']($config['arguments']);
134
-
135
-		return $config;
136
-	}
120
+            if (!isset($config['arguments']['bucket'])) {
121
+                $config['arguments']['bucket'] = '';
122
+            }
123
+            $mapper = new \OC\Files\ObjectStore\Mapper($user);
124
+            $numBuckets = isset($config['arguments']['num_buckets']) ? $config['arguments']['num_buckets'] : 64;
125
+            $config['arguments']['bucket'] .= $mapper->getBucket($numBuckets);
126
+
127
+            $this->config->setUserValue($user->getUID(), 'homeobjectstore', 'bucket', $config['arguments']['bucket']);
128
+        } else {
129
+            $config['arguments']['bucket'] = $bucket;
130
+        }
131
+
132
+        // instantiate object store implementation
133
+        $config['arguments']['objectstore'] = new $config['class']($config['arguments']);
134
+
135
+        return $config;
136
+    }
137 137
 }
Please login to merge, or discard this patch.
lib/private/Files/Mount/LocalHomeMountProvider.php 1 patch
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -30,15 +30,15 @@
 block discarded – undo
30 30
  * Mount provider for regular posix home folders
31 31
  */
32 32
 class LocalHomeMountProvider implements IHomeMountProvider {
33
-	/**
34
-	 * Get the cache mount for a user
35
-	 *
36
-	 * @param IUser $user
37
-	 * @param IStorageFactory $loader
38
-	 * @return \OCP\Files\Mount\IMountPoint[]
39
-	 */
40
-	public function getHomeMountForUser(IUser $user, IStorageFactory $loader) {
41
-		$arguments = ['user' => $user];
42
-		return new MountPoint('\OC\Files\Storage\Home', '/' . $user->getUID(), $arguments, $loader);
43
-	}
33
+    /**
34
+     * Get the cache mount for a user
35
+     *
36
+     * @param IUser $user
37
+     * @param IStorageFactory $loader
38
+     * @return \OCP\Files\Mount\IMountPoint[]
39
+     */
40
+    public function getHomeMountForUser(IUser $user, IStorageFactory $loader) {
41
+        $arguments = ['user' => $user];
42
+        return new MountPoint('\OC\Files\Storage\Home', '/' . $user->getUID(), $arguments, $loader);
43
+    }
44 44
 }
Please login to merge, or discard this patch.
lib/private/Files/Mount/MoveableMount.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -27,19 +27,19 @@
 block discarded – undo
27 27
  * Defines the mount point to be (re)moved by the user
28 28
  */
29 29
 interface MoveableMount {
30
-	/**
31
-	 * Move the mount point to $target
32
-	 *
33
-	 * @param string $target the target mount point
34
-	 * @return bool
35
-	 */
36
-	public function moveMount($target);
30
+    /**
31
+     * Move the mount point to $target
32
+     *
33
+     * @param string $target the target mount point
34
+     * @return bool
35
+     */
36
+    public function moveMount($target);
37 37
 
38
-	/**
39
-	 * Remove the mount points
40
-	 *
41
-	 * @return mixed
42
-	 * @return bool
43
-	 */
44
-	public function removeMount();
38
+    /**
39
+     * Remove the mount points
40
+     *
41
+     * @return mixed
42
+     * @return bool
43
+     */
44
+    public function removeMount();
45 45
 }
Please login to merge, or discard this patch.