Add getUserFolder to IRootFolder

* untangle DI of user specific folders
* allows to autodetect the dependency
This commit is contained in:
Morris Jobke 2015-06-16 16:02:30 +02:00
parent f70791653c
commit 3e97ca3b96
5 changed files with 42 additions and 24 deletions

View File

@ -323,4 +323,33 @@ class Root extends Folder implements IRootFolder {
public function getName() {
return '';
}
/**
* Returns a view to user's files folder
*
* @param String $userId user ID
* @return \OCP\Files\Folder
*/
public function getUserFolder($userId) {
\OC\Files\Filesystem::initMountPoints($userId);
$dir = '/' . $userId;
$folder = null;
if (!$this->nodeExists($dir)) {
$folder = $this->newFolder($dir);
} else {
$folder = $this->get($dir);
}
$dir = '/files';
if (!$folder->nodeExists($dir)) {
$folder = $folder->newFolder($dir);
\OC_Util::copySkeleton($userId, $folder);
} else {
$folder = $folder->get($dir);
}
return $folder;
}
}

View File

@ -535,29 +535,9 @@ class Server extends SimpleContainer implements IServerContainer {
return null;
}
$userId = $user->getUID();
} else {
$user = $this->getUserManager()->get($userId);
}
\OC\Files\Filesystem::initMountPoints($userId);
$dir = '/' . $userId;
$root = $this->getRootFolder();
$folder = null;
if (!$root->nodeExists($dir)) {
$folder = $root->newFolder($dir);
} else {
$folder = $root->get($dir);
}
$dir = '/files';
if (!$folder->nodeExists($dir)) {
$folder = $folder->newFolder($dir);
\OC_Util::copySkeleton($user, $folder);
} else {
$folder = $folder->get($dir);
}
return $folder;
return $root->getUserFolder($userId);
}
/**

View File

@ -267,17 +267,17 @@ class OC_Util {
/**
* copies the skeleton to the users /files
*
* @param \OC\User\User $user
* @param String $userId
* @param \OCP\Files\Folder $userDirectory
*/
public static function copySkeleton(\OC\User\User $user, \OCP\Files\Folder $userDirectory) {
public static function copySkeleton($userId, \OCP\Files\Folder $userDirectory) {
$skeletonDirectory = \OCP\Config::getSystemValue('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton');
if (!empty($skeletonDirectory)) {
\OCP\Util::writeLog(
'files_skeleton',
'copying skeleton for '.$user->getUID().' from '.$skeletonDirectory.' to '.$userDirectory->getFullPath('/'),
'copying skeleton for '.$userId.' from '.$skeletonDirectory.' to '.$userDirectory->getFullPath('/'),
\OCP\Util::DEBUG
);
self::copyr($skeletonDirectory, $userDirectory);

View File

@ -33,5 +33,13 @@ use OC\Hooks\Emitter;
*/
interface IRootFolder extends Folder, Emitter {
/**
* Returns a view to user's files folder
*
* @param String $userId user ID
* @return \OCP\Files\Folder
* @since 8.2.0
*/
public function getUserFolder($userId);
}

View File

@ -99,6 +99,7 @@ interface IServerContainer {
* @param string $userId user ID
* @return \OCP\Files\Folder
* @since 6.0.0 - parameter $userId was added in 8.0.0
* @see getUserFolder in \OCP\Files\IRootFolder
*/
public function getUserFolder($userId = null);