Skip to content

Commit 67a0b93

Browse files
authored
Merge branch '5.4-dev' into 54-task-updatenotification-email
2 parents 26c4565 + ce4e5e9 commit 67a0b93

File tree

430 files changed

+914
-1684
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

430 files changed

+914
-1684
lines changed

.github/CONTRIBUTING.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@ You are welcome to submit a contribution for review and possible inclusion in th
1515
Please be patient as not all items will be viewed or tested immediately (remember, all bug testing for the Joomla! CMS is done by volunteers) and be receptive to feedback about your code.
1616

1717
#### Branches
18-
While 4.4 is in maintenance mode, ie we are still fixing bugs, PRs should be made to the `4.4-dev` branch. Merged bugfixes will be upmerged into the current 5.x branch. If a bug is only in the 5.x series the PR should be made to the current 5.x branch (currently 5.1).
18+
Joomla 4.4 is in security maintenance mode, until 14th October 2025, which means it will only receive security fixes. Bug fixing PRs should be made to the `5.3-dev` branch. Merged bugfixes will be upmerged into the current branches. New features that do not break backwards compatibility should be made to the `5.4-dev` branch otherwise they should be made to the `6.0-dev` branch.
1919

2020

2121
| Branch | Purpose |
2222
| ------ | ------- |
23-
| 4.4-dev | Branch for the current 4.x Joomla version. Currently in maintenance mode |
24-
| 5.1-dev | Branch for the current 5.x Joomla version. Bugfix only for 5.x go into this branch. |
25-
| 5.2-dev | Branch for the next minor 5.x Joomla version. New features go into this branch. |
23+
| 4.4-dev | Branch for the current 4.x Joomla version. Currently in security maintenance mode. |
24+
| 5.3-dev | Branch for the current 5.x Joomla version. Bugfix only for 5.x go into this branch. |
25+
| 5.4-dev | Branch for the next minor 5.x Joomla version. New features go into this branch. |
2626
| 6.0-dev | Branch for the next major Joomla version. New features that include a b/c break have to go into this branch. |
27-

.github/ISSUE_TEMPLATE.md

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`) VALUES
2-
(0, 'plg_behaviour_compat6', 'plugin', 'compat6', 'behaviour', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1","legacy_classes":"1"}', '', -1, 0);
1+
INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `custom_data`, `ordering`, `state`)
2+
SELECT 0, 'plg_behaviour_compat6', 'plugin', 'compat6', 'behaviour', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1","legacy_classes":"1"}', '', -1, 0
3+
WHERE NOT EXISTS (SELECT * FROM `#__extensions` e WHERE e.`type` = 'plugin' AND e.`element` = 'compat6' AND e.`folder` = 'behaviour' AND e.`client_id` = 0);

administrator/components/com_admin/sql/updates/mysql/5.4.0-2025-05-10.sql

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`,
66
SELECT 0, 'plg_webservices_joomlaupdate', 'plugin', 'joomlaupdate', 'webservices', 0, 1, 1, 0, 1, '', '', '', -1, 0
77
WHERE NOT EXISTS (SELECT * FROM `#__extensions` e WHERE e.`type` = 'plugin' AND e.`element` = 'joomlaupdate' AND e.`folder` = 'webservices' AND e.`client_id` = 0);
88

