summaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2014-12-08 22:57:33 +0100
committerLukas Reschke <lukas@owncloud.com>2014-12-08 22:57:33 +0100
commit25a87d4058b3ec7f21649940949b6fc0237968dc (patch)
treeb21a76a5272e5a3599c28b787541fed98ddc4638 /apps/files_external
parentf219f5a7a62fe88b364b9a5f50e9730eba1ee84c (diff)
parenta369d7812463c2afddf1640c42643de6312ab9ba (diff)
downloadnextcloud-server-25a87d4058b3ec7f21649940949b6fc0237968dc.tar.gz
nextcloud-server-25a87d4058b3ec7f21649940949b6fc0237968dc.zip
Merge pull request #12577 from owncloud/public-mount-api
Add a public api for apps to add mounts
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/appinfo/app.php2
-rw-r--r--apps/files_external/lib/config.php16
-rw-r--r--apps/files_external/lib/config/configadapter.php44
-rw-r--r--apps/files_external/lib/personalmount.php4
4 files changed, 48 insertions, 18 deletions
diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php
index ea14f7adbcf..707563096f8 100644
--- a/apps/files_external/appinfo/app.php
+++ b/apps/files_external/appinfo/app.php
@@ -177,3 +177,5 @@ OC_Mount_Config::registerBackend('\OC\Files\Storage\SFTP', array(
'password' => '*'.$l->t('Password'),
'root' => '&'.$l->t('Root'))));
+$mountProvider = new \OCA\Files_External\Config\ConfigAdapter();
+\OC::$server->getMountProviderCollection()->registerProvider($mountProvider);
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 898dc0c8543..b4ab8b70f33 100644
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -103,22 +103,6 @@ class OC_Mount_Config {
* @param array $data
*/
public static function initMountPointsHook($data) {
- $mountPoints = self::getAbsoluteMountPoints($data['user']);
- $loader = \OC\Files\Filesystem::getLoader();
- $manager = \OC\Files\Filesystem::getMountManager();
- foreach ($mountPoints as $mountPoint => $options) {
- if (isset($options['options']['objectstore'])) {
- $objectClass = $options['options']['objectstore']['class'];
- $options['options']['objectstore'] = new $objectClass($options['options']['objectstore']);
- }
- if (isset($options['personal']) && $options['personal']) {
- $mount = new \OCA\Files_External\PersonalMount($options['class'], $mountPoint, $options['options'], $loader);
- } else{
- $mount = new \OC\Files\Mount\Mount($options['class'], $mountPoint, $options['options'], $loader);
- }
- $manager->addMount($mount);
- }
-
if ($data['user']) {
$user = \OC::$server->getUserManager()->get($data['user']);
if (!$user) {
diff --git a/apps/files_external/lib/config/configadapter.php b/apps/files_external/lib/config/configadapter.php
new file mode 100644
index 00000000000..6294e27a774
--- /dev/null
+++ b/apps/files_external/lib/config/configadapter.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_External\Config;
+
+use OC\Files\Mount\MountPoint;
+use OCP\Files\Storage\IStorageFactory;
+use OCA\Files_External\PersonalMount;
+use OCP\Files\Config\IMountProvider;
+use OCP\IUser;
+
+/**
+ * Make the old files_external config work with the new public mount config api
+ */
+class ConfigAdapter implements IMountProvider {
+ /**
+ * Get all mountpoints applicable for the user
+ *
+ * @param \OCP\IUser $user
+ * @param \OCP\Files\Storage\IStorageFactory $loader
+ * @return \OCP\Files\Mount\IMountPoint[]
+ */
+ public function getMountsForUser(IUser $user, IStorageFactory $loader) {
+ $mountPoints = \OC_Mount_Config::getAbsoluteMountPoints($user->getUID());
+ $mounts = array();
+ foreach ($mountPoints as $mountPoint => $options) {
+ if (isset($options['options']['objectstore'])) {
+ $objectClass = $options['options']['objectstore']['class'];
+ $options['options']['objectstore'] = new $objectClass($options['options']['objectstore']);
+ }
+ if (isset($options['personal']) && $options['personal']) {
+ $mounts[] = new PersonalMount($options['class'], $mountPoint, $options['options'], $loader);
+ } else {
+ $mounts[] = new MountPoint($options['class'], $mountPoint, $options['options'], $loader);
+ }
+ }
+ return $mounts;
+ }
+}
diff --git a/apps/files_external/lib/personalmount.php b/apps/files_external/lib/personalmount.php
index 708128d644a..0c741179139 100644
--- a/apps/files_external/lib/personalmount.php
+++ b/apps/files_external/lib/personalmount.php
@@ -8,13 +8,13 @@
namespace OCA\Files_External;
-use OC\Files\Mount\Mount;
+use OC\Files\Mount\MountPoint;
use OC\Files\Mount\MoveableMount;
/**
* Person mount points can be moved by the user
*/
-class PersonalMount extends Mount implements MoveableMount {
+class PersonalMount extends MountPoint implements MoveableMount {
/**
* Move the mount point to $target
*