]> source.dussan.org Git - nextcloud-server.git/commitdiff
Throw an exception when we try to load an app that needs to be upgraded
authorRobin Appelman <icewind@owncloud.com>
Thu, 24 Jul 2014 15:16:34 +0000 (17:16 +0200)
committerRobin Appelman <icewind@owncloud.com>
Tue, 19 Aug 2014 12:04:04 +0000 (14:04 +0200)
lib/private/app.php
lib/private/needsupdateexception.php [new file with mode: 0644]
lib/private/serviceunavailableexception.php [new file with mode: 0644]

index 2887961754c268878d8312522534c4e61917f8e8..9fc0799e9cf2f71775c3c199d975b702ebc9f9ed 100644 (file)
@@ -81,10 +81,13 @@ class OC_App {
         * load a single app
         *
         * @param string $app
+        * @throws \OC\NeedsUpdateException
         */
        public static function loadApp($app) {
                if (is_file(self::getAppPath($app) . '/appinfo/app.php')) {
-                       self::checkUpgrade($app);
+                       if (self::shouldUpgrade($app)) {
+                               throw new \OC\NeedsUpdateException();
+                       }
                        require_once $app . '/appinfo/app.php';
                }
        }
@@ -956,39 +959,6 @@ class OC_App {
                return false;
        }
 
-       /**
-        * check if the app needs updating and update when needed
-        *
-        * @param string $app
-        */
-       public static function checkUpgrade($app) {
-               if (in_array($app, self::$checkedApps)) {
-                       return;
-               }
-               self::$checkedApps[] = $app;
-               if (!self::shouldUpgrade($app)) {
-                       return;
-               }
-               $versions = self::getAppVersions();
-               $installedVersion = $versions[$app];
-               $currentVersion = OC_App::getAppVersion($app);
-               OC_Log::write(
-                       $app,
-                       'starting app upgrade from ' . $installedVersion . ' to ' . $currentVersion,
-                       OC_Log::DEBUG
-               );
-               $info = self::getAppInfo($app);
-               try {
-                       OC_App::updateApp($app);
-                       OC_Hook::emit('update', 'success', 'Updated ' . $info['name'] . ' app');
-               } catch (Exception $e) {
-                       OC_Hook::emit('update', 'failure', 'Failed to update ' . $info['name'] . ' app: ' . $e->getMessage());
-                       $l = OC_L10N::get('lib');
-                       throw new RuntimeException($l->t('Failed to upgrade "%s".', array($app)), 0, $e);
-               }
-               OC_Appconfig::setValue($app, 'installed_version', OC_App::getAppVersion($app));
-       }
-
        /**
         * check if the current enabled apps are compatible with the current
         * ownCloud version. disable them if not.
diff --git a/lib/private/needsupdateexception.php b/lib/private/needsupdateexception.php
new file mode 100644 (file)
index 0000000..bab928d
--- /dev/null
@@ -0,0 +1,12 @@
+<?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 OC;
+
+class NeedsUpdateException extends ServiceUnavailableException {
+}
diff --git a/lib/private/serviceunavailableexception.php b/lib/private/serviceunavailableexception.php
new file mode 100644 (file)
index 0000000..15e4cd5
--- /dev/null
@@ -0,0 +1,12 @@
+<?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 OC;
+
+class ServiceUnavailableException extends \Exception {
+}