public static function getCartData($hParams = array()) { // Warenkorbstatus aus dem RP abfragen $cart = shopShopping::readCart(array('sid' => bbRpc::getSid(), 'return_items' => 1, 'return_orderable' => 1)); $haItems = array('tariff' => array(), 'domain' => array(), 'add-on' => array(), 'normaly' => array()); $aiItemCount = array('all' => 0, 'tariff' => 0, 'domain' => 0, 'add-on' => 0, 'normaly' => 0); $bTariffNeedsDomain = false; // Artikel im Warenkorb vorhanden if ($cart) { // Gruppierung nach Produkttyp foreach ($haItems as $sNorm => &$aItems) { foreach ($cart['items'] as $hItem) { if ($hItem['product']['norm'] === $sNorm) { $aItems[] = $hItem; if (array_key_exists('amount', $hItem)) { $aiItemCount[$sNorm] += $hItem['amount']; } else { $aiItemCount[$sNorm]++; } } } $aiItemCount['all'] += $aiItemCount[$sNorm]; } $bTariffNeedsDomain = $aiItemCount['tariff'] && !$aiItemCount['domain'] && $haItems['tariff'][0]['product']['need_domain']; } else { $cart = array(); } // Cart um formatierte Daten erweitern $cart['items'] = $haItems; $cart['item_count'] = $aiItemCount; $cart['tariff_needs_domain'] = $bTariffNeedsDomain; return $cart; }
/** * Günstigsten Preis eines Produkts auslesen * * Um die Suche auf einen Produkttyp einzuschränken, geben Sie beim * Aufruf der Methode in $hParams folgenden Wert an: * 'norm' => 'tariff' * In diesem Fall werden nur die Preise der Tarife geprüft. * * @param array $hParams Zusätzliche Parameter für Aufruf von readStore * @return float|null Günstiger Preis der gesuchten Artikel */ public static function getCheapestStorePrice($hParams = array()) { // Produktgruppen auslesen $ahProductGroups = shopShopping::readStore(array_merge(array('check_orderable' => 1, 'return_array' => 1, 'return_shop_price' => 1), $hParams)); // Sind keine Daten vorhanden, wird als Rückgabewert null angegeben $fCheapestPrice = null; if ($ahProductGroups && count($ahProductGroups)) { foreach ($ahProductGroups as $hProductGroup) { // Befinden sich Produkte in der Gruppe? if (!array_key_exists('entrys', $hProductGroup) || !count($hProductGroup['entrys'])) { continue; } foreach ($hProductGroup['entrys'] as $hProduct) { if ($fCheapestPrice === null || $hProduct['shop_price']['price_long'] < $fCheapestPrice) { $fCheapestPrice = $hProduct['shop_price']['price_long']; // Günstiger als kostenlos wirds nicht... if ($fCheapestPrice !== null && $fCheapestPrice === 0.0) { return 0.0; } } } } } return $fCheapestPrice; }
/** * Artikel aus dem Warenkorb auslesen * * @param array [$hParams] Parameter fuer bbShopping::readCart * @return array */ public static function getCart($hParams = array()) { $bReturnCartOrder = false; if (array_key_exists('return_shop_cart_order', $hParams)) { $bReturnCartOrder = $hParams['return_shop_cart_order']; unset($hParams['return_shop_cart_order']); } $cart = shopShopping::getCartData($hParams); // Alle Artikel der abgefragten Produkttyps auslesen $hTypeItems = null; if (array_key_exists('return_norms', $hParams) && count($hParams['return_norms'])) { $hTypeItems = shopShopping::readStore(array('norm' => $hParams['return_norms'], 'return_array' => 1, 'return_orderable' => 1)); } $hAssigns = array('count' => $cart['item_count'], 'items' => $cart['items'], 'norms' => $hTypeItems); Renderer::assign('cart', $cart); if ($bReturnCartOrder) { $sTemplate = Renderer::render('modules/order_cart_sidebar.tpl'); // Haupt-Darstellung rendern $ahIntervals = shopProduct::readInterval(array('return_shopformat' => 1)); $ahIntervals[0] = 'einmalig'; $ahIntervals['descr'][0] = 'einmalig'; Renderer::assign('interval', $ahIntervals); Renderer::assign('cart', $cart); Renderer::assign('cart_editable', true); $hAssigns['overview'] = Renderer::render('modules/cart_articles.tpl'); } else { $sTemplate = Renderer::render('modules/cart_nav.tpl'); } // Template rendern und Daten zurueck geben return array('template' => $sTemplate, 'assigns' => $hAssigns); }