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 213 $name = trim($name);
214 214 $matches = [];
215 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 219 return $matches;
220 220 }
... ... @@ -237,10 +237,10 @@
237 237 foreach($catalog_names as $catalog_name) {
238 238 // ==== Set category ====
239 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 245 if(!empty( $category->lang )) {
246 246 $category->lang->name = $parsed_name[ 'name' ];
... ... @@ -279,10 +279,10 @@
279 279 /**
280 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 287 if(!empty( $brand->lang )) {
288 288 $brand->lang->name = $parsed_name[ 'name' ];
... ... @@ -399,7 +399,7 @@
399 399 if(isset( $variants_options ) && !empty( $variants_options )) {
400 400 $_productVariant->options = $variants_options;
401 401 }
402   -
  402 +
403 403 /**
404 404 * @todo set to false
405 405 */
... ... @@ -413,20 +413,19 @@
413 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 420 public function goProducts($from = 0, $limit = NULL)
421 421 {
422   - $start_time = time();
423 422 set_time_limit(0);
424 423  
425 424 if(!( $handle = $this->getProductsFile('uploadFileProducts') )) {
426 425 $this->errors[] = 'File not found';
427 426 return false;
428 427 }
429   -
  428 +
430 429 $filesize = filesize(Yii::getAlias('@uploadDir') . '/' . Yii::getAlias('@uploadFileProducts'));
431 430  
432 431 if($from) {
... ... @@ -512,36 +511,33 @@
512 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 523 $categories = $this->saveCatalog($catalog_names);
525   - $this->debug($start_time, 'Categories');
526   - $start_time = time();
  524 +
527 525 $brand_id = $this->saveBrand($brand_name);
528   - $this->debug($start_time, 'Brands');
529 526  
530 527 $options = [];
531 528 if(!empty ( $filters )) {
532   - $start_time = time();
  529 +
533 530 $options = $this->saveFilters($filters, 0, $categories);
534   - $this->debug($start_time, 'saveFilters');
535 531 }
536 532 $parsed_name = $this->parseName($product_name);
537 533 /**
538 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 542 if(!empty( $_product->lang )) {
547 543 $_product->lang->name = $parsed_name[ 'name' ];
... ... @@ -559,7 +555,7 @@
559 555 $product_lang->description = $product_body;
560 556 }
561 557 }
562   -
  558 +
563 559 $is_new_product = empty( $_product->product_id );
564 560  
565 561 $_product->categories = $categories;
... ... @@ -570,7 +566,6 @@
570 566 $_product->is_top = $product_top;
571 567 $_product->akciya = $product_akciya;
572 568 $_product->is_new = $product_new;
573   - $this->debug($start_time, 'Product');
574 569 if(!$_product->save()) {
575 570 if(!empty( $_product->lang )) {
576 571 $product_name_inserted = $_product->lang->name;
... ... @@ -580,13 +575,11 @@
580 575 $result_items[] = 'Product #' . $product_name_inserted . ' not saved' . " (line $j)";
581 576 continue;
582 577 }
583   - $start_time = time();
  578 +
584 579 $this->saveFotos($fotos, $_product->product_id);
585   - $this->debug($start_time, 'saveFotos');
586 580 // ะฝัƒะถะฝะพ ะดะปั ะฟั€ะพัั‚ะฐะฒะปะตะฝะธั ั…ะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบ ะพั‚ะฝะพััั‰ะธั…ัั ะบ ะผะพะดะธั„ะธะบะฐั†ะธัะผ
587   - $start_time = time();
  581 +
588 582 $this->saveVariants($data, $product_cost_old, $_product->product_id, $_product->categories, $product_cost);
589   - $this->debug($start_time, 'saveVariants');
590 583 if(!empty( $options )) {
591 584 $_product->options = $options;
592 585 }
... ... @@ -596,7 +589,7 @@
596 589 $result_items[] = "Product {$_product->lang->name} #{$_product->product_id} saved (" . ( $is_new_product ? 'new product' : 'exists product' ) . ")" . " (line $j)";
597 590  
598 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 600 'totalsize' => $filesize,
608 601 'items' => $result_items,
609 602 ];
610   -
  603 +
611 604 fclose($handle);
612   -
  605 +
613 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 610 return $result;
... ... @@ -649,14 +642,15 @@
649 642 }
650 643 $filter_name = trim($filter[ 1 ][ 0 ]);
651 644 $parsed_group_name = $this->parseName($filter_name);
652   - $start_time = time();
  645 +
653 646 /**
654 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 654 if(!empty( $taxGroup->lang )) {
661 655 $taxGroup->lang->name = $parsed_group_name[ 'name' ];
662 656 $taxGroup->lang->save();
... ... @@ -675,19 +669,19 @@
675 669 $taxGroup->is_filter = false;
676 670 $taxGroup->save();
677 671 }
678   - print $this->debug($start_time, 'TaxGroup');
679 672 $filters_options = explode(',', $filter[ 2 ][ 0 ]);
680 673 foreach($filters_options as $filter_options) {
681 674 $parsed_option_name = $this->parseName($filter_options);
682 675 /**
683 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 685 if(!empty( $option->lang )) {
692 686 $option->lang->value = $parsed_option_name[ 'name' ];
693 687 $option->lang->save();
... ... @@ -706,7 +700,6 @@
706 700 $option->save();
707 701 }
708 702 $options[] = $option->tax_option_id;
709   - print $this->debug($start_time, 'TaxOption');
710 703 }
711 704 }
712 705 return $options;
... ...