* @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 '
';
$allowedCountries = explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'));
echo '
';
}
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;
}
}