From 5333db24e3214764742d1b04f9b254e6ad29cb69 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Fri, 21 Jun 2024 22:25:28 +0200 Subject: [PATCH 1/8] Add installer script to com_joomlaupdate Add installer script to com_joomlaupdate for reset of the core update channel from "next" to "default" when updating the component. --- .../com_joomlaupdate/joomlaupdate.xml | 5 +- .../components/com_joomlaupdate/script.php | 97 +++++++++++++++++++ .../language/en-GB/com_joomlaupdate.ini | 1 + 3 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 administrator/components/com_joomlaupdate/script.php diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index 6c57c2fbb43ef..2e2d3023aaac8 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -2,13 +2,14 @@ com_joomlaupdate Joomla! Project - 2021-08 + 2024-06 (C) 2012 Open Source Matters, Inc. GNU General Public License version 2 or later; see LICENSE.txt admin@joomla.org www.joomla.org - 4.0.3 + 5.1.2 COM_JOOMLAUPDATE_XML_DESCRIPTION + admin/script.php Joomla\Component\Joomlaupdate js diff --git a/administrator/components/com_joomlaupdate/script.php b/administrator/components/com_joomlaupdate/script.php new file mode 100644 index 0000000000000..651fc69ca2afc --- /dev/null +++ b/administrator/components/com_joomlaupdate/script.php @@ -0,0 +1,97 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + * + * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace + */ + +use Joomla\CMS\Application\AdministratorApplication; +use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Installer\InstallerAdapter; +use Joomla\CMS\Installer\InstallerScriptInterface; +use Joomla\CMS\Language\Text; +use Joomla\Database\DatabaseInterface; +use Joomla\DI\Container; +use Joomla\DI\ServiceProviderInterface; + +// phpcs:disable PSR1.Files.SideEffects +\defined('_JEXEC') or die; +// phpcs:enable PSR1.Files.SideEffects + +return new class () implements ServiceProviderInterface { + public function register(Container $container) + { + $container->set( + InstallerScriptInterface::class, + new class ( + $container->get(AdministratorApplication::class), + $container->get(DatabaseInterface::class) + ) implements InstallerScriptInterface { + private AdministratorApplication $app; + private DatabaseInterface $db; + + public function __construct(AdministratorApplication $app, DatabaseInterface $db) + { + $this->app = $app; + $this->db = $db; + } + + public function update(InstallerAdapter $parent): bool + { + // Reset update source from "next" to "default" + try { + $this->resetUpdateSource(); + } catch (\Throwable $e) { + enqueueMessage( + Text::sprintf( + 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED', + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') + ), + 'warning' + ); + } + + return true; + } + + /** + * Reset update source from "next" to "default" + * + * @return void + * + * @since __DEPLOY_VERSION__ + * @throws \RuntimeException + */ + private function resetUpdateSource() + { + // Get current update source + $params = ComponentHelper::getParams('com_joomlaupdate'); + + // Do nothing if not "next" + if ($params->get('updatesource', 'default') !== 'next') { + return; + } + + $params->set('updatesource', 'default'); + + $params = $params->toString(); + $query = $this->db->getQuery(true) + ->update($this->db->quoteName('#__extensions')) + ->set($this->db->quoteName('params') . ' = :params') + ->where($this->db->quoteName('type') . ' = ' . $this->db->quote('component')) + ->where($this->db->quoteName('element') . ' = ' . $this->db->quote('com_joomlaupdate')) + ->bind(':params', $params); + + $this->db->setQuery($query); + $this->db->execute(); + } + } + ); + } +}; diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini index 5902c52891851..ee5db580f0885 100644 --- a/administrator/language/en-GB/com_joomlaupdate.ini +++ b/administrator/language/en-GB/com_joomlaupdate.ini @@ -69,6 +69,7 @@ COM_JOOMLAUPDATE_SELF_EMPTYSTATE_CONTENT="You must update this component first b COM_JOOMLAUPDATE_SELF_EMPTYSTATE_TITLE="A new version of the Joomla Update Component is available" COM_JOOMLAUPDATE_SYSTEM_CHECK="System Check" COM_JOOMLAUPDATE_TOOLBAR_CHECK="Check for Updates" +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to change the update channel from \"%1$s\" to \"%2$s\". Please change it in the Joomla Update Component's options so you don't miss future updates for your Joomla version." COM_JOOMLAUPDATE_UPDATE_CHECK="Update Check" COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP="I'm aware that a backup before any update is highly recommended." COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_TITLE="Update your site to \"Joomla! %s\"" From 0b6167888b4d6e9ee711a51adaacb0a0bf76dc27 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Fri, 21 Jun 2024 22:26:20 +0200 Subject: [PATCH 2/8] Reset update channel from "Next" to "default" Reset the core update channel from "Next" to "default" at the end of an update. --- .../src/Model/UpdateModel.php | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index b28ed81f2c716..b6d0e5ba00494 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -849,6 +849,19 @@ public function finaliseUpgrade() return false; } + // Reset update source from "next" to "default" + try { + $this->resetUpdateSource(); + } catch (\Throwable $e) { + $this->collectError('Reset update source to default', $e); + $msg .= Text::sprintf( + 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED', + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') + ) + . "\n"; + } + if ($msg) { $installer->set('extension_message', $msg); } @@ -2027,4 +2040,37 @@ private function checkManifestXML(string $manifest, $packageName) throw new \RuntimeException(Text::sprintf('COM_JOOMLAUPDATE_VIEW_UPLOAD_ERROR_DOWNGRADE', $packageName, $versionPackage, $currentVersion), 500); } } + + /** + * Reset update source from "next" to "default" + * + * @return void + * + * @since __DEPLOY_VERSION__ + * @throws \RuntimeException + */ + private function resetUpdateSource() + { + // Get current update source + $params = ComponentHelper::getParams('com_joomlaupdate'); + + // Do nothing if not "next" + if ($params->get('updatesource', 'default') !== 'next') { + return; + } + + $params->set('updatesource', 'default'); + + $params = $params->toString(); + $db = $this->getDatabase(); + $query = $db->getQuery(true) + ->update($db->quoteName('#__extensions')) + ->set($db->quoteName('params') . ' = :params') + ->where($db->quoteName('type') . ' = ' . $db->quote('component')) + ->where($db->quoteName('element') . ' = ' . $db->quote('com_joomlaupdate')) + ->bind(':params', $params); + + $db->setQuery($query); + $db->execute(); + } } From 8ef128b0df6ece68d8d8a9c4422b572989854582 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jun 2024 10:00:56 +0200 Subject: [PATCH 3/8] Some fixes + add new language strings to sys.ini --- .../com_joomlaupdate/joomlaupdate.xml | 2 +- .../components/com_joomlaupdate/script.php | 46 ++++++++++++++----- .../src/Model/UpdateModel.php | 21 +++++---- .../language/en-GB/com_joomlaupdate.ini | 3 +- .../language/en-GB/com_joomlaupdate.sys.ini | 4 ++ 5 files changed, 54 insertions(+), 22 deletions(-) diff --git a/administrator/components/com_joomlaupdate/joomlaupdate.xml b/administrator/components/com_joomlaupdate/joomlaupdate.xml index 2e2d3023aaac8..1a793bac57c43 100644 --- a/administrator/components/com_joomlaupdate/joomlaupdate.xml +++ b/administrator/components/com_joomlaupdate/joomlaupdate.xml @@ -9,7 +9,7 @@ www.joomla.org 5.1.2 COM_JOOMLAUPDATE_XML_DESCRIPTION - admin/script.php + script.php Joomla\Component\Joomlaupdate js diff --git a/administrator/components/com_joomlaupdate/script.php b/administrator/components/com_joomlaupdate/script.php index 651fc69ca2afc..ab899ede01cd1 100644 --- a/administrator/components/com_joomlaupdate/script.php +++ b/administrator/components/com_joomlaupdate/script.php @@ -41,29 +41,51 @@ public function __construct(AdministratorApplication $app, DatabaseInterface $db $this->db = $db; } + public function install(InstallerAdapter $parent): bool + { + return true; + } + public function update(InstallerAdapter $parent): bool { + $parent->loadLanguage(JPATH_ADMINISTRATOR . '/languages'); + // Reset update source from "next" to "default" try { - $this->resetUpdateSource(); + $dbChanged = $this->resetUpdateSource(); } catch (\Throwable $e) { - enqueueMessage( - Text::sprintf( - 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED', - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') - ), - 'warning' - ); + $this->app->enqueueMessage(Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED'), 'warning'); + + $dbChanged = false; } + // Show message if update source changed + if ($dbChanged) { + $this->app->enqueueMessage(Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK'), 'notice'); + } + + return true; + } + + public function uninstall(InstallerAdapter $parent): bool + { + return true; + } + + public function preflight(string $type, InstallerAdapter $parent): bool + { + return true; + } + + public function postflight(string $type, InstallerAdapter $parent): bool + { return true; } /** * Reset update source from "next" to "default" * - * @return void + * @return boolean true if update source is reset, false if not * * @since __DEPLOY_VERSION__ * @throws \RuntimeException @@ -75,7 +97,7 @@ private function resetUpdateSource() // Do nothing if not "next" if ($params->get('updatesource', 'default') !== 'next') { - return; + return false; } $params->set('updatesource', 'default'); @@ -90,6 +112,8 @@ private function resetUpdateSource() $this->db->setQuery($query); $this->db->execute(); + + return true; } } ); diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index b6d0e5ba00494..9d1c69415cd4b 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -851,15 +851,16 @@ public function finaliseUpgrade() // Reset update source from "next" to "default" try { - $this->resetUpdateSource(); + $dbChanged = $this->resetUpdateSource(); } catch (\Throwable $e) { $this->collectError('Reset update source to default', $e); - $msg .= Text::sprintf( - 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED', - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') - ) - . "\n"; + $msg .= Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED') . "\n"; + $dbChanged = false; + } + + // Show message if update source changed + if ($dbChanged) { + Factory::getApplication()->enqueueMessage(Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK'), 'notice'); } if ($msg) { @@ -2044,7 +2045,7 @@ private function checkManifestXML(string $manifest, $packageName) /** * Reset update source from "next" to "default" * - * @return void + * @return boolean true if update source is reset, false if not * * @since __DEPLOY_VERSION__ * @throws \RuntimeException @@ -2056,7 +2057,7 @@ private function resetUpdateSource() // Do nothing if not "next" if ($params->get('updatesource', 'default') !== 'next') { - return; + return false; } $params->set('updatesource', 'default'); @@ -2072,5 +2073,7 @@ private function resetUpdateSource() $db->setQuery($query); $db->execute(); + + return true; } } diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini index ee5db580f0885..2df0e15fbd236 100644 --- a/administrator/language/en-GB/com_joomlaupdate.ini +++ b/administrator/language/en-GB/com_joomlaupdate.ini @@ -69,7 +69,8 @@ COM_JOOMLAUPDATE_SELF_EMPTYSTATE_CONTENT="You must update this component first b COM_JOOMLAUPDATE_SELF_EMPTYSTATE_TITLE="A new version of the Joomla Update Component is available" COM_JOOMLAUPDATE_SYSTEM_CHECK="System Check" COM_JOOMLAUPDATE_TOOLBAR_CHECK="Check for Updates" -COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to change the update channel from \"%1$s\" to \"%2$s\". Please change it in the Joomla Update Component's options so you don't miss future updates for your Joomla version." +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to reset the update channel from \"Joomla Next\" to \"Default\". Please change it in the Joomla Update Component's options so you don't miss future updates." +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK="The update channel has been reset from \"Joomla Next\" to \"Default\"." COM_JOOMLAUPDATE_UPDATE_CHECK="Update Check" COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP="I'm aware that a backup before any update is highly recommended." COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_TITLE="Update your site to \"Joomla! %s\"" diff --git a/administrator/language/en-GB/com_joomlaupdate.sys.ini b/administrator/language/en-GB/com_joomlaupdate.sys.ini index 42b51de9d9608..d1641aa1453e1 100644 --- a/administrator/language/en-GB/com_joomlaupdate.sys.ini +++ b/administrator/language/en-GB/com_joomlaupdate.sys.ini @@ -8,3 +8,7 @@ COM_JOOMLAUPDATE_DEFAULT_VIEW_DEFAULT_DESC="Check for Joomla! updates and update COM_JOOMLAUPDATE_DEFAULT_VIEW_DEFAULT_TITLE="View Joomla! Updates" COM_JOOMLAUPDATE_JOOMLAUPDATE_VIEW_DISPLAY_BADGE="Display Badge" COM_JOOMLAUPDATE_XML_DESCRIPTION="One-click update to the latest Joomla release." + +; The following two strings are deprecated and will be removed with 6.0 from this file here. They will remain in file com_joomlaupdate.ini. +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to reset the update channel from \"Joomla Next\" to \"Default\". Please change it in the Joomla Update Component's options so you don't miss future updates." +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK="The update channel has been reset from \"Joomla Next\" to \"Default\"." From 4850b2f14ace138703f63ae54aa38e1c6e1681e6 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jun 2024 10:12:31 +0200 Subject: [PATCH 4/8] More fixes --- .../components/com_joomlaupdate/script.php | 4 ++-- .../com_joomlaupdate/src/Model/UpdateModel.php | 16 ++++++++++++++-- .../language/en-GB/com_joomlaupdate.ini | 4 ++-- .../language/en-GB/com_joomlaupdate.sys.ini | 6 +++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/administrator/components/com_joomlaupdate/script.php b/administrator/components/com_joomlaupdate/script.php index ab899ede01cd1..9453f7161e32a 100644 --- a/administrator/components/com_joomlaupdate/script.php +++ b/administrator/components/com_joomlaupdate/script.php @@ -54,14 +54,14 @@ public function update(InstallerAdapter $parent): bool try { $dbChanged = $this->resetUpdateSource(); } catch (\Throwable $e) { - $this->app->enqueueMessage(Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED'), 'warning'); + $this->app->enqueueMessage(Text::_('COM_JOOMLAUPDATE_SCRIPT_CHANGE_UPDATE_SOURCE_FAILED'), 'warning'); $dbChanged = false; } // Show message if update source changed if ($dbChanged) { - $this->app->enqueueMessage(Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK'), 'notice'); + $this->app->enqueueMessage(Text::_('COM_JOOMLAUPDATE_SCRIPT_CHANGE_UPDATE_SOURCE_OK'), 'notice'); } return true; diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 9d1c69415cd4b..8704df6dba7c1 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -854,13 +854,25 @@ public function finaliseUpgrade() $dbChanged = $this->resetUpdateSource(); } catch (\Throwable $e) { $this->collectError('Reset update source to default', $e); - $msg .= Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED') . "\n"; + $msg .= Text::sprintf( + 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED', + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') + ) + . "\n"; $dbChanged = false; } // Show message if update source changed if ($dbChanged) { - Factory::getApplication()->enqueueMessage(Text::_('COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK'), 'notice'); + Factory::getApplication()->enqueueMessage( + Text::sprintf( + 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK', + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), + Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') + ), + 'notice' + ); } if ($msg) { diff --git a/administrator/language/en-GB/com_joomlaupdate.ini b/administrator/language/en-GB/com_joomlaupdate.ini index 2df0e15fbd236..497cf98b92df6 100644 --- a/administrator/language/en-GB/com_joomlaupdate.ini +++ b/administrator/language/en-GB/com_joomlaupdate.ini @@ -69,8 +69,8 @@ COM_JOOMLAUPDATE_SELF_EMPTYSTATE_CONTENT="You must update this component first b COM_JOOMLAUPDATE_SELF_EMPTYSTATE_TITLE="A new version of the Joomla Update Component is available" COM_JOOMLAUPDATE_SYSTEM_CHECK="System Check" COM_JOOMLAUPDATE_TOOLBAR_CHECK="Check for Updates" -COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to reset the update channel from \"Joomla Next\" to \"Default\". Please change it in the Joomla Update Component's options so you don't miss future updates." -COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK="The update channel has been reset from \"Joomla Next\" to \"Default\"." +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to reset the update channel from \"%1$s\" to \"%2$s\". Please change it in the Joomla Update Component's options so you don't miss future updates." +COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK="The update channel has been reset from \"%1$s\" to \"%2$s\"." COM_JOOMLAUPDATE_UPDATE_CHECK="Update Check" COM_JOOMLAUPDATE_UPDATE_CONFIRM_BACKUP="I'm aware that a backup before any update is highly recommended." COM_JOOMLAUPDATE_UPDATE_EMPTYSTATE_TITLE="Update your site to \"Joomla! %s\"" diff --git a/administrator/language/en-GB/com_joomlaupdate.sys.ini b/administrator/language/en-GB/com_joomlaupdate.sys.ini index d1641aa1453e1..62a0864341003 100644 --- a/administrator/language/en-GB/com_joomlaupdate.sys.ini +++ b/administrator/language/en-GB/com_joomlaupdate.sys.ini @@ -9,6 +9,6 @@ COM_JOOMLAUPDATE_DEFAULT_VIEW_DEFAULT_TITLE="View Joomla! Updates" COM_JOOMLAUPDATE_JOOMLAUPDATE_VIEW_DISPLAY_BADGE="Display Badge" COM_JOOMLAUPDATE_XML_DESCRIPTION="One-click update to the latest Joomla release." -; The following two strings are deprecated and will be removed with 6.0 from this file here. They will remain in file com_joomlaupdate.ini. -COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED="Failed to reset the update channel from \"Joomla Next\" to \"Default\". Please change it in the Joomla Update Component's options so you don't miss future updates." -COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK="The update channel has been reset from \"Joomla Next\" to \"Default\"." +; The following two strings are deprecated and will be removed with 6.0. +COM_JOOMLAUPDATE_SCRIPT_CHANGE_UPDATE_SOURCE_FAILED="Failed to reset the update channel from \"Joomla Next\" to \"Default\". Please change it in the Joomla Update Component's options so you don't miss future updates." +COM_JOOMLAUPDATE_SCRIPT_CHANGE_UPDATE_SOURCE_OK="The update channel has been reset from \"Joomla Next\" to \"Default\"." From f2b21f840ada5cefdd1cefca447816f0557eec88 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jun 2024 10:36:53 +0200 Subject: [PATCH 5/8] Add deprecation for installer script --- administrator/components/com_joomlaupdate/script.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/administrator/components/com_joomlaupdate/script.php b/administrator/components/com_joomlaupdate/script.php index 9453f7161e32a..99b5baf87ad7b 100644 --- a/administrator/components/com_joomlaupdate/script.php +++ b/administrator/components/com_joomlaupdate/script.php @@ -23,6 +23,13 @@ \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects +/** + * Joomla Update Component installer script. + * + * @since __DEPLOY_VERSION__ + * + * @deprecated 5.1.2 will be removed in 6.0 + */ return new class () implements ServiceProviderInterface { public function register(Container $container) { From a6ccb9fac7aecdab5428fd819272788ef63758bb Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jun 2024 15:35:58 +0200 Subject: [PATCH 6/8] Move channel reset from model to controller --- .../src/Controller/DisplayController.php | 1 + .../src/Controller/UpdateController.php | 9 ++++++ .../src/Model/UpdateModel.php | 28 +------------------ .../tmpl/joomlaupdate/complete.php | 12 ++++++++ 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php b/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php index b03b7d6dc31eb..dba5f257ae347 100644 --- a/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php +++ b/administrator/components/com_joomlaupdate/src/Controller/DisplayController.php @@ -71,6 +71,7 @@ public function display($cachable = false, $urlparams = false) $state = $model->getState(); $state->set('update_finished_with_error', $this->app->getUserState('com_joomlaupdate.update_finished_with_error')); $state->set('update_errors', (array) $this->app->getUserState('com_joomlaupdate.update_errors', [])); + $state->set('update_channel_reset', $this->app->getUserState('com_joomlaupdate.update_channel_reset')); $state->set('installer_message', $this->app->getUserState('com_joomlaupdate.installer_message')); $state->set('log_file', $this->app->get('log_path') . '/joomla_update.php'); } diff --git a/administrator/components/com_joomlaupdate/src/Controller/UpdateController.php b/administrator/components/com_joomlaupdate/src/Controller/UpdateController.php index 727f4edd9e9c3..c04fc78ce17c2 100644 --- a/administrator/components/com_joomlaupdate/src/Controller/UpdateController.php +++ b/administrator/components/com_joomlaupdate/src/Controller/UpdateController.php @@ -156,6 +156,15 @@ public function finalise() $model->collectError('finaliseUpgrade', $e); } + try { + $updateSourceChanged = $model->resetUpdateSource(); + } catch (\Throwable $e) { + $model->collectError('resetUpdateSource', $e); + $updateSourceChanged = null; + } + + $this->app->setUserState('com_joomlaupdate.update_channel_reset', $updateSourceChanged); + // Check for update errors if ($model->getErrors()) { // The errors already should be logged at this point diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 8704df6dba7c1..17a657d18f204 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -849,32 +849,6 @@ public function finaliseUpgrade() return false; } - // Reset update source from "next" to "default" - try { - $dbChanged = $this->resetUpdateSource(); - } catch (\Throwable $e) { - $this->collectError('Reset update source to default', $e); - $msg .= Text::sprintf( - 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_FAILED', - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') - ) - . "\n"; - $dbChanged = false; - } - - // Show message if update source changed - if ($dbChanged) { - Factory::getApplication()->enqueueMessage( - Text::sprintf( - 'COM_JOOMLAUPDATE_UPDATE_CHANGE_UPDATE_SOURCE_OK', - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_NEXT'), - Text::_('COM_JOOMLAUPDATE_CONFIG_UPDATESOURCE_DEFAULT') - ), - 'notice' - ); - } - if ($msg) { $installer->set('extension_message', $msg); } @@ -2062,7 +2036,7 @@ private function checkManifestXML(string $manifest, $packageName) * @since __DEPLOY_VERSION__ * @throws \RuntimeException */ - private function resetUpdateSource() + public function resetUpdateSource() { // Get current update source $params = ComponentHelper::getParams('com_joomlaupdate'); diff --git a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php index 53b17ccf0fc6c..444e51d12bb07 100644 --- a/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php +++ b/administrator/components/com_joomlaupdate/tmpl/joomlaupdate/complete.php @@ -19,6 +19,7 @@ $hadErrors = $this->state->get('update_finished_with_error'); $errors = $this->state->get('update_errors'); +$channelReset = $this->state->get('update_channel_reset'); $logFile = $this->state->get('log_file'); $installerMsg = $this->state->get('installer_message'); $forumLink = 'https://forum.joomla.org/'; @@ -27,6 +28,17 @@

