From 3e1cb9a5004a48b35714906b63fa37feefdae445 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Thu, 25 Jun 2026 12:08:54 -0500 Subject: [PATCH] fix: use typed Joomla 6 event parameters, remove legacy fallbacks Remove func_get_arg() legacy fallbacks from onContentBeforeDisplay, onContentAfterSave, and onContentChangeState. All methods now use typed event parameters (Joomla 6 only). --- .../src/Extension/MokoSuiteCrossContent.php | 63 +++++-------------- 1 file changed, 15 insertions(+), 48 deletions(-) diff --git a/source/packages/plg_content_mokosuitecross/src/Extension/MokoSuiteCrossContent.php b/source/packages/plg_content_mokosuitecross/src/Extension/MokoSuiteCrossContent.php index 02af1a2..4f86336 100644 --- a/source/packages/plg_content_mokosuitecross/src/Extension/MokoSuiteCrossContent.php +++ b/source/packages/plg_content_mokosuitecross/src/Extension/MokoSuiteCrossContent.php @@ -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