diff --git a/core/lib/Thelia/Action/Order.php b/core/lib/Thelia/Action/Order.php index fda052316..6cf9ff277 100755 --- a/core/lib/Thelia/Action/Order.php +++ b/core/lib/Thelia/Action/Order.php @@ -247,10 +247,15 @@ class Order extends BaseAction implements EventSubscriberInterface $con->commit(); - /* T1style : dispatch mail event ? */ + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_BEFORE_PAYMENT, new OrderEvent($placedOrder)); - /* clear session @todo : remove comment below + test */ - //$sessionOrder = new \Thelia\Model\Order(); + /* clear session */ + $sessionOrder = new \Thelia\Model\Order(); + $event->setOrder($sessionOrder); + $this->getSession()->setOrder($sessionOrder); + + /* empty cart */ + $this->getSession()->getCart()->clear(); /* call pay method */ $paymentModuleReflection = new \ReflectionClass($paymentModule->getFullNamespace()); @@ -259,7 +264,15 @@ class Order extends BaseAction implements EventSubscriberInterface $paymentModuleInstance->setRequest($this->getRequest()); $paymentModuleInstance->setDispatcher($this->getDispatcher()); - $paymentModuleInstance->pay(); + $paymentModuleInstance->pay($placedOrder); + } + + /** + * @param \Thelia\Core\Event\OrderEvent $event + */ + public function sendOrderEmail(OrderEvent $event) + { + /* @todo */ } /** @@ -305,6 +318,7 @@ class Order extends BaseAction implements EventSubscriberInterface TheliaEvents::ORDER_SET_PAYMENT_MODULE => array("setPaymentModule", 128), TheliaEvents::ORDER_PAY => array("create", 128), TheliaEvents::ORDER_BEFORE_CREATE => array("setReference", 128), + TheliaEvents::ORDER_BEFORE_PAYMENT => array("sendOrderEmail", 128), ); } diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 80d87cc8c..0c2bfcf72 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -222,6 +222,8 @@ final class TheliaEvents const ORDER_PAY = "action.order.pay"; const ORDER_BEFORE_CREATE = "action.order.beforeCreate"; const ORDER_AFTER_CREATE = "action.order.afterCreate"; + const ORDER_BEFORE_PAYMENT = "action.order.beforePayment"; + const ORDER_PRODUCT_BEFORE_CREATE = "action.orderProduct.beforeCreate"; const ORDER_PRODUCT_AFTER_CREATE = "action.orderProduct.afterCreate";