public function __construct($id, PageAbstract $product, $quantity)
{
$variant = false;
// Break cart ID into uri, variant, and option (:: is used as a delimiter)
$id_array = explode('::', $id);
// Set variant and option
$variantName = $id_array[1];
$variants = $product->variants()->yaml();
foreach ($variants as $key => $array) {
if (str::slug($array['name']) === $variantName) {
$variant = $variants[$key];
}
}
$this->id = $id;
$this->sku = $variant['sku'];
$this->uri = $product->uri();
$this->name = $product->title()->value;
$this->variant = str::slug($variant['name']);
$this->option = $id_array[2];
$this->amount = $variant['price'];
$this->sale_amount = salePrice($variant);
$this->weight = $variant['weight'];
$this->quantity = $quantity;
$this->noshipping = $product->noshipping()->value;
$this->notax = $product->notax()->exists() ? $product->notax()->value : 0;
// Legacy. notax() field removed in Shopkit 1.1
}