Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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;
 }