diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-03-23 17:17:33 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-03-23 17:17:33 +0100 |
commit | 0adcb99110b96f310d6530b33b55c9e58abeb213 (patch) | |
tree | 25056b6938cec9e633c2af7db5f6fb0e9db50694 /lib/private | |
parent | c93e4c806a0a39c2be4ee0e14ad0fd29f43ef730 (diff) | |
parent | 33cd60ab9aacd1f82a2e4cd31019ace26d597124 (diff) | |
download | nextcloud-server-0adcb99110b96f310d6530b33b55c9e58abeb213.tar.gz nextcloud-server-0adcb99110b96f310d6530b33b55c9e58abeb213.zip |
Merge pull request #14862 from owncloud/introduce-shipped.json-master
shipped apps are now defined in core/shipped.json - the shipped tag in i...
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/app.php | 17 | ||||
-rw-r--r-- | lib/private/updater.php | 22 |
2 files changed, 33 insertions, 6 deletions
diff --git a/lib/private/app.php b/lib/private/app.php index d30ada0391a..1b004154173 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -42,6 +42,7 @@ class OC_App { static private $appTypes = array(); static private $loadedApps = array(); static private $altLogin = array(); + private static $shippedApps = null; /** * clean the appId @@ -182,12 +183,18 @@ class OC_App { * Check if an app that is installed is a shipped app or installed from the appstore. */ public static function isShipped($appId) { - $info = self::getAppInfo($appId); - if (isset($info['shipped']) && $info['shipped'] == 'true') { - return true; - } else { - return false; + if (is_null(self::$shippedApps)) { + $shippedJson = \OC::$SERVERROOT . '/core/shipped.json'; + if (file_exists($shippedJson)) { + self::$shippedApps = json_decode(file_get_contents($shippedJson), true); + self::$shippedApps = self::$shippedApps['shippedApps']; + } else { + self::$shippedApps = ['files', 'files_encryption', 'files_external', + 'files_sharing', 'files_trashbin', 'files_versions', 'provisioning_api', + 'user_ldap', 'user_webdavauth']; + } } + return in_array($appId, self::$shippedApps); } /** diff --git a/lib/private/updater.php b/lib/private/updater.php index 4d813ee3d39..419cd7db6c0 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -10,6 +10,7 @@ namespace OC; use OC\Hooks\BasicEmitter; use OC_App; +use OC_Installer; use OC_Util; use OCP\IConfig; use OC\Setup; @@ -233,9 +234,14 @@ class Updater extends BasicEmitter { if ($this->updateStepEnabled) { $this->doCoreUpgrade(); - $this->checkAppsRequirements(); + // update all shipped apps + $disabledApps = $this->checkAppsRequirements(); $this->doAppUpgrade(); + // upgrade appstore apps + $this->upgradeAppStoreApps($disabledApps); + + // post-upgrade repairs $repair = new Repair(Repair::getRepairSteps()); $this->emitRepairMessages($repair); @@ -356,6 +362,7 @@ class Updater extends BasicEmitter { $isCoreUpgrade = $this->isCodeUpgrade(); $apps = OC_App::getEnabledApps(); $version = OC_Util::getVersion(); + $disabledApps = []; foreach ($apps as $app) { // check if the app is compatible with this version of ownCloud $info = OC_App::getAppInfo($app); @@ -378,8 +385,10 @@ class Updater extends BasicEmitter { // disable any other 3rd party apps \OC_App::disable($app); + $disabledApps[]= $app; $this->emit('\OC\Updater', 'thirdPartyAppDisabled', array($app)); } + return $disabledApps; } private function isCodeUpgrade() { @@ -390,5 +399,16 @@ class Updater extends BasicEmitter { } return false; } + + private function upgradeAppStoreApps($disabledApps) { + foreach($disabledApps as $app) { + if (OC_Installer::isUpdateAvailable($app)) { + $ocsId = \OC::$server->getConfig()->getAppValue($app, 'ocsid', ''); + + $this->emit('\OC\Updater', 'upgradeAppStoreApp', array($app)); + OC_Installer::updateAppByOCSId($ocsId); + } + } + } } |