Use the mount config api for files_external

This commit is contained in:
Robin Appelman 2014-12-03 14:14:31 +01:00
parent f4701d7721
commit a369d78124
4 changed files with 48 additions and 18 deletions

View File

@ -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);

View File

@ -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) {

View File

@ -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;
}
}

View File

@ -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
*