Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b9d73ed
Improve UX: confusing message about the compatibility plugin
cyrez Oct 19, 2025
1414145
Improve UX: confusing message about the compatibility plugin
cyrez Oct 19, 2025
3f4a8ae
FIX UX/UI: Confusing information regarding the required settings for …
cyrez Oct 19, 2025
5838ee5
FIX UX/UI: Confusing information regarding the required settings for …
cyrez Oct 19, 2025
287f5e2
Update preupdatecheck.php
cyrez Oct 19, 2025
0e9aaf9
Add action required message to Joomla update language file
cyrez Oct 19, 2025
24bc45b
Update plugin label based on compatibility state
cyrez Oct 19, 2025
b62bc0f
Update error message for pre-update check
cyrez Oct 19, 2025
0edabea
Add new error messages for database and PHP issues
cyrez Oct 19, 2025
caee5bf
Refactor PHP version and module checks in UpdateModel
cyrez Oct 19, 2025
acb5cf2
Update plugin BC disabled notice link in language file
cyrez Oct 19, 2025
2bf3139
Update administrator/language/en-GB/com_joomlaupdate.ini
cyrez Oct 19, 2025
7607dfe
Update icons and classes for preupdatecheck.php
cyrez Oct 19, 2025
03738ba
Update plugin BC disabled notice for compatibility
cyrez Oct 19, 2025
7bdb807
[Label Capitalisation] Update error messages and notices in language …
cyrez Oct 20, 2025
946ae4a
Enhance language strings in com_joomlaupdate.ini
cyrez Oct 20, 2025
cdfdd8e
Update English language strings in com_joomlaupdate
cyrez Oct 21, 2025
2689d23
Add only new strings to be patch version ready
cyrez Oct 21, 2025
9e56375
Missing one reverted string to visually hidden text instead of title …
cyrez Oct 21, 2025
5b40546
Revise plugin notices and deprecations in language file
cyrez Oct 21, 2025
77d3a0a
Update plugin compat 6 label based on state
cyrez Oct 21, 2025
d0508b6
Add label for enabling the compatibility 6 plugin when disabled
cyrez Oct 21, 2025
f1fe4ee
Merge branch '5.4-dev' into patch-61
muhme Oct 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 38 additions & 19 deletions administrator/components/com_joomlaupdate/src/Model/UpdateModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -1360,23 +1360,29 @@ public function getPhpOptions()
* version is not shown. So this check is actually unnecessary.
*/
$option = new \stdClass();
$option->label = Text::sprintf('INSTL_PHP_VERSION_NEWER', $this->getTargetMinimumPHPVersion());
$option->state = $this->isPhpVersionSupported();
$option->notice = null;
$option->label = $option->state
? Text::sprintf('INSTL_PHP_VERSION_NEWER', $this->getTargetMinimumPHPVersion())
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NEWER_NOT_SUPPORTED', $this->getTargetMinimumPHPVersion());
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NEWER_NOT_SUPPORTED_NOTICE');
$options[] = $option;

// Check for zlib support.
$option = new \stdClass();
$option->label = Text::_('INSTL_ZLIB_COMPRESSION_SUPPORT');
$option->state = \extension_loaded('zlib');
$option->notice = null;
$option->label = $option->state
? Text::_('INSTL_ZLIB_COMPRESSION_SUPPORT')
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED', Text::_('INSTL_ZLIB_COMPRESSION_SUPPORT'));
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED_NOTICE');
$options[] = $option;

// Check for XML support.
$option = new \stdClass();
$option->label = Text::_('INSTL_XML_SUPPORT');
$option->state = \extension_loaded('xml');
$option->notice = null;
$option->label = $option->state
? Text::_('INSTL_XML_SUPPORT')
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED', Text::_('INSTL_XML_SUPPORT'));
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED_NOTICE');
$options[] = $option;

// Check for mbstring options.
Expand All @@ -1391,26 +1397,33 @@ public function getPhpOptions()

// Check for a missing native parse_ini_file implementation.
$option = new \stdClass();
$option->label = Text::_('INSTL_PARSE_INI_FILE_AVAILABLE');
$option->state = $this->getIniParserAvailability();
$option->notice = null;
$option->label = $option->state
? Text::_('INSTL_PARSE_INI_FILE_AVAILABLE')
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PARSE_INI_FILE_NOT_AVAILABLE', Text::_('INSTL_PARSE_INI_FILE_AVAILABLE'));
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PARSE_INI_FILE_NOT_AVAILABLE_NOTICE');
$options[] = $option;

