c7852657
Karnovsky A
-
|
1
2
3
4
5
6
|
<?php
namespace common\modules\product\models;
use common\modules\product\helpers\ProductHelper;
use yii\base\Model;
|
96f5a822
Administrator
29.06.16
|
7
|
use yii\helpers\ArrayHelper;
|
c7852657
Karnovsky A
-
|
8
9
10
11
12
13
14
15
16
17
18
|
class Export extends Model {
public $errors = [];
public $output = [];
public function process($dirName, $filename = null, $use_not_enables = false) {
if (is_null($filename)) {
$filename = 'products_'. date('d_m_Y_H_i') .'.csv';
}
setlocale(LC_ALL, 'ru_RU.CP1251');
$handle = fopen($dirName .'/'. $filename, "w");
|
96f5a822
Administrator
29.06.16
|
19
20
21
22
|
///$products = Product::find()->joinWith(['variants'])->where(['!=', ProductVariant::tableName() .'.stock', 0])->select('product.product_id')->all();
$products = Product::find()
->with(['variantsWithFilters','brand','categoriesWithName'])->all();
|
c7852657
Karnovsky A
-
|
23
|
$i = 0;
|
96f5a822
Administrator
29.06.16
|
24
|
foreach ($products as $product)
|
c7852657
Karnovsky A
-
|
25
|
{
|
96f5a822
Administrator
29.06.16
|
26
27
|
|
c7852657
Karnovsky A
-
|
28
29
30
31
32
33
|
$i++;
/*if ($i>1e2) {
break;
}*/
$mods = [];
|
fe48c730
Administrator
20.07.16
|
34
|
$filterString = $this->convertFilterToString($product->getFilters());
|
96f5a822
Administrator
29.06.16
|
35
36
|
foreach ($product->variantsWithFilters as $variant)
|
c7852657
Karnovsky A
-
|
37
|
{
|
96f5a822
Administrator
29.06.16
|
38
39
40
41
42
43
44
45
|
$color = $variant->name;
$mods[] = $variant->sku .
'=' . $this->convertFilterToString($variant->filters) .
'=' . $color .
'=' . ((!empty($variant->image)) ? $variant->image->image: '').
'=' . $variant->stock;
|
c7852657
Karnovsky A
-
|
46
47
|
}
|
1b898c16
Administrator
20.07.16
|
48
|
|
c7852657
Karnovsky A
-
|
49
50
|
$fotos = [];
|
96f5a822
Administrator
29.06.16
|
51
52
53
54
55
56
57
58
59
60
61
|
// foreach ($product->images as $image)
// {
// $fotos[] = $image->imageUrl;
// }
// $filters = $product->properties;
$categories = [];
foreach($product->categoriesWithName as $value){
$categorName = ArrayHelper::getColumn($value->categoryNames,'value');
$categories[] = $categorName[0];
|
c7852657
Karnovsky A
-
|
62
63
|
}
|
96f5a822
Administrator
29.06.16
|
64
65
|
$categories = implode(',',$categories);
|
c7852657
Karnovsky A
-
|
66
67
|
$list = [
|
96f5a822
Administrator
29.06.16
|
68
|
$categories,
|
c7852657
Karnovsky A
-
|
69
70
71
72
|
$product->brand->name,
$product->name,
'',
((! empty($product->description)) ? $product->description : ''),
|
fe48c730
Administrator
20.07.16
|
73
|
$filterString,
|
96f5a822
Administrator
29.06.16
|
74
75
|
(!empty($product->variant)) ? $product->variant->price_old : '',
(!empty($product->variant)) ? $product->variant->price : '',
|
c7852657
Karnovsky A
-
|
76
77
78
79
|
intval($product->akciya),
'',
intval($product->new),
intval($product->top),
|
c7852657
Karnovsky A
-
|
80
81
82
83
84
85
86
87
88
|
$product->video,
implode (',', $fotos),
];
$to_write = array_merge ($list, $mods);
foreach($to_write as &$cell) {
$cell = iconv("UTF-8", "WINDOWS-1251", $cell);
}
|
96f5a822
Administrator
29.06.16
|
89
|
|
c7852657
Karnovsky A
-
|
90
91
92
|
fputcsv($handle, $to_write, ';');
}
|
96f5a822
Administrator
29.06.16
|
93
94
|
|
c7852657
Karnovsky A
-
|
95
96
97
98
|
fclose ($handle);
return $dirName .'/'. $filename;
}
|
96f5a822
Administrator
29.06.16
|
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
public function convertFilterToString($filters){
$fittersArray = [];
foreach($filters as $filter){
$fittersArray[$filter->taxGroup->alias][] = $filter->name;
}
$filterString=[];
foreach($fittersArray as $filterName =>$filterRows ){
$row = implode(',',$filterRows);
$filterString[] = "[{$filterName}:{$row}]";
}
return implode('*',$filterString);
}
|
c7852657
Karnovsky A
-
|
115
|
}
|