From cf6a8c3d503c19da25e84fc347e7ebeb0028b15d Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Sun, 24 Mar 2024 22:51:55 +0100 Subject: [PATCH 01/11] Make Joomla Updateable --- .../components/com_joomlaupdate/config.xml | 54 +++---------------- .../src/Model/UpdateModel.php | 8 +-- libraries/src/Updater/Adapter/TufAdapter.php | 4 +- libraries/src/Updater/ConstraintChecker.php | 5 +- 4 files changed, 11 insertions(+), 60 deletions(-) diff --git a/administrator/components/com_joomlaupdate/config.xml b/administrator/components/com_joomlaupdate/config.xml index 9259b7156e533..5315b10d319d4 100644 --- a/administrator/components/com_joomlaupdate/config.xml +++ b/administrator/components/com_joomlaupdate/config.xml @@ -2,36 +2,19 @@ -
+
- + - - + + + @@ -39,35 +22,12 @@ - - - + - + diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 9291cd9d14d2d..807b44e32e895 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -89,10 +89,6 @@ public function applyUpdateSite() $params = ComponentHelper::getParams('com_joomlaupdate'); switch ($params->get('updatesource', 'default')) { - case 'testing': - // "Testing" - $updateURL = 'https://update.joomla.org/core/test/list_test.xml'; - break; case 'custom': // "Custom" @@ -176,9 +172,7 @@ public function refreshUpdates($force = false) $minimumStability = Updater::STABILITY_STABLE; $comJoomlaupdateParams = ComponentHelper::getParams('com_joomlaupdate'); - if (\in_array($comJoomlaupdateParams->get('updatesource', 'default'), ['testing', 'custom'])) { - $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE); - } + $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE); $reflection = new \ReflectionObject($updater); $reflectionMethod = $reflection->getMethod('findUpdates'); diff --git a/libraries/src/Updater/Adapter/TufAdapter.php b/libraries/src/Updater/Adapter/TufAdapter.php index 625ae512b55d0..ca1ac2084593d 100644 --- a/libraries/src/Updater/Adapter/TufAdapter.php +++ b/libraries/src/Updater/Adapter/TufAdapter.php @@ -81,11 +81,11 @@ public function getUpdateTargets($options) $metaData = json_decode((string) $metaData, true); - if (!isset($metaData["signed"]["targets"])) { + if (!isset($metaData['signed']['targets'])) { return false; } - foreach ($metaData["signed"]["targets"] as $filename => $target) { + foreach ($metaData['signed']['targets'] as $filename => $target) { $version = $this->processTufTarget($filename, $target); if (!$version) { diff --git a/libraries/src/Updater/ConstraintChecker.php b/libraries/src/Updater/ConstraintChecker.php index e7ae984ac8182..47f15e00c394b 100644 --- a/libraries/src/Updater/ConstraintChecker.php +++ b/libraries/src/Updater/ConstraintChecker.php @@ -216,14 +216,11 @@ protected function checkSupportedDatabases(array $supportedDatabases) */ protected function checkStability(string $stability) { - $minimumStability = ComponentHelper::getParams('com_installer')->get('minimum_stability', Updater::STABILITY_STABLE); + $minimumStability = ComponentHelper::getParams('com_joomlaupdate')->get('minimum_stability', Updater::STABILITY_STABLE); $stabilityInt = $this->stabilityToInteger($stability); if (($stabilityInt < $minimumStability)) { - $this->failedEnvironmentConstraints->stability = new \stdClass(); - $this->failedEnvironmentConstraints->stability->required = $stability; - $this->failedEnvironmentConstraints->stability->used = $minimumStability; return false; } From 82adc4cf66faea7834287d28148bcc09e2df4a0f Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Sun, 24 Mar 2024 23:28:21 +0100 Subject: [PATCH 02/11] Reset formatting --- .../components/com_joomlaupdate/config.xml | 53 ++++++++++++++++--- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/administrator/components/com_joomlaupdate/config.xml b/administrator/components/com_joomlaupdate/config.xml index 5315b10d319d4..c912e75e74f73 100644 --- a/administrator/components/com_joomlaupdate/config.xml +++ b/administrator/components/com_joomlaupdate/config.xml @@ -2,19 +2,35 @@ -
+
- + + - - - + @@ -22,12 +38,35 @@ - + + + - + From a59042a3f29fe2827119db6ec652a5e5e6652a39 Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Sun, 24 Mar 2024 23:31:59 +0100 Subject: [PATCH 03/11] Remove comment --- administrator/components/com_joomlaupdate/config.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/config.xml b/administrator/components/com_joomlaupdate/config.xml index c912e75e74f73..a561dd7703bcf 100644 --- a/administrator/components/com_joomlaupdate/config.xml +++ b/administrator/components/com_joomlaupdate/config.xml @@ -16,7 +16,6 @@ validate="options" > - From aa8ae79f8c5fbf8bb4f484fc5c4868dc623103df Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Mon, 25 Mar 2024 09:54:17 +0100 Subject: [PATCH 04/11] Update ConstraintChecker.php --- libraries/src/Updater/ConstraintChecker.php | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/src/Updater/ConstraintChecker.php b/libraries/src/Updater/ConstraintChecker.php index 47f15e00c394b..877d9b1c6a0a3 100644 --- a/libraries/src/Updater/ConstraintChecker.php +++ b/libraries/src/Updater/ConstraintChecker.php @@ -221,7 +221,6 @@ protected function checkStability(string $stability) $stabilityInt = $this->stabilityToInteger($stability); if (($stabilityInt < $minimumStability)) { - return false; } From ea1b3fb967e28369d03fa1e6d1461144533adb8a Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Mon, 25 Mar 2024 09:55:01 +0100 Subject: [PATCH 05/11] Update UpdateModel.php --- .../components/com_joomlaupdate/src/Model/UpdateModel.php | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 807b44e32e895..cf9a698d903a7 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -89,7 +89,6 @@ public function applyUpdateSite() $params = ComponentHelper::getParams('com_joomlaupdate'); switch ($params->get('updatesource', 'default')) { - case 'custom': // "Custom" // @todo: check if the customurl is valid and not just "not empty". From 31faa5e62e98619daa9003873003a5df2723eb5c Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Wed, 27 Mar 2024 17:32:34 +0100 Subject: [PATCH 06/11] [CMS PR 43147] Use the right minimum stability (#133) --- .../com_joomlaupdate/src/Model/UpdateModel.php | 8 +------- libraries/src/Updater/Adapter/TufAdapter.php | 3 ++- libraries/src/Updater/ConstraintChecker.php | 17 ++++++++--------- libraries/src/Updater/Update.php | 2 +- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index cf9a698d903a7..2fddb7d6bdd16 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -168,11 +168,9 @@ public function refreshUpdates($force = false) } $updater = Updater::getInstance(); - $minimumStability = Updater::STABILITY_STABLE; $comJoomlaupdateParams = ComponentHelper::getParams('com_joomlaupdate'); $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE); - $reflection = new \ReflectionObject($updater); $reflectionMethod = $reflection->getMethod('findUpdates'); $methodParameters = $reflectionMethod->getParameters(); @@ -289,13 +287,9 @@ public function getUpdateInformation() return $this->updateInformation; } - $minimumStability = Updater::STABILITY_STABLE; $comJoomlaupdateParams = ComponentHelper::getParams('com_joomlaupdate'); $channel = $comJoomlaupdateParams->get('updatesource', 'default'); - - if (\in_array($channel, ['testing', 'custom'])) { - $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE); - } + $minimumStability = $comJoomlaupdateParams->get('minimum_stability', Updater::STABILITY_STABLE); $update = new Update(); diff --git a/libraries/src/Updater/Adapter/TufAdapter.php b/libraries/src/Updater/Adapter/TufAdapter.php index ca1ac2084593d..d57ec0949cc1c 100644 --- a/libraries/src/Updater/Adapter/TufAdapter.php +++ b/libraries/src/Updater/Adapter/TufAdapter.php @@ -21,6 +21,7 @@ use Joomla\CMS\TUF\TufFetcher; use Joomla\CMS\Updater\ConstraintChecker; use Joomla\CMS\Updater\UpdateAdapter; +use Joomla\CMS\Updater\Updater; use Symfony\Component\OptionsResolver\OptionsResolver; use Tuf\Exception\MetadataException; @@ -108,7 +109,7 @@ public function getUpdateTargets($options) // Return the version as a match if either all constraints are matched // or "only" env related constraints fail - the later one is the existing behavior of the XML updater if ( - $constraintChecker->check($version) === true + $constraintChecker->check($version, $options['minimum_stability'] ?? Updater::STABILITY_STABLE) === true || !empty((array) $constraintChecker->getFailedEnvironmentConstraints()) ) { return [$version]; diff --git a/libraries/src/Updater/ConstraintChecker.php b/libraries/src/Updater/ConstraintChecker.php index 877d9b1c6a0a3..75f6f11ee952f 100644 --- a/libraries/src/Updater/ConstraintChecker.php +++ b/libraries/src/Updater/ConstraintChecker.php @@ -13,7 +13,6 @@ \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects -use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Filter\InputFilter; use Joomla\CMS\Version; @@ -50,13 +49,14 @@ public function __construct() /** * Checks whether the passed constraints are matched * - * @param array $candidate The provided constraints to be checked + * @param array $candidate The provided constraints to be checked + * @param int $minimumStability The minimum stability required for updating * * @return boolean * * @since 5.1.0 */ - public function check(array $candidate) + public function check(array $candidate, $minimumStability = Updater::STABILITY_STABLE) { if (!isset($candidate['targetplatform'])) { // targetplatform is required @@ -89,7 +89,7 @@ public function check(array $candidate) // Check stability, assume true when not set if ( isset($candidate['stability']) - && !$this->checkStability($candidate['stability']) + && !$this->checkStability($candidate['stability'], $minimumStability) ) { $result = false; } @@ -208,19 +208,18 @@ protected function checkSupportedDatabases(array $supportedDatabases) /** * Check the stability * - * @param string $stability Stability to check + * @param string $stability Stability to check + * @param int $minimumStability The minimum stability required for updating * * @return boolean * * @since 5.1.0 */ - protected function checkStability(string $stability) + protected function checkStability(string $stability, $minimumStability = Updater::STABILITY_STABLE) { - $minimumStability = ComponentHelper::getParams('com_joomlaupdate')->get('minimum_stability', Updater::STABILITY_STABLE); - $stabilityInt = $this->stabilityToInteger($stability); - if (($stabilityInt < $minimumStability)) { + if ($stabilityInt < $minimumStability) { return false; } diff --git a/libraries/src/Updater/Update.php b/libraries/src/Updater/Update.php index 82df28b09dea1..0a68863064277 100644 --- a/libraries/src/Updater/Update.php +++ b/libraries/src/Updater/Update.php @@ -557,7 +557,7 @@ public function loadFromTuf(TufMetadata $metadataTable, string $url, $minimumSta continue; } - if (!$constraintChecker->check($target['custom'])) { + if (!$constraintChecker->check($target['custom'], $minimumStability)) { $this->otherUpdateInfo = $constraintChecker->getFailedEnvironmentConstraints(); continue; From c3f2301f6069aa43dbde206037b317c550ee12f5 Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Wed, 27 Mar 2024 18:08:07 +0100 Subject: [PATCH 07/11] Add testing as comment --- .../components/com_joomlaupdate/src/Model/UpdateModel.php | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 2fddb7d6bdd16..5b2bc74f08d0a 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -110,6 +110,7 @@ public function applyUpdateSite() * case 'lts': * case 'sts': (It's shown as "Default" because that option does not exist any more) * case 'nochange': + * case 'testing': */ $updateURL = 'https://update.joomla.org/cms/'; } From 1d6a489ed2db85d8ea3ad40ce91933277ae356a6 Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Wed, 27 Mar 2024 18:10:57 +0100 Subject: [PATCH 08/11] Remove testing --- .../com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php b/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php index 5147b60e20b6d..2426157f11968 100644 --- a/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php +++ b/administrator/components/com_joomlaupdate/src/View/Joomlaupdate/HtmlView.php @@ -239,12 +239,6 @@ public function display($tpl = null) $this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'); break; - case 'testing': - // "Testing" - $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_TESTING'; - $this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING'); - break; - case 'custom': // "Custom" $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_CUSTOM'; @@ -259,6 +253,7 @@ public function display($tpl = null) * case 'sts': * case 'lts': * case 'nochange': + * case 'testing': */ $this->langKey = 'COM_JOOMLAUPDATE_VIEW_DEFAULT_UPDATES_INFO_DEFAULT'; $this->updateSourceKey = Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT'); From 0fba72e4cf9c51d839fe66727751844589f49cc6 Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Wed, 27 Mar 2024 18:12:02 +0100 Subject: [PATCH 09/11] Deprecate language string --- administrator/language/en-GB/com_joomlaupdate.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini index df136e0de89f4..5902c52891851 100644 --- a/administrator/language/en-GB/com_joomlaupdate.ini +++ b/administrator/language/en-GB/com_joomlaupdate.ini @@ -15,6 +15,7 @@ COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_CUSTOM_ERROR="The custom URL field is empty COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT="Default" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_LABEL="Update Channel" COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT="Joomla Next" +; Deprecated, will be removed with 6.0 COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_TESTING="Testing" COM_JOOMLAUPDATE_CONFIG_VERSIONCHECK_DESC="Shows the checkbox in the pre–update check if any of the extensions installed on your site is potentially incompatible with the version of Joomla you are upgrading to. Note: the checkbox is displayed when upgrading to a new Joomla version family (minor or major version)." COM_JOOMLAUPDATE_CONFIG_VERSIONCHECK_LABEL="Potentially incompatible extensions checkbox" From 4e5ad25a63e00267fdd75da4d14a22a976c80163 Mon Sep 17 00:00:00 2001 From: Benjamin Trenkle Date: Wed, 27 Mar 2024 18:14:10 +0100 Subject: [PATCH 10/11] Validate customurl for URL type --- administrator/components/com_joomlaupdate/config.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/config.xml b/administrator/components/com_joomlaupdate/config.xml index a561dd7703bcf..e4c7918e7fccf 100644 --- a/administrator/components/com_joomlaupdate/config.xml +++ b/administrator/components/com_joomlaupdate/config.xml @@ -39,11 +39,13 @@ Date: Wed, 27 Mar 2024 18:30:42 +0100 Subject: [PATCH 11/11] Remove filter as we only want valid URLs --- administrator/components/com_joomlaupdate/config.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_joomlaupdate/config.xml b/administrator/components/com_joomlaupdate/config.xml index e4c7918e7fccf..feb77e4a5abd4 100644 --- a/administrator/components/com_joomlaupdate/config.xml +++ b/administrator/components/com_joomlaupdate/config.xml @@ -44,7 +44,6 @@ default="" length="50" showon="updatesource:custom" - filter="url" validate="url" />