diff --git a/administrator/components/com_admin/postinstall/htaccessbrotli.php b/administrator/components/com_admin/postinstall/htaccessbrotli.php index 7063b0f6906a6..58f7bb02b37b9 100644 --- a/administrator/components/com_admin/postinstall/htaccessbrotli.php +++ b/administrator/components/com_admin/postinstall/htaccessbrotli.php @@ -26,5 +26,11 @@ */ function admin_postinstall_htaccessbrotli_condition() { - return true; + $htaccessContent = ''; + + if (is_file(JPATH_ROOT . '/.htaccess') || is_file(JPATH_ROOT . '/htaccess.txt')) { + $htaccessContent = file_get_contents(is_file(JPATH_ROOT . '/.htaccess') ? JPATH_ROOT . '/.htaccess' : JPATH_ROOT . '/htaccess.txt'); + } + + return !str_contains($htaccessContent, 'E=no-brotli:1'); } diff --git a/administrator/components/com_admin/sql/updates/mysql/5.1.0-2024-03-28.sql b/administrator/components/com_admin/sql/updates/mysql/5.1.0-2024-03-28.sql index 2c3f6ec6e7884..e76716010f9fd 100644 --- a/administrator/components/com_admin/sql/updates/mysql/5.1.0-2024-03-28.sql +++ b/administrator/components/com_admin/sql/updates/mysql/5.1.0-2024-03-28.sql @@ -1,5 +1,12 @@ -- -- Add post-installation message about Brotli compression in .htaccess -- -INSERT IGNORE INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) -SELECT `extension_id`, 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '5.1.0', 1 FROM `#__extensions` WHERE `name` = 'files_joomla'; +-- This statement had to be modified to prevent duplicate postinstall messages +-- when updating from 4.4. +-- See https://github.com/joomla/joomla-cms/pull/43182 for details. +-- +INSERT INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`) +SELECT `extension_id`, 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '5.1.0', 1 + FROM `#__extensions` + WHERE `name` = 'files_joomla' + AND (SELECT COUNT(a.`postinstall_message_id`) FROM `#__postinstall_messages` a WHERE a.`title_key` = 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE') = 0; diff --git a/administrator/components/com_admin/sql/updates/postgresql/5.1.0-2024-03-28.sql b/administrator/components/com_admin/sql/updates/postgresql/5.1.0-2024-03-28.sql index 6858e2b668b28..82bf0d612608c 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/5.1.0-2024-03-28.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/5.1.0-2024-03-28.sql @@ -1,6 +1,12 @@ -- -- Add post-installation message about Brotli compression in .htaccess -- +-- This statement had to be modified to prevent duplicate postinstall messages +-- when updating from 4.4. +-- See https://github.com/joomla/joomla-cms/pull/43182 for details. +-- INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled") -SELECT "extension_id", 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '5.1.0', 1 FROM "#__extensions" WHERE "name" = 'files_joomla' -ON CONFLICT DO NOTHING; +SELECT "extension_id", 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '5.1.0', 1 + FROM "#__extensions" + WHERE "name" = 'files_joomla' + AND (SELECT COUNT(a."postinstall_message_id") FROM "#__postinstall_messages" a WHERE a."title_key" = 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE') = 0;