Commit 65b3647f5353ffce7b030ecebb01cc08cc66651c

Authored by Anastasia
1 parent 5d36359e

event, blog, social

controllers/BlogArticleController.php
... ... @@ -13,7 +13,8 @@
13 13 use yii\web\NotFoundHttpException;
14 14 use yii\filters\VerbFilter;
15 15 use yii\web\Response;
16   -
  16 + use yii\web\UploadedFile;
  17 +
17 18 /**
18 19 * BlogArticleController implements the CRUD actions for BlogArticle model.
19 20 */
... ... @@ -116,15 +117,19 @@
116 117 }
117 118 }
118 119 }
119   -
120   - if (!empty( \Yii::$app->request->post('BlogArticle')[ 'products' ] )) {
  120 + if ( ($file = UploadedFile::getInstance($model, 'products_file')) ) {
  121 + if(!empty($file)){
  122 + $file->saveAs(Yii::getAlias('@uploadDir/' . $file->name));
  123 + $model->saveProducts(Yii::getAlias('@uploadDir/' . $file->name));
  124 + }
  125 +
  126 + }elseif (!empty( \Yii::$app->request->post('BlogArticle')[ 'products' ] )) {
121 127 foreach (\Yii::$app->request->post('BlogArticle')[ 'products' ] as $item) {
122 128 if ($product = Product::findOne($item)) {
123 129 $model->link('products', $product);
124 130 }
125 131 }
126 132 }
127   -
128 133 if (!empty( \Yii::$app->request->post('BlogArticle')[ 'blogArticles' ] )) {
129 134 foreach (\Yii::$app->request->post('BlogArticle')[ 'blogArticles' ] as $item) {
130 135 if ($article = Product::findOne($item)) {
... ... @@ -223,8 +228,14 @@
223 228 }
224 229 }
225 230 }
226   -
227   - if (!empty( \Yii::$app->request->post('BlogArticle')[ 'products' ] )) {
  231 +
  232 + if ( ($file = UploadedFile::getInstance($model, 'products_file')) ) {
  233 + if(!empty($file)){
  234 + $file->saveAs(Yii::getAlias('@uploadDir/' . $file->name));
  235 + $model->saveProducts(Yii::getAlias('@uploadDir/' . $file->name));
  236 + }
  237 +
  238 + }elseif (!empty( \Yii::$app->request->post('BlogArticle')[ 'products' ] )) {
228 239 $model->unlinkAll('products', true);
229 240 foreach (\Yii::$app->request->post('BlogArticle')[ 'products' ] as $item) {
230 241 if ($product = Product::findOne($item)) {
... ... @@ -326,7 +337,7 @@
326 337 ->joinWith('lang')
327 338 ->select(
328 339 [
329   - 'id',
  340 + 'id' => 'product.id',
330 341 'product_lang.title as text',
331 342 ]
332 343 )
... ...
models/BlogArticle.php
... ... @@ -3,6 +3,7 @@
3 3 namespace artweb\artbox\blog\models;
4 4  
5 5 use artweb\artbox\behaviors\SaveImgBehavior;
  6 + use artweb\artbox\ecommerce\models\ProductVariant;
6 7 use yii\behaviors\TimestampBehavior;
7 8 use yii\db\ActiveRecord;
8 9 use artweb\artbox\language\behaviors\LanguageBehavior;
... ... @@ -59,6 +60,7 @@
59 60 */
60 61 class BlogArticle extends ActiveRecord
61 62 {
  63 + public $products_file;
62 64 /**
63 65 * @inheritdoc
64 66 */
... ... @@ -112,6 +114,7 @@
112 114 'string',
113 115 'max' => 255,
114 116 ],
  117 + ['products_file', 'file']
115 118 ];
116 119 }
117 120  
... ... @@ -185,4 +188,25 @@
185 188 return $this->hasMany(BlogTag::className(), [ 'id' => 'blog_tag_id' ])
186 189 ->viaTable('blog_article_to_tag', [ 'blog_article_id' => 'id' ]);
187 190 }
  191 +
  192 + public function saveProducts($file){
  193 + set_time_limit(0);
  194 +
  195 +
  196 + $handle = fopen($file, 'r');
  197 +
  198 +
  199 + while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
  200 + if(isset($data[0])){
  201 + $product = ProductVariant::find()->where(['sku' => $data[0]])->joinWith('product')->one();
  202 + if($product instanceof ProductVariant){
  203 + $this->link('products', $product);
  204 + }
  205 + }
  206 +
  207 + }
  208 + fclose($handle);
  209 + unlink($file);
  210 +
  211 + }
188 212 }
... ...
views/blog-article/_form.php
... ... @@ -138,7 +138,9 @@
138 138 ]
139 139 );
140 140 ?>
141   -
  141 + <?= $form->field($model, 'products_file')->widget(\kartik\file\FileInput::className(), [
  142 + 'language' => 'ru'
  143 + ]); ?>
142 144 <?php
143 145 if (empty( $model->id )) {
144 146 $data = 'function(params) { return {q:params.term}; }';
... ...