//add payment module restriction when enable country
This commit is contained in:
@@ -344,4 +344,30 @@ class CountryCore extends ObjectModel
|
|||||||
|
|
||||||
return (bool)preg_match($zip_regexp, $zip_code);
|
return (bool)preg_match($zip_regexp, $zip_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function addModuleRestrictions(array $shops = array(), array $countries = array(), array $modules = array())
|
||||||
|
{
|
||||||
|
if (!count($shops))
|
||||||
|
$shops = Shop::getShops(true, null, true);
|
||||||
|
|
||||||
|
if (!count($countries))
|
||||||
|
$countries = Country::getCountries((int)Context::getContext()->cookie->id_lang);
|
||||||
|
|
||||||
|
if (!count($modules))
|
||||||
|
$modules = Module::getPaymentModules();
|
||||||
|
|
||||||
|
$sql = false;
|
||||||
|
foreach ($shops as $id_shop)
|
||||||
|
foreach ($countries as $country)
|
||||||
|
foreach ($modules as $module)
|
||||||
|
$sql .= '('.(int)$module['id_module'].', '.(int)$id_shop.', '.(int)$country['id_country'].'),';
|
||||||
|
|
||||||
|
if ($sql)
|
||||||
|
{
|
||||||
|
$sql = 'INSERT IGNORE INTO `'._DB_PREFIX_.'module_country` (`id_module`, `id_shop`, `id_country`) VALUES '.rtrim($sql, ',');
|
||||||
|
return Db::getInstance()->execute($sql);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,21 +111,13 @@ abstract class PaymentModuleCore extends Module
|
|||||||
*/
|
*/
|
||||||
public function addCheckboxCountryRestrictionsForModule(array $shops = array())
|
public function addCheckboxCountryRestrictionsForModule(array $shops = array())
|
||||||
{
|
{
|
||||||
if (!$shops)
|
$countries = Country::getCountries((int)Context::getContext()->cookie->id_lang, true); //get only active country
|
||||||
$shops = Shop::getShops(true, null, true);
|
$country_ids = array();
|
||||||
|
foreach ($countries as $country)
|
||||||
foreach ($shops as $s)
|
$country_ids[] = $country['id_country'];
|
||||||
{
|
return Country::addModuleRestrictions($shops, $countries, array(array('id_module' => (int)$this->id)));
|
||||||
if (!Db::getInstance()->execute('
|
|
||||||
INSERT INTO `'._DB_PREFIX_.'module_country` (`id_module`, `id_shop`, `id_country`)
|
|
||||||
SELECT '.(int)$this->id.', "'.(int)$s.'", `id_country` FROM `'._DB_PREFIX_.'country` WHERE active = 1'))
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate an order in database
|
* Validate an order in database
|
||||||
* Function called from a payment module
|
* Function called from a payment module
|
||||||
|
|||||||
@@ -1311,7 +1311,7 @@ abstract class ModuleCore
|
|||||||
$paypal_condition = ' AND m.`name` = \'paypal\'';
|
$paypal_condition = ' AND m.`name` = \'paypal\'';
|
||||||
|
|
||||||
$list = Shop::getContextListShopID();
|
$list = Shop::getContextListShopID();
|
||||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT DISTINCT h.`id_hook`, m.`name`, hm.`position`
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT DISTINCT m.`id_module`, h.`id_hook`, m.`name`, hm.`position`
|
||||||
FROM `'._DB_PREFIX_.'module` m
|
FROM `'._DB_PREFIX_.'module` m
|
||||||
'.($frontend ? 'LEFT JOIN `'._DB_PREFIX_.'module_country` mc ON (m.`id_module` = mc.`id_module` AND mc.id_shop = '.(int)$context->shop->id.')' : '').'
|
'.($frontend ? 'LEFT JOIN `'._DB_PREFIX_.'module_country` mc ON (m.`id_module` = mc.`id_module` AND mc.id_shop = '.(int)$context->shop->id.')' : '').'
|
||||||
'.($frontend ? 'INNER JOIN `'._DB_PREFIX_.'module_group` mg ON (m.`id_module` = mg.`id_module` AND mg.id_shop = '.(int)$context->shop->id.')' : '').'
|
'.($frontend ? 'INNER JOIN `'._DB_PREFIX_.'module_group` mg ON (m.`id_module` = mg.`id_module` AND mg.id_shop = '.(int)$context->shop->id.')' : '').'
|
||||||
|
|||||||
@@ -405,6 +405,29 @@ class AdminCountriesControllerCore extends AdminController
|
|||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function processStatus()
|
||||||
|
{
|
||||||
|
if (Validate::isLoadedObject($object = $this->loadObject()))
|
||||||
|
Country::addModuleRestrictions(array(), array(array('id_country' => $object->id)), array());
|
||||||
|
|
||||||
|
parent::processStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processBulkStatusSelection($way)
|
||||||
|
{
|
||||||
|
if (is_array($this->boxes) && !empty($this->boxes))
|
||||||
|
{
|
||||||
|
$countries_ids = array();
|
||||||
|
foreach ($this->boxes as $id)
|
||||||
|
$countries_ids[] = array('id_country' => $id);
|
||||||
|
|
||||||
|
if (count($countries_ids))
|
||||||
|
Country::addModuleRestrictions(array(), $countries_ids, array());
|
||||||
|
}
|
||||||
|
parent::processBulkStatusSelection($way);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
protected function displayValidFields()
|
protected function displayValidFields()
|
||||||
{
|
{
|
||||||
$html = '<ul>';
|
$html = '<ul>';
|
||||||
|
|||||||
Reference in New Issue
Block a user