name = 'reverso'; $this->tab = 'Tools'; $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'); 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 uninstall() { return parent::uninstall(); } 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 ReversoForm account yet?').' '.$this->l('Register now!').''; if (!empty($_POST)) $this->_postProcess(); 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 intval($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 = json_decode($reverso, true); if ($address == 'NULL') return intval($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, ','); } } ?>