/**
  * Get item
  *
  * @return \XLite\Model\OrderItem
  */
 public function getItem()
 {
     if (!isset($this->item)) {
         // Initialize order item from request param item_id
         if (is_numeric(\XLite\Core\Request::getInstance()->item_id)) {
             $item = \XLite\Core\Database::getRepo('XLite\\Model\\OrderItem')->find(\XLite\Core\Request::getInstance()->item_id);
             if ($item && $item->getProduct() && $item->hasAttributeValues()) {
                 $this->item = $item;
             }
         }
     }
     if (!isset($this->item) && \XLite\Core\Request::getInstance()->productId) {
         // Initialize order item from productId param
         $product = \XLite\Core\Database::getRepo('XLite\\Model\\Product')->find(\XLite\Core\Request::getInstance()->productId);
         if ($product) {
             $this->item = new \XLite\Model\OrderItem();
             $this->item->setProduct($product);
             $this->item->setAttributeValues($product->prepareAttributeValues());
         }
     }
     if (!isset($this->item)) {
         // Order item was not initialized: set to false to prevent re-initialization
         $this->item = false;
     }
     return $this->item;
 }
 /**
  * Get order item entity
  *
  * @return \XLite\Model\OrderItem
  */
 public function getEntity()
 {
     if (is_null($this->orderItem)) {
         $this->orderItem = $this->getParam(self::PARAM_ORDER_ITEM);
     }
     if (is_null($this->orderItem) && $this->getParam(self::PARAM_PRODUCT_ID)) {
         $product = \XLite\Core\Database::getRepo('XLite\\Model\\Product')->find($this->getParam(self::PARAM_PRODUCT_ID));
         if ($product) {
             $this->orderItem = new \XLite\Model\OrderItem();
             $this->orderItem->setProduct($product);
             $this->orderItem->setAttributeValues($product->prepareAttributeValues());
         }
     }
     return $this->orderItem;
 }
Beispiel #3
0
 /**
  * Prepare order item before price calculation
  *
  * @param \XLite\Model\OrderItem $item       Order item
  * @param array                  $attributes Attributes
  *
  * @return void
  */
 protected function prepareItemBeforePriceCalculation(\XLite\Model\OrderItem $item, array $attributes)
 {
     \XLite\Core\Request::getInstance()->oldAmount = $item->getAmount();
     $item->setAmount(\XLite\Core\Request::getInstance()->amount);
     if ($attributes) {
         $attributeValues = $item->getProduct()->prepareAttributeValues($attributes);
         $item->setAttributeValues($attributeValues);
     }
 }
 /**
  * {@inheritDoc}
  */
 public function setAttributeValues(array $attributeValues)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAttributeValues', array($attributeValues));
     return parent::setAttributeValues($attributeValues);
 }