function __construct($object, $parameters = null) { if ($object instanceof Product) { $this->item = ShoppingCart::get_item_by_id($object->ID, null, $parameters); //provide a 0-quantity facade item if there is no such item in cart if (!$this->item) { $this->item = new Product_OrderItem($object, 0); } //TODO: perhaps we should just store the product itself, and do away with the facade, as it might be unnecessary complication } elseif ($object instanceof OrderItem) { $this->item = $object; } if (!$this->item) { user_error("EcomQuantityField: no item or product passed to constructor."); } $this->parameters = $parameters; //TODO: include javascript for easy update }
function Item() { if ($item = ShoppingCart::get_item_by_id($this->ProductID, $this->ID)) { return $item; } return new ProductVariation_OrderItem($this, 0); //return dummy item so that we can still make use of Item }
/** * Returns the order item which contains the product * Note : This function is usable in the Product context because a * Product_OrderItem only has a Product object in attribute */ function Item() { $filter = null; $this->extend('updateItemFilter', $filter); $item = ShoppingCart::get_item_by_id($this->ID, null, $filter); //TODO: needs filter if (!$item) { $item = new Product_OrderItem($this, 0); } //return dummy item so that we can still make use of Item $this->extend('updateDummyItem', $item); return $item; }