diff --git a/admin-dev/themes/default/template/controllers/themes/helpers/options/options.tpl b/admin-dev/themes/default/template/controllers/themes/helpers/options/options.tpl
index 18840f005..c75802f45 100644
--- a/admin-dev/themes/default/template/controllers/themes/helpers/options/options.tpl
+++ b/admin-dev/themes/default/template/controllers/themes/helpers/options/options.tpl
@@ -27,13 +27,22 @@
{block name="field"}
{if $field['type'] == 'theme'}
{if $field['can_display_themes']}
- {foreach $field.themes as $theme}
-
- {$theme->name}
-

-
id == $field['id_theme']}checked="checked"{/if} />
+
+
+ {foreach $field.themes as $theme}
+
+
+
+
+
+

+
+
+ {/foreach}
- {/foreach}
+
{/if}
{else}
{$smarty.block.parent}
diff --git a/admin-dev/themes/default/template/helpers/list/list_content.tpl b/admin-dev/themes/default/template/helpers/list/list_content.tpl
index 0c25c1f19..ee51e0bc4 100644
--- a/admin-dev/themes/default/template/helpers/list/list_content.tpl
+++ b/admin-dev/themes/default/template/helpers/list/list_content.tpl
@@ -30,17 +30,17 @@
class="{if isset($tr.class)} {$tr.class}{/if}"
{if isset($tr.color) && $color_on_bg}style="background-color: {$tr.color}"{/if}
>
+ {if $has_bulk_actions}
- {if {$has_bulk_actions}}
- {if isset($list_skip_actions.delete)}
- {if !in_array($tr.$identifier, $list_skip_actions.delete)}
-
- {/if}
- {else}
+ {if isset($list_skip_actions.delete)}
+ {if !in_array($tr.$identifier, $list_skip_actions.delete)}
{/if}
+ {else}
+
{/if}
|
+ {/if}
{foreach $fields_display AS $key => $params}
{block name="open_td"}
- |
+ {if $has_bulk_actions}
+ |
|
+ {/if}
{foreach $fields_display AS $key => $params}
@@ -308,12 +310,11 @@
|
{if !$simple_header && $show_filters}
+ {if $has_bulk_actions}
|
- {if $has_bulk_actions}
- --
- {/if}
+ --
|
-
+ {/if}
{* Filters (input, select, date or bool) *}
{foreach $fields_display AS $key => $params}
diff --git a/cache/class_index.php b/cache/class_index.php
index 33fe6a8d7..3b3a1df86 100644
--- a/cache/class_index.php
+++ b/cache/class_index.php
@@ -268,6 +268,8 @@
'CompareProductCore' => 'classes/CompareProduct.php',
'Configuration' => '',
'ConfigurationCore' => 'classes/Configuration.php',
+ 'ConfigurationKPI' => '',
+ 'ConfigurationKPICore' => 'classes/ConfigurationKPI.php',
'ConfigurationTest' => '',
'ConfigurationTestCore' => 'classes/ConfigurationTest.php',
'Connection' => '',
diff --git a/classes/Configuration.php b/classes/Configuration.php
index ee8871754..56eb4f072 100644
--- a/classes/Configuration.php
+++ b/classes/Configuration.php
@@ -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);
}
-}
+}
\ No newline at end of file
diff --git a/classes/ConfigurationKPI.php b/classes/ConfigurationKPI.php
new file mode 100644
index 000000000..d632a39f9
--- /dev/null
+++ b/classes/ConfigurationKPI.php
@@ -0,0 +1,170 @@
+
+* @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;
+ }
+}
\ No newline at end of file
diff --git a/controllers/admin/AdminAddressesController.php b/controllers/admin/AdminAddressesController.php
index daa424f61..51078f46b 100644
--- a/controllers/admin/AdminAddressesController.php
+++ b/controllers/admin/AdminAddressesController.php
@@ -55,7 +55,7 @@ class AdminAddressesControllerCore extends AdminController
$this->countries_array[$country['id_country']] = $country['name'];
$this->fields_list = array(
- 'id_address' => array('title' => $this->l('ID'), 'align' => 'center'),
+ 'id_address' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'firstname' => array('title' => $this->l('First Name'), 'filter_key' => 'a!firstname'),
'lastname' => array('title' => $this->l('Last Name'), 'filter_key' => 'a!lastname'),
'address1' => array('title' => $this->l('Address')),
diff --git a/controllers/admin/AdminCartsController.php b/controllers/admin/AdminCartsController.php
index 38f90fd3a..13ae6ac5c 100755
--- a/controllers/admin/AdminCartsController.php
+++ b/controllers/admin/AdminCartsController.php
@@ -48,7 +48,8 @@ class AdminCartsControllerCore extends AdminController
$this->fields_list = array(
'id_cart' => array(
'title' => $this->l('ID'),
- 'align' => 'center'
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'id_order' => array(
'title' => $this->l('Order ID'),
diff --git a/controllers/admin/AdminCategoriesController.php b/controllers/admin/AdminCategoriesController.php
index 3523e4198..3ea1a7706 100644
--- a/controllers/admin/AdminCategoriesController.php
+++ b/controllers/admin/AdminCategoriesController.php
@@ -347,9 +347,9 @@ class AdminCategoriesControllerCore extends AdminController
$helper->icon = 'icon-off';
$helper->color = 'color1';
$helper->title = $this->l('Disabled Categories');
- if (Configuration::get('PS_KPI_DISABLED_CATS') !== false)
- $helper->value = Configuration::get('PS_KPI_DISABLED_CATS');
- if (Configuration::get('PS_KPI_DISABLED_CATS_EXPIRE') < $time)
+ if (ConfigurationKPI::get('DISABLED_CATS') !== false)
+ $helper->value = ConfigurationKPI::get('DISABLED_CATS');
+ if (ConfigurationKPI::get('DISABLED_CATS_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=disabled_categories';
$kpis[] = $helper->generate();
@@ -358,9 +358,9 @@ class AdminCategoriesControllerCore extends AdminController
$helper->icon = 'icon-bookmark-empty';
$helper->color = 'color2';
$helper->title = $this->l('Empty Categories');
- if (Configuration::get('PS_KPI_EMPTY_CATS') !== false)
- $helper->value = Configuration::get('PS_KPI_EMPTY_CATS');
- if (Configuration::get('PS_KPI_EMPTY_CATS_EXPIRE') < $time)
+ if (ConfigurationKPI::get('EMPTY_CATS') !== false)
+ $helper->value = ConfigurationKPI::get('EMPTY_CATS');
+ if (ConfigurationKPI::get('EMPTY_CATS_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=empty_categories';
$kpis[] = $helper->generate();
diff --git a/controllers/admin/AdminCmsController.php b/controllers/admin/AdminCmsController.php
index 2799fa923..f862327eb 100644
--- a/controllers/admin/AdminCmsController.php
+++ b/controllers/admin/AdminCmsController.php
@@ -43,11 +43,11 @@ class AdminCmsControllerCore extends AdminController
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
$this->fields_list = array(
- 'id_cms' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
- 'link_rewrite' => array('title' => $this->l('URL'), 'width' => 'auto'),
- 'meta_title' => array('title' => $this->l('Title'), 'width' => '300', 'filter_key' => 'b!meta_title'),
- 'position' => array('title' => $this->l('Position'), 'width' => 40,'filter_key' => 'position', 'align' => 'center', 'position' => 'position'),
- 'active' => array('title' => $this->l('Displayed'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
+ 'id_cms' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
+ 'link_rewrite' => array('title' => $this->l('URL')),
+ 'meta_title' => array('title' => $this->l('Title'), 'filter_key' => 'b!meta_title'),
+ 'position' => array('title' => $this->l('Position'),'filter_key' => 'position', 'align' => 'center', 'class' => 'fixed-width-md', 'position' => 'position'),
+ 'active' => array('title' => $this->l('Displayed'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
);
// The controller can't be call directly
diff --git a/controllers/admin/AdminContactsController.php b/controllers/admin/AdminContactsController.php
index 3fd9900c5..f41350753 100644
--- a/controllers/admin/AdminContactsController.php
+++ b/controllers/admin/AdminContactsController.php
@@ -37,7 +37,7 @@ class AdminContactsControllerCore extends AdminController
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
$this->fields_list = array(
- 'id_contact' => array('title' => $this->l('ID'), 'align' => 'center'),
+ 'id_contact' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
'name' => array('title' => $this->l('Title')),
'email' => array('title' => $this->l('Email address')),
'description' => array('title' => $this->l('Description')),
diff --git a/controllers/admin/AdminCustomerThreadsController.php b/controllers/admin/AdminCustomerThreadsController.php
index b2e5a84cc..cdbf1951c 100644
--- a/controllers/admin/AdminCustomerThreadsController.php
+++ b/controllers/admin/AdminCustomerThreadsController.php
@@ -58,7 +58,9 @@ class AdminCustomerThreadsControllerCore extends AdminController
$this->fields_list = array(
'id_customer_thread' => array(
- 'title' => $this->l('ID')
+ 'title' => $this->l('ID'),
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'customer' => array(
'title' => $this->l('Customer'),
diff --git a/controllers/admin/AdminCustomersController.php b/controllers/admin/AdminCustomersController.php
index 3f587b60f..adc92569a 100644
--- a/controllers/admin/AdminCustomersController.php
+++ b/controllers/admin/AdminCustomersController.php
@@ -79,7 +79,8 @@ class AdminCustomersControllerCore extends AdminController
$this->fields_list = array(
'id_customer' => array(
'title' => $this->l('ID'),
- 'align' => 'center'
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'id_gender' => array(
'title' => $this->l('Title'),
diff --git a/controllers/admin/AdminEmployeesController.php b/controllers/admin/AdminEmployeesController.php
index 8ac6b9d9e..ff28ae30d 100644
--- a/controllers/admin/AdminEmployeesController.php
+++ b/controllers/admin/AdminEmployeesController.php
@@ -72,12 +72,12 @@ class AdminEmployeesControllerCore extends AdminController
$this->profiles_array[$profile['name']] = $profile['name'];
$this->fields_list = array(
- 'id_employee' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
- 'lastname' => array('title' => $this->l('Last Name'), 'width' => 'auto'),
- 'firstname' => array('title' => $this->l('First Name'), 'width' => 130),
- 'email' => array('title' => $this->l('Email address'), 'width' => 180),
- 'profile' => array('title' => $this->l('Profile'), 'width' => 90, 'type' => 'select', 'list' => $this->profiles_array, 'filter_key' => 'pl!name'),
- 'active' => array('title' => $this->l('Can log in'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'width' => 30),
+ 'id_employee' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
+ 'lastname' => array('title' => $this->l('Last Name')),
+ 'firstname' => array('title' => $this->l('First Name')),
+ 'email' => array('title' => $this->l('Email address')),
+ 'profile' => array('title' => $this->l('Profile'), 'type' => 'select', 'list' => $this->profiles_array, 'filter_key' => 'pl!name'),
+ 'active' => array('title' => $this->l('Can log in'), 'align' => 'center', 'active' => 'status', 'type' => 'bool'),
);
$this->fields_options = array(
diff --git a/controllers/admin/AdminGendersController.php b/controllers/admin/AdminGendersController.php
index f924f2f82..ca7921ea1 100644
--- a/controllers/admin/AdminGendersController.php
+++ b/controllers/admin/AdminGendersController.php
@@ -53,7 +53,8 @@ class AdminGendersControllerCore extends AdminController
$this->fields_list = array(
'id_gender' => array(
'title' => $this->l('ID'),
- 'align' => 'center'
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'name' => array(
'title' => $this->l('Name'),
diff --git a/controllers/admin/AdminGroupsController.php b/controllers/admin/AdminGroupsController.php
index c3ce9a3d4..2ff739af9 100644
--- a/controllers/admin/AdminGroupsController.php
+++ b/controllers/admin/AdminGroupsController.php
@@ -46,7 +46,8 @@ class AdminGroupsControllerCore extends AdminController
$this->fields_list = array(
'id_group' => array(
'title' => $this->l('ID'),
- 'align' => 'center'
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'name' => array(
'title' => $this->l('Name'),
diff --git a/controllers/admin/AdminImagesController.php b/controllers/admin/AdminImagesController.php
index 49df75b47..476e6cb21 100644
--- a/controllers/admin/AdminImagesController.php
+++ b/controllers/admin/AdminImagesController.php
@@ -41,8 +41,8 @@ class AdminImagesControllerCore extends AdminController
$this->addRowAction('delete');
$this->fields_list = array(
- 'id_image_type' => array('title' => $this->l('ID'), 'align' => 'center'),
- 'name' => array('title' => $this->l('Name'), 'width' => 'auto'),
+ 'id_image_type' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
+ 'name' => array('title' => $this->l('Name')),
'width' => array('title' => $this->l('Width'), 'suffix' => ' px'),
'height' => array('title' => $this->l('Height'), 'suffix' => ' px'),
'products' => array('title' => $this->l('Products'), 'align' => 'center', 'type' => 'bool', 'callback' => 'printEntityActiveIcon', 'orderby' => false),
diff --git a/controllers/admin/AdminOrdersController.php b/controllers/admin/AdminOrdersController.php
index c4ddef13c..5d34e2c48 100755
--- a/controllers/admin/AdminOrdersController.php
+++ b/controllers/admin/AdminOrdersController.php
@@ -1252,11 +1252,11 @@ class AdminOrdersControllerCore extends AdminController
$helper->color = 'color1';
$helper->title = $this->l('Conversion Rate');
$helper->subtitle = $this->l('30 days');
- if (Configuration::get('PS_KPI_CONVERSION_RATE') !== false)
- $helper->value = Configuration::get('PS_KPI_CONVERSION_RATE');
- if (Configuration::get('PS_KPI_CONVERSION_RATE_CHART') !== false)
- $helper->data = Configuration::get('PS_KPI_CONVERSION_RATE_CHART');
- if (Configuration::get('PS_KPI_CONVERSION_RATE_EXPIRE') < $time)
+ if (ConfigurationKPI::get('CONVERSION_RATE') !== false)
+ $helper->value = ConfigurationKPI::get('CONVERSION_RATE');
+ if (ConfigurationKPI::get('CONVERSION_RATE_CHART') !== false)
+ $helper->data = ConfigurationKPI::get('CONVERSION_RATE_CHART');
+ if (ConfigurationKPI::get('CONVERSION_RATE_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=conversion_rate';
$kpis[] = $helper->generate();
@@ -1266,9 +1266,9 @@ class AdminOrdersControllerCore extends AdminController
$helper->color = 'color2';
$helper->title = $this->l('Abandoned Carts');
$helper->subtitle = $this->l('Today');
- if (Configuration::get('PS_KPI_ABANDONED_CARTS') !== false)
- $helper->value = Configuration::get('PS_KPI_ABANDONED_CARTS');
- if (Configuration::get('PS_KPI_ABANDONED_CARTS_EXPIRE') < $time)
+ if (ConfigurationKPI::get('ABANDONED_CARTS') !== false)
+ $helper->value = ConfigurationKPI::get('ABANDONED_CARTS');
+ if (ConfigurationKPI::get('ABANDONED_CARTS_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=abandoned_cart';
$kpis[] = $helper->generate();
@@ -1278,9 +1278,9 @@ class AdminOrdersControllerCore extends AdminController
$helper->color = 'color3';
$helper->title = $this->l('Average Order Value');
$helper->subtitle = $this->l('30 days');
- if (Configuration::get('PS_KPI_AVG_ORDER_VALUE') !== false)
- $helper->value = Configuration::get('PS_KPI_AVERAGE_ORDER_VALUE');
- if (Configuration::get('PS_KPI_AVG_ORDER_VALUE_EXPIRE') < $time)
+ if (ConfigurationKPI::get('AVG_ORDER_VALUE') !== false)
+ $helper->value = ConfigurationKPI::get('AVERAGE_ORDER_VALUE');
+ if (ConfigurationKPI::get('AVG_ORDER_VALUE_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=average_order_value';
$kpis[] = $helper->generate();
@@ -1290,9 +1290,9 @@ class AdminOrdersControllerCore extends AdminController
$helper->color = 'color4';
$helper->title = $this->l('Net Profit per Visitor');
$helper->subtitle = $this->l('30 days');
- if (Configuration::get('PS_KPI_NETPROFIT_VISITOR') !== false)
- $helper->value = Configuration::get('PS_KPI_NETPROFIT_VISITOR');
- if (Configuration::get('PS_KPI_NETPROFIT_VISITOR_EXPIRE') < $time)
+ if (ConfigurationKPI::get('NETPROFIT_VISITOR') !== false)
+ $helper->value = ConfigurationKPI::get('NETPROFIT_VISITOR');
+ if (ConfigurationKPI::get('NETPROFIT_VISITOR_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=netprofit_visitor';
$kpis[] = $helper->generate();
diff --git a/controllers/admin/AdminPreferencesController.php b/controllers/admin/AdminPreferencesController.php
index 039b9ccf8..3959a2634 100644
--- a/controllers/admin/AdminPreferencesController.php
+++ b/controllers/admin/AdminPreferencesController.php
@@ -142,7 +142,7 @@ class AdminPreferencesControllerCore extends AdminController
if (!Tools::usingSecureMode() && !Configuration::get('PS_SSL_ENABLED'))
{
$fields['PS_SSL_ENABLED']['type'] = 'disabled';
- $fields['PS_SSL_ENABLED']['disabled'] = ''.
+ $fields['PS_SSL_ENABLED']['disabled'] = ''.
$this->l('Please click here to use HTTPS protocol before enabling SSL.').'';
}
diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php
index 0af85ce8d..24ef4cd7c 100644
--- a/controllers/admin/AdminProductsController.php
+++ b/controllers/admin/AdminProductsController.php
@@ -2299,9 +2299,9 @@ class AdminProductsControllerCore extends AdminController
$helper->icon = 'icon-archive';
$helper->color = 'color1';
$helper->title = $this->l('Products in Stock');
- if (Configuration::get('PS_KPI_PRODUCTS_STOCK') !== false)
- $helper->value = Configuration::get('PS_KPI_PRODUCTS_STOCK');
- if (Configuration::get('PS_KPI_PRODUCTS_STOCK_EXPIRE') < $time)
+ if (ConfigurationKPI::get('PRODUCTS_STOCK') !== false)
+ $helper->value = ConfigurationKPI::get('PRODUCTS_STOCK');
+ if (ConfigurationKPI::get('PRODUCTS_STOCK_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=products_stock';
$kpis[] = $helper->generate();
@@ -2310,9 +2310,9 @@ class AdminProductsControllerCore extends AdminController
$helper->icon = 'icon-tags';
$helper->color = 'color2';
$helper->title = $this->l('Average Gross Margin');
- if (Configuration::get('PS_KPI_AVG_GROSS_MARGIN') !== false)
- $helper->value = Configuration::get('PS_KPI_AVG_GROSS_MARGIN');
- if (Configuration::get('PS_KPI_AVG_GROSS_MARGIN_EXPIRE') < $time)
+ if (ConfigurationKPI::get('AVG_GROSS_MARGIN') !== false)
+ $helper->value = ConfigurationKPI::get('AVG_GROSS_MARGIN');
+ if (ConfigurationKPI::get('AVG_GROSS_MARGIN_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=avg_gross_margin';
$kpis[] = $helper->generate();
diff --git a/controllers/admin/AdminProfilesController.php b/controllers/admin/AdminProfilesController.php
index 1ae906577..fae0ec52d 100644
--- a/controllers/admin/AdminProfilesController.php
+++ b/controllers/admin/AdminProfilesController.php
@@ -46,7 +46,8 @@ class AdminProfilesControllerCore extends AdminController
$this->fields_list = array(
'id_profile' => array(
'title' => $this->l('ID'),
- 'align' => 'center'
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'name' => array('title' => $this->l('Name'))
);
diff --git a/controllers/admin/AdminSearchConfController.php b/controllers/admin/AdminSearchConfController.php
index 753d44311..405890b0f 100644
--- a/controllers/admin/AdminSearchConfController.php
+++ b/controllers/admin/AdminSearchConfController.php
@@ -47,9 +47,9 @@ class AdminSearchConfControllerCore extends AdminController
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
$this->fields_list = array(
- 'alias' => array('title' => $this->l('Aliases'), 'width' => 'auto'),
- 'search' => array('title' => $this->l('Search'), 'width' => 100),
- 'active' => array('title' => $this->l('Status'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
+ 'alias' => array('title' => $this->l('Aliases')),
+ 'search' => array('title' => $this->l('Search')),
+ 'active' => array('title' => $this->l('Status'), 'class' => 'fixed-width-md', 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
);
// Search options
diff --git a/controllers/admin/AdminStatsController.php b/controllers/admin/AdminStatsController.php
index 41e2b2878..d7cb3d385 100644
--- a/controllers/admin/AdminStatsController.php
+++ b/controllers/admin/AdminStatsController.php
@@ -80,9 +80,9 @@ class AdminStatsControllerCore extends AdminStatsTabController
$value = 0;
$value .= '%';
- Configuration::updateValue('PS_KPI_CONVERSION_RATE_CHART', Tools::jsonEncode($data));
- Configuration::updateValue('PS_KPI_CONVERSION_RATE', $value);
- Configuration::updateValue('PS_KPI_CONVERSION_RATE_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
+ ConfigurationKPI::updateValue('CONVERSION_RATE_CHART', Tools::jsonEncode($data));
+ ConfigurationKPI::updateValue('CONVERSION_RATE', $value);
+ ConfigurationKPI::updateValue('CONVERSION_RATE_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
break;
case 'abandoned_cart':
@@ -92,8 +92,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
WHERE `date_add` BETWEEN "'.pSQL(date('Y-m-d')).' 00:00:00" AND "'.pSQL(date('Y-m-d')).' 23:59:59"
AND id_cart NOT IN (SELECT id_cart FROM `'._DB_PREFIX_.'orders`)
'.Shop::addSqlRestriction(Shop::SHARE_ORDER));
- Configuration::updateValue('PS_KPI_ABANDONED_CARTS', $value);
- Configuration::updateValue('PS_KPI_ABANDONED_CARTS_EXPIRE', strtotime('+10 min'));
+ ConfigurationKPI::updateValue('ABANDONED_CARTS', $value);
+ ConfigurationKPI::updateValue('ABANDONED_CARTS_EXPIRE', strtotime('+10 min'));
break;
case 'products_stock':
@@ -103,8 +103,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
'.Shop::addSqlAssociation('product', 'p').'
'.Product::sqlStock('p'));
$value = round($row['total'] ? $row['stock'] / $row['total'] : 0, 2).'%';
- Configuration::updateValue('PS_KPI_PRODUCTS_STOCK', $value);
- Configuration::updateValue('PS_KPI_PRODUCTS_STOCK_EXPIRE', strtotime('+10 min'));
+ ConfigurationKPI::updateValue('PRODUCTS_STOCK', $value);
+ ConfigurationKPI::updateValue('PRODUCTS_STOCK_EXPIRE', strtotime('+10 min'));
break;
case 'avg_gross_margin':
@@ -113,8 +113,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
FROM `'._DB_PREFIX_.'product` p
'.Shop::addSqlAssociation('product', 'p'));
$value = round(100 * $value, 2).'%';
- Configuration::updateValue('PS_KPI_AVG_GROSS_MARGIN', $value);
- Configuration::updateValue('PS_KPI_AVG_GROSS_MARGIN_EXPIRE', strtotime('+6 hour'));
+ ConfigurationKPI::updateValue('AVG_GROSS_MARGIN', $value);
+ ConfigurationKPI::updateValue('AVG_GROSS_MARGIN_EXPIRE', strtotime('+6 hour'));
break;
case 'disabled_categories':
@@ -123,8 +123,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
FROM `'._DB_PREFIX_.'category` c
'.Shop::addSqlAssociation('category', 'c').'
WHERE c.active = 0');
- Configuration::updateValue('PS_KPI_DISABLED_CATS', $value);
- Configuration::updateValue('PS_KPI_DISABLED_CATS_EXPIRE', strtotime('+2 hour'));
+ ConfigurationKPI::updateValue('DISABLED_CATS', $value);
+ ConfigurationKPI::updateValue('DISABLED_CATS_EXPIRE', strtotime('+2 hour'));
break;
case 'empty_categories':
@@ -137,8 +137,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
FROM `'._DB_PREFIX_.'category_product` cp
'.Shop::addSqlAssociation('category', 'cp'));
$value = intval($total - $used);
- Configuration::updateValue('PS_KPI_EMPTY_CATS', $value);
- Configuration::updateValue('PS_KPI_EMPTY_CATS_EXPIRE', strtotime('+2 hour'));
+ ConfigurationKPI::updateValue('EMPTY_CATS', $value);
+ ConfigurationKPI::updateValue('EMPTY_CATS_EXPIRE', strtotime('+2 hour'));
break;
case 'average_order_value':
@@ -150,8 +150,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
WHERE `invoice_date` BETWEEN "'.pSQL(date('Y-m-d', strtotime('-31 day'))).' 00:00:00" AND "'.pSQL(date('Y-m-d', strtotime('-1 day'))).' 23:59:59"
'.Shop::addSqlRestriction(Shop::SHARE_ORDER));
$value = Tools::displayPrice($row['orders'] ? $row['total_paid_tax_excl'] / $row['orders'] : 0, $currency);
- Configuration::updateValue('PS_KPI_AVG_ORDER_VALUE', $value);
- Configuration::updateValue('PS_KPI_AVG_ORDER_VALUE_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
+ ConfigurationKPI::updateValue('AVG_ORDER_VALUE', $value);
+ ConfigurationKPI::updateValue('AVG_ORDER_VALUE_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
break;
case 'netprofit_visitor':
@@ -207,8 +207,8 @@ class AdminStatsControllerCore extends AdminStatsTabController
else
$value = Tools::displayPrice(0, $currency);
- Configuration::updateValue('PS_KPI_NETPROFIT_VISITOR', $value);
- Configuration::updateValue('PS_KPI_NETPROFIT_VISITOR_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
+ ConfigurationKPI::updateValue('NETPROFIT_VISITOR', $value);
+ ConfigurationKPI::updateValue('NETPROFIT_VISITOR_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
break;
default:
diff --git a/controllers/admin/AdminStoresController.php b/controllers/admin/AdminStoresController.php
index 4e7092bfb..336a79d54 100644
--- a/controllers/admin/AdminStoresController.php
+++ b/controllers/admin/AdminStoresController.php
@@ -45,16 +45,16 @@ class AdminStoresControllerCore extends AdminController
);
$this->fields_list = array(
- 'id_store' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
- 'name' => array('title' => $this->l('Name'), 'width' => 120, 'filter_key' => 'a!name'),
- 'address1' => array('title' => $this->l('Address'), 'width' => 120, 'filter_key' => 'a!address1'),
- 'city' => array('title' => $this->l('City'), 'width' => 100),
- 'postcode' => array('title' => $this->l('Zip code'), 'width' => 50),
- 'state' => array('title' => $this->l('State'), 'width' => 100, 'filter_key' => 'st!name'),
- 'country' => array('title' => $this->l('Country'), 'width' => 100, 'filter_key' => 'cl!name'),
- 'phone' => array('title' => $this->l('Phone'), 'width' => 70),
- 'fax' => array('title' => $this->l('Fax'), 'width' => 70),
- 'active' => array('title' => $this->l('Enabled'), 'width' => 70, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
+ 'id_store' => array('title' => $this->l('ID'), 'align' => 'center', 'class' => 'fixed-width-xs'),
+ 'name' => array('title' => $this->l('Name'), 'filter_key' => 'a!name'),
+ 'address1' => array('title' => $this->l('Address'), 'filter_key' => 'a!address1'),
+ 'city' => array('title' => $this->l('City')),
+ 'postcode' => array('title' => $this->l('Zip code')),
+ 'state' => array('title' => $this->l('State'), 'filter_key' => 'st!name'),
+ 'country' => array('title' => $this->l('Country'), 'filter_key' => 'cl!name'),
+ 'phone' => array('title' => $this->l('Phone')),
+ 'fax' => array('title' => $this->l('Fax')),
+ 'active' => array('title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
);
$this->bulk_actions = array(
diff --git a/controllers/admin/AdminTabsController.php b/controllers/admin/AdminTabsController.php
index 43e211571..28a04406d 100644
--- a/controllers/admin/AdminTabsController.php
+++ b/controllers/admin/AdminTabsController.php
@@ -46,7 +46,9 @@ class AdminTabsControllerCore extends AdminController
$this->fields_list = array(
'id_tab' => array(
- 'title' => $this->l('ID')
+ 'title' => $this->l('ID'),
+ 'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'name' => array(
'title' => $this->l('Name')
@@ -71,7 +73,8 @@ class AdminTabsControllerCore extends AdminController
'position' => array(
'title' => $this->l('Position'),
'filter_key' => 'a!position',
- 'position' => 'position'
+ 'position' => 'position',
+ 'class' => 'fixed-width-md'
)
);
diff --git a/controllers/admin/AdminThemesController.php b/controllers/admin/AdminThemesController.php
index c012b7358..93d5b5ed4 100644
--- a/controllers/admin/AdminThemesController.php
+++ b/controllers/admin/AdminThemesController.php
@@ -210,6 +210,7 @@ class AdminThemesControllerCore extends AdminController
'id_theme' => array(
'title' => $this->l('ID'),
'align' => 'center',
+ 'class' => 'fixed-width-xs'
),
'name' => array(
'title' => $this->l('Name'),
diff --git a/install-dev/data/db_structure.sql b/install-dev/data/db_structure.sql
index 27b4bc685..e0a2a934f 100644
--- a/install-dev/data/db_structure.sql
+++ b/install-dev/data/db_structure.sql
@@ -440,6 +440,28 @@ CREATE TABLE `PREFIX_configuration_lang` (
PRIMARY KEY (`id_configuration`,`id_lang`)
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
+CREATE TABLE `PREFIX_configuration_kpi` (
+ `id_configuration_kpi` int(10) unsigned NOT NULL auto_increment,
+ `id_shop_group` INT(11) UNSIGNED DEFAULT NULL,
+ `id_shop` INT(11) UNSIGNED DEFAULT NULL,
+ `name` varchar(32) NOT NULL,
+ `value` text,
+ `date_add` datetime NOT NULL,
+ `date_upd` datetime NOT NULL,
+ PRIMARY KEY (`id_configuration_kpi`),
+ KEY `name` (`name`),
+ KEY `id_shop` (`id_shop`),
+ KEY `id_shop_group` (`id_shop_group`)
+) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
+
+CREATE TABLE `PREFIX_configuration_kpi_lang` (
+ `id_configuration_kpi` int(10) unsigned NOT NULL,
+ `id_lang` int(10) unsigned NOT NULL,
+ `value` text,
+ `date_upd` datetime default NULL,
+ PRIMARY KEY (`id_configuration_kpi`,`id_lang`)
+) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
+
CREATE TABLE `PREFIX_connections` (
`id_connections` int(10) unsigned NOT NULL auto_increment,
`id_shop_group` INT(11) UNSIGNED NOT NULL DEFAULT '1',
diff --git a/install-dev/upgrade/sql/1.6.0.1.sql b/install-dev/upgrade/sql/1.6.0.1.sql
index 1c10e1fad..00db9a99f 100644
--- a/install-dev/upgrade/sql/1.6.0.1.sql
+++ b/install-dev/upgrade/sql/1.6.0.1.sql
@@ -4,3 +4,25 @@ INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VAL
ALTER TABLE `PREFIX_employee` CHANGE `bo_show_screencast` `bo_menu` TINYINT(1) NOT NULL DEFAULT '0';
UPDATE `PREFIX_employee` SET bo_menu = 0;
+
+CREATE TABLE `PREFIX_configuration_kpi` (
+ `id_configuration_kpi` int(10) unsigned NOT NULL auto_increment,
+ `id_shop_group` INT(11) UNSIGNED DEFAULT NULL,
+ `id_shop` INT(11) UNSIGNED DEFAULT NULL,
+ `name` varchar(32) NOT NULL,
+ `value` text,
+ `date_add` datetime NOT NULL,
+ `date_upd` datetime NOT NULL,
+ PRIMARY KEY (`id_configuration_kpi`),
+ KEY `name` (`name`),
+ KEY `id_shop` (`id_shop`),
+ KEY `id_shop_group` (`id_shop_group`)
+) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
+
+CREATE TABLE `PREFIX_configuration_kpi_lang` (
+ `id_configuration_kpi` int(10) unsigned NOT NULL,
+ `id_lang` int(10) unsigned NOT NULL,
+ `value` text,
+ `date_upd` datetime default NULL,
+ PRIMARY KEY (`id_configuration_kpi`,`id_lang`)
+) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
| |