Example #1
0
 /**
  * @param array $product_ids
  */
 protected static function exportProducts(array $product_ids)
 {
     static::$count_success = 0;
     static::$count_fail = 0;
     static::$count_skip = 0;
     static::$errors = array();
     static::$error_counter = array();
     $product_ids = array_filter($product_ids);
     $templates = $groups = array();
     fn_set_progress('parts', count($product_ids) * 2);
     foreach ($product_ids as $product_id) {
         $product = new Product($product_id);
         if (empty($product->id)) {
             fn_set_progress('echo', '.');
             static::$count_skip++;
             continue;
         }
         if (empty($product->template_id)) {
             $template = Template::getDefaultByCompanyId($product->company_id);
             if ($template) {
                 $product->setTemplateId($template->id);
                 $product->saveTemplateId();
             } else {
                 $company_name = fn_get_company_name($product->company_id);
                 fn_set_notification('E', __('error'), __('ebay_default_template_not_found', array('[company_name]' => $company_name)));
             }
         }
         if (!empty($product->external_id)) {
             $api = Client::instance($product->getTemplate());
             static::uploadProductImages($product);
             fn_set_progress('echo', __('ebay_export_product', array('[product]' => htmlspecialchars($product->original_title))), false);
             $combinations = $product->getCombinations();
             $external_combinations = $product->getExternalCombinations();
             if (!empty($combinations) && empty($external_combinations)) {
                 $result = $api->getItem($product);
                 if ($result && $result->isSuccess()) {
                     $product->setExternalCombinations($result->getProductVariations());
                 }
             }
             $result = $api->reviseItem($product);
             if ($result) {
                 if ($result->isSuccess()) {
                     $product->setStatusActive();
                     $product->saveExternalData();
                 } elseif ($result->issetErrorAuctionEnded()) {
                     $result = $api->relistItem($product);
                     if ($result && $result->isSuccess()) {
                         Product::deleteExternalData($product->external_id);
                         $product->external_id = $result->getExternalId();
                         $product->saveExternalData();
                         $product->setStatusActive();
                     }
                 }
             }
             if ($result) {
                 if ($result->isSuccess()) {
                     static::$count_success++;
                     ProductLogger::info(ProductLogger::ACTION_UPDATE_PRODUCT, $product, __('ebay_success_exported_product_notice'));
                 } else {
                     static::$count_fail++;
                 }
                 static::checkResponse($product, $result, ProductLogger::ACTION_UPDATE_PRODUCT);
             } else {
                 static::checkInternalErrors($product, $api, ProductLogger::ACTION_UPDATE_PRODUCT);
             }
             fn_set_progress('echo', '.');
         } else {
             $groups[$product->template_id][] = $product;
             $templates[$product->template_id] = $product->getTemplate();
             if (count($groups[$product->template_id]) >= static::MAX_COUNT_EXPORT_NEW_PRODUCTS) {
                 static::exportGroupProducts($product->getTemplate(), $groups[$product->template_id]);
                 unset($groups[$product->template_id]);
             }
         }
     }
     if (!empty($groups)) {
         foreach ($groups as $template_id => $products) {
             static::exportGroupProducts($templates[$template_id], $products);
         }
     }
     /** @var \Smarty $smarty */
     $smarty = Tygh::$app['view'];
     $smarty->assign('export_result', array('count_success' => static::$count_success, 'count_fail' => static::$count_fail, 'count_skip' => static::$count_skip, 'errors' => static::$errors, 'error_counter' => static::$error_counter, 'count_external_error' => static::$count_external_error));
     fn_set_notification('I', static::$count_fail == 0 ? __('ebay_export_success') : __('ebay_export_failed'), $smarty->fetch('addons/ebay/views/ebay/components/export_summary.tpl'));
 }