PATH:
home
/
beestk
/
lpda
/
classes
<?php /** * 2007-2019 PrestaShop and Contributors * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://www.prestashop.com for more information. * * @author PrestaShop SA <contact@prestashop.com> * @copyright 2007-2019 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class GroupReductionCore extends ObjectModel { public $id_group; public $id_category; public $reduction; /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'group_reduction', 'primary' => 'id_group_reduction', 'fields' => array( 'id_group' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'id_category' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'reduction' => array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true), ), ); protected static $reduction_cache = array(); public function add($autodate = true, $null_values = false) { return parent::add($autodate, $null_values) && $this->_setCache(); } public function update($null_values = false) { return parent::update($null_values) && $this->_updateCache(); } public function delete() { $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT cp.`id_product` FROM `' . _DB_PREFIX_ . 'category_product` cp WHERE cp.`id_category` = ' . (int) $this->id_category ); $ids = array(); foreach ($products as $row) { $ids[] = $row['id_product']; } if ($ids) { Db::getInstance()->delete('product_group_reduction_cache', 'id_product IN (' . implode(', ', $ids) . ')'); } return parent::delete(); } protected function _clearCache() { return Db::getInstance()->delete('product_group_reduction_cache', 'id_group = ' . (int) $this->id_group); } protected function _setCache() { $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT cp.`id_product` FROM `' . _DB_PREFIX_ . 'category_product` cp WHERE cp.`id_category` = ' . (int) $this->id_category ); $values = array(); foreach ($products as $row) { $values[] = '(' . (int) $row['id_product'] . ', ' . (int) $this->id_group . ', ' . (float) $this->reduction . ')'; } if (count($values)) { $query = 'INSERT INTO `' . _DB_PREFIX_ . 'product_group_reduction_cache` (`id_product`, `id_group`, `reduction`) VALUES ' . implode(', ', $values) . ' ON DUPLICATE KEY UPDATE `reduction` = IF(VALUES(`reduction`) > `reduction`, VALUES(`reduction`), `reduction`)'; return Db::getInstance()->execute($query); } return true; } protected function _updateCache() { $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT cp.`id_product` FROM `' . _DB_PREFIX_ . 'category_product` cp WHERE cp.`id_category` = ' . (int) $this->id_category, false ); $ids = array(); foreach ($products as $product) { $ids[] = $product['id_product']; } $result = true; if ($ids) { $result &= Db::getInstance()->update('product_group_reduction_cache', array( 'reduction' => (float) $this->reduction, ), 'id_product IN(' . implode(', ', $ids) . ') AND id_group = ' . (int) $this->id_group); } return $result; } public static function getGroupReductions($id_group, $id_lang) { $lang = $id_lang . Shop::addSqlRestrictionOnLang('cl'); return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT gr.`id_group_reduction`, gr.`id_group`, gr.`id_category`, gr.`reduction`, cl.`name` AS category_name FROM `' . _DB_PREFIX_ . 'group_reduction` gr LEFT JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (cl.`id_category` = gr.`id_category` AND cl.`id_lang` = ' . (int) $lang . ') WHERE `id_group` = ' . (int) $id_group ); } public static function getValueForProduct($id_product, $id_group) { if (!Group::isFeatureActive()) { return 0; } if (!isset(self::$reduction_cache[$id_product . '-' . $id_group])) { self::$reduction_cache[$id_product . '-' . $id_group] = Db::getInstance()->getValue(' SELECT `reduction` FROM `' . _DB_PREFIX_ . 'product_group_reduction_cache` WHERE `id_product` = ' . (int) $id_product . ' AND `id_group` = ' . (int) $id_group); } // Should return string (decimal in database) and not a float return self::$reduction_cache[$id_product . '-' . $id_group]; } public static function doesExist($id_group, $id_category) { return (bool) Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT `id_group` FROM `' . _DB_PREFIX_ . 'group_reduction` WHERE `id_group` = ' . (int) $id_group . ' AND `id_category` = ' . (int) $id_category); } public static function getGroupsByCategoryId($id_category) { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT gr.`id_group` as id_group, gr.`reduction` as reduction, id_group_reduction FROM `' . _DB_PREFIX_ . 'group_reduction` gr WHERE `id_category` = ' . (int) $id_category ); } /** * @deprecated 1.5.3.0 * * @param int $id_category * * @return array|null */ public static function getGroupByCategoryId($id_category) { Tools::displayAsDeprecated('Use GroupReduction::getGroupsByCategoryId($id_category)'); return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT gr.`id_group` as id_group, gr.`reduction` as reduction, id_group_reduction FROM `' . _DB_PREFIX_ . 'group_reduction` gr WHERE `id_category` = ' . (int) $id_category, false); } public static function getGroupsReductionByCategoryId($id_category) { return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT gr.`id_group_reduction` as id_group_reduction, id_group FROM `' . _DB_PREFIX_ . 'group_reduction` gr WHERE `id_category` = ' . (int) $id_category ); } /** * @deprecated 1.5.3.0 * * @param int $id_category * * @return array|null */ public static function getGroupReductionByCategoryId($id_category) { Tools::displayAsDeprecated('Use GroupReduction::getGroupsByCategoryId($id_category)'); return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT gr.`id_group_reduction` as id_group_reduction FROM `' . _DB_PREFIX_ . 'group_reduction` gr WHERE `id_category` = ' . (int) $id_category, false); } public static function setProductReduction($id_product, $id_group = null, $id_category = null, $reduction = null) { $res = true; GroupReduction::deleteProductReduction((int) $id_product); $categories = Product::getProductCategories((int) $id_product); if ($categories) { foreach ($categories as $category) { $reductions = GroupReduction::getGroupsByCategoryId((int) $category); if ($reductions) { foreach ($reductions as $reduction) { $current_group_reduction = new GroupReduction((int) $reduction['id_group_reduction']); $res &= $current_group_reduction->_setCache(); } } } } return $res; } public static function deleteProductReduction($id_product) { $query = 'DELETE FROM `' . _DB_PREFIX_ . 'product_group_reduction_cache` WHERE `id_product` = ' . (int) $id_product; if (Db::getInstance()->execute($query) === false) { return false; } return true; } public static function duplicateReduction($id_product_old, $id_product) { $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS( ' SELECT pgr.`id_product`, pgr.`id_group`, pgr.`reduction` FROM `' . _DB_PREFIX_ . 'product_group_reduction_cache` pgr WHERE pgr.`id_product` = ' . (int) $id_product_old ); if (!$res) { return true; } $query = ''; foreach ($res as $row) { $query .= 'INSERT INTO `' . _DB_PREFIX_ . 'product_group_reduction_cache` (`id_product`, `id_group`, `reduction`) VALUES '; $query .= '(' . (int) $id_product . ', ' . (int) $row['id_group'] . ', ' . (float) $row['reduction'] . ') ON DUPLICATE KEY UPDATE `reduction` = ' . (float) $row['reduction'] . ';'; } return Db::getInstance()->execute($query); } public static function deleteCategory($id_category) { $query = 'DELETE FROM `' . _DB_PREFIX_ . 'group_reduction` WHERE `id_category` = ' . (int) $id_category; if (Db::getInstance()->execute($query) === false) { return false; } return true; } }
[+]
..
[-] Tag.php
[open]
[+]
proxy
[-] Translate.php
[open]
[-] Meta.php
[open]
[-] Image.php
[open]
[-] Access.php
[open]
[+]
pdf
[-] Manufacturer.php
[open]
[+]
log
[-] Country.php
[open]
[-] ValidateConstraintTranslator.php
[open]
[-] Dispatcher.php
[open]
[+]
range
[-] DateRange.php
[open]
[-] .htaccess
[open]
[-] Context.php
[open]
[-] PrestaShopBackup.php
[open]
[+]
shop
[-] Media.php
[open]
[-] Pack.php
[open]
[-] LocalizationPack.php
[open]
[-] RequestSql.php
[open]
[-] Windows.php
[open]
[-] Uploader.php
[open]
[+]
db
[-] Search.php
[open]
[-] PrestaShopLogger.php
[open]
[-] Delivery.php
[open]
[-] TranslatedConfiguration.php
[open]
[-] Page.php
[open]
[-] Profile.php
[open]
[+]
exception
[-] Curve.php
[open]
[-] Connection.php
[open]
[+]
container
[-] AddressChecksumCore.php
[open]
[-] Gender.php
[open]
[-] Contact.php
[open]
[+]
module
[-] Store.php
[open]
[-] ProductSupplier.php
[open]
[-] PaymentModule.php
[open]
[+]
tax
[+]
cache
[+]
assets
[+]
form
[-] ProductSale.php
[open]
[-] Hook.php
[open]
[-] CustomerThread.php
[open]
[-] FileUploader.php
[open]
[-] QqUploadedFileXhr.php
[open]
[-] QuickAccess.php
[open]
[+]
controller
[-] CMS.php
[open]
[-] Mail.php
[open]
[-] Carrier.php
[open]
[-] Alias.php
[open]
[-] ProductPresenterFactory.php
[open]
[-] ImageManager.php
[open]
[-] Validate.php
[open]
[-] Tools.php
[open]
[-] Configuration.php
[open]
[-] CSV.php
[open]
[-] ProductAssembler.php
[open]
[-] ConfigurationTest.php
[open]
[-] Cookie.php
[open]
[-] Zone.php
[open]
[-] AddressFormat.php
[open]
[+]
tree
[-] ProductDownload.php
[open]
[-] Link.php
[open]
[-] Chart.php
[open]
[-] Notification.php
[open]
[-] WarehouseAddress.php
[open]
[-] Message.php
[open]
[-] PhpEncryptionLegacyEngine.php
[open]
[-] Language.php
[open]
[-] PhpEncryption.php
[open]
[+]
checkout
[-] Group.php
[open]
[-] ManufacturerAddress.php
[open]
[-] SpecificPrice.php
[open]
[-] Feature.php
[open]
[-] Upgrader.php
[open]
[-] Customer.php
[open]
[-] ObjectModel.php
[open]
[-] SpecificPriceRule.php
[open]
[+]
lang
[-] PrestaShopAutoload.php
[open]
[-] CustomerAddress.php
[open]
[-] FeatureValue.php
[open]
[-] PhpEncryptionEngine.php
[open]
[-] Customization.php
[open]
[-] PrestaShopCollection.php
[open]
[-] CMSRole.php
[open]
[-] GroupReduction.php
[open]
[-] Cart.php
[open]
[-] Attribute.php
[open]
[-] Tab.php
[open]
[-] Currency.php
[open]
[-] index.php
[open]
[-] AttributeGroup.php
[open]
[-] ConnectionsSource.php
[open]
[+]
order
[+]
webservice
[-] Guest.php
[open]
[-] CustomerMessage.php
[open]
[-] ImageType.php
[open]
[-] State.php
[open]
[-] Employee.php
[open]
[-] Risk.php
[open]
[-] ChecksumInterface.php
[open]
[-] Attachment.php
[open]
[-] CartRule.php
[open]
[-] Product.php
[open]
[+]
Smarty
[+]
stock
[-] Referrer.php
[open]
[-] Category.php
[open]
[-] QqUploadedFileForm.php
[open]
[-] PaymentFree.php
[open]
[-] CustomizationField.php
[open]
[-] CMSCategory.php
[open]
[-] SupplierAddress.php
[open]
[-] Combination.php
[open]
[-] ConfigurationKPI.php
[open]
[-] Address.php
[open]
[-] SearchEngine.php
[open]
[+]
helper
[-] Supplier.php
[open]