summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-02-03 16:13:15 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-02-03 16:13:15 +0100
commit23c6a0cf99818c986f5a6537cf765fa9fdff5757 (patch)
tree6a944734914791a7d5e8a518f6600c897eb5be8f
parent9e222ec841946d773514f790fcc567c634d27038 (diff)
parentd70160c6077ca017d6cb7d61f066fe33e3b1e081 (diff)
downloadnextcloud-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.php8
-rw-r--r--lib/private/app.php3
-rw-r--r--lib/private/app/appmanager.php4
-rw-r--r--lib/private/repair.php2
-rw-r--r--lib/repair/enablefilesapp.php50
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']);
+ }
+ }
+}