fix: use typed Joomla 6 event parameters, remove legacy fallbacks
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 4s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 27s
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled

Remove func_get_arg() legacy fallbacks from onContentBeforeDisplay,
onContentAfterSave, and onContentChangeState. All methods now use
typed event parameters (Joomla 6 only).
This commit is contained in:
2026-06-25 12:08:54 -05:00
parent 5ae8e3e001
commit 3e1cb9a500
@@ -270,21 +270,11 @@ XML;
/**
* Add cross-post status badges before article content in admin.
*
* Joomla 5/6 compatible — accepts both BeforeDisplayEvent and legacy parameters.
*/
public function onContentBeforeDisplay($event): string
public function onContentBeforeDisplay(\Joomla\CMS\Event\Content\BeforeDisplayEvent $event): string
{
// Joomla 5/6 compatibility
if ($event instanceof \Joomla\CMS\Event\Content\BeforeDisplayEvent) {
$context = $event->getContext();
$article = $event->getItem();
} elseif (is_string($event) && $event === 'com_content.article' && func_num_args() >= 2) {
$context = $event;
$article = func_get_arg(1);
} else {
return '';
}
$context = $event->getContext();
$article = $event->getItem();
$app = $this->getApplication();
@@ -326,31 +316,18 @@ XML;
/**
* Dispatch cross-post when an article is saved and published.
*
* Joomla 5/6 compatible — accepts both AfterSaveEvent and legacy parameters.
*/
public function onContentAfterSave($event): void
public function onContentAfterSave(\Joomla\CMS\Event\Content\AfterSaveEvent $event): void
{
// Joomla 6 passes an AfterSaveEvent object
if ($event instanceof \Joomla\CMS\Event\Content\AfterSaveEvent) {
$context = $event->getContext();
$context = $event->getContext();
if ($context !== 'com_content.article') {
return;
}
$article = $event->getItem();
$isNew = $event->getIsNew();
} elseif (is_string($event) && $event === 'com_content.article' && func_num_args() >= 3) {
// Legacy fallback (Joomla 4 style positional args)
$context = $event;
$article = func_get_arg(1);
$isNew = func_get_arg(2);
} else {
// Not our context or wrong argument count — bail
if ($context !== 'com_content.article') {
return;
}
$article = $event->getItem();
$isNew = $event->getIsNew();
if ((int) ($article->state ?? 0) !== 1) {
return;
}
@@ -376,28 +353,18 @@ XML;
/**
* Dispatch cross-post when article state changes to published.
*
* Joomla 5/6 compatible — accepts both ContentChangeStateEvent and legacy parameters.
*/
public function onContentChangeState($event): void
public function onContentChangeState(\Joomla\CMS\Event\Content\ContentChangeStateEvent $event): void
{
if ($event instanceof \Joomla\CMS\Event\Content\ContentChangeStateEvent) {
$context = $event->getContext();
$context = $event->getContext();
if ($context !== 'com_content.article') {
return;
}
$pks = $event->getPks();
$value = $event->getValue();
} elseif (is_string($event) && $event === 'com_content.article' && func_num_args() >= 3) {
$context = $event;
$pks = func_get_arg(1);
$value = func_get_arg(2);
} else {
if ($context !== 'com_content.article') {
return;
}
$pks = $event->getPks();
$value = $event->getValue();
$params = ComponentHelper::getParams('com_mokosuitecross');
// Unpublish/trash: delete from platforms if configured