+ +
+ + +
+ +
+ + +
+
From 84bf58b8f070711f70962461db4c51d208e2d10e Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jun 2024 19:01:07 +0200 Subject: [PATCH 7/8] Fixes from PHP cs fixer --- administrator/components/com_joomlaupdate/script.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/administrator/components/com_joomlaupdate/script.php b/administrator/components/com_joomlaupdate/script.php index 99b5baf87ad7b..5aabfbcbc7f3e 100644 --- a/administrator/components/com_joomlaupdate/script.php +++ b/administrator/components/com_joomlaupdate/script.php @@ -36,8 +36,8 @@ public function register(Container $container) $container->set( InstallerScriptInterface::class, new class ( - $container->get(AdministratorApplication::class), - $container->get(DatabaseInterface::class) + $container->get(AdministratorApplication::class), + $container->get(DatabaseInterface::class) ) implements InstallerScriptInterface { private AdministratorApplication $app; private DatabaseInterface $db; From 6d4329cbdfc89d3bb4857c5b8b694d8416130f62 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sat, 22 Jun 2024 19:07:31 +0200 Subject: [PATCH 8/8] Remove unnecessary PHPCS hint --- administrator/components/com_joomlaupdate/script.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/administrator/components/com_joomlaupdate/script.php b/administrator/components/com_joomlaupdate/script.php index 5aabfbcbc7f3e..f21941ec56e62 100644 --- a/administrator/components/com_joomlaupdate/script.php +++ b/administrator/components/com_joomlaupdate/script.php @@ -6,8 +6,6 @@ * * @copyright (C) 2024 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt - * - * @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace */ use Joomla\CMS\Application\AdministratorApplication;