public function getSessionCart(EventDispatcherInterface $dispatcher = null)
    {
        $cart_id = $this->get("thelia.cart_id", null);
        if (null !== $cart_id) {
            $cart = CartQuery::create()->findPk($cart_id);
        } else {
            $cart = self::$transientCart;
        }

        // If we do not have a cart, or if the current cart is nor valid
        // restore it from the cart cookie, or create a new one
        if (null === $cart || ! $this->isValidCart($cart)) {
            // A dispatcher is required here. If we do not have it, throw an exception
            // This is a temporary workaround to ensure backward compatibility with getCart(),
            // When genCart() will be removed, this check should be removed, and  $dispatcher should become
            // a required parameter.

            if (null == $dispatcher) {
                throw new \InvalidArgumentException(
                    "In this context (no cart in session), an EventDispatcher should be provided to Session::getSessionCart()."
                );
            }

            $cartEvent = new CartRestoreEvent();

            if (null !== $cart) {
                $cartEvent->setCart($cart);
            }

            $dispatcher->dispatch(TheliaEvents::CART_RESTORE_CURRENT, $cartEvent);

            if (null === $cart = $cartEvent->getCart()) {
                throw new \LogicException(
                    "Unable to get a Cart."
                );
            }

            // Store the cart.
            $this->setSessionCart($cart);
        }

        return $cart;
    }
public function getSessionCart(EventDispatcherInterface $dispatcher = null)
    {
        $cart_id = $this->get("thelia.cart_id", null);
        if (null !== $cart_id) {
            $cart = CartQuery::create()->findPk($cart_id);
        } else {
            $cart = self::$transientCart;
        }

        // If we do not have a cart, or if the current cart is nor valid
        // restore it from the cart cookie, or create a new one
        if (null === $cart || ! $this->isValidCart($cart)) {
            // A dispatcher is required here. If we do not have it, throw an exception
            // This is a temporary workaround to ensure backward compatibility with getCart(),
            // When genCart() will be removed, this check should be removed, and  $dispatcher should become
            // a required parameter.

            if (null == $dispatcher) {
                throw new \InvalidArgumentException(
                    "In this context (no cart in session), an EventDispatcher should be provided to Session::getSessionCart()."
                );
            }

            $cartEvent = new CartRestoreEvent();

            if (null !== $cart) {
                $cartEvent->setCart($cart);
            }

            $dispatcher->dispatch(TheliaEvents::CART_RESTORE_CURRENT, $cartEvent);

            if (null === $cart = $cartEvent->getCart()) {
                throw new \LogicException(
                    "Unable to get a Cart."
                );
            }

            // Store the cart.
            $this->setSessionCart($cart);
        }

        return $cart;
    }
public function getSessionCart ( EventDispatcherInterface $ dispatcher = null ) { $ cart_id = $ this -> get ( "thelia.cart_id" , null ) ; if ( null !== $ cart_id ) { $ cart = CartQuery :: create ( ) -> findPk ( $ cart_id ) ; } else { $ cart = self :: $ transientCart ; } // If we do not have a cart, or if the current cart is nor valid // restore it from the cart cookie, or create a new one if ( null === $ cart || ! $ this -> isValidCart ( $ cart ) ) { // A dispatcher is required here. If we do not have it, throw an exception // This is a temporary workaround to ensure backward compatibility with getCart(), // When genCart() will be removed, this check should be removed, and  $dispatcher should become // a required parameter. if ( null == $ dispatcher ) { throw new \ InvalidArgumentException ( "In this context (no cart in session), an EventDispatcher should be provided to Session::getSessionCart()." ) ; } $ cartEvent = new CartRestoreEvent ( ) ; if ( null !== $ cart ) { $ cartEvent -> setCart ( $ cart ) ; } $ dispatcher -> dispatch ( TheliaEvents :: CART_RESTORE_CURRENT , $ cartEvent ) ; if ( null === $ cart = $ cartEvent -> getCart ( ) ) { throw new \ LogicException ( "Unable to get a Cart." ) ; } // Store the cart. $ this -> setSessionCart ( $ cart ) ; } return $ cart ; }
Return the cart stored in the current session

@param EventDispatcherInterface $dispatcher the event dispatcher, required if no cart is currently stored in the session

@return Cart The cart in the current session.
Return the cart stored in the current session