private function getCombinationImages($attribute_id) { $images = $this->product->getCombinationImages((int) $this->context->language->id); $images = $images[$attribute_id]; $link = $this->context->link; $jsonImages = array(); if ($images && count($images)) { foreach ($images as $image) { $jsonImages[] = array('name' => $image['legend'], 'url' => $link->getImageLink($this->product->link_rewrite, $this->product->id . '-' . $image['id_image'])); } } return $jsonImages; }
/** * Assign template vars related to attribute groups and colors */ protected function assignAttributesGroups() { $colors = array(); $groups = array(); // @todo (RM) should only get groups and not all declination ? $attributes_groups = $this->product->getAttributesGroups($this->context->language->id); if (is_array($attributes_groups) && $attributes_groups) { $combination_images = $this->product->getCombinationImages($this->context->language->id); $combination_prices_set = array(); foreach ($attributes_groups as $k => $row) { // Color management if (isset($row['attribute_color']) && $row['attribute_color'] || file_exists(_PS_COL_IMG_DIR_ . $row['id_attribute'] . '.jpg')) { $colors[$row['id_attribute']]['value'] = $row['attribute_color']; $colors[$row['id_attribute']]['name'] = $row['attribute_name']; if (!isset($colors[$row['id_attribute']]['attributes_quantity'])) { $colors[$row['id_attribute']]['attributes_quantity'] = 0; } $colors[$row['id_attribute']]['attributes_quantity'] += (int) $row['quantity']; } if (!isset($groups[$row['id_attribute_group']])) { $groups[$row['id_attribute_group']] = array('name' => $row['public_group_name'], 'group_type' => $row['group_type'], 'default' => -1); } $groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = $row['attribute_name']; if ($row['default_on'] && $groups[$row['id_attribute_group']]['default'] == -1) { $groups[$row['id_attribute_group']]['default'] = (int) $row['id_attribute']; } if (!isset($groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']])) { $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] = 0; } $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] += (int) $row['quantity']; if ($row['available_date'] != '0000-00-00 00:00:00' && $row['available_date'] != '0000-00-00') { $available_date = Tools::displayDate($row['available_date'], $this->context->language->id); } else { $available_date = $row['available_date']; } $combinations[$row['id_product_attribute']]['attributes_values'][$row['id_attribute_group']] = $row['attribute_name']; $combinations[$row['id_product_attribute']]['attributes'][] = (int) $row['id_attribute']; $combinations[$row['id_product_attribute']]['price'] = (double) $row['price']; // Call getPriceStatic in order to set $combination_specific_price if (!isset($combination_prices_set[(int) $row['id_product_attribute']])) { Product::getPriceStatic((int) $this->product->id, false, $row['id_product_attribute'], 6, null, false, true, 1, false, null, null, null, $combination_specific_price); $combination_prices_set[(int) $row['id_product_attribute']] = true; $combinations[$row['id_product_attribute']]['specific_price'] = $combination_specific_price; } $combinations[$row['id_product_attribute']]['ecotax'] = (double) $row['ecotax']; $combinations[$row['id_product_attribute']]['weight'] = (double) $row['weight']; $combinations[$row['id_product_attribute']]['quantity'] = (int) $row['quantity']; $combinations[$row['id_product_attribute']]['reference'] = $row['reference']; $combinations[$row['id_product_attribute']]['unit_impact'] = $row['unit_price_impact']; $combinations[$row['id_product_attribute']]['minimal_quantity'] = $row['minimal_quantity']; $combinations[$row['id_product_attribute']]['available_date'] = $available_date; if (isset($combination_images[$row['id_product_attribute']][0]['id_image'])) { $combinations[$row['id_product_attribute']]['id_image'] = $combination_images[$row['id_product_attribute']][0]['id_image']; } else { $combinations[$row['id_product_attribute']]['id_image'] = -1; } } // wash attributes list (if some attributes are unavailables and if allowed to wash it) if (!Product::isAvailableWhenOutOfStock($this->product->out_of_stock) && Configuration::get('PS_DISP_UNAVAILABLE_ATTR') == 0) { foreach ($groups as &$group) { foreach ($group['attributes_quantity'] as $key => &$quantity) { if (!$quantity) { unset($group['attributes'][$key]); } } } foreach ($colors as $key => $color) { if (!$color['attributes_quantity']) { unset($colors[$key]); } } } foreach ($combinations as $id_product_attribute => $comb) { $attribute_list = ''; foreach ($comb['attributes'] as $id_attribute) { $attribute_list .= '\'' . (int) $id_attribute . '\','; } $attribute_list = rtrim($attribute_list, ','); $combinations[$id_product_attribute]['list'] = $attribute_list; } $this->context->smarty->assign(array('groups' => $groups, 'combinations' => $combinations, 'colors' => count($colors) ? $colors : false, 'combinationImages' => $combination_images)); } }
/** * @param Product $product * @param int $lang id of a language * @return array of a product declinations. */ private function getCombinations(Product $product, $lang) { $attributesGroups = $product->getAttributesGroups((int) $lang); $combinations = array(); if ($attributesGroups && is_array($attributesGroups)) { $combinationImages = $product->getCombinationImages((int) $lang); foreach ($attributesGroups as $k => $row) { $combinations[$row['id_product_attribute']]['id_combination'] = $row['id_product_attribute']; $combinations[$row['id_product_attribute']]['attributes'][$row['id_attribute_group']] = array('name' => $row['attribute_name'], 'group_name' => $row['public_group_name'], 'id_attribute' => (int) $row['id_attribute']); $combinations[$row['id_product_attribute']]['price'] = (double) $row['price']; $combinations[$row['id_product_attribute']]['ecotax'] = (double) $row['ecotax']; $combinations[$row['id_product_attribute']]['weight'] = (double) $row['weight']; $combinations[$row['id_product_attribute']]['quantity'] = (int) $row['quantity']; $combinations[$row['id_product_attribute']]['reference'] = $row['reference']; if (isset($row['unit_price_impact'])) { $combinations[$row['id_product_attribute']]['unit_impact'] = $row['unit_price_impact']; } $combinations[$row['id_product_attribute']]['id_image'] = isset($combinationImages[$row['id_product_attribute']][0]['id_image']) ? $combinationImages[$row['id_product_attribute']][0]['id_image'] : -1; } } return $combinations; }
/** * @param Product $product * @param Currency|array|int $currency * @return string */ public function renderListAttributes($product, $currency) { $this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?'))); $this->addRowAction('edit'); $this->addRowAction('default'); $this->addRowAction('delete'); $default_class = 'highlighted'; $this->fields_list = array('attributes' => array('title' => $this->l('Attribute - value pair'), 'align' => 'left'), 'price' => array('title' => $this->l('Impact on price'), 'type' => 'price', 'align' => 'left'), 'weight' => array('title' => $this->l('Impact on weight'), 'align' => 'left'), 'reference' => array('title' => $this->l('Reference'), 'align' => 'left'), 'ean13' => array('title' => $this->l('EAN-13'), 'align' => 'left'), 'upc' => array('title' => $this->l('UPC'), 'align' => 'left')); if ($product->id) { /* Build attributes combinations */ $combinations = $product->getAttributeCombinations($this->context->language->id); $groups = array(); $comb_array = array(); if (is_array($combinations)) { $combination_images = $product->getCombinationImages($this->context->language->id); foreach ($combinations as $k => $combination) { $price_to_convert = Tools::convertPrice($combination['price'], $currency); $price = Tools::displayPrice($price_to_convert, $currency); $comb_array[$combination['id_product_attribute']]['id_product_attribute'] = $combination['id_product_attribute']; $comb_array[$combination['id_product_attribute']]['attributes'][] = array($combination['group_name'], $combination['attribute_name'], $combination['id_attribute']); $comb_array[$combination['id_product_attribute']]['wholesale_price'] = $combination['wholesale_price']; $comb_array[$combination['id_product_attribute']]['price'] = $price; $comb_array[$combination['id_product_attribute']]['weight'] = $combination['weight'] . Configuration::get('PS_WEIGHT_UNIT'); $comb_array[$combination['id_product_attribute']]['unit_impact'] = $combination['unit_price_impact']; $comb_array[$combination['id_product_attribute']]['reference'] = $combination['reference']; $comb_array[$combination['id_product_attribute']]['ean13'] = $combination['ean13']; $comb_array[$combination['id_product_attribute']]['upc'] = $combination['upc']; $comb_array[$combination['id_product_attribute']]['id_image'] = isset($combination_images[$combination['id_product_attribute']][0]['id_image']) ? $combination_images[$combination['id_product_attribute']][0]['id_image'] : 0; $comb_array[$combination['id_product_attribute']]['available_date'] = strftime($combination['available_date']); $comb_array[$combination['id_product_attribute']]['default_on'] = $combination['default_on']; if ($combination['is_color_group']) { $groups[$combination['id_attribute_group']] = $combination['group_name']; } } } if (isset($comb_array)) { foreach ($comb_array as $id_product_attribute => $product_attribute) { $list = ''; /* In order to keep the same attributes order */ asort($product_attribute['attributes']); foreach ($product_attribute['attributes'] as $attribute) { $list .= $attribute[0] . ' - ' . $attribute[1] . ', '; } $list = rtrim($list, ', '); $comb_array[$id_product_attribute]['image'] = $product_attribute['id_image'] ? new Image($product_attribute['id_image']) : false; $comb_array[$id_product_attribute]['available_date'] = $product_attribute['available_date'] != 0 ? date('Y-m-d', strtotime($product_attribute['available_date'])) : '0000-00-00'; $comb_array[$id_product_attribute]['attributes'] = $list; $comb_array[$id_product_attribute]['name'] = $list; if ($product_attribute['default_on']) { $comb_array[$id_product_attribute]['class'] = $default_class; } } } } foreach ($this->actions_available as $action) { if (!in_array($action, $this->actions) && isset($this->{$action}) && $this->{$action}) { $this->actions[] = $action; } } $helper = new HelperList(); $helper->identifier = 'id_product_attribute'; $helper->table_id = 'combinations-list'; $helper->token = $this->token; $helper->currentIndex = self::$currentIndex; $helper->no_link = true; $helper->simple_header = true; $helper->show_toolbar = false; $helper->shopLinkType = $this->shopLinkType; $helper->actions = $this->actions; $helper->list_skip_actions = $this->list_skip_actions; $helper->colorOnBackground = true; $helper->override_folder = $this->tpl_folder . 'combination/'; return $helper->generateList($comb_array, $this->fields_list); }
/** * Updates product combinations on Prestashop. * * @param integer $id_product * @param string $url_photo * @param array $triple_cod_col_siz * @param array $array_combinations * @param integer $language * @return bool * @see $this->createAttributeGroups * @see $this->setArrayElementForLinkRewrite * @see $this->getCodeColor * @see PrestashopImageHandler getIdImageByName() * @see PrestashopImageHandler insertImageInPrestashop() * */ private function updateCombinantionsForPrestashop($id_product, $url_photo, $triple_cod_col_siz, $array_combinations, $language = 1) { $product = new Product((int) $id_product); $id_new_images = array(); $price = '0.000'; //(float)$product->price; $reference = $product->reference; $id_supplier = (int) $product->id_supplier; foreach ($triple_cod_col_siz as $triple) { $array_attributes_and_values = $array_combinations[$triple]; $attributes = $array_attributes_and_values["Attributi"]; $values = $array_attributes_and_values["Valori"]; $image = trim($array_attributes_and_values["Immagine"]); $quantity = (int) $array_attributes_and_values["Qta"]; $variable_tmp_attributes = explode(",", $attributes); $variable_tmp_values = explode(",", $values); $id_attributes_for_combinations = array(); $flag_just_exist_color = 1; $flag_just_exist_size = 1; for ($i = 0; $i < sizeof($variable_tmp_attributes); $i++) { $code = ""; if ($variable_tmp_values[$i] != "") { $id_attribute_group = $this->createAttributeGroups($variable_tmp_attributes[$i], $language); $id_attributes_for_not_repeat = $this->getAttributeColorAndSize($variable_tmp_values[$i], $language); if (strtolower($variable_tmp_attributes[$i]) === "colore" || strtolower($variable_tmp_attributes[$i]) === "colori") { $product_attribute_for_not_reply = $product->getAttributeCombinations($language); if (empty($product_attribute_for_not_reply)) { if ($id_attributes_for_not_repeat === '-1') { $code = $this->getCodeColor(strtolower($variable_tmp_values[$i])); if ($code != "") { $code = "#" . $code; $attribute_for_product = new Attribute(); $attribute_for_product->name = $this->setArrayElementForLinkRewrite($variable_tmp_values[$i], true, $language); $attribute_for_product->color = $code; $attribute_for_product->id_attribute_group = $id_attribute_group; $attribute_for_product->add(); array_push($id_attributes_for_combinations, $attribute_for_product->id); } } else { array_push($id_attributes_for_combinations, (int) $id_attributes_for_not_repeat); } } else { $flag = 1; foreach ($product_attribute_for_not_reply as $more_attributes) { if ($more_attributes['attribute_name'] === $variable_tmp_values[$i]) { array_push($id_attributes_for_combinations, (int) $more_attributes['id_attribute']); $flag = 0; $flag_just_exist_color = 0; break; } } if ($flag) { if ($id_attributes_for_not_repeat === '-1') { $code = $this->getCodeColor(strtolower($variable_tmp_values[$i])); if ($code != "") { $code = "#" . $code; $attribute_for_product = new Attribute(); $attribute_for_product->name = $this->setArrayElementForLinkRewrite($variable_tmp_values[$i], true, $language); $attribute_for_product->color = $code; $attribute_for_product->id_attribute_group = $id_attribute_group; $attribute_for_product->add(); array_push($id_attributes_for_combinations, $attribute_for_product->id); } } else { array_push($id_attributes_for_combinations, (int) $id_attributes_for_not_repeat); } } } } if (strtolower($variable_tmp_attributes[$i]) === "taglia" || strtolower($variable_tmp_attributes[$i]) === "taglie") { $product_attribute_for_not_reply = $product->getAttributeCombinations($language); if (empty($product_attribute_for_not_reply)) { if ($id_attributes_for_not_repeat === '-1') { $attribute_for_product = new Attribute(); $attribute_for_product->name = $this->setArrayElementForLinkRewrite($variable_tmp_values[$i], true, $language); $attribute_for_product->id_attribute_group = $id_attribute_group; $attribute_for_product->add(); array_push($id_attributes_for_combinations, $attribute_for_product->id); } else { array_push($id_attributes_for_combinations, (int) $id_attributes_for_not_repeat); } } else { $flag = 1; foreach ($product_attribute_for_not_reply as $more_attributes) { $vrbls_1 = trim($more_attributes['attribute_name']); $vrbls_2 = trim($variable_tmp_values[$i]); if (gettype($vrbls_1) === "string" && gettype($vrbls_2) === "string") { if ($vrbls_1 === $vrbls_2) { array_push($id_attributes_for_combinations, (int) $more_attributes['id_attribute']); $flag = 0; $flag_just_exist_size = 0; break; } } if (gettype($vrbls_1) === "integer" && gettype($vrbls_2) === "integer") { if ($vrbls_1 == $vrbls_2) { array_push($id_attributes_for_combinations, (int) $more_attributes['id_attribute']); $flag = 0; $flag_just_exist_size = 0; break; } } } if ($flag) { if ($id_attributes_for_not_repeat === '-1') { $attribute_for_product = new Attribute(); $attribute_for_product->name = $this->setArrayElementForLinkRewrite($variable_tmp_values[$i], true, $language); $attribute_for_product->id_attribute_group = $id_attribute_group; $attribute_for_product->add(); array_push($id_attributes_for_combinations, $attribute_for_product->id); } else { array_push($id_attributes_for_combinations, (int) $id_attributes_for_not_repeat); } } } } } else { if (strtolower($variable_tmp_attributes[$i]) === "colore" || strtolower($variable_tmp_attributes[$i]) === "colori") { $flag_just_exist_color = 0; } if (strtolower($variable_tmp_attributes[$i]) === "taglia" || strtolower($variable_tmp_attributes[$i]) === "taglie") { $flag_just_exist_size = 0; } } } if ($flag_just_exist_color || $flag_just_exist_size) { $id_images = array(); $tmp_photo = explode(".jpg,", $image); for ($i = 0; $i < sizeof($tmp_photo); $i++) { if (!empty($tmp_photo[$i])) { $image_for_prestashop = new PrestashopImageHandler(); $id_image = $image_for_prestashop->getIdImageByName(trim($tmp_photo[$i])); if (!empty($id_image)) { array_push($id_images, $id_image); } else { $id_image = $image_for_prestashop->insertImageInPrestashop($id_product, trim($url_photo), trim($tmp_photo[$i])); array_push($id_images, $id_image); array_push($id_new_images, $id_image . ";" . trim($tmp_photo[$i]) . '.jpg'); } } } $id_product_attributes = $product->addProductAttribute($price, 0, 0, 0, $quantity, "", $reference, $id_supplier, 0, 1); $combinations = new CombinationCore((int) $id_product_attributes); $combinations->setAttributes($id_attributes_for_combinations); $combinations->setImages($id_images); } else { $id_images = array(); $tmp_photo = explode(".jpg,", $image); for ($i = 0; $i < sizeof($tmp_photo); $i++) { if (!empty($tmp_photo[$i])) { $image_for_prestashop = new PrestashopImageHandler(); $id_image = $image_for_prestashop->getIdImageByName(trim($tmp_photo[$i])); if (empty($id_image)) { $id_image = $image_for_prestashop->insertImageInPrestashop($id_product, trim($url_photo), trim($tmp_photo[$i])); array_push($id_images, $id_image); array_push($id_new_images, $id_image . ";" . trim($tmp_photo[$i]) . ".jpg"); } } } if (!empty($id_images)) { $array_product_attribute_combinations_get = $product->getCombinationImages($language); for ($i = 0; $i < sizeof($id_images); $i++) { $id_della_immagine = $id_images[$i]; foreach ($array_product_attribute_combinations_get as $single_array_of_attribute_product) { foreach ($single_array_of_attribute_product as $array_di_combinazioni) { $id_arr_comb = $array_di_combinazioni['id_product_attribute']; $combinazioni_attributi = new CombinationCore((int) $id_arr_comb); $attribute_combinations = $combinazioni_attributi->getAttributesName($language); $attr_comb1 = $attribute_combinations[0]; $attr_comb2 = $attribute_combinations[1]; $id_attr_comb1 = $attr_comb1['id_attribute']; $id_attr_comb2 = $attr_comb2['id_attribute']; $id_attributi_input = $id_attributes_for_combinations; $id_color_or_size = $id_attributi_input[0]; $id_size_or_color = $id_attributi_input[1]; if ($id_color_or_size == $id_attr_comb1 || $id_color_or_size == $id_attr_comb2) { if ($id_size_or_color == $id_attr_comb1 || $id_size_or_color == $id_attr_comb2) { $new_image = array(); $new_array_image = $combinazioni_attributi->getWsImages(); for ($j = 0; $j < sizeof($new_array_image); $j++) { $tmp_image_ = $new_array_image[$j]; array_push($new_image, (int) $tmp_image_['id']); } array_push($new_image, $id_della_immagine); $fff = $product->updateProductAttribute($id_arr_comb, 0, $price, 0, 0, 0, $new_image, $reference, $id_supplier, 0, 1, null, null, 1, '0000-00-00'); } } } } } } } } return $id_new_images; }
/** * Assign template vars related to attribute groups and colors. */ protected function assignAttributesGroups($product_for_template = null) { $colors = array(); $groups = array(); $this->combinations = array(); // @todo (RM) should only get groups and not all declination ? $attributes_groups = $this->product->getAttributesGroups($this->context->language->id); if (is_array($attributes_groups) && $attributes_groups) { $combination_images = $this->product->getCombinationImages($this->context->language->id); $combination_prices_set = array(); foreach ($attributes_groups as $k => $row) { // Color management if (isset($row['is_color_group']) && $row['is_color_group'] && (isset($row['attribute_color']) && $row['attribute_color']) || file_exists(_PS_COL_IMG_DIR_ . $row['id_attribute'] . '.jpg')) { $colors[$row['id_attribute']]['value'] = $row['attribute_color']; $colors[$row['id_attribute']]['name'] = $row['attribute_name']; if (!isset($colors[$row['id_attribute']]['attributes_quantity'])) { $colors[$row['id_attribute']]['attributes_quantity'] = 0; } $colors[$row['id_attribute']]['attributes_quantity'] += (int) $row['quantity']; } if (!isset($groups[$row['id_attribute_group']])) { $groups[$row['id_attribute_group']] = array('group_name' => $row['group_name'], 'name' => $row['public_group_name'], 'group_type' => $row['group_type'], 'default' => -1); } $groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = array('name' => $row['attribute_name'], 'html_color_code' => $row['attribute_color'], 'texture' => @filemtime(_PS_COL_IMG_DIR_ . $row['id_attribute'] . '.jpg') ? _THEME_COL_DIR_ . $row['id_attribute'] . '.jpg' : '', 'selected' => isset($product_for_template['attributes'][$row['id_attribute_group']]['id_attribute']) && $product_for_template['attributes'][$row['id_attribute_group']]['id_attribute'] == $row['id_attribute'] ? true : false); //$product.attributes.$id_attribute_group.id_attribute eq $id_attribute if ($row['default_on'] && $groups[$row['id_attribute_group']]['default'] == -1) { $groups[$row['id_attribute_group']]['default'] = (int) $row['id_attribute']; } if (!isset($groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']])) { $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] = 0; } $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] += (int) $row['quantity']; $this->combinations[$row['id_product_attribute']]['attributes_values'][$row['id_attribute_group']] = $row['attribute_name']; $this->combinations[$row['id_product_attribute']]['attributes'][] = (int) $row['id_attribute']; $this->combinations[$row['id_product_attribute']]['price'] = (double) $row['price']; // Call getPriceStatic in order to set $combination_specific_price if (!isset($combination_prices_set[(int) $row['id_product_attribute']])) { $combination_specific_price = null; Product::getPriceStatic((int) $this->product->id, false, $row['id_product_attribute'], 6, null, false, true, 1, false, null, null, null, $combination_specific_price); $combination_prices_set[(int) $row['id_product_attribute']] = true; $this->combinations[$row['id_product_attribute']]['specific_price'] = $combination_specific_price; } $this->combinations[$row['id_product_attribute']]['ecotax'] = (double) $row['ecotax']; $this->combinations[$row['id_product_attribute']]['weight'] = (double) $row['weight']; $this->combinations[$row['id_product_attribute']]['quantity'] = (int) $row['quantity']; $this->combinations[$row['id_product_attribute']]['reference'] = $row['reference']; $this->combinations[$row['id_product_attribute']]['unit_impact'] = $row['unit_price_impact']; $this->combinations[$row['id_product_attribute']]['minimal_quantity'] = $row['minimal_quantity']; if ($row['available_date'] != '0000-00-00' && Validate::isDate($row['available_date'])) { $this->combinations[$row['id_product_attribute']]['available_date'] = $row['available_date']; $this->combinations[$row['id_product_attribute']]['date_formatted'] = Tools::displayDate($row['available_date']); } else { $this->combinations[$row['id_product_attribute']]['available_date'] = $this->combinations[$row['id_product_attribute']]['date_formatted'] = ''; } if (!isset($combination_images[$row['id_product_attribute']][0]['id_image'])) { $this->combinations[$row['id_product_attribute']]['id_image'] = -1; } else { $this->combinations[$row['id_product_attribute']]['id_image'] = $id_image = (int) $combination_images[$row['id_product_attribute']][0]['id_image']; if ($row['default_on']) { foreach ($this->context->smarty->tpl_vars['product']->value['images'] as $image) { if ($image['cover'] == 1) { $current_cover = $image; } } if (!isset($current_cover)) { $current_cover = array_values($this->context->smarty->tpl_vars['product']->value['images'])[0]; } if (is_array($combination_images[$row['id_product_attribute']])) { foreach ($combination_images[$row['id_product_attribute']] as $tmp) { if ($tmp['id_image'] == $current_cover['id_image']) { $this->combinations[$row['id_product_attribute']]['id_image'] = $id_image = (int) $tmp['id_image']; break; } } } if ($id_image > 0) { if (isset($this->context->smarty->tpl_vars['images']->value)) { $product_images = $this->context->smarty->tpl_vars['images']->value; } if (isset($product_images) && is_array($product_images) && isset($product_images[$id_image])) { $product_images[$id_image]['cover'] = 1; $this->context->smarty->assign('mainImage', $product_images[$id_image]); if (count($product_images)) { $this->context->smarty->assign('images', $product_images); } } $cover = $current_cover; if (isset($cover) && is_array($cover) && isset($product_images) && is_array($product_images)) { $product_images[$cover['id_image']]['cover'] = 0; if (isset($product_images[$id_image])) { $cover = $product_images[$id_image]; } $cover['id_image'] = Configuration::get('PS_LEGACY_IMAGES') ? $this->product->id . '-' . $id_image : (int) $id_image; $cover['id_image_only'] = (int) $id_image; $this->context->smarty->assign('cover', $cover); } } } } } // wash attributes list (if some attributes are unavailables and if allowed to wash it) if (!Product::isAvailableWhenOutOfStock($this->product->out_of_stock) && Configuration::get('PS_DISP_UNAVAILABLE_ATTR') == 0) { foreach ($groups as &$group) { foreach ($group['attributes_quantity'] as $key => &$quantity) { if ($quantity <= 0) { unset($group['attributes'][$key]); } } } foreach ($colors as $key => $color) { if ($color['attributes_quantity'] <= 0) { unset($colors[$key]); } } } foreach ($this->combinations as $id_product_attribute => $comb) { $attribute_list = ''; foreach ($comb['attributes'] as $id_attribute) { $attribute_list .= '\'' . (int) $id_attribute . '\','; } $attribute_list = rtrim($attribute_list, ','); $this->combinations[$id_product_attribute]['list'] = $attribute_list; } $this->context->smarty->assign(array('groups' => $groups, 'colors' => count($colors) ? $colors : false, 'combinations' => $this->combinations, 'combinationImages' => $combination_images)); } else { $this->context->smarty->assign(array('groups' => array(), 'colors' => false, 'combinations' => array(), 'combinationImages' => array())); } }