protected function getProducts() { $modelClass = get_class(BaseActiveRecord::model('Product')); $productItems = Yii::app()->request->getPost($modelClass, array()); $ids = HArray::column($productItems, 'id_product'); if (empty($ids)) { return array(); } $result = array(); $products = BaseActiveRecord::model('Product')->with('category')->findAllByPk($ids); foreach ($productItems as $item) { foreach ($products as $product) { if ($product->getPrimaryKey() == (int) HArray::val($item, 'id_product')) { //чтобы появилась возможность заполнять кастомные поля (поля, определенные прикладным программистом) //делаем массовое присваивание unset($item['id_product']); $product->scenario = 'offer'; $product->attributes = $item; if (floatval($product->countInCart) > 0) { $result[] = $product; } break; } } } return $result; }
public static function getProductsFromCookie() { if (ShopModule::$_productsCookie !== null) { return ShopModule::$_productsCookie; } $productsFromCookie = array(); if (isset(Yii::app()->request->cookies[self::CART_COOKIE_NAME])) { $productsFromCookie = CJSON::decode(Yii::app()->request->cookies[self::CART_COOKIE_NAME]->value, true); } ShopModule::$_productsCookie = array(); if (isset($productsFromCookie) && is_array($productsFromCookie)) { $cartProducts = Product::model()->with('category')->findAllByPk(HArray::column($productsFromCookie, 'id')); $collection = new DaActiveRecordCollection($cartProducts); foreach ($productsFromCookie as $productCookieItem) { $count = HArray::val($productCookieItem, 'count', 0); $idProduct = HArray::val($productCookieItem, 'id'); if ($count == 0) { continue; } $product = $collection->itemAt($idProduct); if ($product == null) { continue; } //чтобы появилась возможность заполнять кастомные поля (поля, определенные прикладным программистом) //делаем массовое присваивание $product->scenario = 'cookie'; unset($productCookieItem['id'], $productCookieItem['count']); $product->attributes = CMap::mergeArray(array('countInCart' => $count), $productCookieItem); ShopModule::$_productsCookie[] = $product; } } return ShopModule::$_productsCookie; }