summaryrefslogtreecommitdiffstats
path: root/apps
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
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')
-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
-rw-r--r--apps/files_sharing/lib/external/manager.php6
-rw-r--r--apps/files_sharing/lib/external/mount.php5
-rw-r--r--apps/files_sharing/lib/sharedmount.php4
7 files changed, 56 insertions, 25 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
*
diff --git a/apps/files_sharing/lib/external/manager.php b/apps/files_sharing/lib/external/manager.php
index 3b5483a5108..b52e1a5044e 100644
--- a/apps/files_sharing/lib/external/manager.php
+++ b/apps/files_sharing/lib/external/manager.php
@@ -24,7 +24,7 @@ class Manager {
private $mountManager;
/**
- * @var \OC\Files\Storage\Loader
+ * @var \OC\Files\Storage\StorageFactory
*/
private $storageLoader;
@@ -37,10 +37,10 @@ class Manager {
* @param \OCP\IDBConnection $connection
* @param \OC\Files\Mount\Manager $mountManager
* @param \OC\User\Session $userSession
- * @param \OC\Files\Storage\Loader $storageLoader
+ * @param \OC\Files\Storage\StorageFactory $storageLoader
*/
public function __construct(\OCP\IDBConnection $connection, \OC\Files\Mount\Manager $mountManager,
- \OC\Files\Storage\Loader $storageLoader, \OC\User\Session $userSession) {
+ \OC\Files\Storage\StorageFactory $storageLoader, \OC\User\Session $userSession) {
$this->connection = $connection;
$this->mountManager = $mountManager;
$this->userSession = $userSession;
diff --git a/apps/files_sharing/lib/external/mount.php b/apps/files_sharing/lib/external/mount.php
index e564dded69a..6fd9882cb2a 100644
--- a/apps/files_sharing/lib/external/mount.php
+++ b/apps/files_sharing/lib/external/mount.php
@@ -8,9 +8,10 @@
namespace OCA\Files_Sharing\External;
+use OC\Files\Mount\MountPoint;
use OC\Files\Mount\MoveableMount;
-class Mount extends \OC\Files\Mount\Mount implements MoveableMount {
+class Mount extends MountPoint implements MoveableMount {
/**
* @var \OCA\Files_Sharing\External\Manager
@@ -22,7 +23,7 @@ class Mount extends \OC\Files\Mount\Mount implements MoveableMount {
* @param string $mountpoint
* @param array $options
* @param \OCA\Files_Sharing\External\Manager $manager
- * @param \OC\Files\Storage\Loader $loader
+ * @param \OC\Files\Storage\StorageFactory $loader
*/
public function __construct($storage, $mountpoint, $options, $manager, $loader = null) {
parent::__construct($storage, $mountpoint, $options, $loader);
diff --git a/apps/files_sharing/lib/sharedmount.php b/apps/files_sharing/lib/sharedmount.php
index a93ecfb3b1b..d16dbf89ccf 100644
--- a/apps/files_sharing/lib/sharedmount.php
+++ b/apps/files_sharing/lib/sharedmount.php
@@ -8,13 +8,13 @@
namespace OCA\Files_Sharing;
-use OC\Files\Mount\Mount;
+use OC\Files\Mount\MountPoint;
use OC\Files\Mount\MoveableMount;
/**
* Shared mount points can be moved by the user
*/
-class SharedMount extends Mount implements MoveableMount {
+class SharedMount extends MountPoint implements MoveableMount {
/**
* @var \OC\Files\Storage\Shared $storage
*/