* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 6594 $ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class AdminGeolocation extends AdminTab { public function display() { global $currentIndex, $cookie; echo '

'.$this->l('Geolocation').'

'; if (!$this->_isGeoLiteCityAvailable()) $this->displayWarning($this->l('In order to use Geolocation, please download').' '.$this->l('this file').' '.$this->l('and decompress it into tools/geoip/ directory')); echo '
'.$this->l('Geolocation by IP').'

'.$this->l('This option allows you, among other things, to restrict access to your shop for many countries. See below.').'

'; $allowedCountries = explode(';', Configuration::get('PS_ALLOWED_COUNTRIES')); echo '
'.$this->l('Options').'
'.$this->l('The following features are only available if you enable the Geolocation by IP feature.').'
'; foreach (Country::getCountries(intval($cookie->id_lang)) AS $country) echo ' '; echo '
'.$this->l('Name').'
'.Tools::htmlentitiesUTF8($country['name']).'
'.$this->l('Whitelist of IP addresses').'
'.$this->l('You can add many IP addresses, these addresses will always be allowed to access your shop (e.g. Google bots IP).').'
'; } public function postProcess() { global $currentIndex; if (Tools::isSubmit('submitGeolocationConfiguration')) { if ($this->_isGeoLiteCityAvailable()) { Configuration::updateValue('PS_GEOLOCATION_ENABLED', intval(Tools::getValue('PS_GEOLOCATION_ENABLED'))); Tools::redirectAdmin($currentIndex.'&token='.Tools::getValue('token').'&conf=4'); } else $this->_errors[] = Tools::displayError('Geolocation database is unavailable.'); } if (Tools::isSubmit('submitGeolocationCountries')) { if (!is_array(Tools::getValue('countries')) OR !sizeof(Tools::getValue('countries'))) $this->_errors[] = Tools::displayError('Country selection is invalid'); else { Configuration::updateValue('PS_GEOLOCATION_BEHAVIOR', (!(int)(Tools::getValue('PS_GEOLOCATION_BEHAVIOR')) ? _PS_GEOLOCATION_NO_CATALOG_ : _PS_GEOLOCATION_NO_ORDER_)); Configuration::updateValue('PS_GEOLOCATION_NA_BEHAVIOR', (int)Tools::getValue('PS_GEOLOCATION_NA_BEHAVIOR')); Configuration::updateValue('PS_ALLOWED_COUNTRIES', implode(';', Tools::getValue('countries'))); Tools::redirectAdmin($currentIndex.'&token='.Tools::getValue('token').'&conf=4'); } } if (Tools::isSubmit('submitGeolocationWhitelist')) { if (!Validate::isCleanHtml(Tools::getValue('PS_GEOLOCATION_WHITELIST'))) $this->_errors[] = Tools::displayError('Invalid whitelist'); else { Configuration::updateValue('PS_GEOLOCATION_WHITELIST', str_replace("\n", ';', str_replace("\r", '', Tools::getValue('PS_GEOLOCATION_WHITELIST')))); Tools::redirectAdmin($currentIndex.'&token='.Tools::getValue('token').'&conf=4'); } } return parent::postProcess(); } private function _isGeoLiteCityAvailable() { if (file_exists(_PS_GEOIP_DIR_.'GeoLiteCity.dat')) return true; return false; } }