impl()->createDirectory($name); // Add a cleanup job $this->cleanupService->addJob($name); } public function getChild($name): UploadFolder { return new UploadFolder($this->impl()->getChild($name), $this->cleanupService, $this->getStorage()); } public function getChildren(): array { return array_map(function ($node) { return new UploadFolder($node, $this->cleanupService, $this->getStorage()); }, $this->impl()->getChildren()); } public function childExists($name): bool { return !is_null($this->getChild($name)); } public function delete() { $this->impl()->delete(); } public function getName() { [,$name] = \Sabre\Uri\split($this->principalInfo['uri']); return $name; } public function setName($name) { throw new Forbidden('Permission denied to rename this folder'); } public function getLastModified() { return $this->impl()->getLastModified(); } /** * @return Directory */ private function impl() { $view = $this->getView(); $rootInfo = $view->getFileInfo(''); return new Directory($view, $rootInfo); } private function getView() { $rootView = new View(); $user = \OC::$server->getUserSession()->getUser(); Filesystem::initMountPoints($user->getUID()); if (!$rootView->file_exists('/' . $user->getUID() . '/uploads')) { $rootView->mkdir('/' . $user->getUID() . '/uploads'); } return new View('/' . $user->getUID() . '/uploads'); } private function getStorage() { $view = $this->getView(); $storage = $view->getFileInfo('')->getStorage(); return $storage; } }