Example #1
0
 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;
 }