// Check for missing native json_encode / json_decode support.
$option = new \stdClass();
$option->label = Text::_('INSTL_JSON_SUPPORT_AVAILABLE');
$option->state = \function_exists('json_encode') && \function_exists('json_decode');
$option->notice = null;
$options[] = $option;
$option = new \stdClass();
$option->state = \function_exists('json_encode') && \function_exists('json_decode');
$option->label = $option->state
? Text::_('INSTL_JSON_SUPPORT_AVAILABLE')
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED', Text::_('INSTL_JSON_SUPPORT_AVAILABLE'));
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED_NOTICE');
$options[] = $option;

$updateInformation = $this->getUpdateInformation();

// Extra checks when updating to the next major version of Joomla
if (version_compare($updateInformation['latest'], (string) Version::MAJOR_VERSION + 1, '>=')) {
// Check if configured database is compatible with the next major version of Joomla
$option = new \stdClass();
$option->label = Text::sprintf('INSTL_DATABASE_SUPPORTED', $this->getConfiguredDatabaseType());
$option->state = $this->isDatabaseTypeSupported();
$option->notice = null;
$option->label = $option->state
? Text::sprintf('INSTL_DATABASE_SUPPORTED', $this->getConfiguredDatabaseType())
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_NOT_SUPPORTED', $this->getConfiguredDatabaseType());
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_NOT_SUPPORTED_NOTICE');
$options[] = $option;

// Check if the Joomla 5 backwards compatibility plugin is disabled
Expand All @@ -1419,9 +1432,13 @@ public function getPhpOptions()
$this->translateExtensionName($plugin);

$option = new \stdClass();
$option->label = Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_DISABLED_TITLE', $plugin->name);
$option->state = !PluginHelper::isEnabled('behaviour', 'compat');
$option->notice = $option->state ? null : Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_DISABLED_NOTICE', $plugin->folder, $plugin->element);
$option->label = $option->state
? $plugin->name
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_BC_DISABLED_TITLE', $plugin->name);
$option->notice = $option->state
? null
: Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_BC_DISABLED_NOTICE', $plugin->name, $plugin->folder, $plugin->element);
$options[] = $option;

// Check if the Joomla 6 backwards compatibility plugin is enabled
Expand All @@ -1430,16 +1447,18 @@ public function getPhpOptions()
$this->translateExtensionName($plugin);

$option = new \stdClass();
$option->label = Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_ENABLED_TITLE', $plugin->name);
$option->label = $plugin->name;
$option->state = PluginHelper::isEnabled('behaviour', 'compat6');
$option->notice = $option->state ? null : Text::sprintf('COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_ENABLED_NOTICE', $plugin->folder, $plugin->element);
$options[] = $option;
}

// Check if database structure is up to date
$option = new \stdClass();
$option->label = Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_TITLE');
$option->state = $this->getDatabaseSchemaCheck();
$option->label = $option->state
? Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_TITLE')
: Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_NOT_UP_TO_DATE');
$option->notice = $option->state ? null : Text::_('COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_NOTICE');
$options[] = $option;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
</thead>
<tbody>
<?php foreach ($this->phpOptions as $option) : ?>
<tr>
<tr<?php echo ($option->state ? '' : ' class="border-3 border-danger"'); ?>>
<th scope="row">
<?php echo $option->label; ?>
<?php if ($option->notice) : ?>
Expand All @@ -172,9 +172,11 @@
<?php endif; ?>
</th>
<td>
<span class="badge bg-<?php echo $option->state ? 'success' : 'danger'; ?>">
<?php echo Text::_($option->state ? 'JYES' : 'JNO'); ?>
</span>
<?php if ($option->state) : ?>
<span class="icon-checkmark-2 text-success" aria-hidden="true"></span> <span><?php echo Text::_('JOK'); ?></span>
<?php else : ?>
<span class="icon-cancel-circle text-danger" aria-hidden="true"></span> <span class="fw-bold"><?php echo Text::_('COM_JOOMLAUPDATE_ACTION_REQUIRED'); ?></span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
Expand Down
12 changes: 12 additions & 0 deletions administrator/language/en-GB/com_joomlaupdate.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
; License GNU General Public License version 2 or later; see LICENSE.txt
; Note : All ini files need to be saved as UTF-8

