'csv', 'skipOnEmpty'=>false], ]; } /** * @return array customized attribute labels */ public function attributeLabels() { return [ 'file' => 'Файл .csv', ]; } public function go() { $db = Yii::$app->db; $this->file = UploadedFile::getInstance($this, 'file'); if (($handle = fopen($this->file->tempName, "r")) !== FALSE) { while (($data = fgetcsv($handle, 100000, ";")) !== FALSE) { // print_r($data); $catalogParent = trim($data[0]); if(!$catalogParent)continue; $catalogParent_image = trim($data[1]); $catalog = trim($data[2]); $catalog_image = trim($data[3]); $p = explode('=',trim($data[4])); $art = trim($p[0]); $product = trim($p[1]); $product_image = trim($data[5]); $product_char = trim($data[6]); $product_body = trim($data[7]); $mods = (!empty($data[8])) ? explode('|',trim($data[8])) : []; $fotos = (!empty($data[9])) ? explode('|',trim($data[9])) : []; $types = (!empty($data[10])) ? explode('|',trim($data[10])) : []; $brends = (!empty($data[11])) ? explode('|',trim($data[11])) : []; $fasovkas = (!empty($data[12])) ? explode('|',trim($data[12])) : []; $product_new = (!empty($data[13])) ? trim($data[13]) : 0; $product_top = (!empty($data[14])) ? trim($data[14]) : 0; $product_akciya = (!empty($data[15])) ? trim($data[15]) : 0; $product_out_of_stock = (!empty($data[16])) ? trim($data[16]) : 0; //*********catalogParent*********// $modelCatalog = Catalog::find()->where('name=:name and parent_id=0',[':name'=>$catalogParent])->one(); if(empty($modelCatalog->id)){ $db->createCommand()->insert('catalog', [ 'name' => $catalogParent, 'image' => $catalogParent_image, 'translit' => Translite::rusencode($catalogParent), ])->execute(); $catalogParent_id = Yii::$app->db->lastInsertID; }else{ $db ->createCommand() ->update('catalog', [ 'name' => $catalogParent, 'image' => $catalogParent_image, 'translit' => Translite::rusencode($catalogParent), ], 'id = '.$modelCatalog->id) ->execute(); $catalogParent_id = $modelCatalog->id; } if(is_file('upload/catalog/'.$catalogParent_image)){ $resizeObj = new resize('upload/catalog/'.$catalogParent_image); $resizeObj -> resizeImage(195, 186, 'crop'); $resizeObj -> saveImage('upload/catalog/ico/'.$catalogParent_image, 100); } //*********END catalogParent*********// //*********catalog*********// $modelCatalog = Catalog::find()->where('name=:name and parent_id='.$catalogParent_id,[':name'=>$catalog])->one(); if(empty($modelCatalog->id)){ $db->createCommand()->insert('catalog', [ 'parent_id'=>$catalogParent_id, 'name' => $catalog, 'image' => $catalog_image, 'translit' => Translite::rusencode($catalog), ])->execute(); $catalog_id = Yii::$app->db->lastInsertID; }else{ $db ->createCommand() ->update('catalog', [ 'parent_id'=>$catalogParent_id, 'name' => $catalog, 'image' => $catalog_image, 'translit' => Translite::rusencode($catalog), ], 'id = '.$modelCatalog->id) ->execute(); $catalog_id = $modelCatalog->id; } if(is_file('upload/catalog/'.$catalog_image)){ $resizeObj = new resize('upload/catalog/'.$catalog_image); $resizeObj -> resizeImage(195, 186, 'crop'); $resizeObj -> saveImage('upload/catalog/ico/'.$catalog_image, 100); } //*********END catalog*********// //*********product*********// $modelProducts = Products::find()->where('art=:art',[':art'=>$art])->one(); if(empty($modelProducts->id)){ $db->createCommand()->insert('products', [ 'catalog_id'=>$catalog_id, 'name' => $product, 'art' => $art, 'image' => $product_image, 'translit' => Translite::rusencode($product), 'char'=>$product_char, 'body'=>$product_body, 'new'=>$product_new, 'top'=>$product_top, 'akciya'=>$product_akciya, 'out_of_stock'=>$product_out_of_stock, ])->execute(); $product_id = Yii::$app->db->lastInsertID; }else{ $db ->createCommand() ->update('products', [ 'catalog_id'=>$catalog_id, 'name' => $product, 'art' => $art, 'image' => $product_image, 'translit' => Translite::rusencode($product), 'char'=>$product_char, 'body'=>$product_body, 'new'=>$product_new, 'top'=>$product_top, 'akciya'=>$product_akciya, 'out_of_stock'=>$product_out_of_stock, ], 'id = '.$modelProducts->id) ->execute(); $product_id = $modelProducts->id; } if(is_file('upload/products/'.$product_image)){ $resizeObj = new resize('upload/products/'.$product_image); $resizeObj -> resizeImage(180, 240, 'landscape'); $resizeObj -> saveImage('upload/products/ico/'.$product_image, 100); $resizeObj -> resizeImage(400, 400, 'landscape'); $resizeObj -> saveImage('upload/products/big/'.$product_image, 100); } //*********END product*********// //*********mods*********// foreach($mods as $mod){ $mod_arr = explode('=',$mod); if(count($mod_arr)<2)continue; $mod_art = trim($mod_arr[0]); $mod_name = trim($mod_arr[1]); $mod_cost = trim($mod_arr[2]); $fields = [ 'product_id'=>$product_id, 'art'=>$mod_art, 'name'=>$mod_name, 'cost'=>$mod_cost, ]; $modelMod = Mod::find()->where('art=:art',[':art'=>$mod_art])->one(); if(empty($modelMod->id)){ $db->createCommand()->insert('mod', $fields)->execute(); }else{ $db->createCommand()->update('mod', $fields, 'id = '.$modelMod->id)->execute(); } } //*********END mods*********// // //*********fotos*********// foreach($fotos as $foto){ $fields = [ 'product_id'=>$product_id, 'image'=>$foto, ]; $modelFotos = Fotos::find()->where('image=:image',[':image'=>$foto])->one(); if(empty($modelFotos->id)){ $db->createCommand()->insert('products_fotos', $fields)->execute(); }else{ $db->createCommand()->update('products_fotos', $fields, 'id = '.$modelFotos->id)->execute(); } if(is_file('upload/fotos/'.$foto)){ $resizeObj = new resize('upload/fotos/'.$foto); $resizeObj -> resizeImage(100, 100, 'crop'); $resizeObj -> saveImage('upload/fotos/ico/'.$foto, 100); $resizeObj -> resizeImage(400, 400, 'crop'); $resizeObj -> saveImage('upload/fotos/big/'.$foto, 100); } } //*********END fotos*********// //*********types*********// ProductsType::deleteAll(['product_id' => $product_id]); foreach($types as $type){ $fields = [ 'catalog_id'=>$catalog_id, 'name'=>$type, ]; $modelType = Type::find()->where('name=:name and catalog_id=:catalog_id',[':name'=>$type,':catalog_id'=>$catalog_id])->one(); if(empty($modelType->id)){ $db->createCommand()->insert('catalog_type', $fields)->execute(); $type_id = Yii::$app->db->lastInsertID; }else{ $db->createCommand()->update('catalog_type', $fields, 'id = '.$modelType->id)->execute(); $type_id = $modelType->id; } $db->createCommand()->insert('productsType', ['type_id'=>$type_id,'product_id'=>$product_id])->execute(); } //*********END types*********// //*********brends*********// ProductsBrends::deleteAll(['product_id' => $product_id]); foreach($brends as $brend){ $fields = [ 'catalog_id'=>$catalog_id, 'name'=>$brend, ]; $modelBrends = Brends::find()->where('name=:name and catalog_id=:catalog_id',[':name'=>$brend,':catalog_id'=>$catalog_id])->one(); if(empty($modelBrends->id)){ $db->createCommand()->insert('catalog_brends', $fields)->execute(); $brend_id = Yii::$app->db->lastInsertID; }else{ $db->createCommand()->update('catalog_brends', $fields, 'id = '.$modelBrends->id)->execute(); $brend_id = $modelBrends->id; } $db->createCommand()->insert('productsBrends', ['brend_id'=>$brend_id,'product_id'=>$product_id])->execute(); } //*********END brends*********// //*********fasovka*********// ProductsFasovka::deleteAll(['product_id' => $product_id]); foreach($fasovkas as $fasovka){ $fields = [ 'catalog_id'=>$catalog_id, 'name'=>$fasovka, ]; $modelFasovka = Fasovka::find()->where('name=:name and catalog_id=:catalog_id',[':name'=>$fasovka,':catalog_id'=>$catalog_id])->one(); if(empty($modelFasovka->id)){ $db->createCommand()->insert('catalog_fasovka', $fields)->execute(); $fasovka_id = Yii::$app->db->lastInsertID; }else{ $db->createCommand()->update('catalog_fasovka', $fields, 'id = '.$modelFasovka->id)->execute(); $fasovka_id = $modelFasovka->id; } $db->createCommand()->insert('productsFasovka', ['fasovka_id'=>$fasovka_id,'product_id'=>$product_id])->execute(); } //*********END fasovka*********// // print"
";print_r($data); } fclose($handle); } return true; } }