From 85d0861c9eb7888a8317abeb82349af2814fd346 Mon Sep 17 00:00:00 2001
From: rGaillard
Date: Wed, 21 Dec 2011 21:17:36 +0000
Subject: [PATCH] // cms_block multishop
---
classes/helper/Helper.php | 7 ++-
install-dev/php/update_modules_multishop.php | 24 +++++++++
install-dev/sql/upgrade/1.5.0.2.sql | 1 +
modules/blockcms/blockcms.php | 56 ++++++++++++++++----
4 files changed, 73 insertions(+), 15 deletions(-)
create mode 100644 install-dev/php/update_modules_multishop.php
diff --git a/classes/helper/Helper.php b/classes/helper/Helper.php
index 83382785c..b7efd2b75 100755
--- a/classes/helper/Helper.php
+++ b/classes/helper/Helper.php
@@ -324,14 +324,13 @@ class HelperCore
if ((int)$this->id)
{
- $sql = 'SELECT id_'.$type.', `'.pSQL($this->identifier).'`
- FROM `'._DB_PREFIX_.pSQL($this->table).'_'.$type.'`
- WHERE `'.pSQL($this->identifier).'` = '.(int)$this->id;
+ $sql = 'SELECT `id_'.bqSQL($type).'`, `'.bqSQL($this->identifier).'`
+ FROM `'._DB_PREFIX_.bqSQL($this->table).'_'.bqSQL($type).'`
+ WHERE `'.bqSQL($this->identifier).'` = '.(int)$this->id;
foreach (Db::getInstance()->executeS($sql) as $row)
$assos[$row['id_'.$type]] = $row['id_'.$type];
}
-
$tpl = $this->createTemplate('helper/assoshop.tpl');
$tpl->assign(array(
'input' => array(
diff --git a/install-dev/php/update_modules_multishop.php b/install-dev/php/update_modules_multishop.php
new file mode 100644
index 000000000..4b2713aca
--- /dev/null
+++ b/install-dev/php/update_modules_multishop.php
@@ -0,0 +1,24 @@
+id)
+ {
+ Db::getInstance()->execute('CREATE TABLE '._DB_PREFIX_.'blocklink_shop (
+ `id_blocklink` int(2) NOT NULL AUTO_INCREMENT,
+ `id_shop` varchar(255) NOT NULL,
+ PRIMARY KEY(`id_blocklink`, `id_shop`))
+ ENGINE='._MYSQL_ENGINE_.' default CHARSET=utf8');
+
+ Db::getInstance()->execute('
+ CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'cms_block_shop` (
+ `id_cms_block` int(10) unsigned NOT NULL auto_increment,
+ `id_shop` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`id_cms_block`, `id_shop`)
+ ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8');
+ Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'cms_block_shop (cms_block, id_shop)
+ (SELECT id_cms_block, 1 FROM '._DB_PREFIX_.'cms_block)');
+ }
+}
diff --git a/install-dev/sql/upgrade/1.5.0.2.sql b/install-dev/sql/upgrade/1.5.0.2.sql
index 935a0f4cd..e5df2997e 100644
--- a/install-dev/sql/upgrade/1.5.0.2.sql
+++ b/install-dev/sql/upgrade/1.5.0.2.sql
@@ -392,3 +392,4 @@ INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VAL
('PS_SMARTY_CONSOLE', '0', NOW(), NOW());
ALTER TABLE `PREFIX_specific_price` ADD `id_cart` INT(11) UNSIGNED NOT NULL AFTER `id_specific_price_rule`;
ALTER TABLE `PREFIX_specific_price` ADD INDEX `id_cart` (`id_cart`);
+/* PHP:update_modules_multishop.php; */;
diff --git a/modules/blockcms/blockcms.php b/modules/blockcms/blockcms.php
index ea8e505fd..c40c534ad 100755
--- a/modules/blockcms/blockcms.php
+++ b/modules/blockcms/blockcms.php
@@ -56,7 +56,6 @@ class BlockCms extends Module
!Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'cms_block`(
`id_cms_block` int(10) unsigned NOT NULL auto_increment,
- `id_shop` INT(11) UNSIGNED NOT NULL DEFAULT \'1\',
`id_cms_category` int(10) unsigned NOT NULL,
`location` tinyint(1) unsigned NOT NULL,
`position` int(10) unsigned NOT NULL default \'0\',
@@ -78,6 +77,12 @@ class BlockCms extends Module
`is_category` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id_cms_block_page`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8') OR
+ !Db::getInstance()->execute('
+ CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'cms_block_shop` (
+ `id_cms_block` int(10) unsigned NOT NULL auto_increment,
+ `id_shop` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`id_cms_block`, `id_shop`)
+ ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8') OR
!Configuration::updateValue('FOOTER_CMS', '') OR
!Configuration::updateValue('FOOTER_BLOCK_ACTIVATION', 1) OR
!Configuration::updateValue('FOOTER_POWEREDBY', 1))
@@ -90,9 +95,16 @@ class BlockCms extends Module
'position' => 0,
), 'INSERT'))
return false;
-
$id_cms_block = Db::getInstance()->Insert_ID();
$result = true;
+ $shops = Shop::getShops(true, null, true);
+ foreach ($shops as $shop)
+ $result &= Db::getInstance()->autoExecute(_DB_PREFIX_.'cms_block_shop', array(
+ 'id_cms_block' => $id_cms_block,
+ 'id_shop' => $shop
+ ), 'INSERT');
+
+
foreach (Language::getLanguages(false) as $lang)
$result &= Db::getInstance()->autoExecute(_DB_PREFIX_.'cms_block_lang', array(
'id_cms_block' => $id_cms_block,
@@ -116,7 +128,7 @@ class BlockCms extends Module
!Configuration::deleteByName('FOOTER_CMS') OR
!Configuration::deleteByName('FOOTER_BLOCK_ACTIVATION') OR
!Configuration::deleteByName('FOOTER_POWEREDBY') OR
- !Db::getInstance()->execute('DROP TABLE `'._DB_PREFIX_.'cms_block` , `'._DB_PREFIX_.'cms_block_page`, `'._DB_PREFIX_.'cms_block_lang`'))
+ !Db::getInstance()->execute('DROP TABLE `'._DB_PREFIX_.'cms_block` , `'._DB_PREFIX_.'cms_block_page`, `'._DB_PREFIX_.'cms_block_lang`, `'._DB_PREFIX_.'cms_block_shop`'))
return false;
return true;
}
@@ -206,9 +218,10 @@ class BlockCms extends Module
$cmsCategories = Db::getInstance()->executeS('
SELECT bc.`id_cms_block`, bc.`id_cms_category`, bc.`display_store`, ccl.`link_rewrite`, ccl.`name` category_name, bcl.`name` block_name
FROM `'._DB_PREFIX_.'cms_block` bc
+ LEFT JOIN `'._DB_PREFIX_.'cms_block_shop` bcs ON (bcs.id_cms_block = bc.id_cms_block)
INNER JOIN `'._DB_PREFIX_.'cms_category_lang` ccl ON (bc.`id_cms_category` = ccl.`id_cms_category`)
INNER JOIN `'._DB_PREFIX_.'cms_block_lang` bcl ON (bc.`id_cms_block` = bcl.`id_cms_block`)
- WHERE bc.`location` = '.(int)($location).' AND ccl.`id_lang` = '.(int)$context->language->id.' AND bcl.`id_lang` = '.(int)$context->language->id.' AND bc.id_shop = '.$context->shop->getID(true).'
+ WHERE bc.`location` = '.(int)($location).' AND ccl.`id_lang` = '.(int)$context->language->id.' AND bcl.`id_lang` = '.(int)$context->language->id.' AND bcs.id_shop = '.$context->shop->getID(true).'
ORDER BY `position`');
$content = array();
@@ -532,16 +545,23 @@ class BlockCms extends Module
'
.$this->l('Display "our stores" at the end of the block')
.'';
- $this->_html .= '
+ $this->_html .= '
';
+
+ $helper = new Helper();
+ $helper->id = (int)Tools::getValue('id_cms_block');
+ $helper->table = 'cms_block';
+ $helper->identifier = 'id_cms_block';
+
+ if (Shop::isFeatureActive())
+ $this->_html .= ''.$helper->renderAssoShop().'
';
+ $this->_html .= '
'.$this->l('Cancel').'
-
';
-
- $this->_html .= '
-
-
- ';
+
+
+
+ ';
}
private function _postValidation()
@@ -713,6 +733,19 @@ class BlockCms extends Module
WHERE `id_cms_block` = '.(int)$id_cms_block.'
AND `id_lang`= '.(int)$language['id_lang']);
}
+
+ if (Tools::isSubmit('submitBlockCMS') || Tools::isSubmit('editBlockCMS'))
+ {
+ $assos_shop = Tools::getValue('checkBoxShopAsso_cms_block');
+ Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'cms_block_shop WHERE id_cms_block='.(int)$id_cms_block);
+ foreach ($assos_shop as $asso)
+ foreach ($asso as $id_shop => $row)
+ Db::getInstance()->autoExecute(_DB_PREFIX_.'cms_block_shop', array(
+ 'id_cms_block' => (int)$id_cms_block,
+ 'id_shop' => (int)$id_shop,
+ ), 'INSERT');
+ }
+
$cmsBoxes = Tools::getValue('cmsBox');
if (sizeof($cmsBoxes))
foreach ($cmsBoxes as $cmsBox)
@@ -722,6 +755,7 @@ class BlockCms extends Module
INSERT INTO `'._DB_PREFIX_.'cms_block_page` (`id_cms_block`, `id_cms`, `is_category`)
VALUES('.(int)$id_cms_block.', '.(int)$cms_properties[1].', '.(int)$cms_properties[0].')');
}
+
if (Tools::isSubmit('addBlockCMS'))
Tools::redirectAdmin(AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules').'&addBlockCMSConfirmation');
elseif (Tools::isSubmit('editBlockCMS'))