[+] BO : Added new class ConfigurationKPI for KPI cache storage

This commit is contained in:
Damien Metzger
2013-09-18 15:09:04 +02:00
parent b71b594ca1
commit 39fdc8c926
9 changed files with 291 additions and 75 deletions
+32 -32
View File
@@ -97,10 +97,10 @@ class ConfigurationCore extends ObjectModel
if ($id_shop_group === null)
$id_shop_group = Shop::getContextShopGroupID(true);
$sql = 'SELECT id_configuration
FROM '._DB_PREFIX_.'configuration
WHERE name = \''.pSQL($key).'\''
.Configuration::sqlRestriction($id_shop_group, $id_shop);
$sql = 'SELECT `'.bqSQL(self::$definition['primary']).'`
FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'`
WHERE name = \''.pSQL($key).'\'
'.Configuration::sqlRestriction($id_shop_group, $id_shop);
return (int)Db::getInstance()->getValue($sql);
}
@@ -111,8 +111,8 @@ class ConfigurationCore extends ObjectModel
{
self::$_CONF = array();
$sql = 'SELECT c.`name`, cl.`id_lang`, IF(cl.`id_lang` IS NULL, c.`value`, cl.`value`) AS value, c.id_shop_group, c.id_shop
FROM `'._DB_PREFIX_.'configuration` c
LEFT JOIN `'._DB_PREFIX_.'configuration_lang` cl ON (c.id_configuration = cl.id_configuration)';
FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'` c
LEFT JOIN `'._DB_PREFIX_.bqSQL(self::$definition['table']).'_lang` cl ON (c.`'.bqSQL(self::$definition['primary']).'` = cl.`'.bqSQL(self::$definition['primary']).'`)';
if (!$results = Db::getInstance()->executeS($sql))
return;
@@ -153,7 +153,7 @@ class ConfigurationCore extends ObjectModel
{
Configuration::loadConfiguration();
if (!self::$_CONF)
return Db::getInstance()->getValue('SELECT `value` FROM `'._DB_PREFIX_.'configuration` WHERE `name` = "'.pSQL($key).'"');
return Db::getInstance()->getValue('SELECT `value` FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'` WHERE `name` = "'.pSQL($key).'"');
}
$id_lang = (int)$id_lang;
if ($id_shop === null)
@@ -323,7 +323,7 @@ class ConfigurationCore extends ObjectModel
if (!$lang)
{
// Update config not linked to lang
$result &= Db::getInstance()->update('configuration', array(
$result &= Db::getInstance()->update(self::$definition['table'], array(
'value' => pSQL($value, $html),
'date_upd' => date('Y-m-d H:i:s'),
), '`name` = \''.pSQL($key).'\''.Configuration::sqlRestriction($id_shop_group, $id_shop), 1, true);
@@ -331,13 +331,13 @@ class ConfigurationCore extends ObjectModel
else
{
// Update multi lang
$sql = 'UPDATE '._DB_PREFIX_.'configuration_lang cl
$sql = 'UPDATE `'._DB_PREFIX_.bqSQL(self::$definition['table']).'_lang` cl
SET cl.value = \''.pSQL($value, $html).'\',
cl.date_upd = NOW()
WHERE cl.id_lang = '.(int)$lang.'
AND cl.id_configuration = (
SELECT c.id_configuration
FROM '._DB_PREFIX_.'configuration c
AND cl.`'.bqSQL(self::$definition['primary']).'` = (
SELECT c.`'.bqSQL(self::$definition['primary']).'`
FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'` c
WHERE c.name = \''.pSQL($key).'\''
.Configuration::sqlRestriction($id_shop_group, $id_shop)
.')';
@@ -363,11 +363,11 @@ class ConfigurationCore extends ObjectModel
if ($lang)
{
$result &= Db::getInstance()->insert('configuration_lang', array(
'id_configuration' => $configID,
'id_lang' => $lang,
'value' => pSQL($value, $html),
'date_upd' => date('Y-m-d H:i:s'),
$result &= Db::getInstance()->insert(self::$definition['table'].'_lang', array(
self::$definition['primary'] => $configID,
'id_lang' => $lang,
'value' => pSQL($value, $html),
'date_upd' => date('Y-m-d H:i:s'),
));
}
}
@@ -390,15 +390,15 @@ class ConfigurationCore extends ObjectModel
return false;
$result = Db::getInstance()->execute('
DELETE FROM `'._DB_PREFIX_.'configuration_lang`
WHERE `id_configuration` IN (
SELECT `id_configuration`
FROM `'._DB_PREFIX_.'configuration`
DELETE FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'_lang`
WHERE ``'.bqSQL(self::$definition['primary']).'`` IN (
SELECT ``'.bqSQL(self::$definition['primary']).'``
FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'`
WHERE `name` = "'.pSQL($key).'"
)');
$result2 = Db::getInstance()->execute('
DELETE FROM `'._DB_PREFIX_.'configuration`
DELETE FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'`
WHERE `name` = "'.pSQL($key).'"');
self::$_CONF = null;
@@ -423,11 +423,11 @@ class ConfigurationCore extends ObjectModel
$id = Configuration::getIdByName($key, $id_shop_group, $id_shop);
Db::getInstance()->execute('
DELETE FROM '._DB_PREFIX_.'configuration
WHERE id_configuration = '.(int)$id);
DELETE FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'`
WHERE `'.bqSQL(self::$definition['primary']).'` = '.(int)$id);
Db::getInstance()->execute('
DELETE FROM '._DB_PREFIX_.'configuration_lang
WHERE id_configuration = '.(int)$id);
DELETE FROM `'._DB_PREFIX_.bqSQL(self::$definition['table']).'_lang`
WHERE `'.bqSQL(self::$definition['primary']).'` = '.(int)$id);
self::$_CONF = null;
}
@@ -522,15 +522,15 @@ class ConfigurationCore extends ObjectModel
public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit)
{
$query = '
SELECT DISTINCT main.`'.bqSQL($this->def['primary']).'` FROM `'._DB_PREFIX_.bqSQL($this->def['table']).'` main
SELECT DISTINCT main.`'.bqSQL($this->def['primary']).'`
FROM `'._DB_PREFIX_.bqSQL($this->def['table']).'` main
'.$sql_join.'
WHERE id_configuration NOT IN
( SELECT id_configuration
WHERE id_configuration NOT IN (
SELECT id_configuration
FROM '._DB_PREFIX_.bqSQL($this->def['table']).'_lang
) '.$sql_filter.'
'.($sql_sort != '' ? $sql_sort : '').'
'.($sql_limit != '' ? $sql_limit : '').'
';
'.($sql_limit != '' ? $sql_limit : '');
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
}
}
}
+170
View File
@@ -0,0 +1,170 @@
<?php
/*
* 2007-2013 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-2013 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 ConfigurationKPICore extends Configuration
{
public static $definition_backup;
public static function setKpiDefinition()
{
ConfigurationKPI::$definition_backup = Configuration::$definition;
Configuration::$definition['table'] = 'configuration_kpi';
Configuration::$definition['primary'] = 'id_configuration_kpi';
}
public static function unsetKpiDefinition()
{
Configuration::$definition = ConfigurationKPI::$definition_backup;
}
public static function getIdByName($key, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::getIdByName($key, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function loadConfiguration()
{
ConfigurationKPI::setKpiDefinition();
$r = parent::loadConfiguration();
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function get($key, $id_lang = null, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::get($key, $id_lang, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function getGlobalValue($key, $id_lang = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::getGlobalValue($key, $id_lang);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function getInt($key, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::getInt($key, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function getMultiple($keys, $id_lang = null, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::getMultiple($keys, $id_lang, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function hasKey($key, $id_lang = null, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::hasKey($key, $id_lang, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function set($key, $values, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::set($key, $values, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function updateGlobalValue($key, $values, $html = false)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::updateGlobalValue($key, $values, $html);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function updateValue($key, $values, $html = false, $id_shop_group = null, $id_shop = null)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::updateValue($key, $values, $html, $id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function deleteByName($key)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::deleteByName($key);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function deleteFromContext($key)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::deleteFromContext($key);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function hasContext($key, $id_lang, $context)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::hasContext($key, $id_lang, $context);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function isOverridenByCurrentContext($key)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::isOverridenByCurrentContext($key);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
public static function isLangKey($key)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::isLangKey($key);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
protected static function sqlRestriction($id_shop_group, $id_shop)
{
ConfigurationKPI::setKpiDefinition();
$r = parent::sqlRestriction($id_shop_group, $id_shop);
ConfigurationKPI::unsetKpiDefinition();
return $r;
}
}