From dfe345b55ac89ad98c0f8e90fa745b33340cdfe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20B=C5=82oszyk?= Date: Tue, 16 Jun 2020 13:44:46 +0200 Subject: [PATCH] Fix dispatch event to work with contracts --- composer.json | 1 + src/Component/Payment/PaymentHandler.php | 16 ++++++++-------- src/Component/Transformer/BasketTransformer.php | 8 ++++---- src/Component/Transformer/InvoiceTransformer.php | 8 ++++---- src/Component/Transformer/OrderTransformer.php | 6 +++--- src/CustomerBundle/Menu/ProfileMenuBuilder.php | 4 ++-- src/ProductBundle/Model/BaseProductProvider.php | 16 ++++++++-------- tests/Component/Basket/BasketElementTest.php | 2 +- tests/Component/Basket/BasketTest.php | 2 +- tests/Component/Payment/PaymentHandlerTest.php | 2 +- .../Transformer/BasketTransformerTest.php | 2 +- .../Transformer/InvoiceTransformerTest.php | 2 +- .../Transformer/OrderTransformerTest.php | 2 +- tests/Component/Transformer/PoolTest.php | 2 +- .../Block/ProfileMenuBlockServiceTest.php | 2 +- .../Menu/ProfileMenuBuilderTest.php | 2 +- .../Model/BaseProductProviderTest.php | 2 +- 17 files changed, 40 insertions(+), 39 deletions(-) diff --git a/composer.json b/composer.json index 964f7f4ff..93949a570 100644 --- a/composer.json +++ b/composer.json @@ -41,6 +41,7 @@ "symfony/dependency-injection": "^4.3", "symfony/doctrine-bridge": "^4.3", "symfony/event-dispatcher": "^4.3", + "symfony/event-dispatcher-contracts": "^1.1 || ^2.0", "symfony/filesystem": "^4.3", "symfony/form": "^4.3", "symfony/framework-bundle": "^4.3", diff --git a/src/Component/Payment/PaymentHandler.php b/src/Component/Payment/PaymentHandler.php index 0c6fcb7bb..aa1a88cea 100644 --- a/src/Component/Payment/PaymentHandler.php +++ b/src/Component/Payment/PaymentHandler.php @@ -21,8 +21,8 @@ use Sonata\Component\Order\OrderInterface; use Sonata\Component\Order\OrderManagerInterface; use Sonata\NotificationBundle\Backend\BackendInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * Responsible for interactions between PaymentController & Model. @@ -78,7 +78,7 @@ public function handleError(Request $request, BasketInterface $basket) $order = $this->getValidOrder($transaction); $event = new PaymentEvent($order, $transaction); - $this->getEventDispatcher()->dispatch(PaymentEvents::PRE_ERROR, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::PRE_ERROR); if ($order->isCancellable()) { $order->setStatus(OrderInterface::STATUS_STOPPED); @@ -95,7 +95,7 @@ public function handleError(Request $request, BasketInterface $basket) $this->getPayment($transaction->getPaymentCode())->getTransformer('order')->transformIntoBasket($order, $basket); $event = new PaymentEvent($order, $transaction); - $this->getEventDispatcher()->dispatch(PaymentEvents::POST_ERROR, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::POST_ERROR); $this->notificationBackend->createAndPublish('sonata_payment_order_process', [ 'order_id' => $order->getId(), @@ -111,7 +111,7 @@ public function handleConfirmation(Request $request) $order = $this->getValidOrder($transaction); $event = new PaymentEvent($order, $transaction); - $this->getEventDispatcher()->dispatch(PaymentEvents::CONFIRMATION, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::CONFIRMATION); return $order; } @@ -121,7 +121,7 @@ public function getSendbankOrder(BasketInterface $basket) $order = $basket->getPaymentMethod()->getTransformer('basket')->transformIntoOrder($basket); $event = new PaymentEvent($order); - $this->getEventDispatcher()->dispatch(PaymentEvents::PRE_SENDBANK, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::PRE_SENDBANK); // save the order $this->orderManager->save($order); @@ -130,7 +130,7 @@ public function getSendbankOrder(BasketInterface $basket) $this->referenceGenerator->order($order); $event = new PaymentEvent($order); - $this->getEventDispatcher()->dispatch(PaymentEvents::POST_SENDBANK, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::POST_SENDBANK); return $order; } @@ -142,7 +142,7 @@ public function getPaymentCallbackResponse(Request $request) $order = $this->getValidOrder($transaction); $event = new PaymentEvent($order, $transaction); - $this->getEventDispatcher()->dispatch(PaymentEvents::PRE_CALLBACK, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::PRE_CALLBACK); // start the payment callback $response = $this->getPayment($transaction->getPaymentCode())->callback($transaction); @@ -151,7 +151,7 @@ public function getPaymentCallbackResponse(Request $request) $this->orderManager->save($order); $event = new PaymentEvent($order, $transaction, $response); - $this->getEventDispatcher()->dispatch(PaymentEvents::POST_CALLBACK, $event); + $this->getEventDispatcher()->dispatch($event, PaymentEvents::POST_CALLBACK); $this->notificationBackend->createAndPublish('sonata_payment_order_process', [ 'order_id' => $order->getId(), diff --git a/src/Component/Transformer/BasketTransformer.php b/src/Component/Transformer/BasketTransformer.php index 8920db55d..22d2f6ca6 100644 --- a/src/Component/Transformer/BasketTransformer.php +++ b/src/Component/Transformer/BasketTransformer.php @@ -27,7 +27,7 @@ use Sonata\Component\Payment\PaymentInterface; use Sonata\Component\Payment\TransactionInterface; use Sonata\Component\Product\Pool as ProductPool; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class BasketTransformer extends BaseTransformer { @@ -47,7 +47,7 @@ class BasketTransformer extends BaseTransformer protected $productPool; /** - * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface + * @var EventDispatcherInterface */ protected $eventDispatcher; @@ -74,7 +74,7 @@ public function __construct(OrderManagerInterface $orderManager, ProductPool $pr public function transformIntoOrder(BasketInterface $basket) { $event = new BasketTransformEvent($basket); - $this->eventDispatcher->dispatch(TransformerEvents::PRE_BASKET_TO_ORDER_TRANSFORM, $event); + $this->eventDispatcher->dispatch($event, TransformerEvents::PRE_BASKET_TO_ORDER_TRANSFORM); // Customer $customer = $basket->getCustomer(); @@ -181,7 +181,7 @@ public function transformIntoOrder(BasketInterface $basket) } $event = new OrderTransformEvent($order); - $this->eventDispatcher->dispatch(TransformerEvents::POST_BASKET_TO_ORDER_TRANSFORM, $event); + $this->eventDispatcher->dispatch($event, TransformerEvents::POST_BASKET_TO_ORDER_TRANSFORM); return $order; } diff --git a/src/Component/Transformer/InvoiceTransformer.php b/src/Component/Transformer/InvoiceTransformer.php index f6ff8d92d..d4279f7d7 100644 --- a/src/Component/Transformer/InvoiceTransformer.php +++ b/src/Component/Transformer/InvoiceTransformer.php @@ -22,7 +22,7 @@ use Sonata\Component\Invoice\InvoiceInterface; use Sonata\Component\Order\OrderElementInterface; use Sonata\Component\Order\OrderInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * @author Hugo Briand @@ -40,7 +40,7 @@ class InvoiceTransformer extends BaseTransformer protected $deliveryPool; /** - * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface + * @var EventDispatcherInterface */ protected $eventDispatcher; @@ -61,7 +61,7 @@ public function __construct(InvoiceElementManagerInterface $invoiceElementManage public function transformFromOrder(OrderInterface $order, InvoiceInterface $invoice): void { $event = new OrderTransformEvent($order); - $this->eventDispatcher->dispatch(TransformerEvents::PRE_ORDER_TO_INVOICE_TRANSFORM, $event); + $this->eventDispatcher->dispatch($event, TransformerEvents::PRE_ORDER_TO_INVOICE_TRANSFORM); $invoice->setName($order->getBillingName()); $invoice->setAddress1($order->getBillingAddress1()); @@ -99,7 +99,7 @@ public function transformFromOrder(OrderInterface $order, InvoiceInterface $invo $invoice->setStatus(InvoiceInterface::STATUS_OPEN); $event = new InvoiceTransformEvent($invoice); - $this->eventDispatcher->dispatch(TransformerEvents::POST_ORDER_TO_INVOICE_TRANSFORM, $event); + $this->eventDispatcher->dispatch($event, TransformerEvents::POST_ORDER_TO_INVOICE_TRANSFORM); } /** diff --git a/src/Component/Transformer/OrderTransformer.php b/src/Component/Transformer/OrderTransformer.php index 2d8ccaa0f..1842194ca 100644 --- a/src/Component/Transformer/OrderTransformer.php +++ b/src/Component/Transformer/OrderTransformer.php @@ -20,7 +20,7 @@ use Sonata\Component\Order\OrderElementInterface; use Sonata\Component\Order\OrderInterface; use Sonata\Component\Product\Pool as ProductPool; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class OrderTransformer extends BaseTransformer { @@ -51,7 +51,7 @@ public function __construct(ProductPool $productPool, EventDispatcherInterface $ public function transformIntoBasket(OrderInterface $order, BasketInterface $basket) { $event = new OrderTransformEvent($order); - $this->eventDispatcher->dispatch(TransformerEvents::PRE_ORDER_TO_BASKET_TRANSFORM, $event); + $this->eventDispatcher->dispatch($event, TransformerEvents::PRE_ORDER_TO_BASKET_TRANSFORM); // we reset the current basket $basket->reset(true); @@ -84,7 +84,7 @@ public function transformIntoBasket(OrderInterface $order, BasketInterface $bask $basket->buildPrices(); $event = new BasketTransformEvent($basket); - $this->eventDispatcher->dispatch(TransformerEvents::POST_ORDER_TO_BASKET_TRANSFORM, $event); + $this->eventDispatcher->dispatch($event, TransformerEvents::POST_ORDER_TO_BASKET_TRANSFORM); return $basket; } diff --git a/src/CustomerBundle/Menu/ProfileMenuBuilder.php b/src/CustomerBundle/Menu/ProfileMenuBuilder.php index ff026e5e7..9eaf0b68a 100644 --- a/src/CustomerBundle/Menu/ProfileMenuBuilder.php +++ b/src/CustomerBundle/Menu/ProfileMenuBuilder.php @@ -15,8 +15,8 @@ use Knp\Menu\FactoryInterface; use Knp\Menu\ItemInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * @author Hugo Briand @@ -79,6 +79,6 @@ public function buildProfileMenu(ItemInterface $menu, array $itemOptions = []): } $event = new ProfileMenuEvent($menu); - $this->eventDispatcher->dispatch('sonata.customer.profile.configure_menu', $event); + $this->eventDispatcher->dispatch($event, 'sonata.customer.profile.configure_menu'); } } diff --git a/src/ProductBundle/Model/BaseProductProvider.php b/src/ProductBundle/Model/BaseProductProvider.php index db797be5d..d6948a39c 100644 --- a/src/ProductBundle/Model/BaseProductProvider.php +++ b/src/ProductBundle/Model/BaseProductProvider.php @@ -39,7 +39,6 @@ use Sonata\Component\Product\ProductProviderInterface; use Sonata\Form\Validator\ErrorElement; use Sonata\FormatterBundle\Form\Type\FormatterType; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; @@ -47,6 +46,7 @@ use Symfony\Component\Form\FormBuilder; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\PropertyAccess\PropertyAccess; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; abstract class BaseProductProvider implements ProductProviderInterface { @@ -111,7 +111,7 @@ public function setEventDispatcher(EventDispatcherInterface $eventDispatcher): v } /** - * @return \Symfony\Component\EventDispatcher\EventDispatcherInterface + * @return \Symfony\Contracts\EventDispatcher\EventDispatcherInterface */ public function getEventDispatcher() { @@ -807,7 +807,7 @@ public function validateFormBasketElement(ErrorElement $errorElement, BasketElem public function basketAddProduct(BasketInterface $basket, ProductInterface $product, BasketElementInterface $basketElement) { $event = new AddBasketElementEvent($basket, $basketElement, $product, $this); - $this->getEventDispatcher()->dispatch(BasketEvents::PRE_ADD_PRODUCT, $event); + $this->getEventDispatcher()->dispatch($event, BasketEvents::PRE_ADD_PRODUCT); if ($basket->hasProduct($product)) { return false; @@ -830,7 +830,7 @@ public function basketAddProduct(BasketInterface $basket, ProductInterface $prod $basket->addBasketElement($basketElement); $event = new AddBasketElementEvent($basket, $basketElement, $product, $this); - $this->getEventDispatcher()->dispatch(BasketEvents::POST_ADD_PRODUCT, $event); + $this->getEventDispatcher()->dispatch($event, BasketEvents::POST_ADD_PRODUCT); return $event->getBasketElement(); } @@ -845,7 +845,7 @@ public function basketAddProduct(BasketInterface $basket, ProductInterface $prod public function basketMergeProduct(BasketInterface $basket, ProductInterface $product, BasketElementInterface $newBasketElement) { $event = new AddBasketElementEvent($basket, $newBasketElement, $product, $this); - $this->getEventDispatcher()->dispatch(BasketEvents::PRE_MERGE_PRODUCT, $event); + $this->getEventDispatcher()->dispatch($event, BasketEvents::PRE_MERGE_PRODUCT); if (!$basket->hasProduct($product)) { return false; @@ -861,7 +861,7 @@ public function basketMergeProduct(BasketInterface $basket, ProductInterface $pr $this->updateComputationPricesFields($basket, $basketElement, $product); $event = new AddBasketElementEvent($basket, $basketElement, $product, $this); - $this->getEventDispatcher()->dispatch(BasketEvents::POST_MERGE_PRODUCT, $event); + $this->getEventDispatcher()->dispatch($event, BasketEvents::POST_MERGE_PRODUCT); return $event->getBasketElement(); } @@ -894,7 +894,7 @@ public function updateComputationPricesFields(BasketInterface $basket, BasketEle public function calculatePrice(ProductInterface $product, CurrencyInterface $currency, $vat = false, $quantity = 1) { $event = new BeforeCalculatePriceEvent($product, $currency, $vat, $quantity); - $this->getEventDispatcher()->dispatch(BasketEvents::PRE_CALCULATE_PRICE, $event); + $this->getEventDispatcher()->dispatch($event, BasketEvents::PRE_CALCULATE_PRICE); $vat = $event->getVat(); $quantity = $event->getQuantity(); @@ -906,7 +906,7 @@ public function calculatePrice(ProductInterface $product, CurrencyInterface $cur $price = (float) (bcmul((string) $this->currencyPriceCalculator->getPrice($product, $currency, $vat), (string) $quantity)); $afterEvent = new AfterCalculatePriceEvent($product, $currency, $vat, $quantity, $price); - $this->getEventDispatcher()->dispatch(BasketEvents::POST_CALCULATE_PRICE, $afterEvent); + $this->getEventDispatcher()->dispatch($afterEvent, BasketEvents::POST_CALCULATE_PRICE); return $afterEvent->getPrice(); } diff --git a/tests/Component/Basket/BasketElementTest.php b/tests/Component/Basket/BasketElementTest.php index 94b9e1f73..86f50214e 100644 --- a/tests/Component/Basket/BasketElementTest.php +++ b/tests/Component/Basket/BasketElementTest.php @@ -23,7 +23,7 @@ use Sonata\Component\Product\ProductInterface; use Sonata\Component\Product\ProductManagerInterface; use Sonata\Component\Product\ProductProviderInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class BasketElementTest extends TestCase { diff --git a/tests/Component/Basket/BasketTest.php b/tests/Component/Basket/BasketTest.php index 2516ca2d1..bfa4e1af2 100644 --- a/tests/Component/Basket/BasketTest.php +++ b/tests/Component/Basket/BasketTest.php @@ -30,7 +30,7 @@ use Sonata\Component\Product\ProductManagerInterface; use Sonata\Component\Product\ProductProviderInterface; use Sonata\Component\Tests\Product\Product; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class BasketTest extends TestCase { diff --git a/tests/Component/Payment/PaymentHandlerTest.php b/tests/Component/Payment/PaymentHandlerTest.php index 9a05bd189..d9ab34ae4 100644 --- a/tests/Component/Payment/PaymentHandlerTest.php +++ b/tests/Component/Payment/PaymentHandlerTest.php @@ -29,9 +29,9 @@ use Sonata\NotificationBundle\Backend\BackendInterface; use Sonata\NotificationBundle\Backend\RuntimeBackend; use Sonata\PaymentBundle\Tests\Entity\Transaction; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * @author Hugo Briand diff --git a/tests/Component/Transformer/BasketTransformerTest.php b/tests/Component/Transformer/BasketTransformerTest.php index e278182f7..af01add49 100644 --- a/tests/Component/Transformer/BasketTransformerTest.php +++ b/tests/Component/Transformer/BasketTransformerTest.php @@ -26,7 +26,7 @@ use Sonata\Component\Product\Pool; use Sonata\Component\Transformer\BasketTransformer; use Sonata\OrderBundle\Entity\BaseOrder; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class BasketTransformerTest_Order extends BaseOrder { diff --git a/tests/Component/Transformer/InvoiceTransformerTest.php b/tests/Component/Transformer/InvoiceTransformerTest.php index 89da03d8d..1d56ca229 100644 --- a/tests/Component/Transformer/InvoiceTransformerTest.php +++ b/tests/Component/Transformer/InvoiceTransformerTest.php @@ -23,7 +23,7 @@ use Sonata\Component\Order\OrderElementInterface; use Sonata\Component\Order\OrderInterface; use Sonata\Component\Transformer\InvoiceTransformer; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class InvoiceTransformerTest extends TestCase { diff --git a/tests/Component/Transformer/OrderTransformerTest.php b/tests/Component/Transformer/OrderTransformerTest.php index 7af0e252f..d12b863db 100644 --- a/tests/Component/Transformer/OrderTransformerTest.php +++ b/tests/Component/Transformer/OrderTransformerTest.php @@ -25,7 +25,7 @@ use Sonata\Component\Product\ProductManagerInterface; use Sonata\Component\Product\ProductProviderInterface; use Sonata\Component\Transformer\OrderTransformer; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class OrderTransformerTest extends TestCase { diff --git a/tests/Component/Transformer/PoolTest.php b/tests/Component/Transformer/PoolTest.php index 9a13f6e1b..60763328e 100644 --- a/tests/Component/Transformer/PoolTest.php +++ b/tests/Component/Transformer/PoolTest.php @@ -19,7 +19,7 @@ use Sonata\Component\Transformer\BasketTransformer; use Sonata\Component\Transformer\OrderTransformer; use Sonata\Component\Transformer\Pool as TransformerPool; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class PoolTest extends TestCase { diff --git a/tests/CustomerBundle/Block/ProfileMenuBlockServiceTest.php b/tests/CustomerBundle/Block/ProfileMenuBlockServiceTest.php index f1415cd1b..1ed698f67 100644 --- a/tests/CustomerBundle/Block/ProfileMenuBlockServiceTest.php +++ b/tests/CustomerBundle/Block/ProfileMenuBlockServiceTest.php @@ -20,8 +20,8 @@ use Sonata\CustomerBundle\Block\ProfileMenuBlockService; use Sonata\CustomerBundle\Menu\ProfileMenuBuilder; use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * @author Wojciech Błoszyk diff --git a/tests/CustomerBundle/Menu/ProfileMenuBuilderTest.php b/tests/CustomerBundle/Menu/ProfileMenuBuilderTest.php index 173df2f45..80c22164e 100644 --- a/tests/CustomerBundle/Menu/ProfileMenuBuilderTest.php +++ b/tests/CustomerBundle/Menu/ProfileMenuBuilderTest.php @@ -17,8 +17,8 @@ use Knp\Menu\ItemInterface; use PHPUnit\Framework\TestCase; use Sonata\CustomerBundle\Menu\ProfileMenuBuilder; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * @author Hugo Briand diff --git a/tests/ProductBundle/Model/BaseProductProviderTest.php b/tests/ProductBundle/Model/BaseProductProviderTest.php index 395ddaa8f..136b9e98b 100644 --- a/tests/ProductBundle/Model/BaseProductProviderTest.php +++ b/tests/ProductBundle/Model/BaseProductProviderTest.php @@ -26,7 +26,7 @@ use Sonata\Form\Validator\ErrorElement; use Sonata\ProductBundle\Entity\BaseProduct; use Sonata\ProductBundle\Model\BaseProductProvider; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class ProductProviderTest extends BaseProductProvider {