* @copyright PrestaShop * @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0 * @version 1.3 * */ include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); class AdminPayment extends AdminTab { public $paymentModules = array(); public function __construct() { /* Get all modules then select only payment ones*/ $modules = Module::getModulesOnDisk(); foreach ($modules AS $module) if ($module->tab == 'Payment') { if($module->id) { $module->country = array(); $countries = DB::getInstance()->ExecuteS('SELECT id_country FROM '._DB_PREFIX_.'module_country WHERE id_module = '.intval($module->id)); foreach ($countries as $country) $module->country[] = $country['id_country']; $module->currency = array(); $currencies = DB::getInstance()->ExecuteS('SELECT id_currency FROM '._DB_PREFIX_.'module_currency WHERE id_module = '.intval($module->id)); foreach ($currencies as $currency) $module->currency[] = $currency['id_currency']; $module->group = array(); $groups = DB::getInstance()->ExecuteS('SELECT id_group FROM '._DB_PREFIX_.'module_group WHERE id_module = '.intval($module->id)); foreach ($groups as $group) $module->group[] = $group['id_group']; } else { $module->country = NULL; $module->currency = NULL; $module->group = NULL; } $this->paymentModules[] = $module; } parent::__construct(); } public function postProcess() { if (Tools::isSubmit('submitModulecountry')) $this->saveRestrictions('country'); elseif (Tools::isSubmit('submitModulecurrency')) $this->saveRestrictions('currency'); elseif (Tools::isSubmit('submitModulegroup')) $this->saveRestrictions('group'); } private function saveRestrictions($type) { global $currentIndex; Db::getInstance()->Execute('TRUNCATE '._DB_PREFIX_.'module_'.$type.''); foreach ($this->paymentModules as $module) if ($module->active AND isset($_POST[$module->name.'_'.$type.''])) foreach ($_POST[$module->name.'_'.$type.''] as $selected) $values[] = '('.intval($module->id).', '.intval($selected).')'; Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'module_'.$type.' (`id_module`, `id_'.$type.'`) VALUES '.implode(',', $values)); Tools::redirectAdmin($currentIndex.'&conf=4'.'&token='.$this->token); } public function display() { global $cookie; foreach ($this->paymentModules AS $module) if ($module->active AND $module->warning) $this->displayWarning($module->displayName.' - '.stripslashes(pSQL($module->warning))); $currencies = Currency::getCurrencies(); $countries = Country::getCountries(intval($cookie->id_lang)); $groups = Group::getGroups(intval($cookie->id_lang)); $this->displayModules(); echo '

'.$this->l('Payment module restrictions').'

'; $textCurrencies = $this->l('Please mark the checkbox(es) for the currency or currencies in which you want the payment module(s) available.'); $textCountries = $this->l('Please mark the checkbox(es) for the country or countries in which you want the payment module(s) available.'); $textGroups = $this->l('Please mark the checkbox(es) for the groups in which you want the payment module(s) available.'); $this->displayModuleRestrictions($currencies, $this->l('Currencies restrictions'), 'currency', $textCurrencies, 'dollar'); echo '
'; $this->displayModuleRestrictions($groups, $this->l('Groups restrictions'), 'group', $textGroups, 'group'); echo '
'; $this->displayModuleRestrictions($countries, $this->l('Countries restrictions'), 'country', $textCountries, 'world'); } public function displayModuleRestrictions($items, $title, $nameId, $desc, $icon) { global $currentIndex; $irow = 0; echo '
'.$title.'

'.$desc.'

'; foreach ($this->paymentModules as $module) { if ($module->active) { echo ' '; } } echo ' '; foreach ($items as $item) { echo ' '; foreach ($this->paymentModules as $module) { if ($module->active) { echo ' '; } } echo ' '; } if ($nameId == 'currency') { echo ' '; foreach ($this->paymentModules as $module) if ($module->active) echo ' '; echo ' '; echo ' '; foreach ($this->paymentModules as $module) if ($module->active) echo ' '; echo ' '; } echo '
'.$title.''; if ($nameId != 'currency' OR ($nameId == 'currency' AND $module->currencies_mode == 'checkbox')) echo ' '; echo '  '.$module->name.''; if ($nameId != 'currency' OR ($nameId == 'currency' AND $module->currencies_mode == 'checkbox')) echo ' '; echo '
'.$item['name'].''; if ($nameId != 'currency' OR ($nameId == 'currency' AND $module->currencies AND $module->currencies_mode == 'checkbox')) echo ' {$nameId}) ? ' checked="checked"' : '').' />'; elseif ($nameId == 'currency' AND $module->currencies AND $module->currencies_mode == 'radio') echo ' {$nameId}) ? ' checked="checked"' : '').' />'; elseif ($nameId == 'currency') echo '--'; echo '
'.$this->l('Customer currency').''.(($module->currencies AND $module->currencies_mode == 'radio') ? '{$nameId}) ? ' checked="checked"' : '').' />' : '--').'
'.$this->l('Shop default currency').''.(($module->currencies AND $module->currencies_mode == 'radio') ? '{$nameId}) ? ' checked="checked"' : '').' />' : '--').'

'; } public function displayModules() { global $cookie; $irow = 0; echo '

'.$this->l('Payment modules list').'

'; $tokenModules = Tools::getAdminToken('AdminModules'.intval(Tab::getIdFromClassName('AdminModules')).intval($cookie->id_employee)); /* Display payment modules */ foreach ($this->paymentModules as $module) { if ($module->id) { $img = 'disabled'; if ($module->warning) $img = 'disabled'; if (!$module->active) $img = 'disabled'; } else $img = 'install'; echo ' '; } echo '
'.sizeof($this->paymentModules).' '.((sizeof($this->paymentModules) > 1) ? $this->l('payment modules') : $this->l('payment module')).'
'.stripslashes($module->displayName).''.($module->version ? ' v'.$module->version.(strpos($module->version, '.') !== false ? '' : '.0') : '').'
'.$module->description.'
'.(($module->active AND method_exists($module, 'getContent')) ? ''.$this->l('>> Configure').'' : '').' '; if ($module->id) echo ''; echo $img; if ($module->id) ''; echo ' '.((!$module->id) ? '' : '').'
'; } } ?>