* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 7541 $ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_CAN_LOAD_FILES_')) exit; class Reverso extends Module { private $_html; private $_api_url = 'http://api2.reversoform.com/includes/api.controler.reverso2.php?phone_number={ARG_PHONE}&serial={ARG_SERIAL}&remoteAddress={ARG_ADDRESS}'; function __construct() { $this->name = 'reverso'; $this->tab = 'front_office_features'; $this->version = '1.0'; // Iso code of countries where the module can be used, if none module available for all countries $this->limited_countries = array('fr'); $this->need_instance = 0; parent::__construct(); /* The parent construct is required for translations */ $this->displayName = $this->l('ReversoForm'); $this->description = $this->l('Fill Authentication form with ReversoForm'); } public function install() { // Check if hook exists $result = Db::getInstance()->getValue(' SELECT COUNT(*) AS total FROM `'._DB_PREFIX_.'hook` WHERE `name` = \'createAccountTop\' '); if (!$result) if (!Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'hook` (`name`, `title`, `description`, `position`) VALUES (\'createAccountTop\', \'Block above the form for create an account\', NULL , \'1\'); ')) return false; if (!parent::install()) return false; if (!$this->registerHook('createAccountTop')) return false; return (Configuration::updateValue('REVERSO_SERIAL', '0123456789123') AND Configuration::updateValue('REVERSO_BAD_NUMBER', 1) AND Configuration::updateValue('REVERSO_UNKNOWN_NUMBER', 2) AND Configuration::updateValue('REVERSO_ADDRESS', str_replace('http://', '', $_SERVER['HTTP_HOST']))); } private function _postProcess() { return (Configuration::updateValue('REVERSO_SERIAL', pSQL(Tools::getValue('reverso_serial'))) AND Configuration::updateValue('REVERSO_ADDRESS', pSQL(Tools::getValue('reverso_address')))); } public function hookCreateAccountTop($params) { global $smarty; $tag = ''; $smarty->assign(array('reverso_tag' => $tag)); return $this->display(__FILE__, 'reverso.tpl'); } private function _displayForm() { $conf = Configuration::getMultiple(array('REVERSO_SERIAL', 'REVERSO_ADDRESS')); $this->_html .= '
'.$this->l('Configuration').'
'; } public function getContent() { $this->_html .= '

'.$this->l('Reverso account configuration').'

'.$this->l('You don\'t have a ReversoForm account yet?').' '.$this->l('Register now!').''; if (!empty($_POST)) { if ($this->_postProcess()) $this->_html .= $this->displayConfirmation($this->l('Settings are updated').''); } else $this->_html .= '
'; $this->_displayForm(); return $this->_html; } public function callReverso($phone = false) { if ($phone === false) return false; $conf = Configuration::getMultiple(array('REVERSO_SERIAL', 'REVERSO_ADDRESS', 'REVERSO_BAD_NUMBER', 'REVERSO_UNKNOWN_NUMBER')); $phone = str_replace(array(' '), '', $phone); if (strlen($phone) < 10) return (int)($conf['REVERSO_BAD_NUMBER']); $url_to_call = str_replace(array('{ARG_PHONE}', '{ARG_SERIAL}', '{ARG_ADDRESS}'), array($phone, $conf['REVERSO_SERIAL'], $conf['REVERSO_ADDRESS']), $this->_api_url); $reverso = file_get_contents($url_to_call); $address = Tools::jsonDecode($reverso, true); if ($address == 'NULL') return (int)($conf['REVERSO_BAD_NUMBER']); $fields = array('last_name' => 'lastname', 'first_name' => 'firstname', 'zip' => 'postcode', 'city' => 'city', 'address' => 'address1', 'company' => 'company' ); $to_presta = array(); foreach ($fields AS $k => $field) if (array_key_exists($k, $address)) $to_presta[$field] = $address[$k]; $to_presta = ''; foreach ($fields AS $k => $field) $to_presta .= (array_key_exists($k, $address) ? $field.':'.$address[$k].',' : ''); $to_presta .= 'customer_firstname:'.(array_key_exists('first_name', $address) ? $address['first_name'] : '').',customer_lastname:'.(array_key_exists('last_name', $address) ? $address['last_name'] : ''); return rtrim($to_presta, ','); } }