first commit

This commit is contained in:
2024-10-25 14:16:28 +02:00
commit 925276dbb2
33795 changed files with 4780077 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
<?php
/**
* File from http://PrestaShow.pl
*
* DISCLAIMER
* Do not edit or add to this file if you wish to upgrade this module to newer
* versions in the future.
*
* @authors PrestaShow.pl <kontakt@prestashow.pl>
* @copyright 2015 PrestaShow.pl
* @license http://PrestaShow.pl/license
*/
class AdminProductsController extends AdminProductsControllerCore
{
public function __construct()
{
parent::__construct();
$this->fields_list['import'] = array(
'title' => '<a href="' . $this->context->link->getAdminLink('PShowImporterMain') . '">' . $this->l('Use in import') . '</a>',
'active' => 'import',
'filter_key' => 'a!import',
'align' => 'text-center',
'type' => 'bool',
'class' => 'fixed-width-sm',
'orderby' => false,
'ajax' => true
);
}
public function ajaxProcess()
{
$id_product = (int) Tools::getValue('id_product');
if ($id_product && Tools::getValue('action') == 'importproduct') {
$object = new Product((int) $id_product);
if (Validate::isLoadedObject($object)) {
$object->setFieldsToUpdate(array('import' => true));
$object->import = !(int) $object->import;
if ($object->update(false)) {
if ($object->import) {
die(Tools::jsonEncode(array('success' => true, 'text' => $this->l('PShow Importer can modify product #' . $object->id . ' during import.'))));
} else {
die(Tools::jsonEncode(array('success' => true, 'text' => $this->l('PShow Importer can not modify product #' . $object->id . ' during import.'))));
}
} else {
die(Tools::jsonEncode(array('success' => false, 'error' => true, 'text' => $this->l('Failed to update import status'))));
}
}
}
if (method_exists('AdminProductsControllerCore', 'ajaxProcess')) {
parent::ajaxProcess();
}
}
public function processProductAttribute()
{
// Don't process if the combination fields have not been submitted
if (!Combination::isFeatureActive() || !Tools::getValue('attribute_combination_list')) {
return;
}
if (Validate::isLoadedObject($product = $this->object)) {
if ($this->isProductFieldUpdated('attribute_price') && (!Tools::getIsset('attribute_price') || Tools::getIsset('attribute_price') == null)) {
$this->errors[] = Tools::displayError('The price attribute is required.');
}
if (!Tools::getIsset('attribute_combination_list') || Tools::isEmpty(Tools::getValue('attribute_combination_list'))) {
$this->errors[] = Tools::displayError('You must add at least one attribute.');
}
$array_checks = array(
'reference' => 'isReference',
'supplier_reference' => 'isReference',
'location' => 'isReference',
'ean13' => 'isEan13',
'upc' => 'isUpc',
'trade_margin' => 'isString',
'wholesale_price' => 'isPrice',
'price' => 'isPrice',
'ecotax' => 'isPrice',
'quantity' => 'isInt',
'weight' => 'isUnsignedFloat',
'width' => 'isUnsignedFloat',
'height' => 'isUnsignedFloat',
'depth' => 'isUnsignedFloat',
'unit_price_impact' => 'isPrice',
'default_on' => 'isBool',
'minimal_quantity' => 'isUnsignedInt',
'available_date' => 'isDateFormat'
);
foreach ($array_checks as $property => $check) {
if (Tools::getValue('attribute_' . $property) !== false && !call_user_func(array('Validate', $check), Tools::getValue('attribute_' . $property))) {
$this->errors[] = sprintf(Tools::displayError('Field %s is not valid'), $property);
}
}
if (!count($this->errors)) {
if (!isset($_POST['attribute_wholesale_price'])) {
$_POST['attribute_wholesale_price'] = 0;
}
if (!isset($_POST['attribute_price_impact'])) {
$_POST['attribute_price_impact'] = 0;
}
if (!isset($_POST['attribute_weight_impact'])) {
$_POST['attribute_weight_impact'] = 0;
}
if (!isset($_POST['attribute_ecotax'])) {
$_POST['attribute_ecotax'] = 0;
}
if (Tools::getValue('attribute_default')) {
$product->deleteDefaultAttributes();
}
// Change existing one
if (($id_product_attribute = (int) Tools::getValue('id_product_attribute')) || ($id_product_attribute = $product->productAttributeExists(Tools::getValue('attribute_combination_list'), false, null, true, true))) {
if ($this->tabAccess['edit'] === '1') {
if ($this->isProductFieldUpdated('available_date_attribute') && (Tools::getValue('available_date_attribute') != '' && !Validate::isDateFormat(Tools::getValue('available_date_attribute')))) {
$this->errors[] = Tools::displayError('Invalid date format.');
} else {
$product->updateAttribute((int) $id_product_attribute, $this->isProductFieldUpdated('attribute_wholesale_price') ? Tools::getValue('attribute_wholesale_price') : null, $this->isProductFieldUpdated('attribute_price_impact') ? Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact') : null, $this->isProductFieldUpdated('attribute_weight_impact') ? Tools::getValue('attribute_weight') * Tools::getValue('attribute_weight_impact') : null, $this->isProductFieldUpdated('attribute_unit_impact') ? Tools::getValue('attribute_unity') * Tools::getValue('attribute_unit_impact') : null, $this->isProductFieldUpdated('attribute_ecotax') ? Tools::getValue('attribute_ecotax') : null, Tools::getValue('id_image_attr'), Tools::getValue('attribute_reference'), Tools::getValue('attribute_ean13'), $this->isProductFieldUpdated('attribute_default') ? Tools::getValue('attribute_default') : null, Tools::getValue('attribute_location'), Tools::getValue('attribute_upc'), $this->isProductFieldUpdated('attribute_trade_margin') ? Tools::getValue('attribute_trade_margin') : null, $this->isProductFieldUpdated('attribute_minimal_quantity') ? Tools::getValue('attribute_minimal_quantity') : null, $this->isProductFieldUpdated('available_date_attribute') ? Tools::getValue('available_date_attribute') : null, false);
StockAvailable::setProductDependsOnStock((int) $product->id, $product->depends_on_stock, null, (int) $id_product_attribute);
StockAvailable::setProductOutOfStock((int) $product->id, $product->out_of_stock, null, (int) $id_product_attribute);
}
} else {
$this->errors[] = Tools::displayError('You do not have permission to add this.');
}
}
// Add new
else {
if ($this->tabAccess['add'] === '1') {
if ($product->productAttributeExists(Tools::getValue('attribute_combination_list'))) {
$this->errors[] = Tools::displayError('This combination already exists.');
} else {
$id_product_attribute = $product->addCombinationEntity(
Tools::getValue('attribute_wholesale_price'), Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact'), Tools::getValue('attribute_weight') * Tools::getValue('attribute_weight_impact'), Tools::getValue('attribute_unity') * Tools::getValue('attribute_unit_impact'), Tools::getValue('attribute_ecotax'), 0, Tools::getValue('id_image_attr'), Tools::getValue('attribute_reference'), null, Tools::getValue('attribute_ean13'), Tools::getValue('attribute_default'), Tools::getValue('attribute_location'), Tools::getValue('attribute_upc'), Tools::getValue('attribute_trade_margin'), Tools::getValue('attribute_minimal_quantity'), array(), Tools::getValue('available_date_attribute')
);
StockAvailable::setProductDependsOnStock((int) $product->id, $product->depends_on_stock, null, (int) $id_product_attribute);
StockAvailable::setProductOutOfStock((int) $product->id, $product->out_of_stock, null, (int) $id_product_attribute);
}
} else {
$this->errors[] = Tools::displayError('You do not have permission to') . '<hr>' . Tools::displayError('edit here.');
}
}
if (!count($this->errors)) {
$combination = new Combination((int) $id_product_attribute);
$combination->setAttributes(Tools::getValue('attribute_combination_list'));
// PSHOWIMPORTER MOD
if ((bool) Configuration::getGlobalValue('pshowimporter_mod_combination_dimensions')) {
$combination->width = (float) Tools::getValue('attribute_width');
$combination->height = (float) Tools::getValue('attribute_height');
$combination->depth = (float) Tools::getValue('attribute_depth');
$combination->setFieldsToUpdate(array('width', 'height', 'depth'));
$combination->update(false);
}
// / PSHOWIMPORTER MOD
//
// images could be deleted before
$id_images = Tools::getValue('id_image_attr');
if (!empty($id_images)) {
$combination->setImages($id_images);
}
$product->checkDefaultAttributes();
if (Tools::getValue('attribute_default')) {
Product::updateDefaultAttribute((int) $product->id);
if (isset($id_product_attribute)) {
$product->cache_default_attribute = (int) $id_product_attribute;
}
if ($available_date = Tools::getValue('available_date_attribute')) {
$product->setAvailableDate($available_date);
} else {
$product->setAvailableDate();
}
}
}
}
}
}
}