Example #1
0
 /**
  * Callback for add_to_cart button
  *
  * @param IsotopeProduct $objProduct
  * @param array          $arrConfig
  */
 public function addToCart(IsotopeProduct $objProduct, array $arrConfig = array())
 {
     $objModule = $arrConfig['module'];
     $intQuantity = $objModule->iso_use_quantity && intval(\Input::post('quantity_requested')) > 0 ? intval(\Input::post('quantity_requested')) : 1;
     // Do not add parent of variant product to the cart
     if ($objProduct->hasVariants() && !$objProduct->isVariant()) {
         return;
     }
     if (Isotope::getCart()->addProduct($objProduct, $intQuantity, $arrConfig) !== false) {
         Message::addConfirmation($GLOBALS['TL_LANG']['MSC']['addedToCart']);
         if (!$objModule->iso_addProductJumpTo) {
             $this->reload();
         }
         \Controller::redirect(\Haste\Util\Url::addQueryString('continue=' . base64_encode(\Environment::get('request')), $objModule->iso_addProductJumpTo));
     }
 }
 /**
  * Find prices for a given product and collection
  *
  * @param IsotopeProduct|Standard                    $objProduct
  * @param IsotopeProductCollection|ProductCollection $objCollection
  * @param array                                      $arrOptions
  *
  * @return IsotopePrice
  */
 public static function findByProductAndCollection(IsotopeProduct $objProduct, IsotopeProductCollection $objCollection, array $arrOptions = array())
 {
     $t = static::$strTable;
     $arrOptions['column'] = array();
     $arrOptions['value'] = array();
     if ($objProduct->hasAdvancedPrices()) {
         $time = \Date::floorToMinute($objCollection->getLastModification());
         $arrGroups = static::getMemberGroups($objCollection->getRelated('member'));
         $arrOptions['column'][] = "{$t}.config_id IN (" . (int) $objCollection->config_id . ",0)";
         $arrOptions['column'][] = "{$t}.member_group IN(" . implode(',', $arrGroups) . ")";
         $arrOptions['column'][] = "({$t}.start='' OR {$t}.start<'{$time}')";
         $arrOptions['column'][] = "({$t}.stop='' OR {$t}.stop>'" . ($time + 60) . "')";
         $arrOptions['order'] = "{$t}.config_id DESC, " . \Database::getInstance()->findInSet('member_group', $arrGroups) . ", {$t}.start DESC, {$t}.stop DESC";
     } else {
         $arrOptions['column'][] = "{$t}.config_id=0";
         $arrOptions['column'][] = "{$t}.member_group=0";
         $arrOptions['column'][] = "{$t}.start=''";
         $arrOptions['column'][] = "{$t}.stop=''";
     }
     if ($objProduct->hasVariantPrices() && !$objProduct->isVariant()) {
         $arrIds = $objProduct->getVariantIds() ?: array(0);
         $arrOptions['column'][] = "{$t}.pid IN (" . implode(',', $arrIds) . ")";
     } else {
         $arrOptions['column'][] = "{$t}.pid=" . ($objProduct->hasVariantPrices() ? $objProduct->id : $objProduct->getProductId());
     }
     $objResult = static::find($arrOptions);
     return null === $objResult ? null : $objResult->filterDuplicatesBy('pid');
 }