241 lines
11 KiB
PHP
241 lines
11 KiB
PHP
|
<?php
|
|||
|
/*
|
|||
|
* 2007-2011 PrestaShop
|
|||
|
*
|
|||
|
* NOTICE OF LICENSE
|
|||
|
*
|
|||
|
* This source file is subject to the Academic Free License (AFL 3.0)
|
|||
|
* that is bundled with this package in the file LICENSE.txt.
|
|||
|
* It is also available through the world-wide-web at this URL:
|
|||
|
* http://opensource.org/licenses/afl-3.0.php
|
|||
|
* If you did not receive a copy of the license and are unable to
|
|||
|
* obtain it through the world-wide-web, please send an email
|
|||
|
* to license@prestashop.com so we can send you a copy immediately.
|
|||
|
*
|
|||
|
* DISCLAIMER
|
|||
|
*
|
|||
|
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
|||
|
* versions in the future. If you wish to customize PrestaShop for your
|
|||
|
* needs please refer to http://www.prestashop.com for more information.
|
|||
|
*
|
|||
|
* @author PrestaShop SA <contact@prestashop.com>
|
|||
|
* @copyright 2007-2011 PrestaShop SA
|
|||
|
* @version Release: $Revision: 8005 $
|
|||
|
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
|||
|
* International Registered Trademark & Property of PrestaShop SA
|
|||
|
*/
|
|||
|
|
|||
|
if (!defined('_PS_VERSION_'))
|
|||
|
exit;
|
|||
|
|
|||
|
class FianetSceau extends Module
|
|||
|
{
|
|||
|
private $id_order;
|
|||
|
|
|||
|
function __construct()
|
|||
|
{
|
|||
|
$this->name = 'fianetsceau';
|
|||
|
$this->tab = 'front_office_features';
|
|||
|
$this->version = '1.0';
|
|||
|
$this->limited_countries = array('fr');
|
|||
|
|
|||
|
parent::__construct();
|
|||
|
|
|||
|
$this->displayName = $this->l('FIA-NET Seal of Confidence');
|
|||
|
$this->description = $this->l('Turn your visitors into buyers by creating confidence in your site.');
|
|||
|
if (!Configuration::get('FIANET_SCEAU_PRIVATEKEY'))
|
|||
|
$this->warning = $this->l('Please enter your Private Key field.');
|
|||
|
if (!Configuration::get('FIANET_SCEAU_SITEID'))
|
|||
|
$this->warning = $this->l('Please enter your site ID.');
|
|||
|
}
|
|||
|
|
|||
|
public function install()
|
|||
|
{
|
|||
|
return (parent::install() AND
|
|||
|
$this->registerHook('rightColumn') AND
|
|||
|
$this->registerHook('updateOrderStatus') AND
|
|||
|
Db::getInstance()->Execute('
|
|||
|
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'fianet_seal`(
|
|||
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|||
|
`id_order` int(10) unsigned NOT NULL,
|
|||
|
`upload_success` int(10) unsigned NOT NULL,
|
|||
|
`valid` int(10) unsigned NOT NULL,
|
|||
|
`status` int(10) unsigned NOT NULL,
|
|||
|
`date_upd` datetime NOT NULL,
|
|||
|
`date_add` datetime NOT NULL,
|
|||
|
PRIMARY KEY (`id`)
|
|||
|
)'));
|
|||
|
}
|
|||
|
|
|||
|
private function getProcess()
|
|||
|
{
|
|||
|
if ((int)Tools::getValue('fia_net_mode') == 1)
|
|||
|
Configuration::updateValue('FIA_NET_SEAL_MODE', 1);
|
|||
|
else
|
|||
|
Configuration::updateValue('FIA_NET_SEAL_MODE', 0);
|
|||
|
|
|||
|
if (!preg_match('#^[0-9]+$#', Tools::getValue('FIANET_SCEAU_SITEID')))
|
|||
|
return parent::displayError('Bad site id (numbers only)');
|
|||
|
else
|
|||
|
Configuration::updateValue('FIANET_SCEAU_SITEID', Tools::getValue('FIANET_SCEAU_SITEID'));
|
|||
|
Configuration::updateValue('FIANET_SCEAU_PRIVATEKEY', Tools::getValue('FIANET_SCEAU_PRIVATEKEY'));
|
|||
|
|
|||
|
if ((int)Tools::getValue('fia_net_mode'))
|
|||
|
$dataSync = (($site_id = Configuration::get('FIANET_SCEAU_SITEID')) ? '<img src="http://www.prestashop.com/modules/fianetsceau.png?site_id='.urlencode($site_id).'" style="float:right" />' : 'toto');
|
|||
|
else
|
|||
|
$dataSync = '';
|
|||
|
return $this->_html .= $this->displayConfirmation($this->l('Configuration updated').$dataSync); }
|
|||
|
|
|||
|
public function getContent()
|
|||
|
{
|
|||
|
$output = '<h2>'.$this->displayName.'</h2>';
|
|||
|
if (!is_callable('curl_init'))
|
|||
|
$output .= parent::displayError('You need to enable Curl library to use this module');
|
|||
|
elseif (Tools::isSubmit('submitFianet'))
|
|||
|
$output .= self::getProcess();
|
|||
|
|
|||
|
$output .= '
|
|||
|
<fieldset style="width:80%"><legend>'.$this->displayName.'</legend>
|
|||
|
<img src="../modules/'.$this->name.'/logo.jpg" style="float:right;margin:5px 10px 5px 0" />
|
|||
|
<blockquote style="margin-left:5px"><b>« Le Sceau de Confiance FIA-NET, leader de la confiance sur le web, influence la décision d’achat de 83 % des internautes (*)</b></blockquote>
|
|||
|
<p style="margin-left:30px"><br />
|
|||
|
Le Sceau de Confiance FIA-NET, le plus connu en France, fait la preuve de vos performances. Il restitue les avis de vos clients grâce à l’envoi <b>de deux questionnaires de satisfaction</b> après l’achat et après la livraison.<br /><br />
|
|||
|
<b>L’extranet, un outil d’analyse de performance unique</b>, exploite les réponses de vos clients à ces questionnaires. Une aide inestimable qui vous permet de mieux connaitre vos clients et de piloter votre politique marketing et communication.<br />
|
|||
|
<br />
|
|||
|
<span style="font-size:0.8em;font-style:italic;">(*Etude FIA-NET – Novembre 2009 – 836 répondants)</span> »</p>
|
|||
|
<p>'.$this->l('To sign in, check out: ').' <u><a href="https://www.fia-net.com/marchands/devispartenaire.php?p=185" target="_blank">'.$this->l('Fia-net Website').'</a></u></p>
|
|||
|
</fieldset><p class="clear"> </p>';
|
|||
|
$output .= '
|
|||
|
<form action="'.Tools::htmlentitiesUTF8($_SERVER['REQUEST_URI']).'" method="post">
|
|||
|
<fieldset class="width2">
|
|||
|
<legend><img src="'.$this->_path.'logo.gif" alt="" class="middle" />'.$this->l('Settings').'</legend>
|
|||
|
<label>'.$this->l('Your site ID').'</label>
|
|||
|
<div class="margin-form">
|
|||
|
<input type="text" name="FIANET_SCEAU_SITEID" value="'.Configuration::get('FIANET_SCEAU_SITEID').'" />
|
|||
|
<p class="clear">'.$this->l('Sample:').' site_id = \'<b>XXXXX</b>\' '.$this->l('(numbers only)').'</p>
|
|||
|
</div>
|
|||
|
<label>'.$this->l('Private Key').'</label>
|
|||
|
<div class="margin-form">
|
|||
|
<input type="text" name="FIANET_SCEAU_PRIVATEKEY" value="'.Configuration::get('FIANET_SCEAU_PRIVATEKEY').'" />
|
|||
|
<p class="clear">'.$this->l('Private key communicated by Fia-Net').'</p>
|
|||
|
</div>
|
|||
|
<label>'.$this->l('Mode').'</label>
|
|||
|
<div class="margin-form">
|
|||
|
<span style="display:block;float:left;margin-top:3px;">
|
|||
|
<input type="radio" id="test" name="fia_net_mode" value="0" style="vertical-align:middle;display:block;float:left;margin-top:2px;margin-right:3px;"
|
|||
|
'.(!Configuration::get('FIA_NET_SEAL_MODE') ? 'checked' : '').'/>
|
|||
|
<label for="test" style="color:#900;display:block;float:left;text-align:left;width:60px;">'.$this->l('Test').'</label> </span>
|
|||
|
<span style="display:block;float:left;margin-top:3px;">
|
|||
|
<input type="radio" id="production" name="fia_net_mode" value="1" style="vertical-align:middle;display:block;float:left;margin-top:2px;margin-right:3px;"
|
|||
|
'.(Configuration::get('FIA_NET_SEAL_MODE') ? 'checked' : '').'/>
|
|||
|
<label for="production" style="color:#080;display:block;float:left;text-align:left;width:85px;">'.$this->l('Production').'</label></span>
|
|||
|
</div>
|
|||
|
<p class="clear"> </p>
|
|||
|
<input type="submit" name="submitFianet" value="'.$this->l('Update settings').'" class="button" />
|
|||
|
</fieldset>
|
|||
|
</form>';
|
|||
|
|
|||
|
return $output;
|
|||
|
}
|
|||
|
|
|||
|
private function sendXML()
|
|||
|
{
|
|||
|
$SiteID = Configuration::get('FIANET_SCEAU_SITEID');
|
|||
|
$order = new Order((int)$this->id_order);
|
|||
|
$customer = new Customer((int)$order->id_customer);
|
|||
|
$currency = new Currency((int)$order->id_currency);
|
|||
|
$control = new SimpleXMLElement('<?xml version="1.0" encoding="ISO-8859-1"?><control></control>');
|
|||
|
|
|||
|
$user = $control->addChild('utilisateur');
|
|||
|
$name = $user->addChild('nom', $customer->lastname);
|
|||
|
if ($customer->id_gender == 1 OR $customer->id_gender == 2)
|
|||
|
$name->addAttribute('titre', 1);
|
|||
|
$user->addChild('prenom', $customer->firstname);
|
|||
|
$user->addChild('email', $customer->email);
|
|||
|
|
|||
|
$info = $control->addChild('infocommande');
|
|||
|
$info->addChild('siteid', $SiteID);
|
|||
|
$info->addChild('refid', (int)$order->id);
|
|||
|
|
|||
|
$total = round($order->total_paid / $currency->conversion_rate, 2);
|
|||
|
$amount = $info->addChild('montant', $total);
|
|||
|
$amount->addAttribute('devise', 'EUR');
|
|||
|
|
|||
|
$ip = long2ip(Db::getInstance()->getValue('
|
|||
|
SELECT ip_address
|
|||
|
FROM '._DB_PREFIX_.'connections a
|
|||
|
WHERE a.id_guest = (
|
|||
|
SELECT id_guest FROM '._DB_PREFIX_.'guest
|
|||
|
WHERE id_customer = '.(int)$customer->id.'
|
|||
|
LIMIT 1)'));
|
|||
|
|
|||
|
$order_date = Db::getInstance()->getValue('
|
|||
|
SELECT date_add
|
|||
|
FROM '._DB_PREFIX_.'orders
|
|||
|
WHERE id_order = '.(int)$order->id);
|
|||
|
$customer_ip = $info->addChild('ip', $ip);
|
|||
|
$customer_ip->addAttribute('timestamp', $order_date);
|
|||
|
|
|||
|
$cryptKey = md5(Configuration::get('FIANET_SCEAU_PRIVATEKEY').'_'.(int)$order->id.'+'.$order_date.'='.$customer->email);
|
|||
|
$control->addChild('crypt', $cryptKey);
|
|||
|
|
|||
|
$XMLInfo = $control->asXML();
|
|||
|
$CheckSum = md5($XMLInfo);
|
|||
|
|
|||
|
$curl = curl_init('https://www.fia-net.com/engine/'.(!Configuration::get('FIA_NET_SEAL_MODE') ? 'preprod/' : '').'sendrating.cgi');
|
|||
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
|
|||
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|||
|
curl_setopt($curl, CURLOPT_HEADER, 0);
|
|||
|
curl_setopt($curl, CURLOPT_POST, 1);
|
|||
|
curl_setopt($curl, CURLOPT_POSTFIELDS, 'SiteID='.$SiteID.'&XMLInfo='.$XMLInfo.'&CheckSum='.$CheckSum);
|
|||
|
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
|
|||
|
$result = new simpleXMLelement(curl_exec($curl));
|
|||
|
curl_close ($curl);
|
|||
|
|
|||
|
if ($result['type'] == 'OK')
|
|||
|
return true;
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
public function hookUpdateOrderStatus($params)
|
|||
|
{
|
|||
|
$this->id_order = (int)$params['id_order'];
|
|||
|
$res = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'fianet_seal` a WHERE a.id_order = '.(int)$params['id_order']);
|
|||
|
$upload_success = false;
|
|||
|
if (!$res)
|
|||
|
{
|
|||
|
if (!($order = new Order((int)$params['id_order'])))
|
|||
|
return;
|
|||
|
if ($params['newOrderStatus']->logable == 1)
|
|||
|
$upload_success = self::sendXML();
|
|||
|
Db::getInstance()->Execute('
|
|||
|
INSERT INTO '._DB_PREFIX_.'fianet_seal (id_order, upload_success, valid, status, date_upd, date_add)
|
|||
|
VALUES ('.(int)$order->id.', 0,'.(int)$params['newOrderStatus']->logable.', '.(int)$params['newOrderStatus']->id.', NOW(), NOW())');
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if ($res['valid'] == 1 AND $res['upload_success'] == 1)
|
|||
|
return;
|
|||
|
if ($params['newOrderStatus']->logable == 1)
|
|||
|
$upload_success = self::sendXML();
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'fianet_seal` a
|
|||
|
SET valid = '.(int)$params['newOrderStatus']->logable.', upload_success = '.(int)$upload_success.', status = '.(int)$params['newOrderStatus']->id.', date_upd = NOW()
|
|||
|
WHERE a.id = '.(int)$res['id']);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function hookLeftColumn($params)
|
|||
|
{
|
|||
|
return $this->hookRightColumn($params);
|
|||
|
}
|
|||
|
|
|||
|
public function hookRightColumn($params)
|
|||
|
{
|
|||
|
global $cookie;
|
|||
|
return '<a href="javascript:;" onclick="varwin=window.open(\'https://www.fia-net.com/certif/certificat.php?key='.Configuration::get('FIANET_SCEAU_SITEID').'&lang='.Language::getIsoById((int)($cookie->id_lang)).'\', \'certificat\', \'width=650, height=510\', \'toolbar=no, location=no,directories=no, status=no, menubar=no, scrollbars=no, resizable=yes,dependent=yes\');"><img src="https://www.fia-net.com/img/logos/'.(($cookie->id_lang != 2 ) ? 'en/' : '' ).'rouge3bc.gif" title="Voir la fiche marchand sur Fia-net.com" alt="Voir la fiche marchand sur Fia-net.com" /></a>';
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|