From 40b28897857cf81bafb23223a7a34fd19de02b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 13 Mar 2015 11:18:39 +0100 Subject: [PATCH 1/5] shipped apps are now defined in core/shipped.json - the shipped tag in info.xml is ignored from now on - never trust an app :speak_no_evil: --- core/shipped.json | 25 +++++++++++++++++++++++++ lib/private/app.php | 17 ++++++++++++----- 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 core/shipped.json diff --git a/core/shipped.json b/core/shipped.json new file mode 100644 index 00000000000..0674177a6c9 --- /dev/null +++ b/core/shipped.json @@ -0,0 +1,25 @@ +{ + "_comment" : "As shipped with owncloud-8.0.2.tar.bz2", + "core-version": "8.1.0.0", + "shippedApps": [ + "activity", + "files", + "files_external", + "files_pdfviewer", + "files_texteditor", + "files_versions", + "firstrunwizard", + "templateeditor", + "user_external", + "user_webdavauth external", + "files_encryption", + "files_locking", + "files_sharing", + "files_trashbin", + "files_videoviewer", + "gallery", + "provisioning_api", + "updater", + "user_ldap" + ] +} diff --git a/lib/private/app.php b/lib/private/app.php index 9ae4ae30d74..29bcf153464 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); } /** From 0bd2b3cb0ca24f115655c4f46eac8b58b8d09637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Fri, 13 Mar 2015 12:16:16 +0100 Subject: [PATCH 2/5] [WIP] upgrade app store apps during console upgrade --- lib/private/updater.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/private/updater.php b/lib/private/updater.php index 4d813ee3d39..11e1d63a52a 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); + } + } + } } From 17b10ef9b4d9d2348aa7c11ec429081ad362bc86 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Mon, 16 Mar 2015 10:52:29 +0100 Subject: [PATCH 3/5] Add spaces --- lib/private/updater.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/private/updater.php b/lib/private/updater.php index 11e1d63a52a..419cd7db6c0 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -403,7 +403,7 @@ class Updater extends BasicEmitter { private function upgradeAppStoreApps($disabledApps) { foreach($disabledApps as $app) { if (OC_Installer::isUpdateAvailable($app)) { - $ocsId=\OC::$server->getConfig()->getAppValue($app, 'ocsid', ''); + $ocsId = \OC::$server->getConfig()->getAppValue($app, 'ocsid', ''); $this->emit('\OC\Updater', 'upgradeAppStoreApp', array($app)); OC_Installer::updateAppByOCSId($ocsId); From c262d0d966e0e3edab3a6ad19527c469f36cd097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 16 Mar 2015 11:59:40 +0100 Subject: [PATCH 4/5] Update shipped.json --- core/shipped.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/shipped.json b/core/shipped.json index 0674177a6c9..0def2ed62a8 100644 --- a/core/shipped.json +++ b/core/shipped.json @@ -11,7 +11,8 @@ "firstrunwizard", "templateeditor", "user_external", - "user_webdavauth external", + "user_webdavauth", + "external", "files_encryption", "files_locking", "files_sharing", From 33cd60ab9aacd1f82a2e4cd31019ace26d597124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Mon, 23 Mar 2015 15:11:16 +0100 Subject: [PATCH 5/5] adding enterprise apps to shipped.json --- core/shipped.json | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/core/shipped.json b/core/shipped.json index 0def2ed62a8..15a2c6a1473 100644 --- a/core/shipped.json +++ b/core/shipped.json @@ -1,26 +1,35 @@ { - "_comment" : "As shipped with owncloud-8.0.2.tar.bz2", "core-version": "8.1.0.0", "shippedApps": [ "activity", - "files", - "files_external", - "files_pdfviewer", - "files_texteditor", - "files_versions", - "firstrunwizard", - "templateeditor", - "user_external", - "user_webdavauth", + "admin_audit", + "enterprise_key", "external", + "files", + "files_antivirus", "files_encryption", + "files_external", + "files_ldap_home", "files_locking", + "files_pdfviewer", "files_sharing", + "files_sharing_log", + "files_texteditor", "files_trashbin", + "files_versions", "files_videoviewer", + "firewall", + "firstrunwizard", "gallery", + "objectstore", "provisioning_api", + "sharepoint", + "templateeditor", "updater", - "user_ldap" + "user_external", + "user_ldap", + "user_shibboleth", + "user_webdavauth", + "windows_network_drive" ] }