From a50826a6d5cdb9d42c3a2142a5ed9485b1f1a272 Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 12:28:13 +0300 Subject: [PATCH 1/8] Dynamic Subscriber Interface --- .../src/Event/DynamicSubscriberInterface.php | 43 +++++++++++++++++++ libraries/src/Plugin/PluginHelper.php | 19 +++++++- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 libraries/src/Event/DynamicSubscriberInterface.php diff --git a/libraries/src/Event/DynamicSubscriberInterface.php b/libraries/src/Event/DynamicSubscriberInterface.php new file mode 100644 index 0000000000000..8ce05f74b603f --- /dev/null +++ b/libraries/src/Event/DynamicSubscriberInterface.php @@ -0,0 +1,43 @@ + 'methodName') + * * array('eventName' => array('methodName', $priority)) + * * array('eventName' => $callable) + * * array('eventName' => array($callable, $priority)) + * + * @return array + * + * @since __DEPLOY_VERSION__ + */ + public function getSubscribedEvents(): array; +} diff --git a/libraries/src/Plugin/PluginHelper.php b/libraries/src/Plugin/PluginHelper.php index 9c3c591e311ae..32be0dd198371 100644 --- a/libraries/src/Plugin/PluginHelper.php +++ b/libraries/src/Plugin/PluginHelper.php @@ -10,9 +10,11 @@ namespace Joomla\CMS\Plugin; use Joomla\CMS\Cache\Exception\CacheExceptionInterface; +use Joomla\CMS\Event\DynamicSubscriberInterface; use Joomla\CMS\Factory; use Joomla\Event\DispatcherAwareInterface; use Joomla\Event\DispatcherInterface; +use Joomla\Event\Priority; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -239,7 +241,22 @@ protected static function import($plugin, $autocreate = true, DispatcherInterfac return; } - $plugin->registerListeners(); + // Check for Configurable Subscriber + if ($plugin instanceof DynamicSubscriberInterface) { + foreach ($plugin->getSubscribedEvents() as $eventName => $params) { + if (\is_array($params)) { + $callback = !\is_string($params[0]) && \is_callable($params[0]) ? $params[0] : [$plugin, $params[0]]; + $dispatcher->addListener($eventName, $callback, $params[1] ?? Priority::NORMAL); + } else { + $callback = !\is_string($params) && \is_callable($params) ? $params : [$plugin, $params]; + $dispatcher->addListener($eventName, $callback); + } + } + } else { + // Register regular Subscribers + // @TODO: Starting from 7.0 it should use $dispatcher->addSubscriber($plugin);, for plugins which implements SubscriberInterface. + $plugin->registerListeners(); + } } /** From c72f1a04d688c2dacf9d004de483219fa4cbb568 Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 12:28:16 +0300 Subject: [PATCH 2/8] Dynamic Subscriber Interface --- .../system/guidedtours/services/provider.php | 7 ++-- .../guidedtours/src/Extension/GuidedTours.php | 34 +++---------------- 2 files changed, 6 insertions(+), 35 deletions(-) diff --git a/plugins/system/guidedtours/services/provider.php b/plugins/system/guidedtours/services/provider.php index 8e30afd6b0b47..4e20edd57496b 100644 --- a/plugins/system/guidedtours/services/provider.php +++ b/plugins/system/guidedtours/services/provider.php @@ -34,15 +34,12 @@ public function register(Container $container) $container->set( PluginInterface::class, function (Container $container) { - $app = Factory::getApplication(); - $plugin = new GuidedTours( $container->get(DispatcherInterface::class), - (array) PluginHelper::getPlugin('system', 'guidedtours'), - $app->isClient('administrator') + (array) PluginHelper::getPlugin('system', 'guidedtours') ); - $plugin->setApplication($app); + $plugin->setApplication(Factory::getApplication()); $wa = $container->get(WebAssetRegistry::class); diff --git a/plugins/system/guidedtours/src/Extension/GuidedTours.php b/plugins/system/guidedtours/src/Extension/GuidedTours.php index 4bcc765ad39fc..9b65b8c3fa0d4 100644 --- a/plugins/system/guidedtours/src/Extension/GuidedTours.php +++ b/plugins/system/guidedtours/src/Extension/GuidedTours.php @@ -10,15 +10,14 @@ namespace Joomla\Plugin\System\GuidedTours\Extension; +use Joomla\CMS\Event\DynamicSubscriberInterface; use Joomla\CMS\Language\Text; use Joomla\CMS\Object\CMSObject; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Session\Session; use Joomla\Component\Guidedtours\Administrator\Extension\GuidedtoursComponent; use Joomla\Component\Guidedtours\Administrator\Model\TourModel; -use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; -use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; @@ -29,7 +28,7 @@ * * @since 4.3.0 */ -final class GuidedTours extends CMSPlugin implements SubscriberInterface +final class GuidedTours extends CMSPlugin implements DynamicSubscriberInterface { /** * A mapping for the step types @@ -58,31 +57,6 @@ final class GuidedTours extends CMSPlugin implements SubscriberInterface GuidedtoursComponent::STEP_INTERACTIVETYPE_SELECT => 'select', ]; - /** - * An internal flag whether plugin should listen any event. - * - * @var bool - * - * @since 4.3.0 - */ - protected static $enabled = false; - - /** - * Constructor - * - * @param DispatcherInterface $dispatcher The object to observe - * @param array $config An optional associative array of configuration settings. - * @param boolean $enabled An internal flag whether plugin should listen any event. - * - * @since 4.3.0 - */ - public function __construct(DispatcherInterface $dispatcher, array $config = [], bool $enabled = false) - { - self::$enabled = $enabled; - - parent::__construct($dispatcher, $config); - } - /** * function for getSubscribedEvents : new Joomla 4 feature * @@ -90,9 +64,9 @@ public function __construct(DispatcherInterface $dispatcher, array $config = [], * * @since 4.3.0 */ - public static function getSubscribedEvents(): array + public function getSubscribedEvents(): array { - return self::$enabled ? [ + return $this->getApplication()->isClient('administrator') ? [ 'onAjaxGuidedtours' => 'startTour', 'onBeforeCompileHead' => 'onBeforeCompileHead', ] : []; From 67eb94358b240206e54455248d46ecd877762ce1 Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 12:34:31 +0300 Subject: [PATCH 3/8] Dynamic Subscriber Interface --- .../src/Extension/ScheduleRunner.php | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/plugins/system/schedulerunner/src/Extension/ScheduleRunner.php b/plugins/system/schedulerunner/src/Extension/ScheduleRunner.php index 143272585d5f6..5194e36ae04e9 100644 --- a/plugins/system/schedulerunner/src/Extension/ScheduleRunner.php +++ b/plugins/system/schedulerunner/src/Extension/ScheduleRunner.php @@ -11,6 +11,7 @@ namespace Joomla\Plugin\System\ScheduleRunner\Extension; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\DynamicSubscriberInterface; use Joomla\CMS\Event\Model; use Joomla\CMS\Factory; use Joomla\CMS\Log\Log; @@ -24,7 +25,6 @@ use Joomla\Component\Scheduler\Administrator\Task\Task; use Joomla\Event\Event; use Joomla\Event\EventInterface; -use Joomla\Event\SubscriberInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects @@ -42,7 +42,7 @@ * * @since 4.1.0 */ -final class ScheduleRunner extends CMSPlugin implements SubscriberInterface +final class ScheduleRunner extends CMSPlugin implements DynamicSubscriberInterface { /** * Length of auto-generated webcron key. @@ -61,27 +61,28 @@ final class ScheduleRunner extends CMSPlugin implements SubscriberInterface * * @throws \Exception */ - public static function getSubscribedEvents(): array + public function getSubscribedEvents(): array { - $config = ComponentHelper::getParams('com_scheduler'); - $app = Factory::getApplication(); + $app = $this->getApplication(); + $isSite = $app->isClient('site'); + $isAdmin = $app->isClient('administrator'); + $mapping = []; - $mapping = []; + if ($isSite || $isAdmin) { + $config = ComponentHelper::getParams('com_scheduler'); - if ($app->isClient('site') || $app->isClient('administrator')) { $mapping['onBeforeCompileHead'] = 'injectLazyJS'; $mapping['onAjaxRunSchedulerLazy'] = 'runLazyCron'; - // Only allowed in the frontend - if ($app->isClient('site')) { - if ($config->get('webcron.enabled')) { - $mapping['onAjaxRunSchedulerWebcron'] = 'runWebCron'; - } - } elseif ($app->isClient('administrator')) { + if ($isAdmin) { + // Only allowed in the administrator $mapping['onContentPrepareForm'] = 'enhanceSchedulerConfig'; $mapping['onExtensionBeforeSave'] = 'generateWebcronKey'; $mapping['onAjaxRunSchedulerTest'] = 'runTestCron'; + } elseif ($isSite && $config->get('webcron.enabled')) { + // Only allowed in the frontend + $mapping['onAjaxRunSchedulerWebcron'] = 'runWebCron'; } } From b9125ffc029c3b2378dfdcbf6d0a46795f25b9ca Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 12:55:17 +0300 Subject: [PATCH 4/8] CMS Transitional SubscriberInterface --- libraries/src/Event/SubscriberInterface.php | 24 +++++++++++++++++++ libraries/src/Plugin/PluginHelper.php | 5 ++++ plugins/system/cache/src/Extension/Cache.php | 2 +- plugins/system/debug/src/Extension/Debug.php | 2 +- .../httpheaders/src/Extension/Httpheaders.php | 2 +- .../system/jooa11y/src/Extension/Jooa11y.php | 2 +- .../src/Extension/LanguageFilter.php | 2 +- .../redirect/src/Extension/Redirect.php | 2 +- .../schemaorg/src/Extension/Schemaorg.php | 2 +- plugins/system/sef/src/Extension/Sef.php | 2 +- .../shortcut/src/Extension/Shortcut.php | 2 +- .../src/Extension/TaskNotification.php | 2 +- .../webauthn/src/Extension/Webauthn.php | 2 +- 13 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 libraries/src/Event/SubscriberInterface.php diff --git a/libraries/src/Event/SubscriberInterface.php b/libraries/src/Event/SubscriberInterface.php new file mode 100644 index 0000000000000..48069796d5dc0 --- /dev/null +++ b/libraries/src/Event/SubscriberInterface.php @@ -0,0 +1,24 @@ +addListener($eventName, $callback); } } + } elseif ($plugin instanceof CMSSubscriberInterface){ + // Transitional to framework SubscriberInterface, for plugins without registerListeners() + // @TODO: Remove this "if()" section in 7.0, as all plugin should use SubscriberInterface from framework. + $dispatcher->addSubscriber($plugin); } else { // Register regular Subscribers // @TODO: Starting from 7.0 it should use $dispatcher->addSubscriber($plugin);, for plugins which implements SubscriberInterface. diff --git a/plugins/system/cache/src/Extension/Cache.php b/plugins/system/cache/src/Extension/Cache.php index f94a0cb49dc4b..a5099bbe083ab 100644 --- a/plugins/system/cache/src/Extension/Cache.php +++ b/plugins/system/cache/src/Extension/Cache.php @@ -17,6 +17,7 @@ use Joomla\CMS\Event\PageCache\GetKeyEvent; use Joomla\CMS\Event\PageCache\IsExcludedEvent; use Joomla\CMS\Event\PageCache\SetCachingEvent; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Profiler\Profiler; @@ -25,7 +26,6 @@ use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; use Joomla\Event\Priority; -use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/debug/src/Extension/Debug.php b/plugins/system/debug/src/Extension/Debug.php index e17756cf82ad6..ad10e7feb605b 100644 --- a/plugins/system/debug/src/Extension/Debug.php +++ b/plugins/system/debug/src/Extension/Debug.php @@ -17,6 +17,7 @@ use Joomla\CMS\Application\CMSApplicationInterface; use Joomla\CMS\Document\HtmlDocument; use Joomla\CMS\Event\Plugin\AjaxEvent; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Log\Log; use Joomla\CMS\Log\LogEntry; use Joomla\CMS\Log\Logger\InMemoryLogger; @@ -29,7 +30,6 @@ use Joomla\Database\Event\ConnectionEvent; use Joomla\Event\DispatcherInterface; use Joomla\Event\Priority; -use Joomla\Event\SubscriberInterface; use Joomla\Plugin\System\Debug\DataCollector\InfoCollector; use Joomla\Plugin\System\Debug\DataCollector\LanguageErrorsCollector; use Joomla\Plugin\System\Debug\DataCollector\LanguageFilesCollector; diff --git a/plugins/system/httpheaders/src/Extension/Httpheaders.php b/plugins/system/httpheaders/src/Extension/Httpheaders.php index ef78c5bd53643..41546ddad00e1 100644 --- a/plugins/system/httpheaders/src/Extension/Httpheaders.php +++ b/plugins/system/httpheaders/src/Extension/Httpheaders.php @@ -11,12 +11,12 @@ namespace Joomla\Plugin\System\Httpheaders\Extension; use Joomla\CMS\Application\CMSApplicationInterface; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Uri\Uri; use Joomla\Database\DatabaseAwareTrait; use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; -use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/jooa11y/src/Extension/Jooa11y.php b/plugins/system/jooa11y/src/Extension/Jooa11y.php index 91ddd9ef37614..cde01e3e175af 100644 --- a/plugins/system/jooa11y/src/Extension/Jooa11y.php +++ b/plugins/system/jooa11y/src/Extension/Jooa11y.php @@ -10,8 +10,8 @@ namespace Joomla\Plugin\System\Jooa11y\Extension; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/languagefilter/src/Extension/LanguageFilter.php b/plugins/system/languagefilter/src/Extension/LanguageFilter.php index d1dbaa5a29a4f..227d3a02e1f2c 100644 --- a/plugins/system/languagefilter/src/Extension/LanguageFilter.php +++ b/plugins/system/languagefilter/src/Extension/LanguageFilter.php @@ -14,6 +14,7 @@ use Joomla\CMS\Application\CMSApplicationInterface; use Joomla\CMS\Association\AssociationServiceInterface; use Joomla\CMS\Component\ComponentHelper; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Event\User\AfterSaveEvent; use Joomla\CMS\Event\User\BeforeSaveEvent; use Joomla\CMS\Event\User\LoginEvent; @@ -30,7 +31,6 @@ use Joomla\CMS\Uri\Uri; use Joomla\Component\Menus\Administrator\Helper\MenusHelper; use Joomla\Event\DispatcherInterface; -use Joomla\Event\SubscriberInterface; use Joomla\Filesystem\Path; use Joomla\Registry\Registry; use Joomla\String\StringHelper; diff --git a/plugins/system/redirect/src/Extension/Redirect.php b/plugins/system/redirect/src/Extension/Redirect.php index 59bf66368a47a..edea5ae9e5860 100644 --- a/plugins/system/redirect/src/Extension/Redirect.php +++ b/plugins/system/redirect/src/Extension/Redirect.php @@ -12,13 +12,13 @@ use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Event\ErrorEvent; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; -use Joomla\Event\SubscriberInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index c76b395afab8b..46390cb67ad65 100644 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -15,6 +15,7 @@ use Joomla\CMS\Event\Plugin\System\Schemaorg\PrepareDataEvent; use Joomla\CMS\Event\Plugin\System\Schemaorg\PrepareFormEvent; use Joomla\CMS\Event\Plugin\System\Schemaorg\PrepareSaveEvent; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Helper\ModuleHelper; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; @@ -28,7 +29,6 @@ use Joomla\CMS\User\UserFactoryAwareTrait; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; -use Joomla\Event\SubscriberInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects diff --git a/plugins/system/sef/src/Extension/Sef.php b/plugins/system/sef/src/Extension/Sef.php index 17a3f3d746f5b..55b53a1c6e5fa 100644 --- a/plugins/system/sef/src/Extension/Sef.php +++ b/plugins/system/sef/src/Extension/Sef.php @@ -10,13 +10,13 @@ namespace Joomla\Plugin\System\Sef\Extension; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Router\Route; use Joomla\CMS\Router\Router; use Joomla\CMS\Router\SiteRouter; use Joomla\CMS\Router\SiteRouterAwareTrait; use Joomla\CMS\Uri\Uri; -use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/shortcut/src/Extension/Shortcut.php b/plugins/system/shortcut/src/Extension/Shortcut.php index d1cbcc80eade1..120e598a97856 100644 --- a/plugins/system/shortcut/src/Extension/Shortcut.php +++ b/plugins/system/shortcut/src/Extension/Shortcut.php @@ -11,12 +11,12 @@ namespace Joomla\Plugin\System\Shortcut\Extension; use Joomla\CMS\Event\GenericEvent; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Event\Event; -use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/tasknotification/src/Extension/TaskNotification.php b/plugins/system/tasknotification/src/Extension/TaskNotification.php index 3046974ecf23a..1dee17dc7c296 100644 --- a/plugins/system/tasknotification/src/Extension/TaskNotification.php +++ b/plugins/system/tasknotification/src/Extension/TaskNotification.php @@ -11,6 +11,7 @@ namespace Joomla\Plugin\System\TaskNotification\Extension; use Joomla\CMS\Event\Model; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Factory; use Joomla\CMS\Log\Log; use Joomla\CMS\Mail\MailTemplate; @@ -20,7 +21,6 @@ use Joomla\Component\Scheduler\Administrator\Task\Task; use Joomla\Database\DatabaseAwareTrait; use Joomla\Event\Event; -use Joomla\Event\SubscriberInterface; use Joomla\Filesystem\Path; use PHPMailer\PHPMailer\Exception as MailerException; diff --git a/plugins/system/webauthn/src/Extension/Webauthn.php b/plugins/system/webauthn/src/Extension/Webauthn.php index 026ece9f8aef0..72a89f347efdb 100644 --- a/plugins/system/webauthn/src/Extension/Webauthn.php +++ b/plugins/system/webauthn/src/Extension/Webauthn.php @@ -11,11 +11,11 @@ namespace Joomla\Plugin\System\Webauthn\Extension; use Joomla\CMS\Event\CoreEventAware; +use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Factory; use Joomla\CMS\Log\Log; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\Event\DispatcherInterface; -use Joomla\Event\SubscriberInterface; use Joomla\Plugin\System\Webauthn\Authentication; use Joomla\Plugin\System\Webauthn\PluginTraits\AdditionalLoginButtons; use Joomla\Plugin\System\Webauthn\PluginTraits\AjaxHandler; From cd6ed61e6998af33176bbfae84c4e4c573f45837 Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 12:56:07 +0300 Subject: [PATCH 5/8] CMS Transitional SubscriberInterface --- libraries/src/Plugin/PluginHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Plugin/PluginHelper.php b/libraries/src/Plugin/PluginHelper.php index 27aa6e7d6f8f8..57b0e28a0eeaa 100644 --- a/libraries/src/Plugin/PluginHelper.php +++ b/libraries/src/Plugin/PluginHelper.php @@ -242,7 +242,7 @@ protected static function import($plugin, $autocreate = true, DispatcherInterfac return; } - // Check for Configurable Subscriber + // Check for dynamic Subscriber if ($plugin instanceof DynamicSubscriberInterface) { foreach ($plugin->getSubscribedEvents() as $eventName => $params) { if (\is_array($params)) { From 8a98dcc0e5b5e383cd6c7f9fc1b50baae253a5be Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 13:25:02 +0300 Subject: [PATCH 6/8] phpcs --- libraries/src/Plugin/PluginHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Plugin/PluginHelper.php b/libraries/src/Plugin/PluginHelper.php index 57b0e28a0eeaa..21d92f9f6d384 100644 --- a/libraries/src/Plugin/PluginHelper.php +++ b/libraries/src/Plugin/PluginHelper.php @@ -253,7 +253,7 @@ protected static function import($plugin, $autocreate = true, DispatcherInterfac $dispatcher->addListener($eventName, $callback); } } - } elseif ($plugin instanceof CMSSubscriberInterface){ + } elseif ($plugin instanceof CMSSubscriberInterface) { // Transitional to framework SubscriberInterface, for plugins without registerListeners() // @TODO: Remove this "if()" section in 7.0, as all plugin should use SubscriberInterface from framework. $dispatcher->addSubscriber($plugin); From c874e82c61a758c771a596204d63da17f518e564 Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 13:31:45 +0300 Subject: [PATCH 7/8] Revert "phpcs" This reverts commit 8a98dcc0e5b5e383cd6c7f9fc1b50baae253a5be. --- libraries/src/Plugin/PluginHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/src/Plugin/PluginHelper.php b/libraries/src/Plugin/PluginHelper.php index 21d92f9f6d384..57b0e28a0eeaa 100644 --- a/libraries/src/Plugin/PluginHelper.php +++ b/libraries/src/Plugin/PluginHelper.php @@ -253,7 +253,7 @@ protected static function import($plugin, $autocreate = true, DispatcherInterfac $dispatcher->addListener($eventName, $callback); } } - } elseif ($plugin instanceof CMSSubscriberInterface) { + } elseif ($plugin instanceof CMSSubscriberInterface){ // Transitional to framework SubscriberInterface, for plugins without registerListeners() // @TODO: Remove this "if()" section in 7.0, as all plugin should use SubscriberInterface from framework. $dispatcher->addSubscriber($plugin); From 89965708c826f14fc90aebf54d70c0d729df2e10 Mon Sep 17 00:00:00 2001 From: Fedik Date: Sun, 12 May 2024 13:31:50 +0300 Subject: [PATCH 8/8] Revert "CMS Transitional SubscriberInterface" This reverts commit b9125ffc029c3b2378dfdcbf6d0a46795f25b9ca. --- libraries/src/Event/SubscriberInterface.php | 24 ------------------- libraries/src/Plugin/PluginHelper.php | 5 ---- plugins/system/cache/src/Extension/Cache.php | 2 +- plugins/system/debug/src/Extension/Debug.php | 2 +- .../httpheaders/src/Extension/Httpheaders.php | 2 +- .../system/jooa11y/src/Extension/Jooa11y.php | 2 +- .../src/Extension/LanguageFilter.php | 2 +- .../redirect/src/Extension/Redirect.php | 2 +- .../schemaorg/src/Extension/Schemaorg.php | 2 +- plugins/system/sef/src/Extension/Sef.php | 2 +- .../shortcut/src/Extension/Shortcut.php | 2 +- .../src/Extension/TaskNotification.php | 2 +- .../webauthn/src/Extension/Webauthn.php | 2 +- 13 files changed, 11 insertions(+), 40 deletions(-) delete mode 100644 libraries/src/Event/SubscriberInterface.php diff --git a/libraries/src/Event/SubscriberInterface.php b/libraries/src/Event/SubscriberInterface.php deleted file mode 100644 index 48069796d5dc0..0000000000000 --- a/libraries/src/Event/SubscriberInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -addListener($eventName, $callback); } } - } elseif ($plugin instanceof CMSSubscriberInterface){ - // Transitional to framework SubscriberInterface, for plugins without registerListeners() - // @TODO: Remove this "if()" section in 7.0, as all plugin should use SubscriberInterface from framework. - $dispatcher->addSubscriber($plugin); } else { // Register regular Subscribers // @TODO: Starting from 7.0 it should use $dispatcher->addSubscriber($plugin);, for plugins which implements SubscriberInterface. diff --git a/plugins/system/cache/src/Extension/Cache.php b/plugins/system/cache/src/Extension/Cache.php index a5099bbe083ab..f94a0cb49dc4b 100644 --- a/plugins/system/cache/src/Extension/Cache.php +++ b/plugins/system/cache/src/Extension/Cache.php @@ -17,7 +17,6 @@ use Joomla\CMS\Event\PageCache\GetKeyEvent; use Joomla\CMS\Event\PageCache\IsExcludedEvent; use Joomla\CMS\Event\PageCache\SetCachingEvent; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\Profiler\Profiler; @@ -26,6 +25,7 @@ use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; use Joomla\Event\Priority; +use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/debug/src/Extension/Debug.php b/plugins/system/debug/src/Extension/Debug.php index ad10e7feb605b..e17756cf82ad6 100644 --- a/plugins/system/debug/src/Extension/Debug.php +++ b/plugins/system/debug/src/Extension/Debug.php @@ -17,7 +17,6 @@ use Joomla\CMS\Application\CMSApplicationInterface; use Joomla\CMS\Document\HtmlDocument; use Joomla\CMS\Event\Plugin\AjaxEvent; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Log\Log; use Joomla\CMS\Log\LogEntry; use Joomla\CMS\Log\Logger\InMemoryLogger; @@ -30,6 +29,7 @@ use Joomla\Database\Event\ConnectionEvent; use Joomla\Event\DispatcherInterface; use Joomla\Event\Priority; +use Joomla\Event\SubscriberInterface; use Joomla\Plugin\System\Debug\DataCollector\InfoCollector; use Joomla\Plugin\System\Debug\DataCollector\LanguageErrorsCollector; use Joomla\Plugin\System\Debug\DataCollector\LanguageFilesCollector; diff --git a/plugins/system/httpheaders/src/Extension/Httpheaders.php b/plugins/system/httpheaders/src/Extension/Httpheaders.php index 41546ddad00e1..ef78c5bd53643 100644 --- a/plugins/system/httpheaders/src/Extension/Httpheaders.php +++ b/plugins/system/httpheaders/src/Extension/Httpheaders.php @@ -11,12 +11,12 @@ namespace Joomla\Plugin\System\Httpheaders\Extension; use Joomla\CMS\Application\CMSApplicationInterface; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Uri\Uri; use Joomla\Database\DatabaseAwareTrait; use Joomla\Event\DispatcherInterface; use Joomla\Event\Event; +use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/jooa11y/src/Extension/Jooa11y.php b/plugins/system/jooa11y/src/Extension/Jooa11y.php index cde01e3e175af..91ddd9ef37614 100644 --- a/plugins/system/jooa11y/src/Extension/Jooa11y.php +++ b/plugins/system/jooa11y/src/Extension/Jooa11y.php @@ -10,8 +10,8 @@ namespace Joomla\Plugin\System\Jooa11y\Extension; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; +use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/languagefilter/src/Extension/LanguageFilter.php b/plugins/system/languagefilter/src/Extension/LanguageFilter.php index 227d3a02e1f2c..d1dbaa5a29a4f 100644 --- a/plugins/system/languagefilter/src/Extension/LanguageFilter.php +++ b/plugins/system/languagefilter/src/Extension/LanguageFilter.php @@ -14,7 +14,6 @@ use Joomla\CMS\Application\CMSApplicationInterface; use Joomla\CMS\Association\AssociationServiceInterface; use Joomla\CMS\Component\ComponentHelper; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Event\User\AfterSaveEvent; use Joomla\CMS\Event\User\BeforeSaveEvent; use Joomla\CMS\Event\User\LoginEvent; @@ -31,6 +30,7 @@ use Joomla\CMS\Uri\Uri; use Joomla\Component\Menus\Administrator\Helper\MenusHelper; use Joomla\Event\DispatcherInterface; +use Joomla\Event\SubscriberInterface; use Joomla\Filesystem\Path; use Joomla\Registry\Registry; use Joomla\String\StringHelper; diff --git a/plugins/system/redirect/src/Extension/Redirect.php b/plugins/system/redirect/src/Extension/Redirect.php index edea5ae9e5860..59bf66368a47a 100644 --- a/plugins/system/redirect/src/Extension/Redirect.php +++ b/plugins/system/redirect/src/Extension/Redirect.php @@ -12,13 +12,13 @@ use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Event\ErrorEvent; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; +use Joomla\Event\SubscriberInterface; use Joomla\String\StringHelper; // phpcs:disable PSR1.Files.SideEffects diff --git a/plugins/system/schemaorg/src/Extension/Schemaorg.php b/plugins/system/schemaorg/src/Extension/Schemaorg.php index 46390cb67ad65..c76b395afab8b 100644 --- a/plugins/system/schemaorg/src/Extension/Schemaorg.php +++ b/plugins/system/schemaorg/src/Extension/Schemaorg.php @@ -15,7 +15,6 @@ use Joomla\CMS\Event\Plugin\System\Schemaorg\PrepareDataEvent; use Joomla\CMS\Event\Plugin\System\Schemaorg\PrepareFormEvent; use Joomla\CMS\Event\Plugin\System\Schemaorg\PrepareSaveEvent; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Helper\ModuleHelper; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Text; @@ -29,6 +28,7 @@ use Joomla\CMS\User\UserFactoryAwareTrait; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; +use Joomla\Event\SubscriberInterface; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects diff --git a/plugins/system/sef/src/Extension/Sef.php b/plugins/system/sef/src/Extension/Sef.php index 55b53a1c6e5fa..17a3f3d746f5b 100644 --- a/plugins/system/sef/src/Extension/Sef.php +++ b/plugins/system/sef/src/Extension/Sef.php @@ -10,13 +10,13 @@ namespace Joomla\Plugin\System\Sef\Extension; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Router\Route; use Joomla\CMS\Router\Router; use Joomla\CMS\Router\SiteRouter; use Joomla\CMS\Router\SiteRouterAwareTrait; use Joomla\CMS\Uri\Uri; +use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/shortcut/src/Extension/Shortcut.php b/plugins/system/shortcut/src/Extension/Shortcut.php index 120e598a97856..d1cbcc80eade1 100644 --- a/plugins/system/shortcut/src/Extension/Shortcut.php +++ b/plugins/system/shortcut/src/Extension/Shortcut.php @@ -11,12 +11,12 @@ namespace Joomla\Plugin\System\Shortcut\Extension; use Joomla\CMS\Event\GenericEvent; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; use Joomla\Event\Event; +use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; diff --git a/plugins/system/tasknotification/src/Extension/TaskNotification.php b/plugins/system/tasknotification/src/Extension/TaskNotification.php index 1dee17dc7c296..3046974ecf23a 100644 --- a/plugins/system/tasknotification/src/Extension/TaskNotification.php +++ b/plugins/system/tasknotification/src/Extension/TaskNotification.php @@ -11,7 +11,6 @@ namespace Joomla\Plugin\System\TaskNotification\Extension; use Joomla\CMS\Event\Model; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Factory; use Joomla\CMS\Log\Log; use Joomla\CMS\Mail\MailTemplate; @@ -21,6 +20,7 @@ use Joomla\Component\Scheduler\Administrator\Task\Task; use Joomla\Database\DatabaseAwareTrait; use Joomla\Event\Event; +use Joomla\Event\SubscriberInterface; use Joomla\Filesystem\Path; use PHPMailer\PHPMailer\Exception as MailerException; diff --git a/plugins/system/webauthn/src/Extension/Webauthn.php b/plugins/system/webauthn/src/Extension/Webauthn.php index 72a89f347efdb..026ece9f8aef0 100644 --- a/plugins/system/webauthn/src/Extension/Webauthn.php +++ b/plugins/system/webauthn/src/Extension/Webauthn.php @@ -11,11 +11,11 @@ namespace Joomla\Plugin\System\Webauthn\Extension; use Joomla\CMS\Event\CoreEventAware; -use Joomla\CMS\Event\SubscriberInterface; use Joomla\CMS\Factory; use Joomla\CMS\Log\Log; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\Event\DispatcherInterface; +use Joomla\Event\SubscriberInterface; use Joomla\Plugin\System\Webauthn\Authentication; use Joomla\Plugin\System\Webauthn\PluginTraits\AdditionalLoginButtons; use Joomla\Plugin\System\Webauthn\PluginTraits\AjaxHandler;