Files
bio-concept-pharma/web/modules/jqzoomevolution/JQZoomConfig.php
2019-11-17 19:14:07 +01:00

325 lines
10 KiB
PHP

<?php
/**
* 2007-2017 PrestaShop
*
* 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:
* http://opensource.org/licenses/osl-3.0.php
* 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 http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2017 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class JQZoomConfig extends ObjectModel
{
public $id;
/** @var string Key */
public $name;
public $id_shop_group;
public $id_shop;
/** @var string Value */
public $value;
/** @var string Object creation date */
public $date_add;
/** @var string Object last modification date */
public $date_upd;
/**
* @see ObjectModel::$definition
*/
public static $definition = array(
'table' => 'jqzoomconfig',
'primary' => 'id_jqzoomconfig',
'fields' => array(
'name' => array(
'type' => self::TYPE_STRING,
'validate' => 'isConfigName',
'required' => true,
'size' => 32
),
'id_shop_group' => array('type' => self::TYPE_NOTHING, 'validate' => 'isUnsignedId'),
'id_shop' => array('type' => self::TYPE_NOTHING, 'validate' => 'isUnsignedId'),
'value' => array('type' => self::TYPE_STRING),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
),
);
/** @var array Configuration cache */
protected static $_JQZOOMCONF = null;
/** @var array Vars types */
protected static $types = array();
/**
* Return ID a configuration key
*
* @param string $key
* @param int $id_shop_group
* @param int $id_shop
* @return int
*/
public static function getIdByName($key, $id_shop_group = null, $id_shop = null)
{
if ($id_shop === null) {
$id_shop = Shop::getContextShopID();
}
if ($id_shop_group === null) {
$id_shop_group = Shop::getContextShopGroupID();
}
$sql = 'SELECT id_jqzoomconfig
FROM ' . _DB_PREFIX_ . 'jqzoomconfig
WHERE name = \'' . pSQL($key) . '\''
. JQZoomConfig::sqlRestriction($id_shop_group, $id_shop);
return (int)Db::getInstance()->getValue($sql);
}
/**
* Load all configuration data
*/
public static function loadConfiguration()
{
self::$_JQZOOMCONF = array();
$sql = 'SELECT `name`, id_shop_group, id_shop, `value` FROM `' . _DB_PREFIX_ . 'jqzoomconfig`';
if (!$results = Db::getInstance()->executeS($sql)) {
return;
}
foreach ($results as $row) {
if ($row['id_shop']) {
self::$_JQZOOMCONF['shop'][$row['id_shop']][$row['name']] = $row['value'];
} else {
if ($row['id_shop_group']) {
self::$_JQZOOMCONF['group'][$row['id_shop_group']][$row['name']] = $row['value'];
} else {
self::$_JQZOOMCONF['global'][$row['name']] = $row['value'];
}
}
}
}
/**
* Get a single configuration value (in one language only)
*
* @param string $key Key wanted
* @param null $id_shop_group
* @param null $id_shop
* @return string Value
*/
public static function get($key, $id_shop_group = null, $id_shop = null)
{
// If conf if not initialized, try manual query
if (!self::$_JQZOOMCONF) {
JQZoomConfig::loadConfiguration();
if (!self::$_JQZOOMCONF) {
return Db::getInstance()->getValue('SELECT `value` FROM `' . _DB_PREFIX_ . 'jqzoomconfig` WHERE `name` = "' . pSQL($key) . '"');
}
}
if ($id_shop === null) {
$id_shop = Shop::getContextShopID();
}
if ($id_shop_group === null) {
$id_shop_group = Shop::getContextShopGroupID();
}
if ($id_shop && JQZoomConfig::hasKey($key, null, $id_shop)) {
return self::$_JQZOOMCONF['shop'][$id_shop][$key];
} else {
if ($id_shop_group && JQZoomConfig::hasKey($key, $id_shop_group)) {
return self::$_JQZOOMCONF['group'][$id_shop_group][$key];
} else {
if (JQZoomConfig::hasKey($key)) {
return self::$_JQZOOMCONF['global'][$key];
}
}
}
return false;
}
/**
* Get a single configuration value (in one language only)
*
* @param null $id_shop_group
* @param null $id_shop
* @return string Value
*/
public static function getAll($id_shop_group = null, $id_shop = null)
{
// If conf if not initialized, try manual query
if (!self::$_JQZOOMCONF) {
JQZoomConfig::loadConfiguration();
}
if ($id_shop === null) {
$id_shop = Shop::getContextShopID();
}
if ($id_shop_group === null) {
$id_shop_group = Shop::getContextShopGroupID();
}
if ($id_shop) {
return self::$_JQZOOMCONF['shop'][$id_shop];
} else {
if ($id_shop_group) {
return self::$_JQZOOMCONF['group'][$id_shop_group];
} else {
return self::$_JQZOOMCONF['global'];
}
}
}
/**
* Check if key exists in configuration
*
* @param string $key
* @param int $id_shop_group
* @param int $id_shop
* @return bool
*/
public static function hasKey($key, $id_shop_group = null, $id_shop = null)
{
if ($id_shop) {
return isset(self::$_JQZOOMCONF['shop'][$id_shop]) && array_key_exists($key,
self::$_JQZOOMCONF['shop'][$id_shop]);
} else {
if ($id_shop_group) {
return isset(self::$_JQZOOMCONF['group'][$id_shop_group]) && array_key_exists($key,
self::$_JQZOOMCONF['group'][$id_shop_group]);
}
}
return isset(self::$_JQZOOMCONF['global']) && array_key_exists($key, self::$_JQZOOMCONF['global']);
}
/**
* Set TEMPORARY a single configuration value (in one language only)
*
* @param string $key Key wanted
* @param $value
* @param int $id_shop_group
* @param int $id_shop
*/
public static function set($key, $value, $id_shop_group = null, $id_shop = null)
{
if (!Validate::isConfigName($key)) {
die(Tools::displayError());
}
if ($id_shop === null) {
$id_shop = Shop::getContextShopID();
}
if ($id_shop_group === null) {
$id_shop_group = Shop::getContextShopGroupID();
}
if ($id_shop) {
self::$_JQZOOMCONF['shop'][$id_shop][$key] = $value;
} else {
if ($id_shop_group) {
self::$_JQZOOMCONF['group'][$id_shop_group][$key] = $value;
} else {
self::$_JQZOOMCONF['global'][$key] = $value;
}
}
}
/**
* Update configuration key and value into database (automatically insert if key does not exist)
*
* @param string $key Key
* @param $value
* @param boolean $html Specify if html is authorized in value
* @param int $id_shop_group
* @param int $id_shop
* @return bool Update result
*/
public static function updateValue($key, $value, $html = false, $id_shop_group = null, $id_shop = null)
{
if (!Validate::isConfigName($key)) {
die(Tools::displayError());
}
if ($id_shop === null) {
$id_shop = Shop::getContextShopID();
}
if ($id_shop_group === null) {
$id_shop_group = Shop::getContextShopGroupID();
}
$result = true;
if ((string)$value === JQZoomConfig::get($key, $id_shop_group, $id_shop)) {
return;
}
// If key already exists, update value
if (JQZoomConfig::hasKey($key, $id_shop_group, $id_shop)) {
// Update config not linked to lang
$result &= Db::getInstance()->update('jqzoomconfig', array(
'value' => pSQL($value, $html),
'date_upd' => date('Y-m-d H:i:s'),
), '`name` = \'' . pSQL($key) . '\'' . JQZoomConfig::sqlRestriction($id_shop_group, $id_shop), true, true);
} // If key does not exists, create it
else {
if (!$configID = JQZoomConfig::getIdByName($key, $id_shop_group, $id_shop)) {
$newConfig = new JQZoomConfig();
$newConfig->name = $key;
if ($id_shop) {
$newConfig->id_shop = (int)$id_shop;
}
if ($id_shop_group) {
$newConfig->id_shop_group = (int)$id_shop_group;
}
$newConfig->value = $value;
$result &= $newConfig->add(true, true);
$configID = $newConfig->id;
}
}
JQZoomConfig::set($key, $value, $id_shop_group, $id_shop);
return $result;
}
/**
* Add SQL restriction on shops for configuration table
*
* @param int $id_shop_group
* @param int $id_shop
* @return string
*/
protected static function sqlRestriction($id_shop_group, $id_shop)
{
if ($id_shop) {
return ' AND id_shop = ' . $id_shop;
} else {
if ($id_shop_group) {
return ' AND id_shop_group = ' . $id_shop_group . ' AND id_shop IS NULL';
} else {
return ' AND id_shop_group IS NULL AND id_shop IS NULL';
}
}
}
}