8724ec1f
Karnovsky A
-
|
1
2
3
4
|
<?php
namespace common\modules\product\models;
|
873e3d80
Administrator
14.09.16
|
5
|
use common\models\EventsToProducts;
|
c7852657
Karnovsky A
-
|
6
|
use common\modules\product\helpers\ProductHelper;
|
8724ec1f
Karnovsky A
-
|
7
8
9
10
|
use common\modules\product\models\Category;
use common\modules\product\models\CategoryName;
use common\modules\product\models\ProductImage;
use common\modules\product\models\ProductVariantType;
|
1c02ab59
Administrator
29.06.16
|
11
|
use common\modules\rubrication\models\TaxGroup;
|
8724ec1f
Karnovsky A
-
|
12
13
14
15
16
17
18
19
20
|
use common\modules\rubrication\models\TaxOption;
use common\modules\rubrication\models\TaxValueString;
use Yii;
use common\modules\product\models\Brand;
use common\modules\product\models\BrandName;
use common\modules\product\models\Product;
use common\modules\product\models\ProductVariant;
use common\modules\product\models\RemoteProducts;
use yii\base\Model;
|
9495311a
Administrator
14.06.16
|
21
|
use yii\helpers\ArrayHelper;
|
8724ec1f
Karnovsky A
-
|
22
23
24
|
class Import extends Model {
public $file;
|
5ee9ab1f
Karnovsky A
-
|
25
|
public $type;
|
8724ec1f
Karnovsky A
-
|
26
27
28
29
30
31
32
33
34
35
|
public $errors = [];
public $output = [];
/**
* @inheritdoc
*/
public function rules()
{
return [
|
5ee9ab1f
Karnovsky A
-
|
36
37
|
[['type'], 'required'],
[['type'], 'string'],
|
10e0f427
Karnovsky A
-
|
38
|
// [['file'], 'safe'],
|
5ee9ab1f
Karnovsky A
-
|
39
|
[['file'], 'file', 'extensions' => 'csv'],
|
8724ec1f
Karnovsky A
-
|
40
41
42
43
44
45
46
47
48
49
50
51
52
|
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'file' => Yii::t('product', 'File'),
];
}
|
5ee9ab1f
Karnovsky A
-
|
53
54
55
56
57
58
|
public function getType() {
if (!$this->type) {
$this->type = 'products';
}
return $this->type;
}
|
8724ec1f
Karnovsky A
-
|
59
|
|
37c2918b
Karnovsky A
-
|
60
61
62
63
64
65
66
67
68
|
public function goPrices($from = 0, $limit = null) {
set_time_limit(0);
$new_products = $linked_products = 0;
if ( !($handle = $this->getProductsFile('uploadFilePrices')) ) {
$this->errors[] = 'File not found';
return FALSE;
}
|
f7f95504
Karnovsky A
-
|
69
|
$filesize = filesize(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFilePrices'));
|
37c2918b
Karnovsky A
-
|
70
71
72
73
74
75
76
77
|
if ($from) {
fseek($handle, $from);
}
$j = 0;
$is_utf = (preg_match('//u', file_get_contents(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFilePrices'), null, null, null, 1000000)));
|
ebf6e240
Administrator
14.09.16
|
78
|
while ((empty($limit) || $j++ < $limit) && ($data = fgetcsv ($handle, 10000, ";")) !== FALSE )
|
37c2918b
Karnovsky A
-
|
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
{
foreach ($data as &$value)
{
if (!$is_utf) {
$value = iconv ('windows-1251', "UTF-8//TRANSLIT//IGNORE", $value);
}
$value = trim ($value);
}
// данные строк
$modification_code = @$data[0];
$price = floatval(@$data[1]);
$price_promo = floatval(@$data[2]);
$count = intval(@$data[3]);
$city_name = @$data[4];
$product_title = @$data[5];
if (empty ($modification_code)) {
|
49c47c76
Karnovsky A
-
|
97
|
continue;
|
37c2918b
Karnovsky A
-
|
98
99
100
101
|
}
// товары в пути
if (empty ($city_name))
{
|
f7f95504
Karnovsky A
-
|
102
103
104
105
|
// $this->saveNotFoundRecord (
// [$modification_code, $product_title],
// Yii::getAlias('@uploadFilePricesAway')
// );
|
37c2918b
Karnovsky A
-
|
106
107
108
|
$this->output[] = 'Товар '. $product_title . ' в пути';
|
49c47c76
Karnovsky A
-
|
109
|
continue;
|
37c2918b
Karnovsky A
-
|
110
111
|
}
|
f7f95504
Karnovsky A
-
|
112
|
if ( ($productVariant = ProductVariant::find()->filterWhere(['sku' => $modification_code])->one()) === null ) {
|
37c2918b
Karnovsky A
-
|
113
|
// 'Нет даной модификации в базе';
|
f7f95504
Karnovsky A
-
|
114
115
116
117
|
// $this->saveNotFoundRecord (
// [$modification_code, $product_title],
// Yii::getAlias('@uploadFilePricesNoVariant')
// );
|
37c2918b
Karnovsky A
-
|
118
119
120
|
$this->output[] = 'Для товара '. $product_title . ' не найдено соотвествие';
|
49c47c76
Karnovsky A
-
|
121
|
continue;
|
37c2918b
Karnovsky A
-
|
122
123
|
}
|
f7f95504
Karnovsky A
-
|
124
|
|
9495311a
Administrator
14.06.16
|
125
|
|
37c2918b
Karnovsky A
-
|
126
127
128
|
// ===== Set stock ====
if ( $city_name ) {
|
19a7a33f
Administrator
14.06.16
|
129
|
if ( ($stock = Stock::find()->filterWhere(['name' => trim($city_name)])->one()) === null ) {
|
86301a92
Administrator
14.06.16
|
130
|
|
37c2918b
Karnovsky A
-
|
131
132
133
134
135
136
|
// Create stock
$stock = new Stock();
$stock->name = trim($city_name);
$stock->save();
}
|
02a42412
Administrator
14.06.16
|
137
138
139
140
141
142
143
|
$productStock = ProductStock::find()->where(['product_variant_id' => $productVariant->product_variant_id, 'stock_id' => $stock->stock_id])->one();
if(!$productStock instanceof ProductStock) {
$productStock = new ProductStock;
$productStock->product_variant_id = $productVariant->product_variant_id;
$productStock->stock_id = $stock->stock_id;
$productStock->product_id = $productVariant->product_id;
}
|
9495311a
Administrator
14.06.16
|
144
|
$productStock->quantity = $count;
|
9495311a
Administrator
14.06.16
|
145
|
|
86301a92
Administrator
14.06.16
|
146
|
$productStock->save();
|
02a42412
Administrator
14.06.16
|
147
|
$productStocks = ProductStock::find()->where(['product_variant_id' => $productVariant->product_variant_id])->andWhere(['<>', 'stock_id', $stock->stock_id])->all();
|
9495311a
Administrator
14.06.16
|
148
149
150
151
|
$quantity = array_sum(ArrayHelper::getColumn($productStocks, 'quantity')) + $count;
} else {
|
02a42412
Administrator
14.06.16
|
152
|
$productStocks = ProductStock::find()->where(['product_variant_id' => $productVariant->product_variant_id])->all();
|
9495311a
Administrator
14.06.16
|
153
154
155
156
157
158
159
|
if($productStocks instanceof ProductStock){
$quantity = array_sum(ArrayHelper::getColumn($productStocks, 'quantity')) + $count;
} else {
$quantity = 0;
}
|
37c2918b
Karnovsky A
-
|
160
161
|
}
|
49c47c76
Karnovsky A
-
|
162
163
164
165
166
167
168
169
|
if ($price_promo) {
$productVariant->price_old = $price;
$productVariant->price = $price_promo;
} else {
$productVariant->price = $price;
$productVariant->price_old = $price_promo;
}
|
37c2918b
Karnovsky A
-
|
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
$productVariant->stock = $quantity;
$productVariant->save();
$this->output[] = '<font style="color:blue">Товар '. $product_title .' успешно сохранен</font>';
}
$result = [
'end' => feof($handle),
'from' => ftell($handle),
'totalsize' => $filesize,
'items' => $this->output,
];
fclose ($handle);
if ($result['end']) {
unlink(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFilePrices'));
|
37c2918b
Karnovsky A
-
|
189
190
191
192
193
194
|
}
return $result;
}
public function goProducts($from = 0, $limit = null) {
|
1c02ab59
Administrator
29.06.16
|
195
|
|
5ee9ab1f
Karnovsky A
-
|
196
|
set_time_limit(0);
|
8724ec1f
Karnovsky A
-
|
197
198
|
$new_products = $linked_products = 0;
|
5ee9ab1f
Karnovsky A
-
|
199
|
if ( !($handle = $this->getProductsFile('uploadFileProducts')) ) {
|
8724ec1f
Karnovsky A
-
|
200
201
202
203
|
$this->errors[] = 'File not found';
return FALSE;
}
|
37c2918b
Karnovsky A
-
|
204
205
|
$filesize = filesize(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts'));
|
1c02ab59
Administrator
29.06.16
|
206
|
|
37c2918b
Karnovsky A
-
|
207
208
209
210
|
if ($from) {
fseek($handle, $from);
}
|
8724ec1f
Karnovsky A
-
|
211
212
|
$j = 0;
|
c7852657
Karnovsky A
-
|
213
214
|
$is_utf = (preg_match('//u', file_get_contents(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts'), null, null, null, 1000000)));
|
37c2918b
Karnovsky A
-
|
215
|
$result_items = [];
|
8724ec1f
Karnovsky A
-
|
216
|
|
ebf6e240
Administrator
14.09.16
|
217
|
while ( (empty($limit) || $j++ < $limit) && ($data = fgetcsv ($handle, 10000, ";")) !== FALSE)
|
37c2918b
Karnovsky A
-
|
218
|
{
|
1c02ab59
Administrator
29.06.16
|
219
220
|
|
8724ec1f
Karnovsky A
-
|
221
222
|
foreach ($data as &$value)
{
|
c7852657
Karnovsky A
-
|
223
224
225
|
if (!$is_utf) {
$value = iconv ('windows-1251', "UTF-8//TRANSLIT//IGNORE", $value);
}
|
8724ec1f
Karnovsky A
-
|
226
227
228
229
230
231
232
233
234
235
236
237
|
$value = trim ($value);
}
// будет всегда 19 элементов
for ($i = 0; $i <= 18; $i++)
{
if (! isset ($data[$i]))
{
$data[$i] = null;
}
}
|
1c02ab59
Administrator
29.06.16
|
238
|
|
8724ec1f
Karnovsky A
-
|
239
|
// 1 Группа (категория)
|
1c02ab59
Administrator
29.06.16
|
240
241
|
$catalog_names = explode(',',$data[0]);
if (empty ($catalog_names))
|
8724ec1f
Karnovsky A
-
|
242
|
{
|
37c2918b
Karnovsky A
-
|
243
|
$result_items[] = "Не указана категория (строка $j)";
|
49c47c76
Karnovsky A
-
|
244
|
continue;
|
8724ec1f
Karnovsky A
-
|
245
246
247
248
249
250
|
}
// 2 Бренд
$brand_name = $data[1];
if (empty ($brand_name))
{
|
37c2918b
Karnovsky A
-
|
251
|
$result_items[] = "Не указан бренд (строка $j)";
|
49c47c76
Karnovsky A
-
|
252
|
continue;
|
8724ec1f
Karnovsky A
-
|
253
254
255
256
257
258
|
}
// 3 Название товара
$product_name = $data[2];
if (empty ($product_name))
{
|
37c2918b
Karnovsky A
-
|
259
|
$result_items[] = "Не указано наименование товара (строка $j)";
|
49c47c76
Karnovsky A
-
|
260
|
continue;
|
8724ec1f
Karnovsky A
-
|
261
262
263
264
265
266
267
268
|
}
// 4 Описание Укр
$product_body_uk = $data[3];
// 5 Описание Рус
$product_body_ru = $data[4];
|
873e3d80
Administrator
14.09.16
|
269
|
// 6 Фильтр [god:2013-2014]*[pol:мужской]*[naznacenie-germo-beg:Для вещей]*[material-germo-bag:нет]*[value-germo-bag:нет]*[weight-germo-bag:нет]*[ipx-germo-bag:нет]*[in-pacage-bag:нет]*[size-germo-bag:нет]*[rekomend-germo-bag:нет]
|
1c02ab59
Administrator
29.06.16
|
270
|
$filters = explode ('*', $data[5]);
|
8724ec1f
Karnovsky A
-
|
271
|
|
49c47c76
Karnovsky A
-
|
272
|
// 11 Цена акция
|
1c02ab59
Administrator
29.06.16
|
273
|
$product_cost_old = floatval($data[7]);
|
8724ec1f
Karnovsky A
-
|
274
|
|
49c47c76
Karnovsky A
-
|
275
276
|
// 10 Цена
if ($product_cost_old) {
|
1c02ab59
Administrator
29.06.16
|
277
278
|
$product_cost_old = floatval($data[6]);
$product_cost = floatval($data[7]);
|
49c47c76
Karnovsky A
-
|
279
|
}
|
8724ec1f
Karnovsky A
-
|
280
281
|
// 12 Акция
|
1c02ab59
Administrator
29.06.16
|
282
|
$product_akciya = (bool)$data[8];
|
8724ec1f
Karnovsky A
-
|
283
284
|
// 13 Сопуд. Тов.
|
1c02ab59
Administrator
29.06.16
|
285
|
$similar = explode (',', $data[9]);
|
8724ec1f
Karnovsky A
-
|
286
287
|
// 14 Новинки
|
1c02ab59
Administrator
29.06.16
|
288
|
$product_new = (bool)$data[10];
|
8724ec1f
Karnovsky A
-
|
289
290
|
// 15 Топ продаж
|
1c02ab59
Administrator
29.06.16
|
291
|
$product_top = (bool)$data[11];
|
8724ec1f
Karnovsky A
-
|
292
|
|
8724ec1f
Karnovsky A
-
|
293
294
|
// 17 ВИДЕО КОД
|
1c02ab59
Administrator
29.06.16
|
295
|
$product_video = $data[12];
|
8724ec1f
Karnovsky A
-
|
296
297
|
// 18 Галлерея фото
|
1c02ab59
Administrator
29.06.16
|
298
299
|
if (trim($data[13])) {
$fotos = explode (',', trim($data[13]));
|
37c2918b
Karnovsky A
-
|
300
|
}
|
8724ec1f
Karnovsky A
-
|
301
302
303
304
|
// 19 Штрих код товара.
// расшифровал - это модификации товара!
|
1c02ab59
Administrator
29.06.16
|
305
|
$product_image = explode ('=', $data[14]);
|
8724ec1f
Karnovsky A
-
|
306
307
308
309
310
311
312
313
|
$product_image = @$product_image[3];
if ( ($_product = Product::find()->filterWhere(['ilike', 'name', trim($product_name)])->one()) === null ) {
$_product = new Product();
}
$is_new_product = empty($_product->product_id);
|
1c02ab59
Administrator
29.06.16
|
314
315
316
317
318
319
320
321
322
323
|
foreach($catalog_names as $catalog_name){
// ==== Set category ====
if ( ($category = CategoryName::find()->filterWhere(['ilike', 'value', trim($catalog_name)])->one()) === null ) {
// Create category
$category = new Category();
$category->name = trim($catalog_name);
$category->save();
}
$category_id[] = $category->category_id;
|
8724ec1f
Karnovsky A
-
|
324
|
}
|
1c02ab59
Administrator
29.06.16
|
325
326
327
|
$_product->categories = $category_id;
|
8724ec1f
Karnovsky A
-
|
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
|
// ===== Set brand ====
if ( $brand_name ) {
if ( ($brand = BrandName::find()->filterWhere(['ilike', 'value', trim($brand_name)])->one()) !== null ) {
$_product->brand_id = $brand->brand_id;
} else {
// Create brand
$brand = new Brand();
$brand->name = trim($brand_name);
$brand->save();
$_product->brand_id = $brand->brand_id;
}
}
$_product->name = $product_name;
$_product->video = $product_video;
$_product->description = $product_body_ru;
$_product->is_top = $product_top;
$_product->akciya = $product_akciya;
$_product->is_new = $product_new;
if (!$_product->save()) {
|
37c2918b
Karnovsky A
-
|
350
|
$result_items[] = 'Product #'. $_product->name .' not saved' . " (строка $j)";
|
8724ec1f
Karnovsky A
-
|
351
352
353
|
continue;
}
|
1c02ab59
Administrator
29.06.16
|
354
355
|
|
37c2918b
Karnovsky A
-
|
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
|
if (!empty($fotos)) {
foreach($fotos as $foto) {
$source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($foto);
if (file_exists($source_image)) {
if (($productImage = ProductImage::find()->andFilterWhere(['ilike', 'image', $foto])->andFilterWhere(['product_id' => $_product->product_id])->one()) === null) {
copy($source_image, Yii::getAlias('@productsDir') . "/" . $foto);
$productImage = new ProductImage();
$productImage->product_id = $_product->product_id;
$productImage->image = $foto;
$productImage->save();
}
}
}
}
|
1c02ab59
Administrator
29.06.16
|
372
|
|
8724ec1f
Karnovsky A
-
|
373
374
375
|
// нужно для проставления характеристик относящихся к модификациям
$MOD_ARRAY = [];
|
1c02ab59
Administrator
29.06.16
|
376
|
for ($i = 14; $i < count ($data); $i ++)
|
8724ec1f
Karnovsky A
-
|
377
378
379
380
381
|
{
if (! empty ($data[$i]))
{
$mod_arr = explode ('=', $data[$i]);
$mod_art = $mod_arr[0];
|
1c02ab59
Administrator
29.06.16
|
382
|
$variant_filters = explode ('*', $mod_arr[1]);
|
8724ec1f
Karnovsky A
-
|
383
384
|
$mod_color = $mod_arr[2];
$mod_image = $mod_arr[3];
|
1c02ab59
Administrator
29.06.16
|
385
|
$mod_stock = isset($mod_arr[4]) ?$mod_arr[4]:1;
|
85e398f1
Administrator
20.07.16
|
386
|
$mod_cost = isset($product_cost) ? floatval($product_cost) : 0;
|
8724ec1f
Karnovsky A
-
|
387
388
389
390
391
392
393
394
395
396
397
398
|
$mod_old_cost = floatval($product_cost_old);
// Check product variant
if ( ($_productVariant = ProductVariant::find()->andFilterWhere(['ilike', 'sku', $mod_art])->andFilterWhere(['product_id' => $_product->product_id])->one()) === null ) {
$_productVariant = new ProductVariant();
$_productVariant->product_id = $_product->product_id;
}
$_productVariant->product_unit_id = 1;
$_productVariant->sku = $mod_art;
$_productVariant->price = $mod_cost;
$_productVariant->price_old = $mod_old_cost;
|
1c02ab59
Administrator
29.06.16
|
399
|
$_productVariant->stock = $mod_stock;
|
8724ec1f
Karnovsky A
-
|
400
401
402
403
404
405
|
$product_variant_type_name = '';
if (! empty ($mod_color)) {
$product_variant_type_name = 'Цвет';
$_productVariant->name = $mod_color;
}
|
1c02ab59
Administrator
29.06.16
|
406
407
408
409
410
411
412
413
414
415
|
if (! empty ($variant_filters)) {
$variants_options = $this->saveFilters($variant_filters,1,$category_id);
}
if (isset($variants_options) && !empty($variants_options)) {
$_productVariant->options = $variants_options;
|
8724ec1f
Karnovsky A
-
|
416
417
|
}
|
1c02ab59
Administrator
29.06.16
|
418
|
|
8724ec1f
Karnovsky A
-
|
419
420
421
422
423
424
425
426
427
428
429
|
// ===== Set variant type ====
if ( $product_variant_type_name ) {
if ( ($product_variant_type = ProductVariantType::find()->filterWhere(['ilike', 'name', $product_variant_type_name])->one()) !== null ) {
$_productVariant->product_variant_type_id = $product_variant_type->product_variant_type_id;
} else {
$product_variant_type = new ProductVariantType();
$product_variant_type->name = $product_variant_type_name;
$product_variant_type->save();
$_productVariant->product_variant_type_id = $product_variant_type->product_variant_type_id;
}
}
|
1c02ab59
Administrator
29.06.16
|
430
|
|
8724ec1f
Karnovsky A
-
|
431
432
433
434
435
|
$_productVariant->save(false);
$MOD_ARRAY[] = $_productVariant->product_variant_id;
if ($mod_image) {
|
37c2918b
Karnovsky A
-
|
436
437
|
$source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($mod_image);
if (file_exists($source_image)) {
|
8724ec1f
Karnovsky A
-
|
438
|
if (($variantImage = ProductImage::find()->andFilterWhere(['ilike', 'image', $mod_image])->andFilterWhere(['product_variant_id' => $_productVariant->product_variant_id])->one()) === null) {
|
37c2918b
Karnovsky A
-
|
439
|
copy($source_image, Yii::getAlias('@productsDir') . "/" . $mod_image);
|
8724ec1f
Karnovsky A
-
|
440
441
442
443
444
445
446
447
448
449
450
|
$variantImage = new ProductImage();
$variantImage->product_id = $_product->product_id;
$variantImage->product_variant_id = $_productVariant->product_variant_id;
$variantImage->image = $mod_image;
$variantImage->save();
}
}
}
}
}
|
1c02ab59
Administrator
29.06.16
|
451
|
|
8724ec1f
Karnovsky A
-
|
452
453
|
if (! empty ($filters)) {
|
8724ec1f
Karnovsky A
-
|
454
|
|
1c02ab59
Administrator
29.06.16
|
455
|
$options = $this->saveFilters($filters,0,$category_id);
|
8724ec1f
Karnovsky A
-
|
456
|
|
8724ec1f
Karnovsky A
-
|
457
458
|
}
|
1c02ab59
Administrator
29.06.16
|
459
460
|
if (isset($options) && !empty($options)) {
|
8724ec1f
Karnovsky A
-
|
461
462
463
464
465
|
$_product->options = $options;
}
$_product->save();
|
37c2918b
Karnovsky A
-
|
466
|
$result_items[] = "Product {$_product->name} #{$_product->product_id} saved (". ($is_new_product ? 'new product' : 'exists product') .")" . " (строка $j)";
|
8724ec1f
Karnovsky A
-
|
467
468
|
}
|
37c2918b
Karnovsky A
-
|
469
470
471
472
473
|
$result = [
'end' => feof($handle),
'from' => ftell($handle),
'totalsize' => $filesize,
'items' => $result_items,
|
8724ec1f
Karnovsky A
-
|
474
|
|
37c2918b
Karnovsky A
-
|
475
|
];
|
8724ec1f
Karnovsky A
-
|
476
|
|
37c2918b
Karnovsky A
-
|
477
|
fclose ($handle);
|
5ee9ab1f
Karnovsky A
-
|
478
|
|
87451675
Administrator
29.06.16
|
479
480
481
|
if ($result['end']) {
unlink(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts'));
}
|
5ee9ab1f
Karnovsky A
-
|
482
|
|
37c2918b
Karnovsky A
-
|
483
|
return $result;
|
5ee9ab1f
Karnovsky A
-
|
484
485
|
}
|
873e3d80
Administrator
14.09.16
|
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
|
public function goEvent($file) {
set_time_limit(0);
$handle = fopen($file, 'r');
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
if(isset($data[0]) && isset($data[1])){
$product = ProductVariant::find()->where(['sku' => $data[1]])->joinWith('product')->one();
if($product instanceof ProductVariant){
$model= EventsToProducts::find()->where(['event_id' =>$data[0], 'product_id' => $product->product->product_id ])->one();
if(!$model instanceof EventsToProducts){
$model = new EventsToProducts;
$model->event_id = $data[0];
$model->product_id = $product->product->product_id;
$model->save();
}
}
}
}
fclose($handle);
unlink($file);
}
|
5ee9ab1f
Karnovsky A
-
|
515
516
|
private function getProductsFile($file_type) {
$filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@'. $file_type);
|
8724ec1f
Karnovsky A
-
|
517
|
if (!is_file($filename)) {
|
5ee9ab1f
Karnovsky A
-
|
518
|
$this->errors[] = "File $filename not found";
|
8724ec1f
Karnovsky A
-
|
519
520
521
522
|
return FALSE;
}
return fopen ($filename, 'r');
}
|
5ee9ab1f
Karnovsky A
-
|
523
524
525
526
527
528
529
530
531
532
|
private function saveNotFoundRecord (array $line, $filename)
{
$str = implode (';', $line)."\n";
$str = iconv ("UTF-8//TRANSLIT//IGNORE", "windows-1251", $str);
$fg = fopen (Yii::getAlias('@uploadDir') .'/'. $filename, 'a+');
fputs ($fg, $str);
fclose ($fg);
}
|
1c02ab59
Administrator
29.06.16
|
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
|
/**
* @param $filters array of filters like [['pol'='мужской'],['god' = '2013'],['volume'='25 л']*['size'='49 x 30 x 20см'],['composition'='600D полиэстер']]
* @param $level 0 for products and 1 for product variant
* @param $catalog_names array catalogs id
* @return array
*/
private function saveFilters($filters, $level,$catalog_names){
$options = [];
foreach($filters as $filter) {
preg_match_all('/\[(.*):(.*)\]/',$filter,$filter);
if (empty($filter[1][0])) {
continue;
}
$filter_name = trim($filter[1][0]);
$taxGroup = TaxGroup::find()->where(['alias'=>$filter_name])->one();
if(!$taxGroup instanceof TaxGroup){
$taxGroup = new TaxGroup();
$taxGroup->alias = $filter_name;
$taxGroup->level = $level;
$taxGroup->name = $filter_name;
$taxGroup->module = 'string';
|
e8a4e12c
Administrator
rm node nodule
|
559
|
// $taxGroup->hierarchical = FALSE;
|
1c02ab59
Administrator
29.06.16
|
560
561
562
563
564
565
566
567
568
569
570
571
572
573
|
$taxGroup->group_to_category = $catalog_names;
$taxGroup->is_filter = FALSE;
$taxGroup->save();
}
$filters_options = explode(',',$filter[2][0]);
foreach($filters_options as $filter_options){
$value = TaxValueString::find()->innerJoinWith('taxOption')->andFilterWhere(['ilike', 'value', $filter_options])->andFilterWhere(['tax_option.tax_group_id' => $taxGroup->tax_group_id])->one();
if (!$value instanceof TaxValueString) {
// Create option
$option = new TaxOption();
$option->tax_group_id = $taxGroup->tax_group_id;
|
96f5a822
Administrator
29.06.16
|
574
|
$option->name = $filter_options;
|
1c02ab59
Administrator
29.06.16
|
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
|
$option->save();
$value = new TaxValueString();
$value->tax_option_id = $option->tax_option_id;
$value->value = $filter_options;
$value->save();
$option->default_value = $value->tax_value_id;
$option->save();
}
$options[] = $value->tax_option_id;
}
}
return $options;
}
|
8724ec1f
Karnovsky A
-
|
594
|
}
|