public function setQuantity(Buyable $buyable, $quantity = 1, $filter = array())
{
if ($quantity <= 0) {
return $this->remove($buyable, $quantity, $filter);
}
$order = $this->findOrMake();
$item = $this->findOrMakeItem($buyable, $quantity, $filter);
if (!$item) {
return false;
}
// If an extension throws an exception, error out
try {
$order->extend("beforeSetQuantity", $buyable, $quantity, $filter);
} catch (Exception $exception) {
return $this->error($exception->getMessage());
}
$item->Quantity = $quantity;
// If an extension throws an exception, error out
try {
$order->extend("afterSetQuantity", $item, $buyable, $quantity, $filter);
} catch (Exception $exception) {
return $this->error($exception->getMessage());
}
$item->write();
$this->message(_t("ShoppingCart.QuantitySet", "Quantity has been set."));
return $item;
}