Throw an exception when we try to load an app that needs to be upgraded

This commit is contained in:
Robin Appelman 2014-07-24 17:16:34 +02:00
parent 43d790239d
commit 4608f8a3b5
3 changed files with 28 additions and 34 deletions

View 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';
}
}
@ -954,39 +957,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.

View File

@ -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 {
}

View File

@ -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 {
}