public function purchaseVariationsBlock() { $variations = $this->getVariations(); if (!$variations) { return null; } $prefixes = $ids = array(); foreach ($variations['products'] as $product) { $prefixes[] = 'product_' . $product['ID'] . '_'; $ids[] = $product['ID']; } // load product instances Product::getRecordSet(select(in('Product.ID', $ids))); foreach ($variations['products'] as $product) { $quant = $this->getQuantities(Product::getInstanceByID($product['ID'])); $quant = array('' => 0) + $quant; $quantities[$product['ID']] = $quant; } // check if there price is the same for all variations $curr = $this->getRequestCurrency(); $samePrice = true; foreach ($variations['products'] as $product) { if (!empty($product['price_' . $curr]) && 0 != $product['price_' . $curr]) { $samePrice = false; break; } } $response = new BlockResponse('variations', $variations); $response->set('cartForm', $this->buildAddToCartForm($this->getOptions(), array(), $prefixes)); $response->set('quantities', $quantities); $response->set('samePrice', $samePrice); return $response; }