9-
INSERT INTO `#__mail_templates` (`template_id`, `extension`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
9+
INSERT IGNORE INTO `#__mail_templates` (`template_id`, `extension`, `language`, `subject`, `body`, `htmlbody`, `attachments`, `params`) VALUES
1010
('com_joomlaupdate.update.success', 'com_joomlaupdate', '', 'COM_JOOMLAUPDATE_UPDATE_SUCCESS_MAIL_SUBJECT', 'COM_JOOMLAUPDATE_UPDATE_SUCCESS_MAIL_BODY', '', '', '{"tags":["newversion","oldversion","sitename","url"]}'),
1111
('com_joomlaupdate.update.failed', 'com_joomlaupdate', '', 'COM_JOOMLAUPDATE_UPDATE_FAILED_MAIL_SUBJECT', 'COM_JOOMLAUPDATE_UPDATE_FAILED_MAIL_BODY', '', '', '{"tags":["newversion","oldversion","sitename","url"]}');
1212

@@ -17,8 +17,9 @@ SELECT `extension_id`, 'COM_JOOMLAUPDATE_POSTINSTALL_MSG_AUTOMATED_UPDATES_TITLE
1717
-- disable autostart for the previous tour
1818
UPDATE `#__guidedtours` SET `autostart` = 0 WHERE `uid` = 'joomla-whatsnew-5-3';
1919

20-
INSERT INTO `#__guidedtours` (`title`, `description`, `extensions`, `url`, `published`, `language`, `note`, `access`, `uid`, `autostart`, `created`, `created_by`, `modified`, `modified_by`) VALUES
21-
('COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_TITLE', 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_DESCRIPTION', '["com_cpanel"]', 'administrator/index.php', 1, '*', '', 1, 'joomla-whatsnew-5-4', 1, CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0);
20+
INSERT INTO `#__guidedtours` (`title`, `description`, `extensions`, `url`, `published`, `language`, `note`, `access`, `uid`, `autostart`, `created`, `created_by`, `modified`, `modified_by`)
21+
SELECT 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_TITLE', 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_DESCRIPTION', '["com_cpanel"]', 'administrator/index.php', 1, '*', '', 1, 'joomla-whatsnew-5-4', 1, CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0
22+
WHERE NOT EXISTS (SELECT * FROM `#__guidedtours` g WHERE g.`uid` = 'joomla-whatsnew-5-4');
2223

2324
INSERT INTO `#__guidedtour_steps` (`title`, `description`, `position`, `target`, `type`, `interactive_type`, `url`, `published`, `language`, `note`, `params`, `tour_id`, `created`, `created_by`, `modified`, `modified_by`)
2425
SELECT 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_STEP_0_TITLE', 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_STEP_0_DESCRIPTION', 'right', '#sidebarmenu nav > ul:first-of-type > li:last-child', 0, 1, '', 1, '*', '', '"{\"required\":1,\"requiredvalue\":\"\"}"', MAX(`id`), CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "custom_data", "ordering", "state") VALUES
2-
(0, 'plg_behaviour_compat6', 'plugin', 'compat6', 'behaviour', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1","legacy_classes":"1"}', '', -1, 0);
1+
INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "custom_data", "ordering", "state")
2+
SELECT 0, 'plg_behaviour_compat6', 'plugin', 'compat6', 'behaviour', 0, 1, 1, 0, 1, '', '{"classes_aliases":"1","legacy_classes":"1"}', '', -1, 0
3+
WHERE NOT EXISTS (SELECT * FROM "#__extensions" e WHERE e."type" = 'plugin' AND e."element" = 'compat6' AND e."folder" = 'behaviour' AND e."client_id" = 0);

administrator/components/com_admin/sql/updates/postgresql/5.4.0-2025-05-10.sql

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ WHERE NOT EXISTS (SELECT * FROM "#__extensions" e WHERE e."type" = 'plugin' AND
88

99
INSERT INTO "#__mail_templates" ("template_id", "extension", "language", "subject", "body", "htmlbody", "attachments", "params") VALUES
1010
('com_joomlaupdate.update.success', 'com_joomlaupdate', '', 'COM_JOOMLAUPDATE_UPDATE_SUCCESS_MAIL_SUBJECT', 'COM_JOOMLAUPDATE_UPDATE_SUCCESS_MAIL_BODY', '', '', '{"tags":["newversion","oldversion","sitename","url"]}'),
11-
('com_joomlaupdate.update.failed', 'com_joomlaupdate', '', 'COM_JOOMLAUPDATE_UPDATE_FAILED_MAIL_SUBJECT', 'COM_JOOMLAUPDATE_UPDATE_FAILED_MAIL_BODY', '', '', '{"tags":["newversion","oldversion","sitename","url"]}');
11+
('com_joomlaupdate.update.failed', 'com_joomlaupdate', '', 'COM_JOOMLAUPDATE_UPDATE_FAILED_MAIL_SUBJECT', 'COM_JOOMLAUPDATE_UPDATE_FAILED_MAIL_BODY', '', '', '{"tags":["newversion","oldversion","sitename","url"]}')
12+
ON CONFLICT DO NOTHING;
1213

1314
-- add post-installation message for automated updates
1415
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")
@@ -17,8 +18,9 @@ SELECT "extension_id", 'COM_JOOMLAUPDATE_POSTINSTALL_MSG_AUTOMATED_UPDATES_TITLE
1718
-- disable autostart for the previous tour
1819
UPDATE "#__guidedtours" SET "autostart" = 0 WHERE "uid" = 'joomla-whatsnew-5-3';
1920

20-
INSERT INTO "#__guidedtours" ("title", "description", "extensions", "url", "published", "language", "note", "access", "uid", "autostart", "created", "created_by", "modified", "modified_by") VALUES
21-
('COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_TITLE', 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_DESCRIPTION', '["com_cpanel"]', 'administrator/index.php', 1, '*', '', 1, 'joomla-whatsnew-5-4', 1, CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0);
21+
INSERT INTO "#__guidedtours" ("title", "description", "extensions", "url", "published", "language", "note", "access", "uid", "autostart", "created", "created_by", "modified", "modified_by")
22+
SELECT 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_TITLE', 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_DESCRIPTION', '["com_cpanel"]', 'administrator/index.php', 1, '*', '', 1, 'joomla-whatsnew-5-4', 1, CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0
23+
WHERE NOT EXISTS (SELECT * FROM "#__guidedtours" g WHERE g."uid" = 'joomla-whatsnew-5-4');
2224

2325
INSERT INTO "#__guidedtour_steps" ("title", "description", "position", "target", "type", "interactive_type", "url", "published", "language", "note", "params", "tour_id", "created", "created_by", "modified", "modified_by")
2426
SELECT 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_STEP_0_TITLE', 'COM_GUIDEDTOURS_TOUR_WHATSNEW_5_4_STEP_0_DESCRIPTION', 'right', '#sidebarmenu nav > ul:first-of-type > li:last-child', 0, 1, '', 1, '*', '', '"{\"required\":1,\"requiredvalue\":\"\"}"', MAX("id"), CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0

administrator/components/com_associations/src/View/Association/HtmlView.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Joomla\CMS\Factory;
1515
use Joomla\CMS\Form\Form;
1616
use Joomla\CMS\Language\Text;
17-
use Joomla\CMS\MVC\View\GenericDataException;
1817
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
1918
use Joomla\CMS\Pagination\Pagination;
2019
use Joomla\CMS\Router\Route;
@@ -223,11 +222,7 @@ public function display($tpl = null): void
223222
{
224223
/** @var AssociationModel $model */
225224
$model = $this->getModel();
226-
227-
// Check for errors.
228-
if (\count($errors = $model->getErrors())) {
229-
throw new GenericDataException(implode("\n", $errors), 500);
230-
}
225+
$model->setUseExceptions(true);
231226

232227
$this->app = Factory::getApplication();
233228
$this->form = $model->getForm();

administrator/components/com_associations/src/View/Associations/HtmlView.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ public function display($tpl = null)
129129
{
130130
/** @var AssociationsModel $model */
131131
$model = $this->getModel();
132+
$model->setUseExceptions(true);
132133

133134
$this->state = $model->getState();
134135
$this->filterForm = $model->getFilterForm();
@@ -227,11 +228,6 @@ public function display($tpl = null)
227228
}
228229
}
229230

230-
// Check for errors.
231-
if (\count($errors = $model->getErrors())) {
232-
throw new \Exception(implode("\n", $errors), 500);
233-
}
234-
235231
$this->addToolbar();
236232

237233
parent::display($tpl);

administrator/components/com_banners/src/Table/BannerTable.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,15 @@ public function store($updateNulls = true)
220220
{
221221
$db = $this->getDatabase();
222222

223+
// Verify that the alias is unique
224+
$table = new self($db, $this->getDispatcher());
225+
226+
if ($table->load(['alias' => $this->alias, 'catid' => $this->catid]) && ($table->id != $this->id || $this->id == 0)) {
227+
$this->setError(Text::_('COM_BANNERS_ERROR_UNIQUE_ALIAS'));
228+
229+
return false;
230+
}
231+
223232
if (empty($this->id)) {
224233
$purchaseType = $this->purchase_type;
225234

@@ -265,15 +274,6 @@ public function store($updateNulls = true)
265274
$this->setError($oldrow->getError());
266275
}
267276

268-
// Verify that the alias is unique
269-
$table = new self($db, $this->getDispatcher());
270-
271-
if ($table->load(['alias' => $this->alias, 'catid' => $this->catid]) && ($table->id != $this->id || $this->id == 0)) {
272-
$this->setError(Text::_('COM_BANNERS_ERROR_UNIQUE_ALIAS'));
273-
274-
return false;
275-
}
276-
277277
// Store the new row
278278
parent::store($updateNulls);
279279

administrator/components/com_banners/src/View/Banners/HtmlView.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Joomla\CMS\Helper\ContentHelper;
1515
use Joomla\CMS\Language\Multilanguage;
1616
use Joomla\CMS\Language\Text;
17-
use Joomla\CMS\MVC\View\GenericDataException;
1817
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
1918
use Joomla\CMS\Pagination\Pagination;
2019
use Joomla\CMS\Toolbar\Button\DropdownButton;
@@ -102,7 +101,9 @@ class HtmlView extends BaseHtmlView
102101
public function display($tpl = null): void
103102
{
104103
/** @var BannersModel $model */
105-
$model = $this->getModel();
104+
$model = $this->getModel();
105+
$model->setUseExceptions(true);
106+
106107
$this->categories = $model->getCategoryOrders();
107108
$this->items = $model->getItems();
108109
$this->pagination = $model->getPagination();
@@ -114,11 +115,6 @@ public function display($tpl = null): void
114115
$this->setLayout('emptystate');
115116
}
116117

117-
// Check for errors.
118-
if (\count($errors = $model->getErrors())) {
119-
throw new GenericDataException(implode("\n", $errors), 500);
120-
}
121-
122118
$this->addToolbar();
123119

124120
// We do not need to filter by language when multilingual is disabled

0 commit comments

Comments
 (0)