diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-17 10:36:56 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-25 14:59:59 +0200 |
commit | 3a716ae91c20f48737ad5f9192b20967252e74ec (patch) | |
tree | f5c59dcb7d51cca8dc35f28bf6f5ca346a9506b7 /apps/files_sharing/lib/MountProvider.php | |
parent | 5001036fd49cecdf1dcda1b4aed0be1b24d18c24 (diff) | |
download | nextcloud-server-3a716ae91c20f48737ad5f9192b20967252e74ec.tar.gz nextcloud-server-3a716ae91c20f48737ad5f9192b20967252e74ec.zip |
Move lib/ to PSR-4
Diffstat (limited to 'apps/files_sharing/lib/MountProvider.php')
-rw-r--r-- | apps/files_sharing/lib/MountProvider.php | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php new file mode 100644 index 00000000000..8e133951293 --- /dev/null +++ b/apps/files_sharing/lib/MountProvider.php @@ -0,0 +1,83 @@ +<?php +/** + * @author Morris Jobke <hey@morrisjobke.de> + * @author Robin Appelman <icewind@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_Sharing; + +use OCP\Files\Config\IMountProvider; +use OCP\Files\Storage\IStorageFactory; +use OCP\IConfig; +use OCP\IUser; +use OCP\Share\IManager; + +class MountProvider implements IMountProvider { + /** + * @var \OCP\IConfig + */ + protected $config; + + /** + * @var IManager + */ + protected $shareManager; + + /** + * @param \OCP\IConfig $config + * @param IManager $shareManager + */ + public function __construct(IConfig $config, IManager $shareManager) { + $this->config = $config; + $this->shareManager = $shareManager; + } + + + /** + * Get all mountpoints applicable for the user and check for shares where we need to update the etags + * + * @param \OCP\IUser $user + * @param \OCP\Files\Storage\IStorageFactory $storageFactory + * @return \OCP\Files\Mount\IMountPoint[] + */ + public function getMountsForUser(IUser $user, IStorageFactory $storageFactory) { + $shares = $this->shareManager->getSharedWith($user->getUID(), \OCP\Share::SHARE_TYPE_USER, null, -1); + $shares = array_merge($shares, $this->shareManager->getSharedWith($user->getUID(), \OCP\Share::SHARE_TYPE_GROUP, null, -1)); + $shares = array_filter($shares, function (\OCP\Share\IShare $share) { + return $share->getPermissions() > 0; + }); + + $mounts = []; + foreach ($shares as $share) { + + $mounts[] = new SharedMount( + '\OC\Files\Storage\Shared', + $mounts, + [ + 'user' => $user->getUID(), + 'newShare' => $share, + ], + $storageFactory + ); + } + + // array_filter removes the null values from the array + return array_filter($mounts); + } +} |