diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-13 11:56:47 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-24 08:41:22 +0200 |
commit | f14dff680d5e1e0fe10065ed25c524d9b5078cae (patch) | |
tree | f86d6466629f4d0f5d1a6de7fcd111ca27d3f52f /apps/files_external/lib/Lib/Api.php | |
parent | 4576891f10aa41cc146dc6ed421384269eca283a (diff) | |
download | nextcloud-server-f14dff680d5e1e0fe10065ed25c524d9b5078cae.tar.gz nextcloud-server-f14dff680d5e1e0fe10065ed25c524d9b5078cae.zip |
Move remaining classes to PSR-4
Diffstat (limited to 'apps/files_external/lib/Lib/Api.php')
-rw-r--r-- | apps/files_external/lib/Lib/Api.php | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/apps/files_external/lib/Lib/Api.php b/apps/files_external/lib/Lib/Api.php new file mode 100644 index 00000000000..589317dcf98 --- /dev/null +++ b/apps/files_external/lib/Lib/Api.php @@ -0,0 +1,87 @@ +<?php +/** + * @author Jesús Macias <jmacias@solidgear.es> + * @author Joas Schilling <nickvergessen@owncloud.com> + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin McCorkell <robin@mccorkell.me.uk> + * @author Vincent Petry <pvince81@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\Files_External\Lib; + +class Api { + + /** + * Formats the given mount config to a mount entry. + * + * @param string $mountPoint mount point name, relative to the data dir + * @param array $mountConfig mount config to format + * + * @return array entry + */ + private static function formatMount($mountPoint, $mountConfig) { + // strip "/$user/files" from mount point + $mountPoint = explode('/', trim($mountPoint, '/'), 3); + $mountPoint = $mountPoint[2]; + + // split path from mount point + $path = dirname($mountPoint); + if ($path === '.') { + $path = ''; + } + + $isSystemMount = !$mountConfig['personal']; + + $permissions = \OCP\Constants::PERMISSION_READ; + // personal mounts can be deleted + if (!$isSystemMount) { + $permissions |= \OCP\Constants::PERMISSION_DELETE; + } + + $entry = array( + 'name' => basename($mountPoint), + 'path' => $path, + 'type' => 'dir', + 'backend' => $mountConfig['backend'], + 'scope' => ( $isSystemMount ? 'system' : 'personal' ), + 'permissions' => $permissions, + 'id' => $mountConfig['id'], + 'class' => $mountConfig['class'] + ); + return $entry; + } + + /** + * Returns the mount points visible for this user. + * + * @param array $params + * @return \OC_OCS_Result share information + */ + public static function getUserMounts($params) { + $entries = array(); + $user = \OC::$server->getUserSession()->getUser()->getUID(); + + $mounts = \OC_Mount_Config::getAbsoluteMountPoints($user); + foreach($mounts as $mountPoint => $mount) { + $entries[] = self::formatMount($mountPoint, $mount); + } + + return new \OC_OCS_Result($entries); + } +} |