diff --git a/app/AppKernel.php b/app/AppKernel.php index 597ac8b3c2..a7b8c43550 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -22,9 +22,6 @@ public function registerBundles(): array new \ForkCMS\Bundle\InstallerBundle\ForkCMSInstallerBundle(), new \ForkCMS\Bundle\CoreBundle\ForkCMSCoreBundle(), new \Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), - new \SimpleBus\SymfonyBridge\SimpleBusCommandBusBundle(), - new \SimpleBus\SymfonyBridge\DoctrineOrmBridgeBundle(), - new \SimpleBus\SymfonyBridge\SimpleBusEventBusBundle(), new \Backend\Modules\MediaLibrary\MediaLibrary(), new \Backend\Modules\Mailmotor\Mailmotor(), new \MailMotor\Bundle\MailMotorBundle\MailMotorMailMotorBundle(), diff --git a/app/config/config.yml b/app/config/config.yml index f6a5d29d9c..a5634699c2 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -135,9 +135,6 @@ services: logger.public: alias: logger public: true - command_bus.public: - alias: command_bus - public: true liip_imagine.cache.manager.public: alias: liip_imagine.cache.manager public: true @@ -160,6 +157,7 @@ services: # and caused some queries to break. - [ execute, [ 'SET sql_mode = REPLACE(@@SESSION.sql_mode, "ONLY_FULL_GROUP_BY", "")'] ] - [ setDebug, [ "%kernel.debug%" ]] + SpoonDatabase: '@database' cache.filesystem.adapter: class: League\Flysystem\Adapter\Local arguments: diff --git a/app/config/doctrine.yml b/app/config/doctrine.yml index a3266c0560..3b9ad7a203 100644 --- a/app/config/doctrine.yml +++ b/app/config/doctrine.yml @@ -41,10 +41,6 @@ doctrine: alias: Common prefix: Common\Doctrine\Entity -doctrine_orm_bridge: - entity_manager: default - connection: default - services: fork.entity.create_schema: class: Common\Doctrine\Entity\CreateSchema diff --git a/composer.json b/composer.json index 55a2f5676d..63fcd3d1c2 100644 --- a/composer.json +++ b/composer.json @@ -34,8 +34,6 @@ "pimple/pimple": "^3.2", "ramsey/uuid": "^4.0", "ramsey/uuid-doctrine": "^2.0", - "simple-bus/doctrine-orm-bridge": "6.2.*", - "simple-bus/symfony-bridge": "~6.2", "spoon/library": "^4.0", "symfony/monolog-bundle": "^3.1", "symfony/console": "^5.4", diff --git a/src/Backend/Core/Ajax/UpdateSequence.php b/src/Backend/Core/Ajax/UpdateSequence.php index d13a73038c..04112f7fff 100644 --- a/src/Backend/Core/Ajax/UpdateSequence.php +++ b/src/Backend/Core/Ajax/UpdateSequence.php @@ -4,6 +4,7 @@ use Backend\Core\Engine\Base\AjaxAction as BackendBaseAJAXAction; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Messenger\MessageBusInterface; class UpdateSequence extends BackendBaseAJAXAction { @@ -27,7 +28,9 @@ public function execute(): void $ids = (array) explode(',', rtrim($newIdSequence, ',')); // Handle the Categories ReSequence - $this->get('command_bus')->handle(new $this->handlerClass($ids)); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch(new $this->handlerClass($ids)); // success output $this->output(Response::HTTP_OK, null, 'sequence updated'); diff --git a/src/Backend/Modules/ContentBlocks/Actions/Add.php b/src/Backend/Modules/ContentBlocks/Actions/Add.php index 3d9e2d4f12..4d5e5d9850 100644 --- a/src/Backend/Modules/ContentBlocks/Actions/Add.php +++ b/src/Backend/Modules/ContentBlocks/Actions/Add.php @@ -9,6 +9,7 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockType; use Backend\Modules\ContentBlocks\Domain\ContentBlock\Event\ContentBlockCreated; use Symfony\Component\Form\Form; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the add-action, it will display a form to create a new item @@ -52,7 +53,9 @@ private function createContentBlock(Form $form): CreateContentBlock $createContentBlock->userId = Authentication::getUser()->getUserId(); // The command bus will handle the saving of the content block in the database. - $this->get('command_bus')->handle($createContentBlock); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($createContentBlock); return $createContentBlock; } diff --git a/src/Backend/Modules/ContentBlocks/Actions/Delete.php b/src/Backend/Modules/ContentBlocks/Actions/Delete.php index 74d5577f26..02870acae7 100644 --- a/src/Backend/Modules/ContentBlocks/Actions/Delete.php +++ b/src/Backend/Modules/ContentBlocks/Actions/Delete.php @@ -10,6 +10,7 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlock; use Backend\Modules\ContentBlocks\Domain\ContentBlock\Event\ContentBlockDeleted; use Backend\Modules\ContentBlocks\Domain\ContentBlock\Exception\ContentBlockNotFound; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the delete-action, it will delete an item. @@ -30,7 +31,9 @@ public function execute(): void $contentBlock = $this->getContentBlock((int) $deleteFormData['id']); // The command bus will handle the saving of the content block in the database. - $this->get('command_bus')->handle(new DeleteContentBlock($contentBlock)); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch(new DeleteContentBlock($contentBlock)); $this->get('event_dispatcher')->dispatch( new ContentBlockDeleted($contentBlock) diff --git a/src/Backend/Modules/ContentBlocks/Actions/Edit.php b/src/Backend/Modules/ContentBlocks/Actions/Edit.php index 0cac4f5d18..a43d6f1643 100644 --- a/src/Backend/Modules/ContentBlocks/Actions/Edit.php +++ b/src/Backend/Modules/ContentBlocks/Actions/Edit.php @@ -15,6 +15,7 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\Event\ContentBlockUpdated; use Backend\Modules\ContentBlocks\Domain\ContentBlock\Exception\ContentBlockNotFound; use Symfony\Component\Form\Form; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the edit-action, it will display a form to edit an existing item @@ -126,7 +127,9 @@ private function updateContentBlock(Form $form): UpdateContentBlock $updateContentBlock->userId = Authentication::getUser()->getUserId(); // The command bus will handle the saving of the content block in the database. - $this->get('command_bus')->handle($updateContentBlock); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateContentBlock); return $updateContentBlock; } diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php index ba3cdcbf16..b0a6a09a0c 100644 --- a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocale.php @@ -6,18 +6,13 @@ final class CopyContentBlocksToOtherLocale { - /** @var Locale */ - public $fromLocale; + /** This is used to be able to convert the old ids to the new ones if used in other places */ + public array $extraIdMap = []; - /** @var array this is used to be able to convert the old ids to the new ones if used in other places */ - public $extraIdMap; - - public function __construct(public Locale $toLocale, ?Locale $fromLocale = null) + public function __construct(public Locale $toLocale, public ?Locale $fromLocale = null) { - if ($fromLocale === null) { - $fromLocale = Locale::workingLocale(); + if ($this->fromLocale === null) { + $this->fromLocale = Locale::workingLocale(); } - $this->fromLocale = $fromLocale; - $this->extraIdMap = []; } } diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocaleHandler.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocaleHandler.php index 9734233ab3..779f9ed61b 100644 --- a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocaleHandler.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CopyContentBlocksToOtherLocaleHandler.php @@ -8,14 +8,19 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockRepository; use Backend\Modules\ContentBlocks\Domain\ContentBlock\Status; use Common\ModuleExtraType; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class CopyContentBlocksToOtherLocaleHandler { - public function __construct(private ContentBlockRepository $contentBlockRepository) - { + public function __construct( + private ContentBlockRepository $contentBlockRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(CopyContentBlocksToOtherLocale $copyContentBlocksToOtherLocale): void + public function __invoke(CopyContentBlocksToOtherLocale $copyContentBlocksToOtherLocale): void { $contentBlocksToCopy = $this->getContentBlocksToCopy($copyContentBlocksToOtherLocale->fromLocale); $id = $this->contentBlockRepository->getNextIdForLanguage($copyContentBlocksToOtherLocale->toLocale); @@ -36,6 +41,8 @@ function (ContentBlock $contentBlock) use ($copyContentBlocksToOtherLocale, &$id }, $contentBlocksToCopy ); + + $this->entityManager->flush(); } private function getContentBlocksToCopy(Locale $locale): array diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php index 399112dbb0..13b5804bc7 100644 --- a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/CreateContentBlockHandler.php @@ -6,14 +6,19 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlock; use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockRepository; use Common\ModuleExtraType; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class CreateContentBlockHandler { - public function __construct(private ContentBlockRepository $contentBlockRepository) - { + public function __construct( + private ContentBlockRepository $contentBlockRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(CreateContentBlock $createContentBlock): void + public function __invoke(CreateContentBlock $createContentBlock): void { $createContentBlock->extraId = $this->getNewExtraId(); $createContentBlock->id = $this->contentBlockRepository->getNextIdForLanguage($createContentBlock->locale); @@ -22,6 +27,8 @@ public function handle(CreateContentBlock $createContentBlock): void $this->contentBlockRepository->add($contentBlock); $createContentBlock->setContentBlockEntity($contentBlock); + + $this->entityManager->flush(); } private function getNewExtraId(): int diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlockHandler.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlockHandler.php index b7ebe220a5..a57926a0ce 100644 --- a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlockHandler.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/DeleteContentBlockHandler.php @@ -3,16 +3,20 @@ namespace Backend\Modules\ContentBlocks\Domain\ContentBlock\Command; use Backend\Core\Engine\Model; -use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlock; use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class DeleteContentBlockHandler { - public function __construct(private ContentBlockRepository $contentBlockRepository) - { + public function __construct( + private ContentBlockRepository $contentBlockRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(DeleteContentBlock $deleteContentBlock): void + public function __invoke(DeleteContentBlock $deleteContentBlock): void { $this->contentBlockRepository->removeByIdAndLocale( $deleteContentBlock->contentBlock->getId(), @@ -20,5 +24,7 @@ public function handle(DeleteContentBlock $deleteContentBlock): void ); Model::deleteExtraById($deleteContentBlock->contentBlock->getExtraId()); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/UpdateContentBlockHandler.php b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/UpdateContentBlockHandler.php index 5898707cd3..533189ae3d 100644 --- a/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/UpdateContentBlockHandler.php +++ b/src/Backend/Modules/ContentBlocks/Domain/ContentBlock/Command/UpdateContentBlockHandler.php @@ -4,18 +4,25 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlock; use Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class UpdateContentBlockHandler { - public function __construct(private ContentBlockRepository $contentBlockRepository) - { + public function __construct( + private ContentBlockRepository $contentBlockRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(UpdateContentBlock $updateContentBlock): void + public function __invoke(UpdateContentBlock $updateContentBlock): void { $contentBlock = ContentBlock::fromDataTransferObject($updateContentBlock); $this->contentBlockRepository->add($contentBlock); $updateContentBlock->setContentBlockEntity($contentBlock); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/ContentBlocks/Resources/config/commands.yml b/src/Backend/Modules/ContentBlocks/Resources/config/commands.yml index c1ac1be02c..fd72625a96 100644 --- a/src/Backend/Modules/ContentBlocks/Resources/config/commands.yml +++ b/src/Backend/Modules/ContentBlocks/Resources/config/commands.yml @@ -1,32 +1,11 @@ services: - content_blocks.handler.create_content_block: - class: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CreateContentBlockHandler + _defaults: + autowire: true + autoconfigure: true public: true - arguments: - - "@content_blocks.repository.content_block" - tags: - - { name: command_handler, handles: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CreateContentBlock } - content_blocks.handler.update_content_block: - class: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\UpdateContentBlockHandler - public: true - arguments: - - "@content_blocks.repository.content_block" - tags: - - { name: command_handler, handles: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\UpdateContentBlock } - - content_blocks.handler.delete_content_block: - class: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\DeleteContentBlockHandler - public: true - arguments: - - "@content_blocks.repository.content_block" - tags: - - { name: command_handler, handles: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\DeleteContentBlock } + Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CreateContentBlockHandler: + Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\UpdateContentBlockHandler: + Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\DeleteContentBlockHandler: - content_blocks.handler.copy_content_blocks_to_other_locale: - class: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CopyContentBlocksToOtherLocaleHandler - public: true - arguments: - - "@content_blocks.repository.content_block" - tags: - - { name: command_handler, handles: Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CopyContentBlocksToOtherLocale } + Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CopyContentBlocksToOtherLocaleHandler: diff --git a/src/Backend/Modules/ContentBlocks/Resources/config/repositories.yml b/src/Backend/Modules/ContentBlocks/Resources/config/repositories.yml index 660fea9e8b..bff1b94b73 100644 --- a/src/Backend/Modules/ContentBlocks/Resources/config/repositories.yml +++ b/src/Backend/Modules/ContentBlocks/Resources/config/repositories.yml @@ -5,3 +5,5 @@ services: factory: ["@doctrine.orm.entity_manager", getRepository] arguments: - Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlock + + Backend\Modules\ContentBlocks\Domain\ContentBlock\ContentBlockRepository: '@content_blocks.repository.content_block' diff --git a/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocale.php b/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocale.php index 65e0eaab38..aeccf477ba 100644 --- a/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocale.php +++ b/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocale.php @@ -6,18 +6,13 @@ final class CopyFormWidgetsToOtherLocale { - /** @var Locale */ - public $fromLocale; + /** This is used to be able to convert the old ids to the new ones if used in other places */ + public array $extraIdMap = []; - /** @var array this is used to be able to convert the old ids to the new ones if used in other places */ - public $extraIdMap; - - public function __construct(public Locale $toLocale, ?Locale $fromLocale = null) + public function __construct(public Locale $toLocale, public ?Locale $fromLocale = null) { - if ($fromLocale === null) { - $fromLocale = Locale::workingLocale(); + if ($this->fromLocale === null) { + $this->fromLocale = Locale::workingLocale(); } - $this->fromLocale = $fromLocale; - $this->extraIdMap = []; } } diff --git a/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocaleHandler.php b/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocaleHandler.php index b9e0580aea..af95485d38 100644 --- a/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocaleHandler.php +++ b/src/Backend/Modules/FormBuilder/Command/CopyFormWidgetsToOtherLocaleHandler.php @@ -5,14 +5,16 @@ use Backend\Core\Engine\Model as BackendModel; use Common\ModuleExtraType; use SpoonDatabase; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class CopyFormWidgetsToOtherLocaleHandler { public function __construct(private SpoonDatabase $database) { } - public function handle(CopyFormWidgetsToOtherLocale $command): void + public function __invoke(CopyFormWidgetsToOtherLocale $command): void { $currentWidgets = (array) $this->database->getRecords( 'SELECT * FROM modules_extras WHERE module = ? AND type = ? AND action = ?', diff --git a/src/Backend/Modules/FormBuilder/Resources/config/commands.yml b/src/Backend/Modules/FormBuilder/Resources/config/commands.yml index bcbb3c1487..0306a0b061 100644 --- a/src/Backend/Modules/FormBuilder/Resources/config/commands.yml +++ b/src/Backend/Modules/FormBuilder/Resources/config/commands.yml @@ -1,8 +1,7 @@ services: - form.handler.copy_widgets_to_other_locale: - class: Backend\Modules\FormBuilder\Command\CopyFormWidgetsToOtherLocaleHandler + _defaults: + autowire: true + autoconfigure: true public: true - arguments: - - "@database" - tags: - - { name: command_handler, handles: Backend\Modules\FormBuilder\Command\CopyFormWidgetsToOtherLocale } + + Backend\Modules\FormBuilder\Command\CopyFormWidgetsToOtherLocaleHandler: diff --git a/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocale.php b/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocale.php index ae442a8f37..3493d60093 100644 --- a/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocale.php +++ b/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocale.php @@ -6,14 +6,13 @@ final class CopyLocationWidgetsToOtherLocale { - /** @var array this is used to be able to convert the old ids to the new ones if used in other places */ + /** This is used to be able to convert the old ids to the new ones if used in other places */ public array $extraIdMap = []; public function __construct(public Locale $toLocale, public ?Locale $fromLocale = null) { - if ($fromLocale === null) { - $fromLocale = Locale::workingLocale(); + if ($this->fromLocale === null) { + $this->fromLocale = Locale::workingLocale(); } - $this->fromLocale = $fromLocale; } } diff --git a/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocaleHandler.php b/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocaleHandler.php index 87479c2a7a..42da8f750d 100644 --- a/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocaleHandler.php +++ b/src/Backend/Modules/Location/Command/CopyLocationWidgetsToOtherLocaleHandler.php @@ -4,14 +4,16 @@ use Common\ModuleExtraType; use SpoonDatabase; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class CopyLocationWidgetsToOtherLocaleHandler { public function __construct(private SpoonDatabase $database) { } - public function handle(CopyLocationWidgetsToOtherLocale $copyLocationWidgetsToOtherLocale): void + public function __invoke(CopyLocationWidgetsToOtherLocale $copyLocationWidgetsToOtherLocale): void { $currentWidgets = (array) $this->database->getRecords( 'SELECT * FROM modules_extras WHERE module = ? AND type = ? AND action = ?', diff --git a/src/Backend/Modules/Location/Resources/config/commands.yml b/src/Backend/Modules/Location/Resources/config/commands.yml index a8c4441433..464691da41 100644 --- a/src/Backend/Modules/Location/Resources/config/commands.yml +++ b/src/Backend/Modules/Location/Resources/config/commands.yml @@ -1,8 +1,7 @@ services: - location.handler.copy_widgets_to_other_locale: - class: Backend\Modules\Location\Command\CopyLocationWidgetsToOtherLocaleHandler + _defaults: + autowire: true + autoconfigure: true public: true - arguments: - - "@database" - tags: - - { name: command_handler, handles: Backend\Modules\Location\Command\CopyLocationWidgetsToOtherLocale } + + Backend\Modules\Location\Command\CopyLocationWidgetsToOtherLocaleHandler: diff --git a/src/Backend/Modules/Mailmotor/Actions/Ping.php b/src/Backend/Modules/Mailmotor/Actions/Ping.php index a596cfb650..776dc017d3 100644 --- a/src/Backend/Modules/Mailmotor/Actions/Ping.php +++ b/src/Backend/Modules/Mailmotor/Actions/Ping.php @@ -7,6 +7,7 @@ use Backend\Core\Language\Language; use Backend\Modules\Mailmotor\Domain\Settings\Command\SaveSettings; use Backend\Modules\Mailmotor\Domain\Settings\Event\SettingsSavedEvent; +use Symfony\Component\Messenger\MessageBusInterface; /** * This tests the api @@ -69,7 +70,9 @@ private function resetMailEngine(): void $saveSettings = new SaveSettings($this->get('fork.settings')); $saveSettings->mailEngine = 'not_implemented'; - $this->get('command_bus')->handle($saveSettings); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($saveSettings); $this->get('event_dispatcher')->dispatch( new SettingsSavedEvent($saveSettings) diff --git a/src/Backend/Modules/Mailmotor/Actions/Settings.php b/src/Backend/Modules/Mailmotor/Actions/Settings.php index c27a007795..a8af63f419 100755 --- a/src/Backend/Modules/Mailmotor/Actions/Settings.php +++ b/src/Backend/Modules/Mailmotor/Actions/Settings.php @@ -7,6 +7,7 @@ use Backend\Modules\Mailmotor\Domain\Settings\Command\SaveSettings; use Backend\Modules\Mailmotor\Domain\Settings\Event\SettingsSavedEvent; use Backend\Modules\Mailmotor\Domain\Settings\SettingsType; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the settings-action (default), @@ -38,7 +39,9 @@ public function execute(): void $settings = $form->getData(); // The command bus will handle the saving of the settings in the database. - $this->get('command_bus')->handle($settings); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($settings); $this->get('event_dispatcher')->dispatch( new SettingsSavedEvent($settings) diff --git a/src/Backend/Modules/Mailmotor/Domain/Settings/Command/SaveSettingsHandler.php b/src/Backend/Modules/Mailmotor/Domain/Settings/Command/SaveSettingsHandler.php index 6c8febe8af..65d20592e0 100644 --- a/src/Backend/Modules/Mailmotor/Domain/Settings/Command/SaveSettingsHandler.php +++ b/src/Backend/Modules/Mailmotor/Domain/Settings/Command/SaveSettingsHandler.php @@ -4,7 +4,9 @@ use Backend\Core\Language\Language; use Common\ModulesSettings; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class SaveSettingsHandler { private const string MODULE_NAME = 'Mailmotor'; @@ -13,7 +15,7 @@ public function __construct(private ModulesSettings $modulesSettings) { } - public function handle(SaveSettings $settings): void + public function __invoke(SaveSettings $settings): void { $this->modulesSettings->set(self::MODULE_NAME, 'mail_engine', $settings->mailEngine); $this->modulesSettings->set(self::MODULE_NAME, 'double_opt_in', $settings->doubleOptIn); diff --git a/src/Backend/Modules/Mailmotor/Resources/config/commands.yml b/src/Backend/Modules/Mailmotor/Resources/config/commands.yml index a82ed0e910..fac81a5c65 100755 --- a/src/Backend/Modules/Mailmotor/Resources/config/commands.yml +++ b/src/Backend/Modules/Mailmotor/Resources/config/commands.yml @@ -1,24 +1,17 @@ services: - mailmotor.handler.save_settings: - class: Backend\Modules\Mailmotor\Domain\Settings\Command\SaveSettingsHandler + _defaults: + autowire: true + autoconfigure: true public: true + + Backend\Modules\Mailmotor\Domain\Settings\Command\SaveSettingsHandler: arguments: - - "@fork.settings" - tags: - - { name: command_handler, handles: Backend\Modules\Mailmotor\Domain\Settings\Command\SaveSettings } - mailmotor.handler.subscription: - class: Frontend\Modules\Mailmotor\Domain\Subscription\Command\SubscriptionHandler - public: true + $modulesSettings: "@fork.settings" + Frontend\Modules\Mailmotor\Domain\Subscription\Command\SubscriptionHandler: arguments: - - "@mailmotor.subscriber" - - "@fork.settings" - tags: - - { name: command_handler, handles: Frontend\Modules\Mailmotor\Domain\Subscription\Command\Subscription } - mailmotor.handler.unsubscription: - class: Frontend\Modules\Mailmotor\Domain\Subscription\Command\UnsubscriptionHandler - public: true + $subscriber: "@mailmotor.subscriber" + $modulesSettings: "@fork.settings" + Frontend\Modules\Mailmotor\Domain\Subscription\Command\UnsubscriptionHandler: arguments: - - "@mailmotor.subscriber" - - "@fork.settings" - tags: - - { name: command_handler, handles: Frontend\Modules\Mailmotor\Domain\Subscription\Command\Unsubscription } + $subscriber: "@mailmotor.subscriber" + $modulesSettings: "@fork.settings" diff --git a/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryAdd.php b/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryAdd.php index 7a6f7d12bf..da385789a7 100644 --- a/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryAdd.php +++ b/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryAdd.php @@ -10,6 +10,7 @@ use Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\CreateMediaGallery; use InvalidArgumentException; use Symfony\Component\Form\Form; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the class to Add a MediaGallery @@ -45,7 +46,9 @@ private function createMediaGallery(Form $form): CreateMediaGallery $createMediaGallery = $form->getData(); // Handle the MediaGallery create - $this->get('command_bus')->handle($createMediaGallery); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($createMediaGallery); return $createMediaGallery; } diff --git a/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryDelete.php b/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryDelete.php index ac495e48ca..8111264287 100644 --- a/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryDelete.php +++ b/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryDelete.php @@ -8,6 +8,7 @@ use Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\DeleteMediaGallery; use Backend\Modules\MediaGalleries\Domain\MediaGallery\Exception\MediaGalleryNotFound; use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGallery; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the class to Delete a MediaGallery @@ -32,11 +33,12 @@ public function execute(): void /** @var MediaGallery $mediaGallery */ $mediaGallery = $this->getMediaGallery($deleteFormData['id']); - /** @var DeleteMediaGallery $deleteMediaGallery */ $deleteMediaGallery = new DeleteMediaGallery($mediaGallery); // Handle the MediaGallery delete - $this->get('command_bus')->handle($deleteMediaGallery); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($deleteMediaGallery); $this->redirect( $this->getBackLink( diff --git a/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryEdit.php b/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryEdit.php index eef5242dae..d768d3d814 100644 --- a/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryEdit.php +++ b/src/Backend/Modules/MediaGalleries/Actions/MediaGalleryEdit.php @@ -9,6 +9,7 @@ use Backend\Modules\MediaGalleries\Domain\MediaGallery\Exception\MediaGalleryNotFound; use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGallery; use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryType; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the class to Edit a MediaGallery @@ -59,7 +60,9 @@ public function execute(): void $updateMediaGallery = $form->getData(); // Handle the MediaGallery update - $this->get('command_bus')->handle($updateMediaGallery); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateMediaGallery); $this->redirect( $this->getBackLink( diff --git a/src/Backend/Modules/MediaGalleries/Console/MediaGalleryDeleteAllCommand.php b/src/Backend/Modules/MediaGalleries/Console/MediaGalleryDeleteAllCommand.php index 6489e1a8a2..4c45382a84 100644 --- a/src/Backend/Modules/MediaGalleries/Console/MediaGalleryDeleteAllCommand.php +++ b/src/Backend/Modules/MediaGalleries/Console/MediaGalleryDeleteAllCommand.php @@ -4,30 +4,28 @@ use Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\DeleteMediaGallery; use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryRepository; -use SimpleBus\SymfonyBridge\Bus\CommandBus; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Messenger\MessageBusInterface; -/** - * Delete media galleries Console Command - * Example: "bin/console media_galleries:delete:galleries", will delete all galleries - * Example: "bin/console media_galleries:delete:galleries --delete-media-items", will delete all galleries and all MediaItem entities - */ +#[AsCommand( + 'media_galleries:delete:galleries', + 'Delete media galleries.' +)] class MediaGalleryDeleteAllCommand extends Command { /** * The MediaGroupMediaItem connections are always deleted, * but should we delete the source MediaItem items as well? - * - * @var bool */ - protected $deleteMediaItems = false; + protected bool $deleteMediaItems = false; public function __construct( private readonly MediaGalleryRepository $mediaGalleryRepository, - private readonly CommandBus $commandBus, + private readonly MessageBusInterface $messageBus, ) { parent::__construct(); } @@ -35,13 +33,17 @@ public function __construct( protected function configure(): void { $this - ->setName('media_galleries:delete:galleries') - ->setDescription('Delete media galleries.') ->addOption( 'delete-media-items', null, InputOption::VALUE_NONE, 'If set, all connected MediaItems will be deleted as well from the library.' + ) + ->setHelp(<<<'EOF' + Delete media galleries Console Command + * Example: "bin/console media_galleries:delete:galleries", will delete all galleries + * Example: "bin/console media_galleries:delete:galleries --delete-media-items", will delete all galleries and all MediaItem entities + EOF ); } @@ -75,8 +77,8 @@ private function deleteMediaGalleries(): void // Loop all media galleries foreach ($mediaGalleries as $mediaGallery) { - $this->commandBus->handle( - new DeleteMediaGallery($mediaGallery), + $this->messageBus->dispatch( + new DeleteMediaGallery($mediaGallery, $this->deleteMediaItems), ); } } diff --git a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/CreateMediaGalleryHandler.php b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/CreateMediaGalleryHandler.php index e456cba47a..a62a7ccbe6 100644 --- a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/CreateMediaGalleryHandler.php +++ b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/CreateMediaGalleryHandler.php @@ -4,20 +4,26 @@ use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGallery; use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class CreateMediaGalleryHandler { - public function __construct(private MediaGalleryRepository $mediaGalleryRepository) - { + public function __construct( + private MediaGalleryRepository $mediaGalleryRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(CreateMediaGallery $createMediaGallery): void + public function __invoke(CreateMediaGallery $createMediaGallery): void { - /** @var MediaGallery $mediaGallery */ $mediaGallery = MediaGallery::fromDataTransferObject($createMediaGallery); $this->mediaGalleryRepository->add($mediaGallery); // We redefine the mediaGallery, so we can use it in an action $createMediaGallery->setMediaGalleryEntity($mediaGallery); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/DeleteMediaGalleryHandler.php b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/DeleteMediaGalleryHandler.php index bd3e395d0e..7a046b82e7 100644 --- a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/DeleteMediaGalleryHandler.php +++ b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/DeleteMediaGalleryHandler.php @@ -6,16 +6,20 @@ use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryRepository; use Backend\Modules\MediaLibrary\Domain\MediaGroupMediaItem\MediaGroupMediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class DeleteMediaGalleryHandler { public function __construct( private MediaGalleryRepository $mediaGalleryRepository, private MediaItemRepository $mediaItemRepository, + private EntityManagerInterface $entityManager, ) { } - public function handle(DeleteMediaGallery $deleteMediaGallery): void + public function __invoke(DeleteMediaGallery $deleteMediaGallery): void { // We should delete all MediaItem entities which were connected to this MediaGallery if ($deleteMediaGallery->deleteAllMediaItems) { @@ -30,5 +34,7 @@ public function handle(DeleteMediaGallery $deleteMediaGallery): void } $this->mediaGalleryRepository->remove($deleteMediaGallery->mediaGallery); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/UpdateMediaGalleryHandler.php b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/UpdateMediaGalleryHandler.php index e058b11a72..a9d434b1f6 100644 --- a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/UpdateMediaGalleryHandler.php +++ b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/Command/UpdateMediaGalleryHandler.php @@ -3,12 +3,22 @@ namespace Backend\Modules\MediaGalleries\Domain\MediaGallery\Command; use Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGallery; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class UpdateMediaGalleryHandler +#[AsMessageHandler] +final readonly class UpdateMediaGalleryHandler { - public function handle(UpdateMediaGallery $updateMediaGallery): void + public function __construct( + private EntityManagerInterface $entityManager, + ) { + } + + public function __invoke(UpdateMediaGallery $updateMediaGallery): void { // We redefine the mediaGallery, so we can use it in an action $updateMediaGallery->setMediaGalleryEntity(MediaGallery::fromDataTransferObject($updateMediaGallery)); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php index 6dbc5a2ba4..2ce443205f 100644 --- a/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php +++ b/src/Backend/Modules/MediaGalleries/Domain/MediaGallery/MediaGallery.php @@ -2,11 +2,11 @@ namespace Backend\Modules\MediaGalleries\Domain\MediaGallery; -use Ramsey\Uuid\Uuid; -use Doctrine\ORM\Mapping as ORM; use Backend\Core\Engine\Model; use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup; use Common\ModuleExtraType; +use Doctrine\ORM\Mapping as ORM; +use Ramsey\Uuid\Doctrine\UuidGenerator; /** * @ORM\Entity(repositoryClass="Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryRepository") @@ -18,7 +18,7 @@ class MediaGallery * @var string * * @ORM\Id() - * @ORM\GeneratedValue(strategy="UUID") + * @ORM\CustomIdGenerator(class=UuidGenerator::class) * @ORM\Column(type="guid") */ private $id; diff --git a/src/Backend/Modules/MediaGalleries/Resources/config/commands.yml b/src/Backend/Modules/MediaGalleries/Resources/config/commands.yml index b37dde5778..3745a2d094 100644 --- a/src/Backend/Modules/MediaGalleries/Resources/config/commands.yml +++ b/src/Backend/Modules/MediaGalleries/Resources/config/commands.yml @@ -1,23 +1,9 @@ services: - media_galleries.handler.create_media_gallery: - class: Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\CreateMediaGalleryHandler + _defaults: + autowire: true + autoconfigure: true public: true - arguments: - - "@media_galleries.repository.gallery" - tags: - - { name: command_handler, handles: Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\CreateMediaGallery } - media_galleries.handler.update_media_gallery: - class: Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\UpdateMediaGalleryHandler - public: true - tags: - - { name: command_handler, handles: Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\UpdateMediaGallery } - - media_galleries.handler.delete_media_gallery: - class: Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\DeleteMediaGalleryHandler - public: true - arguments: - - "@media_galleries.repository.gallery" - - "@media_library.repository.item" - tags: - - { name: command_handler, handles: Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\DeleteMediaGallery } + Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\CreateMediaGalleryHandler: + Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\UpdateMediaGalleryHandler: + Backend\Modules\MediaGalleries\Domain\MediaGallery\Command\DeleteMediaGalleryHandler: diff --git a/src/Backend/Modules/MediaGalleries/Resources/config/console.yml b/src/Backend/Modules/MediaGalleries/Resources/config/console.yml index 8751f42315..623fadc65a 100644 --- a/src/Backend/Modules/MediaGalleries/Resources/config/console.yml +++ b/src/Backend/Modules/MediaGalleries/Resources/config/console.yml @@ -1,8 +1,7 @@ services: - media_galleries.console.delete_galleries: - class: Backend\Modules\MediaGalleries\Console\MediaGalleryDeleteAllCommand - arguments: - - "@media_galleries.repository.gallery" - - "@command_bus" - tags: - - { name: console.command } + _defaults: + autowire: true + autoconfigure: true + public: true + + Backend\Modules\MediaGalleries\Console\MediaGalleryDeleteAllCommand: diff --git a/src/Backend/Modules/MediaGalleries/Resources/config/repositories.yml b/src/Backend/Modules/MediaGalleries/Resources/config/repositories.yml index 6b6366c8b5..bab7221452 100644 --- a/src/Backend/Modules/MediaGalleries/Resources/config/repositories.yml +++ b/src/Backend/Modules/MediaGalleries/Resources/config/repositories.yml @@ -5,3 +5,5 @@ services: factory: ["@doctrine.orm.entity_manager", getRepository] arguments: - Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGallery + + Backend\Modules\MediaGalleries\Domain\MediaGallery\MediaGalleryRepository: '@media_galleries.repository.gallery' diff --git a/src/Backend/Modules/MediaLibrary/Actions/MediaFolderDelete.php b/src/Backend/Modules/MediaLibrary/Actions/MediaFolderDelete.php index 7ac2144e17..aeae454898 100644 --- a/src/Backend/Modules/MediaLibrary/Actions/MediaFolderDelete.php +++ b/src/Backend/Modules/MediaLibrary/Actions/MediaFolderDelete.php @@ -7,6 +7,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\DeleteMediaFolder; use Backend\Modules\MediaLibrary\Domain\MediaFolder\Exception\MediaFolderNotFound; use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; +use Symfony\Component\Messenger\MessageBusInterface; class MediaFolderDelete extends BackendBaseActionDelete { @@ -69,16 +70,16 @@ private function checkIfDeleteIsAllowed(MediaFolder $mediaFolder): void private function deleteMediaFolder(): DeleteMediaFolder { - /** @var MediaFolder $mediaFolder */ $mediaFolder = $this->getMediaFolder(); $this->checkIfDeleteIsAllowed($mediaFolder); - /** @var DeleteMediaFolder $deleteMediaFolder */ $deleteMediaFolder = new DeleteMediaFolder($mediaFolder); // Handle the MediaFolder delete - $this->get('command_bus')->handle($deleteMediaFolder); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($deleteMediaFolder); return $deleteMediaFolder; } diff --git a/src/Backend/Modules/MediaLibrary/Actions/MediaItemEdit.php b/src/Backend/Modules/MediaLibrary/Actions/MediaItemEdit.php index f6258fecc5..0571c1c994 100644 --- a/src/Backend/Modules/MediaLibrary/Actions/MediaItemEdit.php +++ b/src/Backend/Modules/MediaLibrary/Actions/MediaItemEdit.php @@ -9,6 +9,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\Exception\MediaItemNotFound; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemType; +use Symfony\Component\Messenger\MessageBusInterface; class MediaItemEdit extends BackendBaseActionEdit { @@ -69,7 +70,9 @@ public function execute(): void $updateMediaItem = $form->getData(); // Handle the MediaItem update - $this->get('command_bus')->handle($updateMediaItem); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateMediaItem); $this->redirect( $this->getBackLink( diff --git a/src/Backend/Modules/MediaLibrary/Actions/MediaItemMassAction.php b/src/Backend/Modules/MediaLibrary/Actions/MediaItemMassAction.php index 898a198ec7..cc4df37e41 100755 --- a/src/Backend/Modules/MediaLibrary/Actions/MediaItemMassAction.php +++ b/src/Backend/Modules/MediaLibrary/Actions/MediaItemMassAction.php @@ -11,7 +11,9 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\Exception\MediaItemNotFound; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\Type; +use Backend\Modules\MediaLibrary\Manager\MediaItemManager; use Exception; +use Symfony\Component\Messenger\MessageBusInterface; /** * This action is used to update one or more media items (move, ...) @@ -190,15 +192,16 @@ private function move(MediaItem $mediaItem, Type $selectedType): void $updateMediaItem->folder = $this->moveToMediaFolder; // Handle the MediaItem update - $this->get('command_bus')->handle($updateMediaItem); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateMediaItem); } private function delete(MediaItem $mediaItem): void { - /** @var DeleteMediaItem $deleteMediaItem */ - $deleteMediaItem = new DeleteMediaItem($mediaItem); - // Handle the MediaItem delete - $this->get('command_bus')->handle($deleteMediaItem); + /** @var MediaItemManager $manager */ + $manager = $this->get('media_library.manager.item'); + $manager->delete($mediaItem); } } diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderAdd.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderAdd.php index 59dcd506cd..d2b3f8578d 100644 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderAdd.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderAdd.php @@ -10,6 +10,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; use Common\Exception\AjaxExitException; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Messenger\MessageBusInterface; /** * This AJAX-action will add a new MediaFolder. @@ -52,7 +53,9 @@ private function createMediaFolder(): CreateMediaFolder ); // Handle the MediaFolder create - $this->get('command_bus')->handle($createMediaFolder); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($createMediaFolder); return $createMediaFolder; } diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderEdit.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderEdit.php index 1a5e827955..99377b980a 100644 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderEdit.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderEdit.php @@ -10,6 +10,7 @@ use Common\Exception\AjaxExitException; use Common\Uri; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Messenger\MessageBusInterface; /** * This edit-action will update a folder using AJAX @@ -75,7 +76,9 @@ private function updateMediaFolder(): UpdateMediaFolder $updateMediaFolder->name = htmlspecialchars($name, ENT_QUOTES); // Handle the MediaFolder update - $this->get('command_bus')->handle($updateMediaFolder); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateMediaFolder); return $updateMediaFolder; } diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderMove.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderMove.php index 1f1cc9d123..ade3d80a5d 100755 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderMove.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaFolderMove.php @@ -10,6 +10,7 @@ use Backend\Modules\Pages\Engine\Model; use Common\Exception\AjaxExitException; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Messenger\MessageBusInterface; /** * This edit-action will reorder moved pages using Ajax @@ -21,15 +22,15 @@ public function execute(): void // call parent parent::execute(); - /** @var MediaFolder $mediaFolder */ $mediaFolder = $this->getMediaFolder(); - /** @var UpdateMediaFolder $updateMediaFolder */ $updateMediaFolder = new UpdateMediaFolder($mediaFolder); $updateMediaFolder->parent = $this->getMediaFolderWhereDroppedOn($this->getTypeOfDrop()); // Handle the MediaFolder update - $this->get('command_bus')->handle($updateMediaFolder); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateMediaFolder); $this->output( Response::HTTP_OK, diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemAddMovie.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemAddMovie.php index add9182430..0642250f9e 100644 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemAddMovie.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemAddMovie.php @@ -12,6 +12,7 @@ use Common\Exception\AjaxExitException; use InvalidArgumentException; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Messenger\MessageBusInterface; /** * This AJAX-action will add a new MediaItem movie. @@ -35,7 +36,6 @@ public function execute(): void private function createMovieMediaItem(): CreateMediaItemFromMovieUrl { - /** @var CreateMediaItemFromMovieUrl $createMediaItem */ $createMediaItemFromMovieUrl = new CreateMediaItemFromMovieUrl( $this->getMovieStorageType(), $this->getMovieId(), @@ -45,7 +45,9 @@ private function createMovieMediaItem(): CreateMediaItemFromMovieUrl ); // Handle the MediaItem create - $this->get('command_bus')->handle($createMediaItemFromMovieUrl); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($createMediaItemFromMovieUrl); return $createMediaItemFromMovieUrl; } diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemEditTitle.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemEditTitle.php index df6c30d87e..04f42ccea3 100644 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemEditTitle.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemEditTitle.php @@ -9,6 +9,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Common\Exception\AjaxExitException; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Messenger\MessageBusInterface; /** * This AJAX-action is being used to edit the title for an existing MediaItem item and save them into to the database. @@ -57,18 +58,18 @@ protected function getItemTitle(): ?string private function updateMediaItem(): UpdateMediaItem { - /** @var MediaItem $mediaItem */ $mediaItem = $this->getMediaItem(); /** @var string $title */ $title = $this->getItemTitle(); - /** @var UpdateMediaItem $updateMediaItem */ $updateMediaItem = new UpdateMediaItem($mediaItem); $updateMediaItem->title = $title; // Handle the MediaItem update - $this->get('command_bus')->handle($updateMediaItem); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($updateMediaItem); return $updateMediaItem; } diff --git a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php index 2023489fe0..6f253065a1 100644 --- a/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php +++ b/src/Backend/Modules/MediaLibrary/Ajax/MediaItemUpload.php @@ -16,10 +16,10 @@ use Backend\Modules\MediaLibrary\Manager\MimeTypeManager; use Common\Exception\AjaxExitException; use Common\Exception\RedirectException; -use SimpleBus\Message\Bus\MessageBus; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\KernelInterface; +use Symfony\Component\Messenger\MessageBusInterface; /** * This AJAX-action is being used to upload new MediaItem items and save them into to the database. @@ -47,8 +47,8 @@ class MediaItemUpload extends BackendBaseAJAXAction /** @var MediaFolderRepository */ private $mediaFolderRepository; - /** @var MessageBus */ - private $commandBus; + /** @var MessageBusInterface */ + private $messageBus; /** @var UploadHandler */ private $uploadHandler; @@ -69,7 +69,7 @@ public function setKernel(?KernelInterface $kernel = null): void $this->extensionManager = $this->get('media_library.manager.extension'); $this->mimeTypeManager = $this->get('media_library.manager.mime_type'); $this->mediaFolderRepository = $this->get('media_library.repository.folder'); - $this->commandBus = $this->get('command_bus'); + $this->messageBus = $this->get('messenger.default_bus'); } public function execute(): void @@ -110,7 +110,7 @@ public function execute(): void BackendAuthentication::getUser()->getUserId() ); - $this->commandBus->handle($createMediaItemFromLocalSource); + $this->messageBus->dispatch($createMediaItemFromLocalSource); $this->sendResponseForResult( array_merge( diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/CreateMediaFolderHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/CreateMediaFolderHandler.php index 7e074ed6ca..c067e6785a 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/CreateMediaFolderHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/CreateMediaFolderHandler.php @@ -4,14 +4,19 @@ use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolderRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class CreateMediaFolderHandler +#[AsMessageHandler] +final readonly class CreateMediaFolderHandler { - public function __construct(protected MediaFolderRepository $mediaFolderRepository) - { + public function __construct( + private MediaFolderRepository $mediaFolderRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(CreateMediaFolder $createMediaFolder): void + public function __invoke(CreateMediaFolder $createMediaFolder): void { /** @var MediaFolder $mediaFolder */ $mediaFolder = MediaFolder::fromDataTransferObject($createMediaFolder); @@ -19,5 +24,7 @@ public function handle(CreateMediaFolder $createMediaFolder): void // We redefine the MediaFolder, so we can use it in an action $createMediaFolder->setMediaFolderEntity($mediaFolder); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/DeleteMediaFolderHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/DeleteMediaFolderHandler.php index 69c97bb570..8646916af4 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/DeleteMediaFolderHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/DeleteMediaFolderHandler.php @@ -2,20 +2,25 @@ namespace Backend\Modules\MediaLibrary\Domain\MediaFolder\Command; -use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolderRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class DeleteMediaFolderHandler +#[AsMessageHandler] +final readonly class DeleteMediaFolderHandler { - public function __construct(protected MediaFolderRepository $mediaFolderRepository) - { + public function __construct( + private MediaFolderRepository $mediaFolderRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(DeleteMediaFolder $deleteMediaFolder): void + public function __invoke(DeleteMediaFolder $deleteMediaFolder): void { - /** @var MediaFolder $mediaFolder */ $mediaFolder = $deleteMediaFolder->mediaFolder; $this->mediaFolderRepository->remove($mediaFolder); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/UpdateMediaFolderHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/UpdateMediaFolderHandler.php index 89fff4e1e3..3fa0e786d2 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/UpdateMediaFolderHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaFolder/Command/UpdateMediaFolderHandler.php @@ -3,12 +3,22 @@ namespace Backend\Modules\MediaLibrary\Domain\MediaFolder\Command; use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class UpdateMediaFolderHandler +#[AsMessageHandler] +final readonly class UpdateMediaFolderHandler { - public function handle(UpdateMediaFolder $updateMediaFolder): void + public function __construct( + private EntityManagerInterface $entityManager, + ) { + } + + public function __invoke(UpdateMediaFolder $updateMediaFolder): void { // We redefine the MediaFolder, so we can use it in an action $updateMediaFolder->setMediaFolderEntity(MediaFolder::fromDataTransferObject($updateMediaFolder)); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php index 3f46c0c0f9..b89988c683 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/Command/SaveMediaGroupHandler.php @@ -6,15 +6,20 @@ use Backend\Modules\MediaLibrary\Domain\MediaGroupMediaItem\MediaGroupMediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\Exception\MediaItemNotFound; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; +use Doctrine\ORM\EntityManagerInterface; use Ramsey\Uuid\Uuid; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class SaveMediaGroupHandler +#[AsMessageHandler] +final readonly class SaveMediaGroupHandler { - public function __construct(protected MediaItemRepository $mediaItemRepository) - { + public function __construct( + private MediaItemRepository $mediaItemRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(SaveMediaGroup $saveMediaGroup): void + public function __invoke(SaveMediaGroup $saveMediaGroup): void { /** @var MediaGroup $mediaGroup */ $mediaGroup = MediaGroup::fromDataTransferObject($saveMediaGroup); @@ -41,5 +46,7 @@ private function updateConnectedItems(MediaGroup $mediaGroup, array $mediaItemId // Do nothing } } + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php index 18a028b194..def18b8bc8 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaGroup/MediaGroupType.php @@ -9,7 +9,6 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\Type as MediaItemPossibleType; use Backend\Modules\MediaLibrary\Domain\MediaGroup\Type as MediaGroupPossibleType; use Ramsey\Uuid\Uuid; -use SimpleBus\Message\Bus\Middleware\MessageBusSupportingMiddleware; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\CallbackTransformer; use Symfony\Component\Form\Exception\LogicException; @@ -17,6 +16,7 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; +use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints; @@ -28,7 +28,7 @@ class MediaGroupType extends AbstractType { public function __construct( private readonly MediaGroupRepository $mediaGroupRepository, - private readonly MessageBusSupportingMiddleware $commandBus, + private readonly MessageBusInterface $messageBus, ) { } @@ -229,7 +229,7 @@ private function saveMediaGroup(MediaGroup $mediaGroup, array $mediaItemIds): Sa ); // Handle the MediaGroup save - $this->commandBus->handle($saveMediaGroup); + $this->messageBus->dispatch($saveMediaGroup); return $saveMediaGroup; } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php index 7c8932df6b..40b47ba83f 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromLocalStorageTypeHandler.php @@ -4,14 +4,19 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class CreateMediaItemFromLocalStorageTypeHandler +#[AsMessageHandler] +final readonly class CreateMediaItemFromLocalStorageTypeHandler { - public function __construct(protected MediaItemRepository $mediaItemRepository) - { + public function __construct( + private MediaItemRepository $mediaItemRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(CreateMediaItemFromLocalStorageType $createMediaItemFromLocalStorageType): void + public function __invoke(CreateMediaItemFromLocalStorageType $createMediaItemFromLocalStorageType): void { /** @var MediaItem $mediaItem */ $mediaItem = MediaItem::createFromLocalStorageType( @@ -23,5 +28,7 @@ public function handle(CreateMediaItemFromLocalStorageType $createMediaItemFromL $this->mediaItemRepository->add($mediaItem); $createMediaItemFromLocalStorageType->setMediaItem($mediaItem); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromMovieUrlHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromMovieUrlHandler.php index 826f3672ab..3a5d99578a 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromMovieUrlHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/CreateMediaItemFromMovieUrlHandler.php @@ -4,16 +4,20 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class CreateMediaItemFromMovieUrlHandler +#[AsMessageHandler] +final readonly class CreateMediaItemFromMovieUrlHandler { - public function __construct(protected MediaItemRepository $mediaItemRepository) - { + public function __construct( + private MediaItemRepository $mediaItemRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(CreateMediaItemFromMovieUrl $createMediaItemFromMovieUrl): void + public function __invoke(CreateMediaItemFromMovieUrl $createMediaItemFromMovieUrl): void { - /** @var MediaItem $mediaItem */ $mediaItem = MediaItem::createFromMovieUrl( $createMediaItemFromMovieUrl->source, $createMediaItemFromMovieUrl->movieId, @@ -25,5 +29,7 @@ public function handle(CreateMediaItemFromMovieUrl $createMediaItemFromMovieUrl) $createMediaItemFromMovieUrl->setMediaItem($mediaItem); $this->mediaItemRepository->add($mediaItem); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/DeleteMediaItemHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/DeleteMediaItemHandler.php index 72f0d90647..ac8cb035dd 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/DeleteMediaItemHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/DeleteMediaItemHandler.php @@ -3,15 +3,21 @@ namespace Backend\Modules\MediaLibrary\Domain\MediaItem\Command; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class DeleteMediaItemHandler { - public function __construct(private MediaItemRepository $mediaItemRepository) - { + public function __construct( + private MediaItemRepository $mediaItemRepository, + private EntityManagerInterface $entityManager, + ) { } - public function handle(DeleteMediaItem $deleteMediaItem): void + public function __invoke(DeleteMediaItem $deleteMediaItem): void { $this->mediaItemRepository->remove($deleteMediaItem->mediaItem); + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/UpdateMediaItemHandler.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/UpdateMediaItemHandler.php index 99d117e46d..4c24265d0b 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/UpdateMediaItemHandler.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/Command/UpdateMediaItemHandler.php @@ -3,11 +3,21 @@ namespace Backend\Modules\MediaLibrary\Domain\MediaItem\Command; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -final class UpdateMediaItemHandler +#[AsMessageHandler] +final readonly class UpdateMediaItemHandler { - public function handle(UpdateMediaItem $updateMediaItem): void + public function __construct( + private EntityManagerInterface $entityManager, + ) { + } + + public function __invoke(UpdateMediaItem $updateMediaItem): void { MediaItem::fromDataTransferObject($updateMediaItem); + + $this->entityManager->flush(); } } diff --git a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php index 7e971973a7..3e66f7b15f 100644 --- a/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php +++ b/src/Backend/Modules/MediaLibrary/Domain/MediaItem/MediaItem.php @@ -11,6 +11,7 @@ use Doctrine\Common\Collections\ArrayCollection; use Exception; use JsonSerializable; +use Ramsey\Uuid\Doctrine\UuidGenerator; use Symfony\Component\HttpFoundation\File\File; use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; use Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolder; @@ -28,7 +29,8 @@ class MediaItem implements JsonSerializable * @var string * * @ORM\Id() - * @ORM\GeneratedValue(strategy="UUID") + * @ORM\GeneratedValue(strategy="CUSTOM") + * @ORM\CustomIdGenerator(class=UuidGenerator::class) * @ORM\Column(type="guid") */ private $id; diff --git a/src/Backend/Modules/MediaLibrary/EventListener/MediaItemDeletedReSequenceMediaGroupMediaItemListener.php b/src/Backend/Modules/MediaLibrary/EventListener/MediaItemDeletedReSequenceMediaGroupMediaItemListener.php index f0fd6d630f..10021bdf81 100644 --- a/src/Backend/Modules/MediaLibrary/EventListener/MediaItemDeletedReSequenceMediaGroupMediaItemListener.php +++ b/src/Backend/Modules/MediaLibrary/EventListener/MediaItemDeletedReSequenceMediaGroupMediaItemListener.php @@ -5,18 +5,19 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Event\LifecycleEventArgs; -use SimpleBus\Message\Bus\MessageBus; use Backend\Modules\MediaLibrary\Domain\MediaGroup\Command\SaveMediaGroup; use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup; use Backend\Modules\MediaLibrary\Domain\MediaGroupMediaItem\MediaGroupMediaItem; +use Symfony\Component\Messenger\MessageBusInterface; /** * When MediaItem is deleted, re-sequence the MediaGroupMediaItem entities. */ -final class MediaItemDeletedReSequenceMediaGroupMediaItemListener +final readonly class MediaItemDeletedReSequenceMediaGroupMediaItemListener { - public function __construct(protected MessageBus $commandBus) - { + public function __construct( + private MessageBusInterface $messageBus, + ) { } public function postRemove(LifecycleEventArgs $eventArgs): void @@ -58,6 +59,6 @@ private function updateMediaGroupSequence(MediaGroup $mediaGroup): void $newMediaIds ); - $this->commandBus->handle($updateMediaGroup); + $this->messageBus->dispatch($updateMediaGroup); } } diff --git a/src/Backend/Modules/MediaLibrary/EventListener/MediaItemSubscriber.php b/src/Backend/Modules/MediaLibrary/EventListener/MediaItemSubscriber.php index 48bb943d99..3a70ca5512 100644 --- a/src/Backend/Modules/MediaLibrary/EventListener/MediaItemSubscriber.php +++ b/src/Backend/Modules/MediaLibrary/EventListener/MediaItemSubscriber.php @@ -9,7 +9,6 @@ use Doctrine\ORM\Event\PostRemoveEventArgs; use Doctrine\ORM\Events; use Liip\ImagineBundle\Imagine\Cache\CacheManager; -use SimpleBus\Message\Bus\MessageBus; /** * MediaItem Subscriber @@ -19,7 +18,6 @@ final class MediaItemSubscriber implements EventSubscriber public function __construct( protected FileManager $fileManager, protected CacheManager $cacheManager, - protected MessageBus $commandBus, ) { } diff --git a/src/Backend/Modules/MediaLibrary/Installer/Installer.php b/src/Backend/Modules/MediaLibrary/Installer/Installer.php index ffbb40d77c..9439de9adb 100755 --- a/src/Backend/Modules/MediaLibrary/Installer/Installer.php +++ b/src/Backend/Modules/MediaLibrary/Installer/Installer.php @@ -9,6 +9,7 @@ use Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroup; use Backend\Modules\MediaLibrary\Domain\MediaGroupMediaItem\MediaGroupMediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; +use Symfony\Component\Messenger\MessageBusInterface; /** * Installer for the MediaLibrary module @@ -102,7 +103,9 @@ protected function configureSettings(): void protected function loadMediaFolders(): void { // Handle the create MediaFolder - Model::get('command_bus')->handle(new CreateMediaFolder('default', 1)); + /** @var MessageBusInterface $messageBus */ + $messageBus = Model::get('messenger.default_bus'); + $messageBus->dispatch(new CreateMediaFolder('default', 1)); // Delete cache Model::get('media_library.cache.media_folder')->delete(); diff --git a/src/Backend/Modules/MediaLibrary/Manager/MediaItemManager.php b/src/Backend/Modules/MediaLibrary/Manager/MediaItemManager.php index 10069e8a62..943f6e3f6b 100644 --- a/src/Backend/Modules/MediaLibrary/Manager/MediaItemManager.php +++ b/src/Backend/Modules/MediaLibrary/Manager/MediaItemManager.php @@ -4,14 +4,12 @@ use Backend\Modules\MediaLibrary\Domain\MediaItem\Command\DeleteMediaItem; use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem; -use Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository; -use SimpleBus\Message\Bus\Middleware\MessageBusSupportingMiddleware; +use Symfony\Component\Messenger\MessageBusInterface; -class MediaItemManager +final readonly class MediaItemManager { public function __construct( - private readonly MediaItemRepository $mediaItemRepository, - private readonly MessageBusSupportingMiddleware $commandBus, + private MessageBusInterface $messageBus, ) { } @@ -20,7 +18,7 @@ public function delete(MediaItem $mediaItem): DeleteMediaItem $deleteMediaItem = new DeleteMediaItem($mediaItem); // Handle the MediaItem delete - $this->commandBus->handle($deleteMediaItem); + $this->messageBus->dispatch($deleteMediaItem); return $deleteMediaItem; } diff --git a/src/Backend/Modules/MediaLibrary/Resources/config/commands.yml b/src/Backend/Modules/MediaLibrary/Resources/config/commands.yml index 02219ffc0c..ab9b1b069e 100644 --- a/src/Backend/Modules/MediaLibrary/Resources/config/commands.yml +++ b/src/Backend/Modules/MediaLibrary/Resources/config/commands.yml @@ -1,58 +1,19 @@ services: - # MediaFolder - media_galleries.handler.create_media_folder: - class: Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\CreateMediaFolderHandler - public: true - arguments: - - "@media_library.repository.folder" - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\CreateMediaFolder } - media_galleries.handler.delete_media_folder: - class: Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\DeleteMediaFolderHandler - public: true - arguments: - - "@media_library.repository.folder" - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\DeleteMediaFolder } - media_galleries.handler.update_media_folder: - class: Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\UpdateMediaFolderHandler + _defaults: + autowire: true + autoconfigure: true public: true - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\UpdateMediaFolder } + + # MediaFolder + Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\CreateMediaFolderHandler: + Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\DeleteMediaFolderHandler: + Backend\Modules\MediaLibrary\Domain\MediaFolder\Command\UpdateMediaFolderHandler: # MediaGroup - media_galleries.handler.update_media_group: - class: Backend\Modules\MediaLibrary\Domain\MediaGroup\Command\SaveMediaGroupHandler - public: true - arguments: - - "@media_library.repository.item" - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaGroup\Command\SaveMediaGroup } + Backend\Modules\MediaLibrary\Domain\MediaGroup\Command\SaveMediaGroupHandler: # MediaItem - media_galleries.handler.create_media_item_from_movie_url: - class: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\CreateMediaItemFromMovieUrlHandler - public: true - arguments: - - "@media_library.repository.item" - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\CreateMediaItemFromMovieUrl } - media_galleries.handler.create_media_item_from_local_source: - class: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\CreateMediaItemFromLocalStorageTypeHandler - public: true - arguments: - - "@media_library.repository.item" - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\CreateMediaItemFromLocalStorageType } - media_library.handler.delete_media_item: - class: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\DeleteMediaItemHandler - public: true - arguments: - - "@media_library.repository.item" - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\DeleteMediaItem } - media_galleries.handler.update_media_item: - class: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\UpdateMediaItemHandler - public: true - tags: - - { name: command_handler, handles: Backend\Modules\MediaLibrary\Domain\MediaItem\Command\UpdateMediaItem } + Backend\Modules\MediaLibrary\Domain\MediaItem\Command\CreateMediaItemFromMovieUrlHandler: + Backend\Modules\MediaLibrary\Domain\MediaItem\Command\CreateMediaItemFromLocalStorageTypeHandler: + Backend\Modules\MediaLibrary\Domain\MediaItem\Command\DeleteMediaItemHandler: + Backend\Modules\MediaLibrary\Domain\MediaItem\Command\UpdateMediaItemHandler: diff --git a/src/Backend/Modules/MediaLibrary/Resources/config/events.yml b/src/Backend/Modules/MediaLibrary/Resources/config/events.yml index 31b348c339..6ba8a417c4 100644 --- a/src/Backend/Modules/MediaLibrary/Resources/config/events.yml +++ b/src/Backend/Modules/MediaLibrary/Resources/config/events.yml @@ -1,4 +1,9 @@ services: + _defaults: + autowire: true + autoconfigure: true + public: true + media_library.listener.invalidate_backend_media_folder_cache: class: Backend\Modules\MediaLibrary\EventListener\MediaFolderInvalidateBackendCacheSubscriber arguments: @@ -12,10 +17,6 @@ services: arguments: - "@media_library.manager.file" - "@liip_imagine.cache.manager" - - "@command_bus" - media_library.listener.media_item_deleted_resequence: - class: Backend\Modules\MediaLibrary\EventListener\MediaItemDeletedReSequenceMediaGroupMediaItemListener - arguments: - - "@command_bus" + Backend\Modules\MediaLibrary\EventListener\MediaItemDeletedReSequenceMediaGroupMediaItemListener: tags: - { name: doctrine.event_listener, event: postRemove } diff --git a/src/Backend/Modules/MediaLibrary/Resources/config/form.yml b/src/Backend/Modules/MediaLibrary/Resources/config/form.yml index 69f1b8c949..e6a5ef049e 100644 --- a/src/Backend/Modules/MediaLibrary/Resources/config/form.yml +++ b/src/Backend/Modules/MediaLibrary/Resources/config/form.yml @@ -1,15 +1,8 @@ services: - media_library.form.type.media_group: - class: Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroupType - arguments: - - "@media_library.repository.group" - - "@command_bus" - tags: - - { name: form.type } + _defaults: + autowire: true + autoconfigure: true + public: true + Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroupType: Backend\Modules\MediaLibrary\Domain\MediaGroup\SingleMediaGroupType: - arguments: - - "@media_library.repository.group" - - "@command_bus" - tags: - - { name: form.type } diff --git a/src/Backend/Modules/MediaLibrary/Resources/config/managers.yml b/src/Backend/Modules/MediaLibrary/Resources/config/managers.yml index 2ca4714fd9..5e381744b1 100644 --- a/src/Backend/Modules/MediaLibrary/Resources/config/managers.yml +++ b/src/Backend/Modules/MediaLibrary/Resources/config/managers.yml @@ -18,9 +18,7 @@ services: class: Backend\Modules\MediaLibrary\Manager\MediaItemManager public: true arguments: - - "@media_library.repository.item" - - "@command_bus" - - "@event_dispatcher" + - "@messenger.bus.default" media_library.manager.mime_type: class: Backend\Modules\MediaLibrary\Manager\MimeTypeManager diff --git a/src/Backend/Modules/MediaLibrary/Resources/config/repositories.yml b/src/Backend/Modules/MediaLibrary/Resources/config/repositories.yml index 25e7f1900a..a0d619c81d 100644 --- a/src/Backend/Modules/MediaLibrary/Resources/config/repositories.yml +++ b/src/Backend/Modules/MediaLibrary/Resources/config/repositories.yml @@ -26,3 +26,7 @@ services: factory: ["@doctrine.orm.entity_manager", getRepository] arguments: - Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItem + + Backend\Modules\MediaLibrary\Domain\MediaFolder\MediaFolderRepository: '@media_library.repository.folder' + Backend\Modules\MediaLibrary\Domain\MediaGroup\MediaGroupRepository: '@media_library.repository.group' + Backend\Modules\MediaLibrary\Domain\MediaItem\MediaItemRepository: '@media_library.repository.item' diff --git a/src/Backend/Modules/Pages/Engine/Model.php b/src/Backend/Modules/Pages/Engine/Model.php index 77acdc7085..49a3c64339 100644 --- a/src/Backend/Modules/Pages/Engine/Model.php +++ b/src/Backend/Modules/Pages/Engine/Model.php @@ -5,9 +5,7 @@ use Backend\Modules\ContentBlocks\Domain\ContentBlock\Command\CopyContentBlocksToOtherLocale; use Backend\Modules\FormBuilder\Command\CopyFormWidgetsToOtherLocale; use Backend\Modules\Location\Command\CopyLocationWidgetsToOtherLocale; -use Common\Doctrine\Entity\Meta; use ForkCMS\Utility\Thumbnails; -use SimpleBus\Message\Bus\MessageBus; use InvalidArgumentException; use Symfony\Component\Filesystem\Filesystem; use Backend\Core\Engine\Authentication as BackendAuthentication; @@ -19,6 +17,7 @@ use Backend\Modules\Tags\Engine\Model as BackendTagsModel; use ForkCMS\App\ForkController; use Frontend\Core\Language\Language as FrontendLanguage; +use Symfony\Component\Messenger\MessageBusInterface; use function Symfony\Component\String\s; /** @@ -95,15 +94,15 @@ public static function copy(string $fromLanguage, string $toLanguage): void // get database $database = BackendModel::getContainer()->get('database'); - /** @var MessageBus $commanBus */ - $commandBus = BackendModel::get('command_bus'); + /** @var MessageBusInterface $messageBus */ + $messageBus = BackendModel::get('messenger.default_bus'); $toLocale = Locale::fromString($toLanguage); $fromLocale = Locale::fromString($fromLanguage); // copy contentBlocks and get copied contentBlockIds $copyContentBlocks = new CopyContentBlocksToOtherLocale($toLocale, $fromLocale); - $commandBus->handle($copyContentBlocks); + $messageBus->dispatch($copyContentBlocks); $contentBlockIds = $copyContentBlocks->extraIdMap; // define old block ids @@ -113,7 +112,7 @@ public static function copy(string $fromLanguage, string $toLanguage): void if (BackendModel::isModuleInstalled('Location')) { // copy location widgets and get copied widget ids $copyLocationWidgets = new CopyLocationWidgetsToOtherLocale($toLocale, $fromLocale); - $commandBus->handle($copyLocationWidgets); + $messageBus->dispatch($copyLocationWidgets); $locationWidgetIds = $copyLocationWidgets->extraIdMap; // define old block ids @@ -125,7 +124,7 @@ public static function copy(string $fromLanguage, string $toLanguage): void if (BackendModel::isModuleInstalled('FormBuilder')) { // copy form widgets and get copied widget ids $copyFormWidgets = new CopyFormWidgetsToOtherLocale($toLocale, $fromLocale); - $commandBus->handle($copyFormWidgets); + $messageBus->dispatch($copyFormWidgets); $formWidgetIds = $copyFormWidgets->extraIdMap; // define old block ids diff --git a/src/Common/Locale.php b/src/Common/Locale.php index aafbf76e00..bbae615f30 100644 --- a/src/Common/Locale.php +++ b/src/Common/Locale.php @@ -18,7 +18,7 @@ final protected function __construct(string $locale) $this->setLocale($locale); } - public static function fromString(string $locale): self + public static function fromString(string $locale): static { return new static($locale); } diff --git a/src/ForkCMS/Bundle/InstallerBundle/Service/InstallerConnectionFactory.php b/src/ForkCMS/Bundle/InstallerBundle/Service/InstallerConnectionFactory.php index 3e8a7f6ab5..4d9e282e57 100644 --- a/src/ForkCMS/Bundle/InstallerBundle/Service/InstallerConnectionFactory.php +++ b/src/ForkCMS/Bundle/InstallerBundle/Service/InstallerConnectionFactory.php @@ -6,7 +6,7 @@ use Doctrine\Common\EventManager; use Doctrine\DBAL\Configuration; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\DBALException; +use Doctrine\DBAL\Exception; use Doctrine\DBAL\DriverManager; use ForkCMS\Bundle\InstallerBundle\Controller\InstallerController; use ForkCMS\Bundle\InstallerBundle\Entity\InstallationData; @@ -34,7 +34,7 @@ public function createConnection( //continue with regular connection creation using new params return parent::createConnection($params, $config, $eventManager, $mappingTypes); - } catch (ConnectionException | DBALException) { + } catch (ConnectionException | Exception) { return $this->getInstallerConnection($params, $config, $eventManager); } } diff --git a/src/Frontend/Modules/Mailmotor/Actions/Subscribe.php b/src/Frontend/Modules/Mailmotor/Actions/Subscribe.php index 528e06b45b..0d29ab39dd 100644 --- a/src/Frontend/Modules/Mailmotor/Actions/Subscribe.php +++ b/src/Frontend/Modules/Mailmotor/Actions/Subscribe.php @@ -10,6 +10,7 @@ use Frontend\Modules\Mailmotor\Domain\Subscription\Event\NotImplementedSubscribedEvent; use Frontend\Modules\Mailmotor\Domain\Subscription\SubscribeType; use MailMotor\Bundle\MailMotorBundle\Exception\NotImplementedException; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the Subscribe-action for the Mailmotor @@ -53,7 +54,9 @@ public function execute(): void try { // The command bus will handle the subscription - $this->get('command_bus')->handle($subscription); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($subscription); } catch (NotImplementedException) { // fallback for when no mail-engine is chosen in the Backend $this->get('event_dispatcher')->dispatch( @@ -68,7 +71,7 @@ public function execute(): void throw $exception; } - $this->getContainer()->get('logger')->error('Mailmotor Subcribe Mailchimp error: ' . $reason); + $this->getContainer()->get('logger.public')->error('Mailmotor Subscribe Mailchimp error: ' . $reason); $this->template->assign('mailmotorSubscribeHasFormError', true); $this->template->assign('form', $form->createView()); diff --git a/src/Frontend/Modules/Mailmotor/Actions/Unsubscribe.php b/src/Frontend/Modules/Mailmotor/Actions/Unsubscribe.php index b0e112b1af..5a822b3601 100644 --- a/src/Frontend/Modules/Mailmotor/Actions/Unsubscribe.php +++ b/src/Frontend/Modules/Mailmotor/Actions/Unsubscribe.php @@ -10,6 +10,7 @@ use Frontend\Modules\Mailmotor\Domain\Subscription\Event\NotImplementedUnsubscribedEvent; use Frontend\Modules\Mailmotor\Domain\Subscription\UnsubscribeType; use MailMotor\Bundle\MailMotorBundle\Exception\NotImplementedException; +use Symfony\Component\Messenger\MessageBusInterface; /** * This is the Unsubscription-action for Mailmotor @@ -45,7 +46,9 @@ public function execute(): void try { // The command bus will handle the unsubscription - $this->get('command_bus')->handle($unsubscription); + /** @var MessageBusInterface $messageBus */ + $messageBus = $this->get('messenger.default_bus'); + $messageBus->dispatch($unsubscription); } catch (NotImplementedException) { // fallback for when no mail-engine is chosen in the Backend $this->get('event_dispatcher')->dispatch( diff --git a/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/SubscriptionHandler.php b/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/SubscriptionHandler.php index 1bbbe5ec2d..a6e3250c9e 100644 --- a/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/SubscriptionHandler.php +++ b/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/SubscriptionHandler.php @@ -6,7 +6,9 @@ use Frontend\Core\Language\Locale; use MailMotor\Bundle\MailMotorBundle\Helper\Subscriber; use MailMotor\Bundle\MailMotorBundle\Exception\NotImplementedException; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class SubscriptionHandler { public function __construct( @@ -15,7 +17,7 @@ public function __construct( ) { } - public function handle(Subscription $subscription): void + public function __invoke(Subscription $subscription): void { $mergeFields = []; $interests = []; diff --git a/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/UnsubscriptionHandler.php b/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/UnsubscriptionHandler.php index 589386d7e8..951a5f6ff0 100644 --- a/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/UnsubscriptionHandler.php +++ b/src/Frontend/Modules/Mailmotor/Domain/Subscription/Command/UnsubscriptionHandler.php @@ -5,7 +5,9 @@ use Common\ModulesSettings; use Frontend\Core\Language\Locale; use MailMotor\Bundle\MailMotorBundle\Helper\Subscriber; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; +#[AsMessageHandler] final readonly class UnsubscriptionHandler { public function __construct( @@ -14,7 +16,7 @@ public function __construct( ) { } - public function handle(Unsubscription $unsubscription): void + public function __invoke(Unsubscription $unsubscription): void { // Unsubscribing the user, will dispatch an event $this->subscriber->unsubscribe(