aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/private/app.php4
-rw-r--r--lib/private/updater.php18
2 files changed, 17 insertions, 5 deletions
diff --git a/lib/private/app.php b/lib/private/app.php
index 73576088d15..bc9ca0351ea 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -1180,10 +1180,6 @@ class OC_App {
* @return bool
*/
public static function updateApp($appId) {
- if (file_exists(self::getAppPath($appId) . '/appinfo/preupdate.php')) {
- self::loadApp($appId, false);
- include self::getAppPath($appId) . '/appinfo/preupdate.php';
- }
if (file_exists(self::getAppPath($appId) . '/appinfo/database.xml')) {
OC_DB::updateDbFromStructure(self::getAppPath($appId) . '/appinfo/database.xml');
}
diff --git a/lib/private/updater.php b/lib/private/updater.php
index c4c70a3cc4a..e07ff03ffc4 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -245,7 +245,6 @@ class Updater extends BasicEmitter {
protected function checkAppUpgrade($version) {
$apps = \OC_App::getEnabledApps();
-
foreach ($apps as $appId) {
if ($version) {
$info = \OC_App::getAppInfo($appId);
@@ -255,6 +254,15 @@ class Updater extends BasicEmitter {
}
if ($compatible && \OC_App::shouldUpgrade($appId)) {
+ /**
+ * FIXME: The preupdate check is performed before the database migration, otherwise database changes
+ * are not possible anymore within it. - Consider this when touching the code.
+ * @link https://github.com/owncloud/core/issues/10980
+ * @see \OC_App::updateApp
+ */
+ if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/preupdate.php')) {
+ $this->includePreUpdate($appId);
+ }
if (file_exists(\OC_App::getAppPath($appId) . '/appinfo/database.xml')) {
\OC_DB::simulateUpdateDbFromStructure(\OC_App::getAppPath($appId) . '/appinfo/database.xml');
}
@@ -264,6 +272,14 @@ class Updater extends BasicEmitter {
$this->emit('\OC\Updater', 'appUpgradeCheck');
}
+ /**
+ * Includes the pre-update file. Done here to prevent namespace mixups.
+ * @param string $appId
+ */
+ private function includePreUpdate($appId) {
+ include \OC_App::getAppPath($appId) . '/appinfo/preupdate.php';
+ }
+
protected function doAppUpgrade() {
$apps = \OC_App::getEnabledApps();