*  @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;
	}
}