Commit b8a993f6b59c9c507839f9e208ea6333bbddf82b

Authored by Alexey Boroda
1 parent 3a423558

-Image behavior added

backend/views/blog/_form.php
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
52 ]), 52 ]),
53 ]) ?> 53 ]) ?>
54 54
55 - <?= $form->field($model, 'imageUpload') 55 + <?= $form->field($model, 'image')
56 ->widget(\kartik\file\FileInput::classname(), [ 56 ->widget(\kartik\file\FileInput::classname(), [
57 'language' => 'ru', 57 'language' => 'ru',
58 'options' => [ 58 'options' => [
common/behaviors/SaveImgBehavior.php
1 <?php 1 <?php
2 -  
3 -namespace common\behaviors;  
4 -  
5 -use common\modules\comment\models\CommentModel;  
6 -use yii\base\Behavior;  
7 -use yii\db\ActiveRecord;  
8 -use yii\web\UploadedFile;  
9 -/**  
10 - * Class RatingBehavior  
11 - * @property CommentModel $owner  
12 - * @package common\behaviors  
13 - */  
14 -class SaveImgBehavior extends Behavior  
15 -{  
16 -  
17 -  
18 - public $directory;  
19 -  
20 - public function events() 2 +
  3 + namespace common\behaviors;
  4 +
  5 + use yii\base\Behavior;
  6 + use yii\base\ModelEvent;
  7 + use yii\db\ActiveRecord;
  8 + use yii\web\UploadedFile;
  9 + /**
  10 + * Class Save Image Behavior
  11 + * @property ActiveRecord $owner
  12 + * @package common\behaviors
  13 + */
  14 + class SaveImgBehavior extends Behavior
21 { 15 {
22 - return [  
23 - ActiveRecord::EVENT_BEFORE_UPDATE => 'beforeUpdate',  
24 - ActiveRecord::EVENT_BEFORE_INSERT => 'beforeInsert',  
25 - ];  
26 - }  
27 -  
28 - public function beforeUpdate($event)  
29 - {  
30 -  
31 -  
32 - if ( ($image = UploadedFile::getInstance($this->owner, 'image')) ) {  
33 - $this->owner->image = $image->name;  
34 - }  
35 -  
36 - if(!$this->owner->image){  
37 - $this->owner->image = $this->owner->getOldAttribute('image'); 16 +
  17 + public $fields;
  18 + public $is_language = false;
  19 +
  20 + public function events()
  21 + {
  22 + return [
  23 + ActiveRecord::EVENT_BEFORE_UPDATE => 'beforeSave',
  24 + ActiveRecord::EVENT_BEFORE_INSERT => 'beforeSave',
  25 + ];
38 } 26 }
39 -  
40 -  
41 - if ($image) {  
42 - $imgDir = \Yii::getAlias('@storage/'.$this->directory.'/');  
43 -  
44 - if(!is_dir($imgDir)) {  
45 - mkdir($imgDir, 0755, true); 27 +
  28 + /**
  29 + * @param ModelEvent $event
  30 + */
  31 + public function beforeSave($event) {
  32 + foreach($this->fields as $field){
  33 + $field_name = $field['name'];
  34 + $name = $field_name;
  35 + if($this->is_language) {
  36 + $name = '['.$this->owner->language_id.']'.$name;
  37 + }
  38 +
  39 + $image = UploadedFile::getInstance($this->owner, $name);
  40 +
  41 + if(empty($image) && $event->name == ActiveRecord::EVENT_BEFORE_UPDATE) {
  42 + $this->owner->$field_name = $this->owner->getOldAttribute($field_name);
  43 + } elseif(!empty($image)) {
  44 + $imgDir = \Yii::getAlias('@storage/'.$field['directory'].'/');
  45 +
  46 + if(!is_dir($imgDir)) {
  47 + mkdir($imgDir, 0755, true);
  48 + }
  49 +
  50 + $baseName = $image->baseName;
  51 +
  52 + $iteration = 0;
  53 + $file_name = $imgDir.$baseName.'.'.$image->extension;
  54 + while(file_exists($file_name)) {
  55 + $baseName = $image->baseName.'_'.++$iteration;
  56 + $file_name = $imgDir.$baseName.'.'.$image->extension;
  57 + }
  58 + unset($iteration);
  59 +
  60 + $this->owner->$field_name = $baseName.'.'.$image->extension;
  61 +
  62 + $image->saveAs($file_name);
  63 + }
46 } 64 }
47 -  
48 - $image->saveAs(\Yii::getAlias('@storage/'.$this->directory.'/' . $image->name));  
49 } 65 }
50 - }  
51 -  
52 -  
53 - public function beforeInsert($event)  
54 - {  
55 -  
56 -  
57 - if ( ($image = UploadedFile::getInstance($this->owner, 'image')) ) {  
58 - $this->owner->image = $image->name; 66 +
  67 + public function getImageFile($image = 'image') {
  68 + return empty($this->owner->$image) ? null : '/storage/'.$this->fields[0]['directory'].'/'. $this->owner->$image;
59 } 69 }
60 -  
61 -  
62 -  
63 - if ($image) {  
64 - $imgDir = \Yii::getAlias('@storage/'.$this->directory.'/');  
65 -  
66 - if(!is_dir($imgDir)) {  
67 - mkdir($imgDir, 0755, true);  
68 - }  
69 -  
70 - $image->saveAs(\Yii::getAlias('@storage/'.$this->directory.'/' . $image->name)); 70 +
  71 + public function getImageUrl($image = 'image') {
  72 + return empty($this->owner->$image) ? null : '/storage/'.$this->fields[0]['directory'].'/'. $this->owner->$image;
71 } 73 }
72 - }  
73 -  
74 -  
75 -  
76 - public function getImageFile() {  
77 - return empty($this->owner->image) ? null : '/storage/'.$this->directory.'/'. $this->owner->image;  
78 - }  
79 -  
80 - public function getImageUrl() {  
81 - return empty($this->owner->image) ? null : '/storage/'.$this->directory.'/'. $this->owner->image;  
82 - }  
83 -}  
84 \ No newline at end of file 74 \ No newline at end of file
  75 +
  76 +
  77 +
  78 + }
85 \ No newline at end of file 79 \ No newline at end of file
common/models/Articles.php
@@ -49,6 +49,12 @@ class Articles extends \yii\db\ActiveRecord @@ -49,6 +49,12 @@ class Articles extends \yii\db\ActiveRecord
49 ], 49 ],
50 [ 50 [
51 'class' => SaveImgBehavior::className(), 51 'class' => SaveImgBehavior::className(),
  52 + 'fields' => [
  53 + [
  54 + 'name' => 'image',
  55 + 'directory' => 'articles',
  56 + ]
  57 + ],
52 ], 58 ],
53 ]; 59 ];
54 } 60 }
@@ -65,9 +71,7 @@ class Articles extends \yii\db\ActiveRecord @@ -65,9 +71,7 @@ class Articles extends \yii\db\ActiveRecord
65 [['date', 'date_end'], 'safe'], 71 [['date', 'date_end'], 'safe'],
66 [['title', 'body'], 'required'], 72 [['title', 'body'], 'required'],
67 [['body', 'body_preview', 'seo_text'], 'string'], 73 [['body', 'body_preview', 'seo_text'], 'string'],
68 - [['title', 'image', 'translit', 'meta_title', 'meta_keywords', 'meta_description', 'h1'], 'string', 'max' => 255],  
69 - [['imageUpload'], 'safe'],  
70 - [['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'], 74 + [['title', 'translit', 'meta_title', 'meta_keywords', 'meta_description', 'h1'], 'string', 'max' => 255],
71 [['date', 'date_end'], 'filter', 'filter' => function($value) { 75 [['date', 'date_end'], 'filter', 'filter' => function($value) {
72 return strtotime($value)?:time(); 76 return strtotime($value)?:time();
73 }], 77 }],
@@ -97,42 +101,9 @@ class Articles extends \yii\db\ActiveRecord @@ -97,42 +101,9 @@ class Articles extends \yii\db\ActiveRecord
97 'imageUpload' => 'ะšะฐั€ั‚ะธะฝะบะฐ', 101 'imageUpload' => 'ะšะฐั€ั‚ะธะฝะบะฐ',
98 ]; 102 ];
99 } 103 }
100 -  
101 - public function getImageFile() {  
102 - return empty($this->image) ? null : Yii::getAlias('@imagesDir/articles/'. $this->image);  
103 - }  
104 -  
105 - public function getImageUrl()  
106 - {  
107 - return empty($this->image) ? null : Yii::getAlias('@imagesUrl/articles/' . $this->image);  
108 - }  
109 -  
110 - public function recalculateRating() {  
111 - /**  
112 - * @var ArticleToRating $averageRating  
113 - */  
114 - $average = $this->getComments()->joinWith('rating')->select(['average' => 'avg(artbox_comment_rating.value)::float'])->scalar();  
115 - if(!$average) {  
116 - $average = 0;  
117 - }  
118 - $averageRating = $this->averageRating;  
119 - if(!empty($averageRating)) {  
120 - $averageRating->value = $average;  
121 - } else {  
122 - $averageRating = new ArticleToRating(['articles_id' => $this->id, 'value' => $average]);  
123 - }  
124 - if($averageRating->save()) {  
125 - return true;  
126 - } else {  
127 - return false;  
128 - }  
129 - }  
130 104
131 public function getComments() { 105 public function getComments() {
132 return $this->hasMany(CommentModel::className(), ['entity_id' => 'id'])->where(['artbox_comment.entity' => self::className(), 'artbox_comment.status' => CommentModel::STATUS_ACTIVE, 'artbox_comment.artbox_comment_pid' => NULL]); 106 return $this->hasMany(CommentModel::className(), ['entity_id' => 'id'])->where(['artbox_comment.entity' => self::className(), 'artbox_comment.status' => CommentModel::STATUS_ACTIVE, 'artbox_comment.artbox_comment_pid' => NULL]);
133 } 107 }
134 108
135 - public function getAverageRating() {  
136 - return $this->hasOne(ArticleToRating::className(), ['articles_id' => 'id']);  
137 - }  
138 } 109 }
common/models/Blog.php
@@ -30,8 +30,6 @@ @@ -30,8 +30,6 @@
30 { 30 {
31 private $_categoryItems; 31 private $_categoryItems;
32 32
33 - public $imageUpload;  
34 -  
35 /** 33 /**
36 * @inheritdoc 34 * @inheritdoc
37 */ 35 */
@@ -54,6 +52,12 @@ @@ -54,6 +52,12 @@
54 ], 52 ],
55 [ 53 [
56 'class' => SaveImgBehavior::className(), 54 'class' => SaveImgBehavior::className(),
  55 + 'fields' => [
  56 + [
  57 + 'name' => 'image',
  58 + 'directory' => 'blog',
  59 + ],
  60 + ],
57 ], 61 ],
58 ]; 62 ];
59 } 63 }
@@ -96,7 +100,6 @@ @@ -96,7 +100,6 @@
96 [ 100 [
97 [ 101 [
98 'title', 102 'title',
99 - 'image',  
100 'translit', 103 'translit',
101 'meta_title', 104 'meta_title',
102 'meta_keywords', 105 'meta_keywords',
@@ -107,15 +110,6 @@ @@ -107,15 +110,6 @@
107 'max' => 255, 110 'max' => 255,
108 ], 111 ],
109 [ 112 [
110 - [ 'imageUpload' ],  
111 - 'safe',  
112 - ],  
113 - [  
114 - [ 'imageUpload' ],  
115 - 'file',  
116 - 'extensions' => 'jpg, gif, png',  
117 - ],  
118 - [  
119 [ 113 [
120 'date', 114 'date',
121 'date_end', 115 'date_end',
@@ -159,16 +153,6 @@ @@ -159,16 +153,6 @@
159 ]; 153 ];
160 } 154 }
161 155
162 - public function getImageFile()  
163 - {  
164 - return empty( $this->image ) ? NULL : Yii::getAlias('@imagesDir/blog/' . $this->image);  
165 - }  
166 -  
167 - public function getImageUrl()  
168 - {  
169 - return empty( $this->image ) ? NULL : Yii::getAlias('@imagesUrl/blog/' . $this->image);  
170 - }  
171 -  
172 /** 156 /**
173 * @return ActiveQuery 157 * @return ActiveQuery
174 */ 158 */
common/modules/product/models/Import.php
@@ -207,12 +207,11 @@ class Import extends Model { @@ -207,12 +207,11 @@ class Import extends Model {
207 207
208 // 2 ะ‘ั€ะตะฝะด 208 // 2 ะ‘ั€ะตะฝะด
209 $brand_name = $data[1]; 209 $brand_name = $data[1];
210 - if (empty ($brand_name))  
211 - {  
212 - $result_items[] = "ะะต ัƒะบะฐะทะฐะฝ ะฑั€ะตะฝะด (ัั‚ั€ะพะบะฐ $j)";  
213 - continue;  
214 - }  
215 - 210 +// if (empty ($brand_name))
  211 +// {
  212 +// $result_items[] = "ะะต ัƒะบะฐะทะฐะฝ ะฑั€ะตะฝะด (ัั‚ั€ะพะบะฐ $j)";
  213 +// continue;
  214 +// }
216 // 3 ะะฐะทะฒะฐะฝะธะต ั‚ะพะฒะฐั€ะฐ 215 // 3 ะะฐะทะฒะฐะฝะธะต ั‚ะพะฒะฐั€ะฐ
217 $product_name = $data[2]; 216 $product_name = $data[2];
218 if (empty ($product_name)) 217 if (empty ($product_name))
@@ -284,7 +283,7 @@ class Import extends Model { @@ -284,7 +283,7 @@ class Import extends Model {
284 $category_id[] = $category->category_id; 283 $category_id[] = $category->category_id;
285 } 284 }
286 285
287 - $_product->_categories = $category_id; 286 + $_product->categories = $category_id;
288 287
289 // ===== Set brand ==== 288 // ===== Set brand ====
290 if ( $brand_name ) { 289 if ( $brand_name ) {
@@ -366,7 +365,7 @@ class Import extends Model { @@ -366,7 +365,7 @@ class Import extends Model {
366 365
367 366
368 if (isset($variants_options) && !empty($variants_options)) { 367 if (isset($variants_options) && !empty($variants_options)) {
369 - $_productVariant->_options = $variants_options; 368 + $_productVariant->options = $variants_options;
370 } 369 }
371 370
372 $_productVariant->save(false); 371 $_productVariant->save(false);
@@ -397,7 +396,7 @@ class Import extends Model { @@ -397,7 +396,7 @@ class Import extends Model {
397 396
398 397
399 if (isset($options) && !empty($options)) { 398 if (isset($options) && !empty($options)) {
400 - $_product->_options = $options; 399 + $_product->options = $options;
401 } 400 }
402 401
403 $_product->save(); 402 $_product->save();
common/modules/product/models/Product.php
@@ -368,49 +368,98 @@ @@ -368,49 +368,98 @@
368 ->sum('quantity'); 368 ->sum('quantity');
369 } 369 }
370 370
  371 +// public function afterSave($insert, $changedAttributes)
  372 +// {
  373 +// parent::afterSave($insert, $changedAttributes);
  374 +//
  375 +// $this->unlinkAll('categories', true);
  376 +// $this->unlinkAll('options', true);
  377 +//
  378 +// if($this->_categories) {
  379 +// $categories = Category::findAll($this->_categories);
  380 +// foreach($categories as $category) {
  381 +// $this->link('categories', $category);
  382 +// }
  383 +// }
  384 +// $options = TaxOption::findAll($this->_options);
  385 +//
  386 +// foreach($options as $option) {
  387 +// $this->link('options', $option);
  388 +// }
  389 +//
  390 +//
  391 +// if(!empty( $this->_variants )) {
  392 +// $todel = [];
  393 +// foreach($this->variants ? : [] as $_variant) {
  394 +// $todel[ $_variant->product_variant_id ] = $_variant->product_variant_id;
  395 +// }
  396 +// foreach($this->_variants as $_variant) {
  397 +// if(!is_array($_variant)) {
  398 +// return;
  399 +// }
  400 +// if(!empty( $_variant[ 'product_variant_id' ] )) {
  401 +// unset( $todel[ $_variant[ 'product_variant_id' ] ] );
  402 +// $model = ProductVariant::findOne($_variant[ 'product_variant_id' ]);
  403 +// } else {
  404 +// $model = new ProductVariant();
  405 +// }
  406 +// $_variant[ 'product_id' ] = $this->product_id;
  407 +// $model->load([ 'ProductVariant' => $_variant ]);
  408 +// $model->product_id = $this->product_id;
  409 +// $model->save();
  410 +// }
  411 +// if(!empty( $todel )) {
  412 +// ProductVariant::deleteAll([ 'product_variant_id' => $todel ]);
  413 +// }
  414 +// }
  415 +// }
371 public function afterSave($insert, $changedAttributes) 416 public function afterSave($insert, $changedAttributes)
372 { 417 {
373 parent::afterSave($insert, $changedAttributes); 418 parent::afterSave($insert, $changedAttributes);
374 -  
375 - $this->unlinkAll('categories', true);  
376 - $this->unlinkAll('options', true);  
377 -  
378 - $categories = Category::findAll($this->_categories);  
379 - $options = TaxOption::findAll($this->_options);  
380 -  
381 - foreach($options as $option) {  
382 - $this->link('options', $option); 419 +
  420 +
  421 + if(!empty($this->categories)){
  422 + $categories = Category::findAll($this->categories);
  423 + $this->unlinkAll('categories', true);
  424 + foreach($categories as $category){
  425 + $this->link('categories', $category);
  426 + }
383 } 427 }
384 - foreach($categories as $category) {  
385 - $this->link('categories', $category); 428 +
  429 + if(!empty($this->options)){
  430 + $options = TaxOption::findAll($this->options);
  431 + $this->unlinkAll('options',true);
  432 + foreach($options as $option){
  433 + $this->link('options', $option);
  434 + }
386 } 435 }
387 -  
388 - if(!empty( $this->_variants )) { 436 +
  437 +
  438 + if (!empty($this->_variants)) {
389 $todel = []; 439 $todel = [];
390 - foreach($this->variants ? : [] as $_variant) {  
391 - $todel[ $_variant->product_variant_id ] = $_variant->product_variant_id; 440 + foreach ($this->variants ?: [] as $_variant) {
  441 + $todel[$_variant->product_variant_id] = $_variant->product_variant_id;
392 } 442 }
393 - foreach($this->_variants as $_variant) {  
394 - if(!is_array($_variant)) { 443 + foreach ($this->_variants as $_variant) {
  444 + if (!is_array($_variant)) {
395 return; 445 return;
396 } 446 }
397 - if(!empty( $_variant[ 'product_variant_id' ] )) {  
398 - unset( $todel[ $_variant[ 'product_variant_id' ] ] );  
399 - $model = ProductVariant::findOne($_variant[ 'product_variant_id' ]); 447 + if (!empty($_variant['product_variant_id'])) {
  448 + unset($todel[$_variant['product_variant_id']]);
  449 + $model = ProductVariant::findOne($_variant['product_variant_id']);
400 } else { 450 } else {
401 $model = new ProductVariant(); 451 $model = new ProductVariant();
402 } 452 }
403 - $_variant[ 'product_id' ] = $this->product_id;  
404 - $model->load([ 'ProductVariant' => $_variant ]); 453 + $_variant['product_id'] = $this->product_id;
  454 + $model->load(['ProductVariant' => $_variant]);
405 $model->product_id = $this->product_id; 455 $model->product_id = $this->product_id;
406 $model->save(); 456 $model->save();
407 } 457 }
408 - if(!empty( $todel )) {  
409 - ProductVariant::deleteAll([ 'product_variant_id' => $todel ]); 458 + if (!empty($todel)) {
  459 + ProductVariant::deleteAll(['product_variant_id' => $todel]);
410 } 460 }
411 } 461 }
412 } 462 }
413 -  
414 public function imagesUpload() 463 public function imagesUpload()
415 { 464 {
416 if($this->validate()) { 465 if($this->validate()) {