diff options
Diffstat (limited to 'apps/files_external')
13 files changed, 40 insertions, 233 deletions
diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js index 25eda82dcda..b40cb7b5f71 100644 --- a/apps/files_external/l10n/ca.js +++ b/apps/files_external/l10n/ca.js @@ -22,6 +22,7 @@ OC.L10N.register( "Read only" : "Només lectura", "Delete" : "Suprimeix", "Admin defined" : "Administrador definit", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprovació automàtica de l'estat està inhabilitada a causa del gran nombre d'emmagatzematges configurats, feu clic per comprovar l'estat", "Are you sure you want to delete this external storage?" : "Esteu segur que voleu suprimir aquest emmagatzematge extern?", "Delete storage?" : "Suprimeix-ho l'emmagatzematge?", "Saved" : "Desat", diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json index a092f8a53a9..38541dfbc0f 100644 --- a/apps/files_external/l10n/ca.json +++ b/apps/files_external/l10n/ca.json @@ -20,6 +20,7 @@ "Read only" : "Només lectura", "Delete" : "Suprimeix", "Admin defined" : "Administrador definit", + "Automatic status checking is disabled due to the large number of configured storages, click to check status" : "La comprovació automàtica de l'estat està inhabilitada a causa del gran nombre d'emmagatzematges configurats, feu clic per comprovar l'estat", "Are you sure you want to delete this external storage?" : "Esteu segur que voleu suprimir aquest emmagatzematge extern?", "Delete storage?" : "Suprimeix-ho l'emmagatzematge?", "Saved" : "Desat", 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() { diff --git a/apps/files_external/tests/Service/GlobalStoragesServiceTest.php b/apps/files_external/tests/Service/GlobalStoragesServiceTest.php index b23c4b8f2bf..7d77ea971f3 100644 --- a/apps/files_external/tests/Service/GlobalStoragesServiceTest.php +++ b/apps/files_external/tests/Service/GlobalStoragesServiceTest.php @@ -37,7 +37,7 @@ use OCA\Files_External\Service\GlobalStoragesService; class GlobalStoragesServiceTest extends StoragesServiceTest { protected function setUp(): void { parent::setUp(); - $this->service = new GlobalStoragesService($this->backendService, $this->dbConfig, $this->mountCache); + $this->service = new GlobalStoragesService($this->backendService, $this->dbConfig, $this->mountCache, $this->eventDispatcher); } protected function tearDown(): void { diff --git a/apps/files_external/tests/Service/StoragesServiceTest.php b/apps/files_external/tests/Service/StoragesServiceTest.php index 3829a9ea0ce..4eaf70a8e84 100644 --- a/apps/files_external/tests/Service/StoragesServiceTest.php +++ b/apps/files_external/tests/Service/StoragesServiceTest.php @@ -39,6 +39,7 @@ use OCA\Files_External\Service\BackendService; use OCA\Files_External\Service\DBConfigService; use OCA\Files_External\Service\StoragesService; use OCP\AppFramework\IAppContainer; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\Cache\ICache; use OCP\Files\Config\IUserMountCache; use OCP\Files\Mount\IMountPoint; @@ -96,6 +97,11 @@ abstract class StoragesServiceTest extends \Test\TestCase { */ protected $mountCache; + /** + * @var \PHPUnit\Framework\MockObject\MockObject|IEventDispatcher + */ + protected IEventDispatcher $eventDispatcher; + protected function setUp(): void { parent::setUp(); $this->dbConfig = new CleaningDBConfig(\OC::$server->getDatabaseConnection(), \OC::$server->getCrypto()); @@ -108,6 +114,7 @@ abstract class StoragesServiceTest extends \Test\TestCase { \OCA\Files_External\MountConfig::$skipTest = true; $this->mountCache = $this->createMock(IUserMountCache::class); + $this->eventDispatcher = $this->createMock(IEventDispatcher::class); // prepare BackendService mock $this->backendService = diff --git a/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php b/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php index ea77148c8f2..aa5aa1df431 100644 --- a/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php +++ b/apps/files_external/tests/Service/UserGlobalStoragesServiceTest.php @@ -100,7 +100,8 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { $this->dbConfig, $userSession, $this->groupManager, - $this->mountCache + $this->mountCache, + $this->eventDispatcher, ); } diff --git a/apps/files_external/tests/Service/UserStoragesServiceTest.php b/apps/files_external/tests/Service/UserStoragesServiceTest.php index ff39ea9ddbc..cda1dd0a27f 100644 --- a/apps/files_external/tests/Service/UserStoragesServiceTest.php +++ b/apps/files_external/tests/Service/UserStoragesServiceTest.php @@ -54,7 +54,7 @@ class UserStoragesServiceTest extends StoragesServiceTest { protected function setUp(): void { parent::setUp(); - $this->globalStoragesService = new GlobalStoragesService($this->backendService, $this->dbConfig, $this->mountCache); + $this->globalStoragesService = new GlobalStoragesService($this->backendService, $this->dbConfig, $this->mountCache, $this->eventDispatcher); $this->userId = $this->getUniqueID('user_'); $this->createUser($this->userId, $this->userId); @@ -67,7 +67,7 @@ class UserStoragesServiceTest extends StoragesServiceTest { ->method('getUser') ->willReturn($this->user); - $this->service = new UserStoragesService($this->backendService, $this->dbConfig, $userSession, $this->mountCache); + $this->service = new UserStoragesService($this->backendService, $this->dbConfig, $userSession, $this->mountCache, $this->eventDispatcher); } private function makeTestStorageData() { |