Commit b30494bfda61ce8bade1727ea3f94281043ef859

Authored by Yarik
1 parent e8ccb1b4

Import browser beta

Showing 1 changed file with 51 additions and 58 deletions   Show diff stats
common/modules/product/models/Import.php
@@ -213,8 +213,8 @@ @@ -213,8 +213,8 @@
213 $name = trim($name); 213 $name = trim($name);
214 $matches = []; 214 $matches = [];
215 if(preg_match($pattern, $name, $matches)) { 215 if(preg_match($pattern, $name, $matches)) {
216 - if(!isset($matches['remote_id'])) {  
217 - $matches['remote_id'] = ''; 216 + if(!isset( $matches[ 'remote_id' ] )) {
  217 + $matches[ 'remote_id' ] = '';
218 } 218 }
219 return $matches; 219 return $matches;
220 } 220 }
@@ -237,10 +237,10 @@ @@ -237,10 +237,10 @@
237 foreach($catalog_names as $catalog_name) { 237 foreach($catalog_names as $catalog_name) {
238 // ==== Set category ==== 238 // ==== Set category ====
239 $parsed_name = $this->parseName($catalog_name); 239 $parsed_name = $this->parseName($catalog_name);
240 - if(!empty($parsed_name['remote_id']) && ( $category = Category::find()  
241 - ->joinWith('lang')  
242 - ->andFilterWhere([ 'remote_id' => $parsed_name[ 'remote_id' ] ])  
243 - ->one() ) !== NULL 240 + if(!empty( $parsed_name[ 'remote_id' ] ) && ( $category = Category::find()
  241 + ->joinWith('lang')
  242 + ->andFilterWhere([ 'remote_id' => $parsed_name[ 'remote_id' ] ])
  243 + ->one() ) !== NULL
244 ) { 244 ) {
245 if(!empty( $category->lang )) { 245 if(!empty( $category->lang )) {
246 $category->lang->name = $parsed_name[ 'name' ]; 246 $category->lang->name = $parsed_name[ 'name' ];
@@ -279,10 +279,10 @@ @@ -279,10 +279,10 @@
279 /** 279 /**
280 * @var Brand $brand 280 * @var Brand $brand
281 */ 281 */
282 - if(!empty($parsed_name['remote_id']) && ($brand = Brand::find()  
283 - ->joinWith('lang')  
284 - ->andFilterWhere([ 'remote_id' => $parsed_name[ 'remote_id' ] ])  
285 - ->one() ) !== NULL 282 + if(!empty( $parsed_name[ 'remote_id' ] ) && ( $brand = Brand::find()
  283 + ->joinWith('lang')
  284 + ->andFilterWhere([ 'remote_id' => $parsed_name[ 'remote_id' ] ])
  285 + ->one() ) !== NULL
286 ) { 286 ) {
287 if(!empty( $brand->lang )) { 287 if(!empty( $brand->lang )) {
288 $brand->lang->name = $parsed_name[ 'name' ]; 288 $brand->lang->name = $parsed_name[ 'name' ];
@@ -399,7 +399,7 @@ @@ -399,7 +399,7 @@
399 if(isset( $variants_options ) && !empty( $variants_options )) { 399 if(isset( $variants_options ) && !empty( $variants_options )) {
400 $_productVariant->options = $variants_options; 400 $_productVariant->options = $variants_options;
401 } 401 }
402 - 402 +
403 /** 403 /**
404 * @todo set to false 404 * @todo set to false
405 */ 405 */
@@ -413,20 +413,19 @@ @@ -413,20 +413,19 @@
413 return $MOD_ARRAY; 413 return $MOD_ARRAY;
414 } 414 }
415 415
416 - private function debug($start_time, $message) {  
417 - echo $message.': '.(time()-$start_time).'s passed';  
418 - } 416 + // private function debug($start_time, $message) {
  417 + // echo $message.': '.(time()-$start_time).'s passed';
  418 + // }
419 419
420 public function goProducts($from = 0, $limit = NULL) 420 public function goProducts($from = 0, $limit = NULL)
421 { 421 {
422 - $start_time = time();  
423 set_time_limit(0); 422 set_time_limit(0);
424 423
425 if(!( $handle = $this->getProductsFile('uploadFileProducts') )) { 424 if(!( $handle = $this->getProductsFile('uploadFileProducts') )) {
426 $this->errors[] = 'File not found'; 425 $this->errors[] = 'File not found';
427 return false; 426 return false;
428 } 427 }
429 - 428 +
430 $filesize = filesize(Yii::getAlias('@uploadDir') . '/' . Yii::getAlias('@uploadFileProducts')); 429 $filesize = filesize(Yii::getAlias('@uploadDir') . '/' . Yii::getAlias('@uploadFileProducts'));
431 430
432 if($from) { 431 if($from) {
@@ -512,36 +511,33 @@ @@ -512,36 +511,33 @@
512 $fotos = explode(',', trim($data[ 12 ])); 511 $fotos = explode(',', trim($data[ 12 ]));
513 } 512 }
514 513
515 -// $lang = \Yii::$app->session->get('export_lang', Language::getDefaultLanguage()->language_id);  
516 -// /**  
517 -// * @var Language $language  
518 -// */  
519 -// $language = Language::find()  
520 -// ->where([ 'language_id' => $lang ])  
521 -// ->one();  
522 -// Language::setCurrent($language->url);  
523 - $start_time = time(); 514 + // $lang = \Yii::$app->session->get('export_lang', Language::getDefaultLanguage()->language_id);
  515 + // /**
  516 + // * @var Language $language
  517 + // */
  518 + // $language = Language::find()
  519 + // ->where([ 'language_id' => $lang ])
  520 + // ->one();
  521 + // Language::setCurrent($language->url);
  522 +
524 $categories = $this->saveCatalog($catalog_names); 523 $categories = $this->saveCatalog($catalog_names);
525 - $this->debug($start_time, 'Categories');  
526 - $start_time = time(); 524 +
527 $brand_id = $this->saveBrand($brand_name); 525 $brand_id = $this->saveBrand($brand_name);
528 - $this->debug($start_time, 'Brands');  
529 526
530 $options = []; 527 $options = [];
531 if(!empty ( $filters )) { 528 if(!empty ( $filters )) {
532 - $start_time = time(); 529 +
533 $options = $this->saveFilters($filters, 0, $categories); 530 $options = $this->saveFilters($filters, 0, $categories);
534 - $this->debug($start_time, 'saveFilters');  
535 } 531 }
536 $parsed_name = $this->parseName($product_name); 532 $parsed_name = $this->parseName($product_name);
537 /** 533 /**
538 * @var Product $_product 534 * @var Product $_product
539 */ 535 */
540 - $start_time = time();  
541 - if(!empty($parsed_name['remote_id']) && ( $_product = Product::find()  
542 - ->joinWith('lang')  
543 - ->andFilterWhere([ 'remote_id' => $parsed_name[ 'remote_id' ] ])  
544 - ->one() ) !== NULL 536 +
  537 + if(!empty( $parsed_name[ 'remote_id' ] ) && ( $_product = Product::find()
  538 + ->joinWith('lang')
  539 + ->andFilterWhere([ 'remote_id' => $parsed_name[ 'remote_id' ] ])
  540 + ->one() ) !== NULL
545 ) { 541 ) {
546 if(!empty( $_product->lang )) { 542 if(!empty( $_product->lang )) {
547 $_product->lang->name = $parsed_name[ 'name' ]; 543 $_product->lang->name = $parsed_name[ 'name' ];
@@ -559,7 +555,7 @@ @@ -559,7 +555,7 @@
559 $product_lang->description = $product_body; 555 $product_lang->description = $product_body;
560 } 556 }
561 } 557 }
562 - 558 +
563 $is_new_product = empty( $_product->product_id ); 559 $is_new_product = empty( $_product->product_id );
564 560
565 $_product->categories = $categories; 561 $_product->categories = $categories;
@@ -570,7 +566,6 @@ @@ -570,7 +566,6 @@
570 $_product->is_top = $product_top; 566 $_product->is_top = $product_top;
571 $_product->akciya = $product_akciya; 567 $_product->akciya = $product_akciya;
572 $_product->is_new = $product_new; 568 $_product->is_new = $product_new;
573 - $this->debug($start_time, 'Product');  
574 if(!$_product->save()) { 569 if(!$_product->save()) {
575 if(!empty( $_product->lang )) { 570 if(!empty( $_product->lang )) {
576 $product_name_inserted = $_product->lang->name; 571 $product_name_inserted = $_product->lang->name;
@@ -580,13 +575,11 @@ @@ -580,13 +575,11 @@
580 $result_items[] = 'Product #' . $product_name_inserted . ' not saved' . " (line $j)"; 575 $result_items[] = 'Product #' . $product_name_inserted . ' not saved' . " (line $j)";
581 continue; 576 continue;
582 } 577 }
583 - $start_time = time(); 578 +
584 $this->saveFotos($fotos, $_product->product_id); 579 $this->saveFotos($fotos, $_product->product_id);
585 - $this->debug($start_time, 'saveFotos');  
586 // ะฝัƒะถะฝะพ ะดะปั ะฟั€ะพัั‚ะฐะฒะปะตะฝะธั ั…ะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบ ะพั‚ะฝะพััั‰ะธั…ัั ะบ ะผะพะดะธั„ะธะบะฐั†ะธัะผ 580 // ะฝัƒะถะฝะพ ะดะปั ะฟั€ะพัั‚ะฐะฒะปะตะฝะธั ั…ะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบ ะพั‚ะฝะพััั‰ะธั…ัั ะบ ะผะพะดะธั„ะธะบะฐั†ะธัะผ
587 - $start_time = time(); 581 +
588 $this->saveVariants($data, $product_cost_old, $_product->product_id, $_product->categories, $product_cost); 582 $this->saveVariants($data, $product_cost_old, $_product->product_id, $_product->categories, $product_cost);
589 - $this->debug($start_time, 'saveVariants');  
590 if(!empty( $options )) { 583 if(!empty( $options )) {
591 $_product->options = $options; 584 $_product->options = $options;
592 } 585 }
@@ -596,7 +589,7 @@ @@ -596,7 +589,7 @@
596 $result_items[] = "Product {$_product->lang->name} #{$_product->product_id} saved (" . ( $is_new_product ? 'new product' : 'exists product' ) . ")" . " (line $j)"; 589 $result_items[] = "Product {$_product->lang->name} #{$_product->product_id} saved (" . ( $is_new_product ? 'new product' : 'exists product' ) . ")" . " (line $j)";
597 590
598 } catch(\Exception $e) { 591 } catch(\Exception $e) {
599 - print $result_items[] = $e->getMessage() . '(line ' . $j . ')'; 592 + $result_items[] = $e->getMessage() . '(line ' . $j . ')';
600 } 593 }
601 594
602 } 595 }
@@ -607,11 +600,11 @@ @@ -607,11 +600,11 @@
607 'totalsize' => $filesize, 600 'totalsize' => $filesize,
608 'items' => $result_items, 601 'items' => $result_items,
609 ]; 602 ];
610 - 603 +
611 fclose($handle); 604 fclose($handle);
612 - 605 +
613 if($result[ 'end' ]) { 606 if($result[ 'end' ]) {
614 -// unlink(Yii::getAlias('@uploadDir') . '/' . Yii::getAlias('@uploadFileProducts')); 607 + // unlink(Yii::getAlias('@uploadDir') . '/' . Yii::getAlias('@uploadFileProducts'));
615 } 608 }
616 609
617 return $result; 610 return $result;
@@ -649,14 +642,15 @@ @@ -649,14 +642,15 @@
649 } 642 }
650 $filter_name = trim($filter[ 1 ][ 0 ]); 643 $filter_name = trim($filter[ 1 ][ 0 ]);
651 $parsed_group_name = $this->parseName($filter_name); 644 $parsed_group_name = $this->parseName($filter_name);
652 - $start_time = time(); 645 +
653 /** 646 /**
654 * @var TaxGroup $taxGroup 647 * @var TaxGroup $taxGroup
655 */ 648 */
656 - if(!empty($parsed_group_name['remote_id']) && ($taxGroup = TaxGroup::find()  
657 - ->joinWith('lang')  
658 - ->andFilterWhere([ 'remote_id' => $parsed_group_name[ 'remote_id' ] ])  
659 - ->one()) !== NULL) { 649 + if(!empty( $parsed_group_name[ 'remote_id' ] ) && ( $taxGroup = TaxGroup::find()
  650 + ->joinWith('lang')
  651 + ->andFilterWhere([ 'remote_id' => $parsed_group_name[ 'remote_id' ] ])
  652 + ->one() ) !== NULL
  653 + ) {
660 if(!empty( $taxGroup->lang )) { 654 if(!empty( $taxGroup->lang )) {
661 $taxGroup->lang->name = $parsed_group_name[ 'name' ]; 655 $taxGroup->lang->name = $parsed_group_name[ 'name' ];
662 $taxGroup->lang->save(); 656 $taxGroup->lang->save();
@@ -675,19 +669,19 @@ @@ -675,19 +669,19 @@
675 $taxGroup->is_filter = false; 669 $taxGroup->is_filter = false;
676 $taxGroup->save(); 670 $taxGroup->save();
677 } 671 }
678 - print $this->debug($start_time, 'TaxGroup');  
679 $filters_options = explode(',', $filter[ 2 ][ 0 ]); 672 $filters_options = explode(',', $filter[ 2 ][ 0 ]);
680 foreach($filters_options as $filter_options) { 673 foreach($filters_options as $filter_options) {
681 $parsed_option_name = $this->parseName($filter_options); 674 $parsed_option_name = $this->parseName($filter_options);
682 /** 675 /**
683 * @var TaxOption $option 676 * @var TaxOption $option
684 */ 677 */
685 - $start_time = time();  
686 - if(!empty($parsed_option_name['remote_id']) && ($option = TaxOption::find()  
687 - ->joinWith('lang')  
688 - ->andFilterWhere([ 'remote_id' => $parsed_option_name[ 'remote_id' ] ])  
689 - ->andFilterWhere([ 'tax_group_id' => $taxGroup->tax_group_id ])  
690 - ->one()) !== NULL) { 678 +
  679 + if(!empty( $parsed_option_name[ 'remote_id' ] ) && ( $option = TaxOption::find()
  680 + ->joinWith('lang')
  681 + ->andFilterWhere([ 'remote_id' => $parsed_option_name[ 'remote_id' ] ])
  682 + ->andFilterWhere([ 'tax_group_id' => $taxGroup->tax_group_id ])
  683 + ->one() ) !== NULL
  684 + ) {
691 if(!empty( $option->lang )) { 685 if(!empty( $option->lang )) {
692 $option->lang->value = $parsed_option_name[ 'name' ]; 686 $option->lang->value = $parsed_option_name[ 'name' ];
693 $option->lang->save(); 687 $option->lang->save();
@@ -706,7 +700,6 @@ @@ -706,7 +700,6 @@
706 $option->save(); 700 $option->save();
707 } 701 }
708 $options[] = $option->tax_option_id; 702 $options[] = $option->tax_option_id;
709 - print $this->debug($start_time, 'TaxOption');  
710 } 703 }
711 } 704 }
712 return $options; 705 return $options;