Skip to content
Snippets Groups Projects
Commit 4608f8a3 authored by Robin Appelman's avatar Robin Appelman
Browse files

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

parent 43d79023
No related branches found
No related tags found
No related merge requests found
......@@ -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.
......
<?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 {
}
<?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 {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment