Files
wyczarujprezent.pl/modules/leofeature/controllers/front/LeoProductAttribute.php
2024-10-28 22:14:22 +01:00

1 line
5.2 KiB
PHP

<?php
/**
* Leotheme
*
* NOTICE OF LICENSE
*
* Leo feature for prestashop 1.7: ajax cart, review, compare, wishlist at product list
*
* DISCLAIMER
*
* @author leotheme <leotheme@gmail.com>
* @copyright Leotheme
* @license http://leotheme.com - prestashop template provider
*/
require_once(_PS_MODULE_DIR_.'leofeature/classes/LeoProductAttribute.php');
require_once(_PS_MODULE_DIR_.'leofeature/classes/LeofeatureProduct.php');
if (!defined('_PS_VERSION_')) {
# module validation
exit;
}
class LeofeatureLeoProductAttributeModuleFrontController extends ModuleFrontController
{
public function displayAjaxGetProductAttribute()
{
$id_product = (int) Tools::getValue('id_product');
$context = Context::getContext();
$module = new Leofeature();
$id_product_attribute = LeoProductAttribute::getProductAttributesID($id_product, Tools::getValue('group'));
if (!$id_product_attribute) {
//refresh
$groups = Tools::getValue('group');
$id_product_attribute = DB::getInstance()->getValue('SELECT pac.`id_product_attribute`
FROM `'._DB_PREFIX_.'product_attribute_combination` pac
INNER JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.id_product_attribute = pac.id_product_attribute
WHERE id_product = '.(int)$id_product.' AND id_attribute='.(int)array_slice($groups,0,1)[0]);
$productsVariants = LeoProductAttribute::getProductCombinationsSeparatelly($id_product, $id_product_attribute);
$group_add = [];
foreach ($productsVariants as $key => &$value) {
if ($value['attributes']) {
if (isset($value['attributes'][$value['default']])) {
foreach ($value['attributes'] as $key_ => &$val) {
if (isset($groups[$key])) {
$val['selected'] = $groups[$key] == $key_ ? 1 : 0;
}
}
}
$value['id_attribute_group'] = $key;
$group_add[] = $value;
}
}
$refresh = $module->getRefreshAttr($group_add);
}
$product = new Product ($id_product, false, $context->language->id);
$product->loadStockData();
$product_array = json_decode( json_encode($product), true );
$product_array['quantity'] = Product::getQuantity(
$id_product, (int) $id_product_attribute, isset($product_array['cache_is_pack']) ? $product_array['cache_is_pack'] : null
);
$product_array['allow_oosp'] = Product::isAvailableWhenOutOfStock($product_array['out_of_stock']);
$add_to_cart_url = null;
if ($module->shouldEnableAddToCartButton($product_array)) {
$add_to_cart_url = Context::getContext()->link->getAddToCartURL($id_product, $id_product_attribute);
}
$attribute_data = new LeofeatureProduct();
$result = $attribute_data->getTemplateVarProduct2($id_product, $id_product_attribute);
// get image/ image 2
$image = '';
$image2 = '';
$attributes_groups = $product->getAttributesGroups($context->language->id);
if (is_array($attributes_groups) && $attributes_groups) {
$combination_images = $product->getCombinationImages($context->language->id);
$combination_images = isset($combination_images[$id_product_attribute]) ? $combination_images[$id_product_attribute] : '';
if ($combination_images && !Tools::getValue('multiple_image')) {
$image = $context->link->getImageLink($product->link_rewrite, $combination_images[0]['id_image'], ImageType::getFormattedName('home'));
if (Tools::getValue('image2') && isset($combination_images[1])) {
$image2 = $context->link->getImageLink($product->link_rewrite, $combination_images[1]['id_image'], ImageType::getFormattedName('home'));
}
} elseif ($combination_images && Tools::getValue('multiple_image')) {
foreach ($combination_images as $key => &$img) {
$img['image'] = $context->link->getImageLink($product->link_rewrite, $img['id_image'], ImageType::getFormattedName('home'));
}
$image = $combination_images;
} else {
$image = $result['cover']['bySize'][ImageType::getFormattedName('home')]['url'];
}
}
die(json_encode(array(
'product_cover' => $result['cover'],
'price_attribute' => $module->renderPriceAttribute($result),
'product_url' => Context::getContext()->link->getProductLink($id_product, null, null, null, $context->language->id, null, $id_product_attribute, false, false, true),
'id_attr' => $id_product_attribute,
'refresh_attr' => isset($refresh) ? $refresh : '',
// 'add_to_cart_url' => Context::getContext()->link->getAddToCartURL($id_product, $id_product_attribute),
'add_to_cart_url' => $add_to_cart_url,
'image' => $image,
'image2' => $image2,
)));
}
}