/** * @param $product_ids * @throws \Exception * @throws \SmartyException */ protected static function endProducts(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)); foreach ($product_ids as $product_id) { $product = new Product($product_id, array('external')); if (empty($product->external_id) || $product->statusIsClosed()) { if (empty($product->external_id)) { static::setError('100_' . $product_id, __('ebay_product_not_exported', array('[product]' => $product->original_title)), true); } else { static::setError('101_' . $product_id, __('ebay_product_already_sales_closed', array('[product]' => $product->original_title)), true); } fn_set_progress('echo', '.'); static::$count_skip++; continue; } if (!isset($templates[$product->template_id])) { $templates[$product->template_id] = $product->getTemplate(); } $groups[$product->template_id][] = $product; if (count($groups[$product->template_id]) >= static::MAX_COUNT_END_PRODUCTS) { static::endGroupProducts($templates[$product->template_id], $groups[$product->template_id]); unset($groups[$product->template_id]); } } if (!empty($groups)) { foreach ($groups as $template_id => $products) { static::endGroupProducts($templates[$template_id], $products); } } /** @var \Smarty $smarty */ $smarty = Tygh::$app['view']; $smarty->assign('end_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', __('ebay_end_summary_title'), $smarty->fetch('addons/ebay/views/ebay/components/end_summary.tpl')); }