From 710d017eec7a97c1e58ef0cd4556555cf84b9b8f Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 6 Jun 2014 13:50:41 +0200 Subject: Added more columns to ext storage list Now using system mount and personal mount calls to get the relevant mount points including backend information. --- apps/files_external/lib/api.php | 61 +++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 21 deletions(-) (limited to 'apps/files_external/lib/api.php') diff --git a/apps/files_external/lib/api.php b/apps/files_external/lib/api.php index d94dbcffc8f..51c48427aa3 100644 --- a/apps/files_external/lib/api.php +++ b/apps/files_external/lib/api.php @@ -24,6 +24,39 @@ namespace OCA\Files\External; class Api { + /** + * Formats the given mount config to a mount entry. + * + * @param bool $isSystemMount true for system mount, false + * for personal mount + * + * @return array entry + */ + private static function formatMount($mountConfig, $isSystemMount = false) { + // split user name from mount point + $path = dirname($mountConfig['mountpoint']); + if ($path === '.') { + $path = ''; + } + + $permissions = \OCP\PERMISSION_READ; + // personal mounts can be deleted + if (!$isSystemMount) { + $permissions |= \OCP\PERMISSION_DELETE; + } + + // TODO: add storageType, might need to use another OC_Mount_Config method + $entry = array( + 'name' => basename($mountConfig['mountpoint']), + 'path' => $path, + 'type' => 'dir', + 'backend' => $mountConfig['backend'], + 'scope' => ( $isSystemMount ? 'system' : 'personal' ), + 'permissions' => $permissions + ); + return $entry; + } + /** * Returns the mount points visible for this user. * @@ -33,30 +66,16 @@ class Api { public static function getUserMounts($params) { $entries = array(); $user = \OC_User::getUser(); - $mounts = \OC_Mount_Config::getAbsoluteMountPoints($user); - foreach ($mounts as $mountPoint => $config) { - // split user name from mount point - $parts = explode('/', ltrim($mountPoint, '/')); - array_shift($parts); // use name - array_shift($parts); // files - $mountPoint = implode('/', $parts); + $personalMounts = \OC_Mount_Config::getPersonalMountPoints(); + $systemMounts = \OC_Mount_Config::getSystemMountPoints(); - $path = dirname($mountPoint); - if ($path === '.') { - $path = ''; - } - - // TODO: give delete permissions if mount type is personal - $permissions = \OCP\PERMISSION_READ; + foreach ($systemMounts as $mountConfig) { + $entries[] = self::formatMount($mountConfig, true); + } - // TODO: add storageType, might need to use another OC_Mount_Config method - $entries[] = array( - 'name' => basename($mountPoint), - 'path' => $path, - 'type' => 'dir', - 'permissions' => $permissions - ); + foreach ($personalMounts as $mountConfig) { + $entries[] = self::formatMount($mountConfig, false); } return new \OC_OCS_Result($entries); -- cgit v1.2.3