|
|
|
@ -125,29 +125,63 @@ class Updater extends BasicEmitter {
|
|
|
|
|
* STOP CONFIG CHANGES FOR OLDER VERSIONS
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
$canUpgrade = false;
|
|
|
|
|
|
|
|
|
|
// simulate DB upgrade
|
|
|
|
|
try {
|
|
|
|
|
\OC_DB::updateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
|
|
|
|
|
$this->emit('\OC\Updater', 'dbUpgrade');
|
|
|
|
|
|
|
|
|
|
// simulate core DB upgrade
|
|
|
|
|
\OC_DB::updateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml', true);
|
|
|
|
|
|
|
|
|
|
// simulate apps DB upgrade
|
|
|
|
|
$version = \OC_Util::getVersion();
|
|
|
|
|
$apps = \OC_App::getEnabledApps();
|
|
|
|
|
foreach ($apps as $appId) {
|
|
|
|
|
$info = \OC_App::getAppInfo($appId);
|
|
|
|
|
if (\OC_App::isAppCompatible($version, $info) && \OC_App::shouldUpgrade($appId)) {
|
|
|
|
|
if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/database.xml')) {
|
|
|
|
|
\OC_DB::updateDbFromStructure(\OC_App::getAppPath($appId) . '/appinfo/database.xml', true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->emit('\OC\Updater', 'dbSimulateUpgrade');
|
|
|
|
|
|
|
|
|
|
$canUpgrade = true;
|
|
|
|
|
} catch (\Exception $exception) {
|
|
|
|
|
$this->emit('\OC\Updater', 'failure', array($exception->getMessage()));
|
|
|
|
|
}
|
|
|
|
|
\OC_Config::setValue('version', implode('.', \OC_Util::getVersion()));
|
|
|
|
|
$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();
|
|
|
|
|
|
|
|
|
|
$repair = new Repair();
|
|
|
|
|
$repair->run();
|
|
|
|
|
if ($canUpgrade) {
|
|
|
|
|
// proceed with real upgrade
|
|
|
|
|
try {
|
|
|
|
|
// do the real upgrade
|
|
|
|
|
\OC_DB::updateDbFromStructure(\OC::$SERVERROOT . '/db_structure.xml');
|
|
|
|
|
$this->emit('\OC\Updater', 'dbUpgrade');
|
|
|
|
|
|
|
|
|
|
} catch (\Exception $exception) {
|
|
|
|
|
$this->emit('\OC\Updater', 'failure', array($exception->getMessage()));
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
// TODO: why not do this at the end ?
|
|
|
|
|
\OC_Config::setValue('version', implode('.', \OC_Util::getVersion()));
|
|
|
|
|
$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();
|
|
|
|
|
|
|
|
|
|
$repair = new Repair();
|
|
|
|
|
$repair->run();
|
|
|
|
|
|
|
|
|
|
//Invalidate update feed
|
|
|
|
|
\OC_Appconfig::setValue('core', 'lastupdatedat', 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Invalidate update feed
|
|
|
|
|
\OC_Appconfig::setValue('core', 'lastupdatedat', 0);
|
|
|
|
|
\OC_Config::setValue('maintenance', false);
|
|
|
|
|
$this->emit('\OC\Updater', 'maintenanceEnd');
|
|
|
|
|
|
|
|
|
|
return $canUpgrade;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|