COM_JOOMLAUPDATE_ACTION_REQUIRED="Action required"
COM_JOOMLAUPDATE_AUTOUPDATE_REGISTER_ERROR="Error while registering to automated update service: %s (%d)."
COM_JOOMLAUPDATE_AUTOUPDATE_REGISTER_SUCCESS="Registered to automated update service."
COM_JOOMLAUPDATE_AUTOUPDATE_REGISTER_UNAVAILABLE="The automated update service is unavailable for your site as it's not accessible from the internet. Automated updates have been disabled."
Expand Down Expand Up @@ -125,6 +126,9 @@ COM_JOOMLAUPDATE_VIEW_COMPLETE_WITH_ERROR_MESSAGE="The update completed with err
COM_JOOMLAUPDATE_VIEW_DEFAULT_ACTUAL="Actual"
COM_JOOMLAUPDATE_VIEW_DEFAULT_COMPATIBILITY_CHECK="Joomla! %s Compatibility Check"
COM_JOOMLAUPDATE_VIEW_DEFAULT_COMPATIBLE_UPDATE_WARNING="Extensions marked with <span class='label label-warning'>X.X.X</span> have an extension update available for the current version of Joomla which is not marked as compatible with the updated version of Joomla. You should contact the extension developer for more information."
COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_NOT_SUPPORTED="Database Not Supported: %s"
COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_NOT_SUPPORTED_NOTICE="Please check the supported databases in the <a class=\"alert-link\" href=\"https://manual.joomla.org/docs/next/get-started/technical-requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Technical Requirements</a>."
COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_NOT_UP_TO_DATE="Database Table Structure is not Up to Date"
COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_NOTICE="Go to <a href=\"index.php?option=com_installer&view=database\">'System - Maintenance - Database'</a> and use the 'Update Structure' button."
COM_JOOMLAUPDATE_VIEW_DEFAULT_DATABASE_STRUCTURE_TITLE="Database Table Structure Up to Date"
COM_JOOMLAUPDATE_VIEW_DEFAULT_DB_NOT_SUPPORTED="Your database type is not supported"
Expand Down Expand Up @@ -178,8 +182,16 @@ COM_JOOMLAUPDATE_VIEW_DEFAULT_NO_LIVE_UPDATE_DESC="You must update this componen
COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE="Update package URL"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE_INFO="You can also download <a href=\"%s\" class=\"alert-link\" target=\"_blank\" rel=\"noopener noreferrer\">the update package</a> to your computer and then use the fields below to upload and install it."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PACKAGE_REINSTALL="Reinstall package URL"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PARSE_INI_FILE_NOT_AVAILABLE="%s is not available"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PARSE_INI_FILE_NOT_AVAILABLE_NOTICE="Please check the <a class=\"alert-link\" href=\"https://manual.joomla.org/docs/next/get-started/technical-requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Technical Requirements</a>."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED="%s not loaded"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_MODULE_NOT_LOADED_NOTICE="Please check the required PHP modules in the <a class=\"alert-link\" href=\"https://manual.joomla.org/docs/next/get-started/technical-requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Technical Requirements</a>."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NEWER_NOT_SUPPORTED="PHP Version Not Supported: %s"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NEWER_NOT_SUPPORTED_NOTICE="Please check the supported PHP versions in the <a class=\"alert-link\" href=\"https://manual.joomla.org/docs/next/get-started/technical-requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Technical Requirements</a>."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NOT_SUPPORTED="Your PHP version is not supported"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PHP_VERSION_NOT_SUPPORTED_DESC="An update to Joomla %1$s was found, but your currently installed PHP version does not match <a href=\"https://downloads.joomla.org/technical-requirements\">the minimum requirements for Joomla %1$s</a>."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_BC_DISABLED_TITLE="The '%s' plugin must be disabled"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_BC_DISABLED_NOTICE="This plugin must be disabled and your site working correctly before updating. <br><span class=\"icon-warning\" aria-hidden=\"true\"></span> Before disabling '%1$s', read the manual: <a class=\"alert-link\" href=\"https://manual.joomla.org/migrations/44-50/compat-plugin/#why-should-you-try-to-disable-the-plugin\" target=\"_blank\" rel=\"noopener noreferrer\">Why Should You Try to Disable the Plugin?</a> <br>Go to <a href=\"index.php?option=com_plugins&view=plugins&filter[folder]=%2$s&filter[element]=%3$s\">'System - Manage - Plugins'</a> and disable the plugin."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_DISABLED_NOTICE="Go to <a href=\"index.php?option=com_plugins&view=plugins&filter[folder]=%1$s&filter[element]=%2$s\">'System - Manage - Plugins'</a> and disable the plugin."
COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_DISABLED_TITLE="The '%s' plugin is disabled"
COM_JOOMLAUPDATE_VIEW_DEFAULT_PLUGIN_ENABLED_NOTICE="Go to <a href=\"index.php?option=com_plugins&view=plugins&filter[folder]=%1$s&filter[element]=%2$s\">'System - Manage - Plugins'</a> and enable the plugin."
Expand Down