diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-02-03 16:13:15 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-02-03 16:13:15 +0100 |
commit | 23c6a0cf99818c986f5a6537cf765fa9fdff5757 (patch) | |
tree | 6a944734914791a7d5e8a518f6600c897eb5be8f | |
parent | 9e222ec841946d773514f790fcc567c634d27038 (diff) | |
parent | d70160c6077ca017d6cb7d61f066fe33e3b1e081 (diff) | |
download | nextcloud-server-23c6a0cf99818c986f5a6537cf765fa9fdff5757.tar.gz nextcloud-server-23c6a0cf99818c986f5a6537cf765fa9fdff5757.zip |
Merge pull request #13843 from owncloud/fix-files-disabled
Fix disabled files app
-rw-r--r-- | core/command/app/disable.php | 8 | ||||
-rw-r--r-- | lib/private/app.php | 3 | ||||
-rw-r--r-- | lib/private/app/appmanager.php | 4 | ||||
-rw-r--r-- | lib/private/repair.php | 2 | ||||
-rw-r--r-- | lib/repair/enablefilesapp.php | 50 |
5 files changed, 65 insertions, 2 deletions
diff --git a/core/command/app/disable.php b/core/command/app/disable.php index dcdee92349e..2e028d183bb 100644 --- a/core/command/app/disable.php +++ b/core/command/app/disable.php @@ -28,8 +28,12 @@ class Disable extends Command { protected function execute(InputInterface $input, OutputInterface $output) { $appId = $input->getArgument('app-id'); if (\OC_App::isEnabled($appId)) { - \OC_App::disable($appId); - $output->writeln($appId . ' disabled'); + try { + \OC_App::disable($appId); + $output->writeln($appId . ' disabled'); + } catch(\Exception $e) { + $output->writeln($e->getMessage()); + } } else { $output->writeln('No such app enabled: ' . $appId); } diff --git a/lib/private/app.php b/lib/private/app.php index 3a1f731d621..60b644e58e2 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -321,6 +321,9 @@ class OC_App { * @param string $app app */ public static function disable($app) { + if($app === 'files') { + throw new \Exception("files can't be disabled."); + } self::$enabledAppsCache = array(); // flush // check if app is a shipped app or not. if not delete \OC_Hook::emit('OC_App', 'pre_disable', array('app' => $app)); diff --git a/lib/private/app/appmanager.php b/lib/private/app/appmanager.php index 6d9aa0bfe37..20a765e3434 100644 --- a/lib/private/app/appmanager.php +++ b/lib/private/app/appmanager.php @@ -131,8 +131,12 @@ class AppManager implements IAppManager { * Disable an app for every user * * @param string $appId + * @throws \Exception if app can't be disabled */ public function disableApp($appId) { + if($appId === 'files') { + throw new \Exception("files can't be disabled."); + } $this->appConfig->setValue($appId, 'enabled', 'no'); } } diff --git a/lib/private/repair.php b/lib/private/repair.php index d9fd99707e8..c74283896fd 100644 --- a/lib/private/repair.php +++ b/lib/private/repair.php @@ -13,6 +13,7 @@ use OC\Hooks\Emitter; use OC\Repair\AssetCache; use OC\Repair\CleanTags; use OC\Repair\Collation; +use OC\Repair\EnableFilesApp; use OC\Repair\FillETags; use OC\Repair\InnoDB; use OC\Repair\RepairConfig; @@ -84,6 +85,7 @@ class Repair extends BasicEmitter { new AssetCache(), new FillETags(\OC_DB::getConnection()), new CleanTags(\OC_DB::getConnection()), + new EnableFilesApp(\OC::$server->getConfig()), ); } diff --git a/lib/repair/enablefilesapp.php b/lib/repair/enablefilesapp.php new file mode 100644 index 00000000000..a3298cf76b3 --- /dev/null +++ b/lib/repair/enablefilesapp.php @@ -0,0 +1,50 @@ +<?php +/** + * Copyright (c) 2015 Morris Jobke <hey@morrisjobke.de> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Repair; + +use OC\Hooks\BasicEmitter; +use OC\RepairStep; +use OCP\IConfig; + +/** + * Class EnableFilesApp - enables files app if disabled + * + * TODO: remove this with ownCloud 8.1 - this isn't possible anymore with 8.0 + * + * @package OC\Repair + */ +class EnableFilesApp extends BasicEmitter implements RepairStep { + + /** @var IConfig */ + protected $config; + + /** + * @param IConfig $config + */ + public function __construct(IConfig $config) { + $this->config = $config; + } + + /** + * @return string + */ + public function getName() { + return 'Re-enable file app'; + } + + /** + * Enables the files app if it is disabled + */ + public function run() { + if ($this->config->getAppValue('files', 'enabled', 'no') !== 'yes') { + $this->config->setAppValue('files', 'enabled', 'yes'); + $this->emit('\OC\Repair', 'info', ['Files app was disabled - re-enabled']); + } + } +} |