diff --git a/core/ajax/update.php b/core/ajax/update.php
index 55e8ab15ec..84d7a21209 100644
--- a/core/ajax/update.php
+++ b/core/ajax/update.php
@@ -15,6 +15,14 @@ if (OC::checkUpgrade(false)) {
$updater->listen('\OC\Updater', 'dbUpgrade', function () use ($eventSource, $l) {
$eventSource->send('success', (string)$l->t('Updated database'));
});
+ $updater->listen('\OC\Updater', 'disabledApps', function ($appList) use ($eventSource, $l) {
+ $list = array();
+ foreach ($appList as $appId) {
+ $info = OC_App::getAppInfo($appId);
+ $list[] = $info['name'] . ' (' . $info['id'] . ')';
+ }
+ $eventSource->send('success', (string)$l->t('Disabled incompatible apps: %s', implode(', ', $list)));
+ });
$updater->listen('\OC\Updater', 'failure', function ($message) use ($eventSource) {
$eventSource->send('failure', $message);
$eventSource->close();
diff --git a/core/command/upgrade.php b/core/command/upgrade.php
index ed72d136e2..8ce8ef9b6e 100644
--- a/core/command/upgrade.php
+++ b/core/command/upgrade.php
@@ -56,6 +56,9 @@ class Upgrade extends Command {
$updater->listen('\OC\Updater', 'dbUpgrade', function () use($output) {
$output->writeln('Updated database');
});
+ $updater->listen('\OC\Updater', 'disabledApps', function ($appList) use($output) {
+ $output->writeln('Disabled incompatible apps: ' . implode(', ', $appList) . '');
+ });
$updater->listen('\OC\Updater', 'failure', function ($message) use($output) {
$output->writeln($message);
diff --git a/core/templates/update.admin.php b/core/templates/update.admin.php
index 0b1ae7854d..b9b0fdb774 100644
--- a/core/templates/update.admin.php
+++ b/core/templates/update.admin.php
@@ -8,8 +8,8 @@
t('The following apps will be disabled during the upgrade:')) ?>
diff --git a/lib/base.php b/lib/base.php
index 455e8ad461..7bca1b7c87 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -298,7 +298,7 @@ class OC {
foreach ($apps as $appId) {
$info = OC_App::getAppInfo($appId);
if(!OC_App::isAppCompatible($version, $info)) {
- $incompatibleApps[] = $info['name'];
+ $incompatibleApps[] = $info;
}
}
$tmpl->assign('appList', $incompatibleApps);
diff --git a/lib/private/app.php b/lib/private/app.php
index 50065197eb..ea0453e58e 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -889,8 +889,14 @@ class OC_App{
* ownCloud version. disable them if not.
* This is important if you upgrade ownCloud and have non ported 3rd
* party apps installed.
+ *
+ * @param array $apps optional app id list to check, uses all enabled apps
+ * when not specified
+ *
+ * @return array containing the list of ids of the disabled apps
*/
public static function checkAppsRequirements($apps = array()) {
+ $disabledApps = array();
if (empty($apps)) {
$apps = OC_App::getEnabledApps();
}
@@ -905,8 +911,10 @@ class OC_App{
OC_Log::ERROR);
OC_App::disable( $app );
OC_Hook::emit('update', 'success', 'Disabled '.$info['name'].' app because it is not compatible');
+ $disabledApps[] = $app;
}
}
+ return $disabledApps;
}
/**
diff --git a/lib/private/updater.php b/lib/private/updater.php
index d8694ac6ed..58d3cab73a 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -134,7 +134,10 @@ class Updater extends BasicEmitter {
$this->emit('\OC\Updater', 'failure', array($exception->getMessage()));
}
\OC_Config::setValue('version', implode('.', \OC_Util::getVersion()));
- \OC_App::checkAppsRequirements();
+ $disabledApps = \OC_App::checkAppsRequirements();
+ if (!empty($disabledApps)) {
+ $this->emit('\OC\Updater', 'disabledApps', array($disabledApps));
+ }
// load all apps to also upgrade enabled apps
\OC_App::loadApps();