From 1d46bdf0d5baf25079642135ed7d3150c7ff7565 Mon Sep 17 00:00:00 2001 From: Daniel Gohlke Date: Fri, 24 Apr 2026 17:56:09 +0200 Subject: [PATCH] [TASK] Inject all dependencies via php and remove Services.yaml --- Configuration/Services.php | 19 ++ Configuration/Services.yaml | 141 ----------- Configuration/Services/EventListeners.php | 273 ++++++++++++++++++++++ 3 files changed, 292 insertions(+), 141 deletions(-) delete mode 100644 Configuration/Services.yaml create mode 100644 Configuration/Services/EventListeners.php diff --git a/Configuration/Services.php b/Configuration/Services.php index 135b9d0b..8f2256dc 100644 --- a/Configuration/Services.php +++ b/Configuration/Services.php @@ -9,10 +9,14 @@ use Extcode\Cart\Service\CurrencyTranslationServiceInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; +use TYPO3\CMS\Core\Database\ConnectionPool; +use TYPO3\CMS\Core\Database\Query\QueryBuilder; use TYPO3\CMS\Dashboard\Widgets\BarChartWidget; use TYPO3\CMS\Form\Mvc\Configuration\ConfigurationManager; use TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager; +use function Symfony\Component\DependencyInjection\Loader\Configurator\service; + return static function (ContainerConfigurator $containerConfigurator, ContainerBuilder $containerBuilder): void { if ($containerBuilder->hasDefinition(BarChartWidget::class)) { $containerConfigurator->import('Backend/Provider/PaymentPaidShippingOpenProvider.php'); @@ -53,6 +57,20 @@ ->public() ; + $services + ->set( + 'querybuilder.tx_cart_domain_model_order_item', + QueryBuilder::class + ) + ->factory( + [ + service(ConnectionPool::class), + 'getQueryBuilderForTable', + ] + ) + ->arg('$tableName', 'tx_cart_domain_model_order_item') + ; + if ( $containerBuilder->hasDefinition(ConfigurationManager::class) && $containerBuilder->hasDefinition(FormPersistenceManager::class) @@ -64,4 +82,5 @@ $containerConfigurator->import('Services/ConfigurationLoader.php'); $containerConfigurator->import('Services/ConsoleCommands.php'); + $containerConfigurator->import('Services/EventListeners.php'); }; diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml deleted file mode 100644 index 893db753..00000000 --- a/Configuration/Services.yaml +++ /dev/null @@ -1,141 +0,0 @@ -services: - _defaults: - autowire: true - autoconfigure: true - public: false - - Extcode\Cart\EventListener\Template\Components\ModifyButtonBar: - tags: - - name: event.listener - identifier: 'cart--cart--template--components--modify-button-bar' - event: Extcode\Cart\Event\Template\Components\ModifyButtonBarEvent - - Extcode\Cart\EventListener\Cart\UpdateCountry: - tags: - - name: event.listener - identifier: 'cart--cart--update-country' - event: Extcode\Cart\Event\Cart\UpdateCountryEvent - - Extcode\Cart\EventListener\Cart\UpdateCurrency: - tags: - - name: event.listener - identifier: 'cart--cart--update-currency' - event: Extcode\Cart\Event\Cart\UpdateCurrency - - Extcode\Cart\EventListener\Mail\AttachmentFromOrderItem: - tags: - - name: event.listener - identifier: 'cart--mail--attachment-from-order-item' - - Extcode\Cart\EventListener\Mail\AttachmentFromTypoScript: - tags: - - name: event.listener - identifier: 'cart--mail--attachment-from-typoscript' - - Extcode\Cart\EventListener\Order\Create\Order: - tags: - - name: event.listener - identifier: 'cart--order--create--order' - event: Extcode\Cart\Event\Order\CreateEvent - - Extcode\Cart\EventListener\Order\Create\PersistOrder\Item: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--item' - event: Extcode\Cart\Event\Order\PersistOrderEvent - - Extcode\Cart\EventListener\Order\Create\PersistOrder\TaxClasses: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--tax-classes' - event: Extcode\Cart\Event\Order\PersistOrderEvent - after: 'cart--order--create--persist-order--item' - - Extcode\Cart\EventListener\Order\Create\PersistOrder\Taxes: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--taxes' - event: Extcode\Cart\Event\Order\PersistOrderEvent - after: 'cart--order--create--persist-order--tax-classes' - - Extcode\Cart\EventListener\Order\Create\PersistOrder\Products: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--products' - event: Extcode\Cart\Event\Order\PersistOrderEvent - after: 'cart--order--create--persist-order--tax-classes' - - Extcode\Cart\EventListener\Order\Create\PersistOrder\Coupons: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--coupons' - event: Extcode\Cart\Event\Order\PersistOrderEvent - after: 'cart--order--create--persist-order--tax-classes' - - Extcode\Cart\EventListener\Order\Create\PersistOrder\Payment: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--payment' - event: Extcode\Cart\Event\Order\PersistOrderEvent - after: 'cart--order--create--persist-order--tax-classes' - - Extcode\Cart\EventListener\Order\Create\PersistOrder\Shipping: - tags: - - name: event.listener - identifier: 'cart--order--create--persist-order--shipping' - event: Extcode\Cart\Event\Order\PersistOrderEvent - after: 'cart--order--create--persist-order--tax-classes' - - Extcode\Cart\EventListener\Order\Create\OrderNumber: - arguments: - $persistenceManager: '@TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager' - tags: - - name: event.listener - identifier: 'cart--order--create--order-number' - event: Extcode\Cart\Event\Order\NumberGeneratorEvent - after: 'cart--order--create--order' - - Extcode\Cart\EventListener\Order\Create\InvoiceNumber: - arguments: - $persistenceManager: '@TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager' - tags: - - name: event.listener - identifier: 'cart--order--create--invoice-number' - event: Extcode\Cart\Event\Order\NumberGeneratorEvent - after: 'cart--order--create--order' - - Extcode\Cart\EventListener\Order\Create\DeliveryNumber: - arguments: - $persistenceManager: '@TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager' - tags: - - name: event.listener - identifier: 'cart--order--create--delivery-number' - event: Extcode\Cart\Event\Order\NumberGeneratorEvent - after: 'cart--order--create--order' - - Extcode\Cart\EventListener\Order\Finish\ClearCart: - tags: - - name: event.listener - identifier: 'cart--order--finish--clear-cart' - event: Extcode\Cart\Event\Order\FinishEvent - after: 'cart--order--finish--email' - - Extcode\Cart\EventListener\Order\Finish\Email: - tags: - - name: event.listener - identifier: 'cart--order--finish--email' - event: Extcode\Cart\Event\Order\FinishEvent - - Extcode\Cart\EventListener\Order\Update\LogServiceUpdate: - tags: - - name: event.listener - identifier: 'cart--order--update--log-service-update' - event: Extcode\Cart\Event\Order\UpdateServiceEvent - - querybuilder.tx_cart_domain_model_order_item: - class: 'TYPO3\CMS\Core\Database\Query\QueryBuilder' - factory: - - '@TYPO3\CMS\Core\Database\ConnectionPool' - - 'getQueryBuilderForTable' - arguments: - - 'tx_cart_domain_model_order_item' diff --git a/Configuration/Services/EventListeners.php b/Configuration/Services/EventListeners.php new file mode 100644 index 00000000..6e7a6dcd --- /dev/null +++ b/Configuration/Services/EventListeners.php @@ -0,0 +1,273 @@ +services() + ->defaults() + ->autowire() + ->autoconfigure() + ; + + $services + ->set(ModifyButtonBar::class) + ->tag( + 'event.listener', + [ + 'event' => ModifyButtonBarEvent::class, + 'identifier' => 'cart--cart--template--components--modify-button-bar', + ] + ) + ; + + $services + ->set(UpdateCountry::class) + ->tag( + 'event.listener', + [ + 'event' => UpdateCountryEvent::class, + 'identifier' => 'cart--cart--update-country', + ] + ) + ; + + $services + ->set(UpdateCurrency::class) + ->tag( + 'event.listener', + [ + 'event' => UpdateCurrencyEvent::class, + 'identifier' => 'cart--cart--update-currency', + ] + ) + ; + + $services + ->set(AttachmentFromOrderItem::class) + ->tag( + 'event.listener', + [ + 'identifier' => 'cart--mail--attachment-from-order-item', + ] + ) + ; + + $services + ->set(AttachmentFromTypoScript::class) + ->tag( + 'event.listener', + [ + 'identifier' => 'cart--mail--attachment-from-typoscript', + ] + ) + ; + + $services + ->set(Order::class) + ->tag( + 'event.listener', + [ + 'event' => CreateEvent::class, + 'identifier' => 'cart--order--create--order', + ] + ) + ; + + $services + ->set(Item::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--item', + ] + ) + ; + + $services + ->set(TaxClasses::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--tax-classes', + 'after' => 'cart--order--create--persist-order--item', + ] + ) + ; + + $services + ->set(Taxes::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--taxes', + 'after' => 'cart--order--create--persist-order--tax-classes', + ] + ) + ; + + $services + ->set(Products::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--products', + 'after' => 'cart--order--create--persist-order--tax-classes', + ] + ) + ; + + $services + ->set(Coupons::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--coupons', + 'after' => 'cart--order--create--persist-order--tax-classes', + ] + ) + ; + + $services + ->set(Payment::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--payment', + 'after' => 'cart--order--create--persist-order--tax-classes', + ] + ) + ; + + $services + ->set(Shipping::class) + ->tag( + 'event.listener', + [ + 'event' => PersistOrderEvent::class, + 'identifier' => 'cart--order--create--persist-order--shipping', + 'after' => 'cart--order--create--persist-order--tax-classes', + ] + ) + ; + + $services + ->set(OrderNumber::class) + ->tag( + 'event.listener', + [ + 'event' => NumberGeneratorEvent::class, + 'identifier' => 'cart--order--create--order-number', + 'after' => 'cart--order--create--order', + ] + ) + ->arg( + '$persistenceManager', + service(PersistenceManager::class) + ) + ; + + $services + ->set(InvoiceNumber::class) + ->tag( + 'event.listener', + [ + 'event' => NumberGeneratorEvent::class, + 'identifier' => 'cart--order--create--invoice-number', + 'after' => 'cart--order--create--order', + ] + ) + ->arg( + '$persistenceManager', + service(PersistenceManager::class) + ) + ; + + $services + ->set(DeliveryNumber::class) + ->tag( + 'event.listener', + [ + 'event' => NumberGeneratorEvent::class, + 'identifier' => 'cart--order--create--delivery-number', + 'after' => 'cart--order--create--order', + ] + ) + ->arg( + '$persistenceManager', + service(PersistenceManager::class) + ) + ; + + $services + ->set(ClearCart::class) + ->tag( + 'event.listener', + [ + 'event' => FinishEvent::class, + 'identifier' => 'cart--order--finish--clear-cart', + 'after' => 'cart--order--finish--email', + ] + ) + ; + + $services + ->set(Email::class) + ->tag( + 'event.listener', + [ + 'event' => FinishEvent::class, + 'identifier' => 'cart--order--finish--email', + ] + ) + ; + + $services + ->set(LogServiceUpdate::class) + ->tag( + 'event.listener', + [ + 'event' => UpdateServiceEvent::class, + 'identifier' => 'cart--order--update--log-service-update', + ] + ) + ; +};