$aItem[0], 'item_id' => $aItem[1], 'item_count' => $aItem[2]); } return $aResult; } public function exists($iVendor, $iItemId) { $sDiv = BxDolStudioCart::$sPDiv; $sCartItems = $this->getItems(); return strpos($sCartItems, $iVendor . $sDiv . $iItemId . $sDiv) !== false; } public function add($iVendor, $iItemId, $iItemCount) { $sDiv = BxDolStudioCart::$sPDiv; $sCartItem = $iVendor . $sDiv . $iItemId . $sDiv . $iItemCount; $sCartItems = $this->getItems(); if(strpos($sCartItems, $iVendor . $sDiv . $iItemId . $sDiv) !== false) { if($this->bAllowAccumulate) $sCartItems = preg_replace("'" . $iVendor . $sDiv . $iItemId . $sDiv . "([0-9])+'e", "'" . $iVendor . $sDiv . $iItemId . $sDiv ."' . (\\1 + " . $iItemCount . ")", $sCartItems); } else $sCartItems = empty($sCartItems) ? $sCartItem : $sCartItems . BxDolStudioCart::$sIDiv . $sCartItem; $this->setItems($sCartItems); } public function delete($iVendor, $iItemId = 0) { $sPattern = "'" . $iVendor . (!empty($iItemId) ? "_" . $iItemId : "_[0-9]+") . "_[0-9]+:?'"; $sCartItems = $this->getItems(); $sCartItems = trim(preg_replace($sPattern, "", $sCartItems), BxDolStudioCart::$sIDiv); $this->setItems($sCartItems); } public function getCount($iVendor = '') { if($iVendor == '') { $sItems = $this->getItems(); $aItems = $this->items2array($sItems); return count($aItems); } $aVendors = $this->parseByVendor(); if(!isset($aVendors[$iVendor])) return 0; return count($aVendors[$iVendor]); } public function getByVendor($iVendor) { $aVendors = $this->parseByVendor(); if(!isset($aVendors[$iVendor]) || empty($aVendors[$iVendor])) return array(); return $aVendors[$iVendor]; } public function parseByVendor() { $sItems = $this->getItems(); return $this->parseBy($this->items2array($sItems), 'vendor'); } protected function getItems() { return BxDolSession::getInstance()->getValue($this->sSessionKey); } protected function setItems($sItems) { BxDolSession::getInstance()->setValue($this->sSessionKey, $sItems); } protected function parseBy($aItems, $sKey) { $aResult = array(); foreach($aItems as $aItem) if(isset($aItem[$sKey])) $aResult[$aItem[$sKey]][] = $aItem; return $aResult; } } /** @} */