diff options
author | Morris Jobke <hey@morrisjobke.de> | 2016-11-02 21:20:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-02 21:20:23 +0100 |
commit | e74c52726877b46c471030c59ad75ea51d52fd6c (patch) | |
tree | fa0b37a15a8f930f9be02deaba07d859839b5181 | |
parent | 9eede5a573d7328e74dad059b933cc25ad070bd9 (diff) | |
parent | 9b66e8f7d96cc5ca014d3f6b8031eb380d981adb (diff) | |
download | nextcloud-server-e74c52726877b46c471030c59ad75ea51d52fd6c.tar.gz nextcloud-server-e74c52726877b46c471030c59ad75ea51d52fd6c.zip |
Merge pull request #1973 from nextcloud/dont-disable-shipped-apps-but-throw-instead
Throw an exception when a shipped app was not replaced before the update
-rw-r--r-- | lib/base.php | 12 | ||||
-rw-r--r-- | lib/private/Updater.php | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/base.php b/lib/base.php index 28fc57161c3..909a62040ee 100644 --- a/lib/base.php +++ b/lib/base.php @@ -377,6 +377,7 @@ class OC { \OCP\Util::addScript('update'); \OCP\Util::addStyle('update'); + /** @var \OCP\App\IAppManager $appManager */ $appManager = \OC::$server->getAppManager(); $tmpl = new OC_Template('', 'update.admin', 'guest'); @@ -385,8 +386,17 @@ class OC { // get third party apps $ocVersion = \OCP\Util::getVersion(); + $incompatibleApps = $appManager->getIncompatibleApps($ocVersion); + foreach ($incompatibleApps as $appInfo) { + if ($appManager->isShipped($appInfo['id'])) { + $l = \OC::$server->getL10N('core'); + $hint = $l->t('The files of the app "%$1s" (%$2s) were not replaced correctly.', [$appInfo['name'], $appInfo['id']]); + throw new \OC\HintException('The files of the app "' . $appInfo['name'] . '" (' . $appInfo['id'] . ') were not replaced correctly.', $hint); + } + } + $tmpl->assign('appsToUpgrade', $appManager->getAppsNeedingUpgrade($ocVersion)); - $tmpl->assign('incompatibleAppsList', $appManager->getIncompatibleApps($ocVersion)); + $tmpl->assign('incompatibleAppsList', $incompatibleApps); $tmpl->assign('productName', 'Nextcloud'); // for now $tmpl->assign('oldTheme', $oldTheme); $tmpl->printPage(); diff --git a/lib/private/Updater.php b/lib/private/Updater.php index cd2934f7196..e7f7a944902 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -382,6 +382,9 @@ class Updater extends BasicEmitter { // check if the app is compatible with this version of ownCloud $info = OC_App::getAppInfo($app); if(!OC_App::isAppCompatible($version, $info)) { + if (OC_App::isShipped($app)) { + throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update'); + } OC_App::disable($app); $this->emit('\OC\Updater', 'incompatibleAppDisabled', array($app)); } |