Browse Source

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
tags/v11.0RC2
Morris Jobke 7 years ago
parent
commit
e74c527268
2 changed files with 14 additions and 1 deletions
  1. 11
    1
      lib/base.php
  2. 3
    0
      lib/private/Updater.php

+ 11
- 1
lib/base.php View File

@@ -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();

+ 3
- 0
lib/private/Updater.php View File

@@ -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));
}

Loading…
Cancel
Save