Commit 1c02ab59f51e0de4f8212aaf6b35313c02cabb21
1 parent
50775039
29.06.16
Showing
4 changed files
with
143 additions
and
146 deletions
Show diff stats
common/modules/product/models/Import.php
| @@ -7,6 +7,7 @@ use common\modules\product\models\Category; | @@ -7,6 +7,7 @@ use common\modules\product\models\Category; | ||
| 7 | use common\modules\product\models\CategoryName; | 7 | use common\modules\product\models\CategoryName; |
| 8 | use common\modules\product\models\ProductImage; | 8 | use common\modules\product\models\ProductImage; |
| 9 | use common\modules\product\models\ProductVariantType; | 9 | use common\modules\product\models\ProductVariantType; |
| 10 | +use common\modules\rubrication\models\TaxGroup; | ||
| 10 | use common\modules\rubrication\models\TaxOption; | 11 | use common\modules\rubrication\models\TaxOption; |
| 11 | use common\modules\rubrication\models\TaxValueString; | 12 | use common\modules\rubrication\models\TaxValueString; |
| 12 | use Yii; | 13 | use Yii; |
| @@ -190,6 +191,7 @@ class Import extends Model { | @@ -190,6 +191,7 @@ class Import extends Model { | ||
| 190 | } | 191 | } |
| 191 | 192 | ||
| 192 | public function goProducts($from = 0, $limit = null) { | 193 | public function goProducts($from = 0, $limit = null) { |
| 194 | + | ||
| 193 | set_time_limit(0); | 195 | set_time_limit(0); |
| 194 | $new_products = $linked_products = 0; | 196 | $new_products = $linked_products = 0; |
| 195 | 197 | ||
| @@ -200,6 +202,7 @@ class Import extends Model { | @@ -200,6 +202,7 @@ class Import extends Model { | ||
| 200 | 202 | ||
| 201 | $filesize = filesize(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts')); | 203 | $filesize = filesize(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts')); |
| 202 | 204 | ||
| 205 | + | ||
| 203 | if ($from) { | 206 | if ($from) { |
| 204 | fseek($handle, $from); | 207 | fseek($handle, $from); |
| 205 | } | 208 | } |
| @@ -212,6 +215,8 @@ class Import extends Model { | @@ -212,6 +215,8 @@ class Import extends Model { | ||
| 212 | 215 | ||
| 213 | while (($data = fgetcsv ($handle, 10000, ";")) !== FALSE && (empty($limit) || $j++ < $limit)) | 216 | while (($data = fgetcsv ($handle, 10000, ";")) !== FALSE && (empty($limit) || $j++ < $limit)) |
| 214 | { | 217 | { |
| 218 | + | ||
| 219 | + | ||
| 215 | foreach ($data as &$value) | 220 | foreach ($data as &$value) |
| 216 | { | 221 | { |
| 217 | if (!$is_utf) { | 222 | if (!$is_utf) { |
| @@ -229,9 +234,10 @@ class Import extends Model { | @@ -229,9 +234,10 @@ class Import extends Model { | ||
| 229 | } | 234 | } |
| 230 | } | 235 | } |
| 231 | 236 | ||
| 237 | + | ||
| 232 | // 1 Группа (категория) | 238 | // 1 Группа (категория) |
| 233 | - $catalog_name = $data[0]; | ||
| 234 | - if (empty ($catalog_name)) | 239 | + $catalog_names = explode(',',$data[0]); |
| 240 | + if (empty ($catalog_names)) | ||
| 235 | { | 241 | { |
| 236 | $result_items[] = "Не указана категория (строка $j)"; | 242 | $result_items[] = "Не указана категория (строка $j)"; |
| 237 | continue; | 243 | continue; |
| @@ -259,54 +265,43 @@ class Import extends Model { | @@ -259,54 +265,43 @@ class Import extends Model { | ||
| 259 | // 5 Описание Рус | 265 | // 5 Описание Рус |
| 260 | $product_body_ru = $data[4]; | 266 | $product_body_ru = $data[4]; |
| 261 | 267 | ||
| 262 | - // 6 Фильтр (через запятую) | ||
| 263 | - $filters = explode (',', $data[5]); | ||
| 264 | - | ||
| 265 | - // 7 Доп фильтр через запятую | ||
| 266 | - $filters_extra = explode (',', $data[6]); | ||
| 267 | - | ||
| 268 | - // 8 Пол череззапятую (мужской, женский, детский, унисекс) | ||
| 269 | - $gender = explode (',', $data[7]); | ||
| 270 | - | ||
| 271 | - // 9 Год | ||
| 272 | - $years = explode (',', $data[8]); | 268 | + // 6 Фильтр (['pol'='мужской']*['god' = '2013']*['volume'='25 л']*['size'='49 x 30 x 20см']*['composition'='600D полиэстер']) |
| 269 | + $filters = explode ('*', $data[5]); | ||
| 273 | 270 | ||
| 274 | // 11 Цена акция | 271 | // 11 Цена акция |
| 275 | - $product_cost_old = floatval($data[10]); | 272 | + $product_cost_old = floatval($data[7]); |
| 276 | 273 | ||
| 277 | // 10 Цена | 274 | // 10 Цена |
| 278 | if ($product_cost_old) { | 275 | if ($product_cost_old) { |
| 279 | - $product_cost_old = floatval($data[9]); | ||
| 280 | - $product_cost = floatval($data[10]); | 276 | + $product_cost_old = floatval($data[6]); |
| 277 | + $product_cost = floatval($data[7]); | ||
| 281 | } | 278 | } |
| 282 | 279 | ||
| 283 | // 12 Акция | 280 | // 12 Акция |
| 284 | - $product_akciya = (bool)$data[11]; | 281 | + $product_akciya = (bool)$data[8]; |
| 285 | 282 | ||
| 286 | // 13 Сопуд. Тов. | 283 | // 13 Сопуд. Тов. |
| 287 | - $similar = explode (',', $data[12]); | 284 | + $similar = explode (',', $data[9]); |
| 288 | 285 | ||
| 289 | // 14 Новинки | 286 | // 14 Новинки |
| 290 | - $product_new = (bool)$data[13]; | 287 | + $product_new = (bool)$data[10]; |
| 291 | 288 | ||
| 292 | // 15 Топ продаж | 289 | // 15 Топ продаж |
| 293 | - $product_top = (bool)$data[14]; | 290 | + $product_top = (bool)$data[11]; |
| 294 | 291 | ||
| 295 | - // 16 Сетка Характеристик | ||
| 296 | - $feature = explode ('=', $data[15]); | ||
| 297 | 292 | ||
| 298 | // 17 ВИДЕО КОД | 293 | // 17 ВИДЕО КОД |
| 299 | - $product_video = $data[16]; | 294 | + $product_video = $data[12]; |
| 300 | 295 | ||
| 301 | // 18 Галлерея фото | 296 | // 18 Галлерея фото |
| 302 | - if (trim($data[17])) { | ||
| 303 | - $fotos = explode (',', trim($data[17])); | 297 | + if (trim($data[13])) { |
| 298 | + $fotos = explode (',', trim($data[13])); | ||
| 304 | } | 299 | } |
| 305 | 300 | ||
| 306 | // 19 Штрих код товара. | 301 | // 19 Штрих код товара. |
| 307 | // расшифровал - это модификации товара! | 302 | // расшифровал - это модификации товара! |
| 308 | 303 | ||
| 309 | - $product_image = explode ('=', $data[18]); | 304 | + $product_image = explode ('=', $data[14]); |
| 310 | $product_image = @$product_image[3]; | 305 | $product_image = @$product_image[3]; |
| 311 | 306 | ||
| 312 | if ( ($_product = Product::find()->filterWhere(['ilike', 'name', trim($product_name)])->one()) === null ) { | 307 | if ( ($_product = Product::find()->filterWhere(['ilike', 'name', trim($product_name)])->one()) === null ) { |
| @@ -315,14 +310,20 @@ class Import extends Model { | @@ -315,14 +310,20 @@ class Import extends Model { | ||
| 315 | 310 | ||
| 316 | $is_new_product = empty($_product->product_id); | 311 | $is_new_product = empty($_product->product_id); |
| 317 | 312 | ||
| 318 | - // ==== Set category ==== | ||
| 319 | - if ( ($category = CategoryName::find()->filterWhere(['ilike', 'value', trim($catalog_name)])->one()) === null ) { | ||
| 320 | - // Create category | ||
| 321 | - $category = new Category(); | ||
| 322 | - $category->name = trim($catalog_name); | ||
| 323 | - $category->save(); | 313 | + foreach($catalog_names as $catalog_name){ |
| 314 | + // ==== Set category ==== | ||
| 315 | + if ( ($category = CategoryName::find()->filterWhere(['ilike', 'value', trim($catalog_name)])->one()) === null ) { | ||
| 316 | + // Create category | ||
| 317 | + $category = new Category(); | ||
| 318 | + $category->name = trim($catalog_name); | ||
| 319 | + $category->save(); | ||
| 320 | + } | ||
| 321 | + | ||
| 322 | + $category_id[] = $category->category_id; | ||
| 324 | } | 323 | } |
| 325 | - $_product->categories = [$category->category_id]; | 324 | + |
| 325 | + | ||
| 326 | + $_product->categories = $category_id; | ||
| 326 | 327 | ||
| 327 | // ===== Set brand ==== | 328 | // ===== Set brand ==== |
| 328 | if ( $brand_name ) { | 329 | if ( $brand_name ) { |
| @@ -349,6 +350,8 @@ class Import extends Model { | @@ -349,6 +350,8 @@ class Import extends Model { | ||
| 349 | continue; | 350 | continue; |
| 350 | } | 351 | } |
| 351 | 352 | ||
| 353 | + | ||
| 354 | + | ||
| 352 | if (!empty($fotos)) { | 355 | if (!empty($fotos)) { |
| 353 | foreach($fotos as $foto) { | 356 | foreach($fotos as $foto) { |
| 354 | $source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($foto); | 357 | $source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($foto); |
| @@ -365,18 +368,20 @@ class Import extends Model { | @@ -365,18 +368,20 @@ class Import extends Model { | ||
| 365 | } | 368 | } |
| 366 | } | 369 | } |
| 367 | 370 | ||
| 371 | + | ||
| 368 | // нужно для проставления характеристик относящихся к модификациям | 372 | // нужно для проставления характеристик относящихся к модификациям |
| 369 | $MOD_ARRAY = []; | 373 | $MOD_ARRAY = []; |
| 370 | 374 | ||
| 371 | - for ($i = 18; $i < count ($data); $i ++) | 375 | + for ($i = 14; $i < count ($data); $i ++) |
| 372 | { | 376 | { |
| 373 | if (! empty ($data[$i])) | 377 | if (! empty ($data[$i])) |
| 374 | { | 378 | { |
| 375 | $mod_arr = explode ('=', $data[$i]); | 379 | $mod_arr = explode ('=', $data[$i]); |
| 376 | $mod_art = $mod_arr[0]; | 380 | $mod_art = $mod_arr[0]; |
| 377 | - $mod_size = $mod_arr[1]; | 381 | + $variant_filters = explode ('*', $mod_arr[1]); |
| 378 | $mod_color = $mod_arr[2]; | 382 | $mod_color = $mod_arr[2]; |
| 379 | $mod_image = $mod_arr[3]; | 383 | $mod_image = $mod_arr[3]; |
| 384 | + $mod_stock = isset($mod_arr[4]) ?$mod_arr[4]:1; | ||
| 380 | $mod_cost = floatval($product_cost); | 385 | $mod_cost = floatval($product_cost); |
| 381 | $mod_old_cost = floatval($product_cost_old); | 386 | $mod_old_cost = floatval($product_cost_old); |
| 382 | 387 | ||
| @@ -390,18 +395,26 @@ class Import extends Model { | @@ -390,18 +395,26 @@ class Import extends Model { | ||
| 390 | $_productVariant->sku = $mod_art; | 395 | $_productVariant->sku = $mod_art; |
| 391 | $_productVariant->price = $mod_cost; | 396 | $_productVariant->price = $mod_cost; |
| 392 | $_productVariant->price_old = $mod_old_cost; | 397 | $_productVariant->price_old = $mod_old_cost; |
| 393 | - $_productVariant->stock = 1; | 398 | + $_productVariant->stock = $mod_stock; |
| 394 | 399 | ||
| 395 | $product_variant_type_name = ''; | 400 | $product_variant_type_name = ''; |
| 396 | if (! empty ($mod_color)) { | 401 | if (! empty ($mod_color)) { |
| 397 | $product_variant_type_name = 'Цвет'; | 402 | $product_variant_type_name = 'Цвет'; |
| 398 | $_productVariant->name = $mod_color; | 403 | $_productVariant->name = $mod_color; |
| 399 | } | 404 | } |
| 400 | - elseif (! empty ($mod_size)) { | ||
| 401 | - $product_variant_type_name = 'Размер'; | ||
| 402 | - $_productVariant->name = $mod_size; | 405 | + |
| 406 | + if (! empty ($variant_filters)) { | ||
| 407 | + | ||
| 408 | + $variants_options = $this->saveFilters($variant_filters,1,$category_id); | ||
| 409 | + | ||
| 410 | + } | ||
| 411 | + | ||
| 412 | + | ||
| 413 | + if (isset($variants_options) && !empty($variants_options)) { | ||
| 414 | + $_productVariant->options = $variants_options; | ||
| 403 | } | 415 | } |
| 404 | 416 | ||
| 417 | + | ||
| 405 | // ===== Set variant type ==== | 418 | // ===== Set variant type ==== |
| 406 | if ( $product_variant_type_name ) { | 419 | if ( $product_variant_type_name ) { |
| 407 | if ( ($product_variant_type = ProductVariantType::find()->filterWhere(['ilike', 'name', $product_variant_type_name])->one()) !== null ) { | 420 | if ( ($product_variant_type = ProductVariantType::find()->filterWhere(['ilike', 'name', $product_variant_type_name])->one()) !== null ) { |
| @@ -413,6 +426,7 @@ class Import extends Model { | @@ -413,6 +426,7 @@ class Import extends Model { | ||
| 413 | $_productVariant->product_variant_type_id = $product_variant_type->product_variant_type_id; | 426 | $_productVariant->product_variant_type_id = $product_variant_type->product_variant_type_id; |
| 414 | } | 427 | } |
| 415 | } | 428 | } |
| 429 | + | ||
| 416 | $_productVariant->save(false); | 430 | $_productVariant->save(false); |
| 417 | 431 | ||
| 418 | $MOD_ARRAY[] = $_productVariant->product_variant_id; | 432 | $MOD_ARRAY[] = $_productVariant->product_variant_id; |
| @@ -433,84 +447,17 @@ class Import extends Model { | @@ -433,84 +447,17 @@ class Import extends Model { | ||
| 433 | } | 447 | } |
| 434 | } | 448 | } |
| 435 | 449 | ||
| 436 | - $options = []; | 450 | + |
| 437 | 451 | ||
| 438 | if (! empty ($filters)) { | 452 | if (! empty ($filters)) { |
| 439 | - // Set Naznachenie (tax_group_id = 20) | ||
| 440 | - foreach($filters as $filter) { | ||
| 441 | - $filter = trim($filter); | ||
| 442 | - if (!$filter) { | ||
| 443 | - continue; | ||
| 444 | - } | ||
| 445 | - if ( ($value = TaxValueString::find()->innerJoinWith('taxOption')->andFilterWhere(['ilike', 'value', $filter])->andFilterWhere(['tax_option.tax_group_id' => ProductHelper::PRODUCT_TAX_GROUP_ID_TARGET])->one()) === null ) { | ||
| 446 | - // Create option | ||
| 447 | - $option = new TaxOption(); | ||
| 448 | - $option->tax_group_id = 20; | ||
| 449 | - $option->save(); | ||
| 450 | - | ||
| 451 | - $value = new TaxValueString(); | ||
| 452 | - $value->tax_option_id = $option->tax_option_id; | ||
| 453 | - $value->value = $filter; | ||
| 454 | - $value->save(); | ||
| 455 | - | ||
| 456 | - $option->default_value = $value->tax_value_id; | ||
| 457 | - $option->save(); | ||
| 458 | - } | ||
| 459 | - $options[] = $value->tax_option_id; | ||
| 460 | - } | ||
| 461 | - } | ||
| 462 | 453 | ||
| 463 | - if (! empty ($years)) { | ||
| 464 | - // Set God (tax_group_id = 21) | ||
| 465 | - foreach($years as $filter) { | ||
| 466 | - $filter = trim($filter); | ||
| 467 | - if (!$filter) { | ||
| 468 | - continue; | ||
| 469 | - } | ||
| 470 | - if ( ($value = TaxValueString::find()->innerJoinWith('taxOption')->andFilterWhere(['ilike', 'value', $filter])->andFilterWhere(['tax_option.tax_group_id' => ProductHelper::PRODUCT_TAX_GROUP_ID_YEAR])->one()) === null ) { | ||
| 471 | - // Create option | ||
| 472 | - $option = new TaxOption(); | ||
| 473 | - $option->tax_group_id = 21; | ||
| 474 | - $option->save(); | ||
| 475 | - | ||
| 476 | - $value = new TaxValueString(); | ||
| 477 | - $value->tax_option_id = $option->tax_option_id; | ||
| 478 | - $value->value = $filter; | ||
| 479 | - $value->save(); | ||
| 480 | - | ||
| 481 | - $option->default_value = $value->tax_value_id; | ||
| 482 | - $option->save(); | ||
| 483 | - } | ||
| 484 | - $options[] = $value->tax_option_id; | ||
| 485 | - } | ||
| 486 | - } | 454 | + $options = $this->saveFilters($filters,0,$category_id); |
| 487 | 455 | ||
| 488 | - if (! empty ($gender)) { | ||
| 489 | - // Set Pol (tax_group_id = 22) | ||
| 490 | - foreach($gender as $filter) { | ||
| 491 | - $filter = trim($filter); | ||
| 492 | - if (!$filter) { | ||
| 493 | - continue; | ||
| 494 | - } | ||
| 495 | - if ( ($value = TaxValueString::find()->innerJoinWith('taxOption')->andFilterWhere(['ilike', 'value', $filter])->andFilterWhere(['tax_option.tax_group_id' => ProductHelper::PRODUCT_TAX_GROUP_ID_SEX])->one()) === null ) { | ||
| 496 | - // Create option | ||
| 497 | - $option = new TaxOption(); | ||
| 498 | - $option->tax_group_id = 22; | ||
| 499 | - $option->save(); | ||
| 500 | - | ||
| 501 | - $value = new TaxValueString(); | ||
| 502 | - $value->tax_option_id = $option->tax_option_id; | ||
| 503 | - $value->value = $filter; | ||
| 504 | - $value->save(); | ||
| 505 | - | ||
| 506 | - $option->default_value = $value->tax_value_id; | ||
| 507 | - $option->save(); | ||
| 508 | - } | ||
| 509 | - $options[] = $value->tax_option_id; | ||
| 510 | - } | ||
| 511 | } | 456 | } |
| 512 | 457 | ||
| 513 | - if (!empty($options)) { | 458 | + |
| 459 | + if (isset($options) && !empty($options)) { | ||
| 460 | + print_r($options); | ||
| 514 | $_product->options = $options; | 461 | $_product->options = $options; |
| 515 | } | 462 | } |
| 516 | 463 | ||
| @@ -529,9 +476,9 @@ class Import extends Model { | @@ -529,9 +476,9 @@ class Import extends Model { | ||
| 529 | 476 | ||
| 530 | fclose ($handle); | 477 | fclose ($handle); |
| 531 | 478 | ||
| 532 | - if ($result['end']) { | ||
| 533 | - unlink(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts')); | ||
| 534 | - } | 479 | +// if ($result['end']) { |
| 480 | +// unlink(Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@uploadFileProducts')); | ||
| 481 | +// } | ||
| 535 | 482 | ||
| 536 | return $result; | 483 | return $result; |
| 537 | } | 484 | } |
| @@ -554,4 +501,65 @@ class Import extends Model { | @@ -554,4 +501,65 @@ class Import extends Model { | ||
| 554 | fputs ($fg, $str); | 501 | fputs ($fg, $str); |
| 555 | fclose ($fg); | 502 | fclose ($fg); |
| 556 | } | 503 | } |
| 504 | + | ||
| 505 | + | ||
| 506 | + /** | ||
| 507 | + * @param $filters array of filters like [['pol'='мужской'],['god' = '2013'],['volume'='25 л']*['size'='49 x 30 x 20см'],['composition'='600D полиэстер']] | ||
| 508 | + * @param $level 0 for products and 1 for product variant | ||
| 509 | + * @param $catalog_names array catalogs id | ||
| 510 | + * @return array | ||
| 511 | + */ | ||
| 512 | + private function saveFilters($filters, $level,$catalog_names){ | ||
| 513 | + $options = []; | ||
| 514 | + foreach($filters as $filter) { | ||
| 515 | + | ||
| 516 | + preg_match_all('/\[(.*):(.*)\]/',$filter,$filter); | ||
| 517 | + | ||
| 518 | + if (empty($filter[1][0])) { | ||
| 519 | + continue; | ||
| 520 | + } | ||
| 521 | + $filter_name = trim($filter[1][0]); | ||
| 522 | + | ||
| 523 | + $taxGroup = TaxGroup::find()->where(['alias'=>$filter_name])->one(); | ||
| 524 | + if(!$taxGroup instanceof TaxGroup){ | ||
| 525 | + $taxGroup = new TaxGroup(); | ||
| 526 | + $taxGroup->alias = $filter_name; | ||
| 527 | + $taxGroup->level = $level; | ||
| 528 | + $taxGroup->name = $filter_name; | ||
| 529 | + $taxGroup->module = 'string'; | ||
| 530 | + $taxGroup->hierarchical = FALSE; | ||
| 531 | + $taxGroup->group_to_category = $catalog_names; | ||
| 532 | + $taxGroup->is_filter = FALSE; | ||
| 533 | + $taxGroup->save(); | ||
| 534 | + } | ||
| 535 | + | ||
| 536 | + $filters_options = explode(',',$filter[2][0]); | ||
| 537 | + | ||
| 538 | + foreach($filters_options as $filter_options){ | ||
| 539 | + $value = TaxValueString::find()->innerJoinWith('taxOption')->andFilterWhere(['ilike', 'value', $filter_options])->andFilterWhere(['tax_option.tax_group_id' => $taxGroup->tax_group_id])->one(); | ||
| 540 | + | ||
| 541 | + if (!$value instanceof TaxValueString) { | ||
| 542 | + // Create option | ||
| 543 | + $option = new TaxOption(); | ||
| 544 | + $option->tax_group_id = $taxGroup->tax_group_id; | ||
| 545 | + $option->alias = $filter_options; | ||
| 546 | + $option->save(); | ||
| 547 | + | ||
| 548 | + $value = new TaxValueString(); | ||
| 549 | + $value->tax_option_id = $option->tax_option_id; | ||
| 550 | + $value->value = $filter_options; | ||
| 551 | + $value->save(); | ||
| 552 | + | ||
| 553 | + $option->default_value = $value->tax_value_id; | ||
| 554 | + $option->save(); | ||
| 555 | + } | ||
| 556 | + $options[] = $value->tax_option_id; | ||
| 557 | + | ||
| 558 | + } | ||
| 559 | + | ||
| 560 | + | ||
| 561 | + } | ||
| 562 | + | ||
| 563 | + return $options; | ||
| 564 | + } | ||
| 557 | } | 565 | } |
| 558 | \ No newline at end of file | 566 | \ No newline at end of file |
common/modules/relation/relationBehavior.php
| @@ -32,6 +32,7 @@ class relationBehavior extends Behavior { | @@ -32,6 +32,7 @@ class relationBehavior extends Behavior { | ||
| 32 | * Inicialize behavior (read and prepare params) | 32 | * Inicialize behavior (read and prepare params) |
| 33 | */ | 33 | */ |
| 34 | public function init() { | 34 | public function init() { |
| 35 | + | ||
| 35 | foreach ($this->relations as $relation_key => &$relation) { | 36 | foreach ($this->relations as $relation_key => &$relation) { |
| 36 | if (is_string($relation)) { | 37 | if (is_string($relation)) { |
| 37 | // Get data from module's data | 38 | // Get data from module's data |
| @@ -45,6 +46,7 @@ class relationBehavior extends Behavior { | @@ -45,6 +46,7 @@ class relationBehavior extends Behavior { | ||
| 45 | } | 46 | } |
| 46 | } | 47 | } |
| 47 | $this->fields[$relation['field']] = $relation_key; | 48 | $this->fields[$relation['field']] = $relation_key; |
| 49 | + | ||
| 48 | } | 50 | } |
| 49 | } | 51 | } |
| 50 | 52 | ||
| @@ -61,6 +63,7 @@ class relationBehavior extends Behavior { | @@ -61,6 +63,7 @@ class relationBehavior extends Behavior { | ||
| 61 | } | 63 | } |
| 62 | 64 | ||
| 63 | public function relationsAfterSave($insert) { | 65 | public function relationsAfterSave($insert) { |
| 66 | + | ||
| 64 | if (is_array($modelPrimaryKey = $this->owner->getPrimaryKey())) { | 67 | if (is_array($modelPrimaryKey = $this->owner->getPrimaryKey())) { |
| 65 | throw new ErrorException('This behavior does not support composite primary keys'); | 68 | throw new ErrorException('This behavior does not support composite primary keys'); |
| 66 | } | 69 | } |
| @@ -93,6 +96,7 @@ class relationBehavior extends Behavior { | @@ -93,6 +96,7 @@ class relationBehavior extends Behavior { | ||
| 93 | ->execute(); | 96 | ->execute(); |
| 94 | 97 | ||
| 95 | if (!empty($values)) { | 98 | if (!empty($values)) { |
| 99 | + | ||
| 96 | foreach($values as $value) { | 100 | foreach($values as $value) { |
| 97 | $insertData = [ | 101 | $insertData = [ |
| 98 | $relation['inner']['linked_key'] => $this->owner->{$relation['inner']['key']}, | 102 | $relation['inner']['linked_key'] => $this->owner->{$relation['inner']['key']}, |
console/controllers/ImportController.php
| @@ -20,6 +20,9 @@ use yii\console\Controller; | @@ -20,6 +20,9 @@ use yii\console\Controller; | ||
| 20 | use yii\helpers\Console; | 20 | use yii\helpers\Console; |
| 21 | 21 | ||
| 22 | class ImportController extends Controller { | 22 | class ImportController extends Controller { |
| 23 | + public $errors = []; | ||
| 24 | + | ||
| 25 | + | ||
| 23 | private function getProductsFile($file_type = 'uploadFileProducts') { | 26 | private function getProductsFile($file_type = 'uploadFileProducts') { |
| 24 | $filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@'. $file_type); | 27 | $filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@'. $file_type); |
| 25 | if (!is_file($filename)) { | 28 | if (!is_file($filename)) { |
| @@ -30,16 +33,16 @@ class ImportController extends Controller { | @@ -30,16 +33,16 @@ class ImportController extends Controller { | ||
| 30 | } | 33 | } |
| 31 | 34 | ||
| 32 | public function actionProducts() { | 35 | public function actionProducts() { |
| 33 | - if (file_exists(Yii::getAlias('@uploadDir/goProducts.lock'))) { | ||
| 34 | - $this->errors[] = 'Task already executed'; | ||
| 35 | - return Controller::EXIT_CODE_ERROR; | ||
| 36 | - } | ||
| 37 | - $ff = fopen(Yii::getAlias('@uploadDir/goProducts.lock'), 'w+'); | ||
| 38 | - fclose($ff); | 36 | +// if (file_exists(Yii::getAlias('@uploadDir/goProducts.lock'))) { |
| 37 | +// $this->errors[] = 'Task already executed'; | ||
| 38 | +// return Controller::EXIT_CODE_ERROR; | ||
| 39 | +// } | ||
| 40 | +// $ff = fopen(Yii::getAlias('@uploadDir/goProducts.lock'), 'w+'); | ||
| 41 | +// fclose($ff); | ||
| 39 | $model = new Import(); | 42 | $model = new Import(); |
| 40 | - $data = $model->goProducts(0, null); | ||
| 41 | - unlink(Yii::getAlias('@uploadDir/goProducts.lock')); | ||
| 42 | - return Controller::EXIT_CODE_NORMAL; | 43 | + $model->goProducts(0, null); |
| 44 | +// unlink(Yii::getAlias('@uploadDir/goProducts.lock')); | ||
| 45 | +// return Controller::EXIT_CODE_NORMAL; | ||
| 43 | } | 46 | } |
| 44 | 47 | ||
| 45 | public function actionPrices() { | 48 | public function actionPrices() { |
frontend/widgets/Seo.php
| @@ -94,17 +94,13 @@ class Seo extends Widget | @@ -94,17 +94,13 @@ class Seo extends Widget | ||
| 94 | 94 | ||
| 95 | 95 | ||
| 96 | 96 | ||
| 97 | - if (isset($filter['brands']) && count($filter['brands']) == 1 ) { | 97 | + if (isset($filter['brands']) && count($filter['brands']) == 1) { |
| 98 | $model = Brand::find()->where(['alias' => $filter['brands'][0]])->one(); | 98 | $model = Brand::find()->where(['alias' => $filter['brands'][0]])->one(); |
| 99 | + return $this->selectSeoData(self::H1) ? $this->selectSeoData(self::H1) : $model->name; | ||
| 99 | 100 | ||
| 100 | - if($this->selectSeoData(self::H1) == $this->category_name) { | ||
| 101 | - return $this->selectSeoData(self::H1) . ' ' . $model->name; | ||
| 102 | - }else { | ||
| 103 | - return $this->selectSeoData(self::H1); | ||
| 104 | - } | ||
| 105 | 101 | ||
| 106 | 102 | ||
| 107 | - } else if (isset($filter['options']["naznacenie"]) && count($filter['options']["naznacenie"]) == 1) { | 103 | + } if (isset($filter['options']["naznacenie"]) && count($filter['options']["naznacenie"]) == 1) { |
| 108 | 104 | ||
| 109 | $model = TaxOption::find()->where(['alias' => $filter['options']["naznacenie"]])->one(); | 105 | $model = TaxOption::find()->where(['alias' => $filter['options']["naznacenie"]])->one(); |
| 110 | return $this->selectSeoData(self::H1).' '.$model->value->value; | 106 | return $this->selectSeoData(self::H1).' '.$model->value->value; |
| @@ -117,25 +113,11 @@ class Seo extends Widget | @@ -117,25 +113,11 @@ class Seo extends Widget | ||
| 117 | case self::TITLE: | 113 | case self::TITLE: |
| 118 | 114 | ||
| 119 | $filter = \Yii::$app->request->get('filter', []); | 115 | $filter = \Yii::$app->request->get('filter', []); |
| 120 | - // var_dump($filter );die(); | ||
| 121 | -// if(!empty($filter)){ | ||
| 122 | -// $filter_row = ''; | ||
| 123 | -// foreach($filter as $sub_filter_name => $sub_filter_array){ | ||
| 124 | -// if($sub_filter_name=='options'){ | ||
| 125 | -// foreach($sub_filter_array as $f_name=>$f_values){ | ||
| 126 | -// $filter_row .= $f_name.':'.implode(',',$f_values).'|'; | ||
| 127 | -// } | ||
| 128 | -// } | ||
| 129 | -// | ||
| 130 | -// } | ||
| 131 | -// $this->fields['name'] = $filter_row; | ||
| 132 | -// } | 116 | + |
| 133 | 117 | ||
| 134 | $title = $this->selectSeoData(self::TITLE); | 118 | $title = $this->selectSeoData(self::TITLE); |
| 135 | 119 | ||
| 136 | -// if(!empty($filter_row)){ | ||
| 137 | -// return $filter_row; | ||
| 138 | -// } | 120 | + |
| 139 | if(!empty($filter) && $title == $this->fields['meta-title']) { | 121 | if(!empty($filter) && $title == $this->fields['meta-title']) { |
| 140 | 122 | ||
| 141 | $array = [ | 123 | $array = [ |