Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/lib')
-rw-r--r--apps/files_external/lib/Config/ConfigAdapter.php10
-rw-r--r--apps/files_external/lib/Migration/StorageMigrator.php135
-rw-r--r--apps/files_external/lib/MountConfig.php24
-rw-r--r--apps/files_external/lib/Service/StoragesService.php16
-rw-r--r--apps/files_external/lib/Service/UserGlobalStoragesService.php7
-rw-r--r--apps/files_external/lib/Service/UserLegacyStoragesService.php56
-rw-r--r--apps/files_external/lib/Service/UserStoragesService.php7
7 files changed, 26 insertions, 229 deletions
diff --git a/apps/files_external/lib/Config/ConfigAdapter.php b/apps/files_external/lib/Config/ConfigAdapter.php
index fe9beceeb36..57faf91fcdc 100644
--- a/apps/files_external/lib/Config/ConfigAdapter.php
+++ b/apps/files_external/lib/Config/ConfigAdapter.php
@@ -33,7 +33,6 @@ use OC\Files\Storage\FailedStorage;
use OC\Files\Storage\Wrapper\Availability;
use OCA\Files_External\Lib\PersonalMount;
use OCA\Files_External\Lib\StorageConfig;
-use OCA\Files_External\Migration\StorageMigrator;
use OCA\Files_External\Service\UserGlobalStoragesService;
use OCA\Files_External\Service\UserStoragesService;
use OCP\Files\Config\IMountProvider;
@@ -52,22 +51,17 @@ class ConfigAdapter implements IMountProvider {
/** @var UserGlobalStoragesService */
private $userGlobalStoragesService;
- /** @var StorageMigrator */
- private $migrator;
/**
* @param UserStoragesService $userStoragesService
* @param UserGlobalStoragesService $userGlobalStoragesService
- * @param StorageMigrator $migrator
*/
public function __construct(
UserStoragesService $userStoragesService,
- UserGlobalStoragesService $userGlobalStoragesService,
- StorageMigrator $migrator
+ UserGlobalStoragesService $userGlobalStoragesService
) {
$this->userStoragesService = $userStoragesService;
$this->userGlobalStoragesService = $userGlobalStoragesService;
- $this->migrator = $migrator;
}
/**
@@ -120,8 +114,6 @@ class ConfigAdapter implements IMountProvider {
* @return \OCP\Files\Mount\IMountPoint[]
*/
public function getMountsForUser(IUser $user, IStorageFactory $loader) {
- $this->migrator->migrateUser($user);
-
$this->userStoragesService->setUser($user);
$this->userGlobalStoragesService->setUser($user);
diff --git a/apps/files_external/lib/Migration/StorageMigrator.php b/apps/files_external/lib/Migration/StorageMigrator.php
deleted file mode 100644
index 05a39865797..00000000000
--- a/apps/files_external/lib/Migration/StorageMigrator.php
+++ /dev/null
@@ -1,135 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Joas Schilling <coding@schilljs.com>
- * @author Robin Appelman <robin@icewind.nl>
- * @author Vincent Petry <vincent@nextcloud.com>
- *
- * @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\Migration;
-
-use OCA\Files_External\Service\BackendService;
-use OCA\Files_External\Service\DBConfigService;
-use OCA\Files_External\Service\LegacyStoragesService;
-use OCA\Files_External\Service\StoragesService;
-use OCA\Files_External\Service\UserLegacyStoragesService;
-use OCA\Files_External\Service\UserStoragesService;
-use OCP\Files\Config\IUserMountCache;
-use OCP\IConfig;
-use OCP\IDBConnection;
-use OCP\ILogger;
-use OCP\IUser;
-
-/**
- * Migrate mount config from mount.json to the database
- */
-class StorageMigrator {
- /**
- * @var BackendService
- */
- private $backendService;
-
- /**
- * @var DBConfigService
- */
- private $dbConfig;
-
- /**
- * @var IConfig
- */
- private $config;
-
- /**
- * @var IDBConnection
- */
- private $connection;
-
- /**
- * @var ILogger
- */
- private $logger;
-
- /** @var IUserMountCache */
- private $userMountCache;
-
- /**
- * StorageMigrator constructor.
- *
- * @param BackendService $backendService
- * @param DBConfigService $dbConfig
- * @param IConfig $config
- * @param IDBConnection $connection
- * @param ILogger $logger
- * @param IUserMountCache $userMountCache
- */
- public function __construct(
- BackendService $backendService,
- DBConfigService $dbConfig,
- IConfig $config,
- IDBConnection $connection,
- ILogger $logger,
- IUserMountCache $userMountCache
- ) {
- $this->backendService = $backendService;
- $this->dbConfig = $dbConfig;
- $this->config = $config;
- $this->connection = $connection;
- $this->logger = $logger;
- $this->userMountCache = $userMountCache;
- }
-
- private function migrate(LegacyStoragesService $legacyService, StoragesService $storageService) {
- $existingStorage = $legacyService->getAllStorages();
-
- $this->connection->beginTransaction();
- try {
- foreach ($existingStorage as $storage) {
- $mountOptions = $storage->getMountOptions();
- if (!empty($mountOptions) && !isset($mountOptions['enable_sharing'])) {
- // existing mounts must have sharing enabled by default to avoid surprises
- $mountOptions['enable_sharing'] = true;
- $storage->setMountOptions($mountOptions);
- }
- $storageService->addStorage($storage);
- }
- $this->connection->commit();
- } catch (\Exception $e) {
- $this->logger->logException($e);
- $this->connection->rollBack();
- }
- }
-
- /**
- * Migrate personal storages configured by the current user
- *
- * @param IUser $user
- */
- public function migrateUser(IUser $user) {
- $dummySession = new DummyUserSession();
- $dummySession->setUser($user);
- $userId = $user->getUID();
- $userVersion = $this->config->getUserValue($userId, 'files_external', 'config_version', '0.0.0');
- if (version_compare($userVersion, '0.5.0', '<')) {
- $this->config->setUserValue($userId, 'files_external', 'config_version', '0.5.0');
- $legacyService = new UserLegacyStoragesService($this->backendService, $dummySession);
- $storageService = new UserStoragesService($this->backendService, $this->dbConfig, $dummySession, $this->userMountCache);
-
- $this->migrate($legacyService, $storageService);
- }
- }
-}
diff --git a/apps/files_external/lib/MountConfig.php b/apps/files_external/lib/MountConfig.php
index aa3b662e224..a95ea01add9 100644
--- a/apps/files_external/lib/MountConfig.php
+++ b/apps/files_external/lib/MountConfig.php
@@ -47,6 +47,7 @@ use OCA\Files_External\Service\GlobalStoragesService;
use OCA\Files_External\Service\UserGlobalStoragesService;
use OCA\Files_External\Service\UserStoragesService;
use OCP\Files\StorageNotAvailableException;
+use OCP\IUser;
use phpseclib\Crypt\AES;
/**
@@ -145,29 +146,6 @@ class MountConfig {
}
/**
- * Read the mount points in the config file into an array
- *
- * @param string|null $user If not null, personal for $user, otherwise system
- * @return array
- */
- public static function readData($user = null) {
- if (isset($user)) {
- $jsonFile = \OC::$server->getUserManager()->get($user)->getHome() . '/mount.json';
- } else {
- $config = \OC::$server->getConfig();
- $datadir = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/');
- $jsonFile = $config->getSystemValue('mount_file', $datadir . '/mount.json');
- }
- if (is_file($jsonFile)) {
- $mountPoints = json_decode(file_get_contents($jsonFile), true);
- if (is_array($mountPoints)) {
- return $mountPoints;
- }
- }
- return [];
- }
-
- /**
* Get backend dependency message
* TODO: move into AppFramework along with templates
*
diff --git a/apps/files_external/lib/Service/StoragesService.php b/apps/files_external/lib/Service/StoragesService.php
index b8eabd65e1e..489192dbdc2 100644
--- a/apps/files_external/lib/Service/StoragesService.php
+++ b/apps/files_external/lib/Service/StoragesService.php
@@ -40,7 +40,9 @@ use OCA\Files_External\Lib\Backend\InvalidBackend;
use OCA\Files_External\Lib\DefinitionParameter;
use OCA\Files_External\Lib\StorageConfig;
use OCA\Files_External\NotFoundException;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Config\IUserMountCache;
+use OCP\Files\Events\InvalidateMountCacheEvent;
use OCP\Files\StorageNotAvailableException;
use OCP\ILogger;
@@ -62,15 +64,24 @@ abstract class StoragesService {
*/
protected $userMountCache;
+ protected IEventDispatcher $eventDispatcher;
+
/**
* @param BackendService $backendService
* @param DBConfigService $dbConfigService
* @param IUserMountCache $userMountCache
+ * @param IEventDispatcher $eventDispatcher
*/
- public function __construct(BackendService $backendService, DBConfigService $dbConfigService, IUserMountCache $userMountCache) {
+ public function __construct(
+ BackendService $backendService,
+ DBConfigService $dbConfigService,
+ IUserMountCache $userMountCache,
+ IEventDispatcher $eventDispatcher
+ ) {
$this->backendService = $backendService;
$this->dbConfig = $dbConfigService;
$this->userMountCache = $userMountCache;
+ $this->eventDispatcher = $eventDispatcher;
}
protected function readDBConfig() {
@@ -338,7 +349,8 @@ abstract class StoragesService {
* @param string $mountType hook mount type param
* @param array $applicableArray array of applicable users/groups for which to trigger the hook
*/
- protected function triggerApplicableHooks($signal, $mountPoint, $mountType, $applicableArray) {
+ protected function triggerApplicableHooks($signal, $mountPoint, $mountType, $applicableArray): void {
+ $this->eventDispatcher->dispatchTyped(new InvalidateMountCacheEvent(null));
foreach ($applicableArray as $applicable) {
\OCP\Util::emitHook(
Filesystem::CLASSNAME,
diff --git a/apps/files_external/lib/Service/UserGlobalStoragesService.php b/apps/files_external/lib/Service/UserGlobalStoragesService.php
index ba894d8f210..2eda36e9242 100644
--- a/apps/files_external/lib/Service/UserGlobalStoragesService.php
+++ b/apps/files_external/lib/Service/UserGlobalStoragesService.php
@@ -24,6 +24,7 @@
namespace OCA\Files_External\Service;
use OCA\Files_External\Lib\StorageConfig;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Config\IUserMountCache;
use OCP\IGroupManager;
use OCP\IUser;
@@ -45,15 +46,17 @@ class UserGlobalStoragesService extends GlobalStoragesService {
* @param IUserSession $userSession
* @param IGroupManager $groupManager
* @param IUserMountCache $userMountCache
+ * @param IEventDispatcher $eventDispatcher
*/
public function __construct(
BackendService $backendService,
DBConfigService $dbConfig,
IUserSession $userSession,
IGroupManager $groupManager,
- IUserMountCache $userMountCache
+ IUserMountCache $userMountCache,
+ IEventDispatcher $eventDispatcher
) {
- parent::__construct($backendService, $dbConfig, $userMountCache);
+ parent::__construct($backendService, $dbConfig, $userMountCache, $eventDispatcher);
$this->userSession = $userSession;
$this->groupManager = $groupManager;
}
diff --git a/apps/files_external/lib/Service/UserLegacyStoragesService.php b/apps/files_external/lib/Service/UserLegacyStoragesService.php
deleted file mode 100644
index ce86ce30bad..00000000000
--- a/apps/files_external/lib/Service/UserLegacyStoragesService.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Robin Appelman <robin@icewind.nl>
- *
- * @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\Service;
-
-use OCP\IUserSession;
-
-/**
- * Read user defined mounts from the legacy mount.json
- */
-class UserLegacyStoragesService extends LegacyStoragesService {
- /**
- * @var IUserSession
- */
- private $userSession;
-
- /**
- * @param BackendService $backendService
- * @param IUserSession $userSession
- */
- public function __construct(BackendService $backendService, IUserSession $userSession) {
- $this->backendService = $backendService;
- $this->userSession = $userSession;
- }
-
- /**
- * Read legacy config data
- *
- * @return array list of storage configs
- */
- protected function readLegacyConfig() {
- // read user config
- $user = $this->userSession->getUser()->getUID();
- return \OCA\Files_External\MountConfig::readData($user);
- }
-}
diff --git a/apps/files_external/lib/Service/UserStoragesService.php b/apps/files_external/lib/Service/UserStoragesService.php
index 8af6bdb3a77..b09b37b40cc 100644
--- a/apps/files_external/lib/Service/UserStoragesService.php
+++ b/apps/files_external/lib/Service/UserStoragesService.php
@@ -32,6 +32,7 @@ use OC\Files\Filesystem;
use OCA\Files_External\Lib\StorageConfig;
use OCA\Files_External\NotFoundException;
+use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Config\IUserMountCache;
use OCP\IUserSession;
@@ -49,15 +50,17 @@ class UserStoragesService extends StoragesService {
* @param DBConfigService $dbConfig
* @param IUserSession $userSession user session
* @param IUserMountCache $userMountCache
+ * @param IEventDispatcher $eventDispatcher
*/
public function __construct(
BackendService $backendService,
DBConfigService $dbConfig,
IUserSession $userSession,
- IUserMountCache $userMountCache
+ IUserMountCache $userMountCache,
+ IEventDispatcher $eventDispatcher
) {
$this->userSession = $userSession;
- parent::__construct($backendService, $dbConfig, $userMountCache);
+ parent::__construct($backendService, $dbConfig, $userMountCache, $eventDispatcher);
}
protected function readDBConfig() {