name = 'buyster';
$this->tab = 'payments_gateways';
$this->version = 1.4 ;
$this->author = 'PrestaShop';
$this->limited_countries = array('fr');
parent::__construct();
$this->displayName = $this->l('Buyster');
$this->description = $this->l('The new online payment solution approved by the Bank of France, which combines simplicity and security through mobile.');
if (self::isInstalled($this->name))
{
$warning = array();
$this->loadingConfigurationVariablesNeeded();
foreach ($this->_fieldsList as $keyConfiguration => $name)
if (!Configuration::get($keyConfiguration) && !empty($name))
$warning[] = '\''.$name.'\' ';
if (count($warning) > 1)
$this->warning .= implode(' , ',$warning).$this->l('must be configured to use this module correctly.').' ';
if (count($warning) == 1)
$this->warning .= implode(' , ',$warning).$this->l('has to be configured to use this module correctly.').' ';
}
$updateConfig = array('PS_OS_CHEQUE' => 1, 'PS_OS_PAYMENT' => 2, 'PS_OS_PREPARATION' => 3, 'PS_OS_SHIPPING' => 4, 'PS_OS_DELIVERED' => 5, 'PS_OS_CANCELED' => 6,
'PS_OS_REFUND' => 7, 'PS_OS_ERROR' => 8, 'PS_OS_OUTOFSTOCK' => 9, 'PS_OS_BANKWIRE' => 10, 'PS_OS_PAYPAL' => 11, 'PS_OS_WS_PAYMENT' => 12);
foreach ($updateConfig as $u => $v)
if (!Configuration::get($u) || (int)Configuration::get($u) < 1)
{
if (defined('_'.$u.'_') && (int)constant('_'.$u.'_') > 0)
Configuration::updateValue($u, constant('_'.$u.'_'));
else
Configuration::updateValue($u, $v);
}
}
public function install()
{
include(dirname(__FILE__).'/sql-install.php');
foreach ($sql as $s)
if (!Db::getInstance()->Execute($s))
return false;
if (!(parent::install() AND $this->registerHook('payment') AND $this->registerHook('paymentReturn') AND $this->registerHook('adminOrder')))
return false;
Configuration::updateValue('BUYSTER_PAYMENT_RETURN_URL', 'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__.'history.php');
Configuration::updateValue('BUYSTER_PAYMENT_PRODUCTION', '0');
Configuration::updateValue('BUYSTER_PAYMENT_TRANSACTION_TYPE', 'payment');
Configuration::updateValue('BUYSTER_PAYMENT_VALIDATION', __PS_BASE_URI__.'order-confirmation.php');
if (!Configuration::get('BUYSTER_PAYMENT_STATE'))
Configuration::updateValue('BUYSTER_PAYMENT_STATE', $this->addState('En attente du paiement par Buyster', 'Waiting payment from Buyster'));
if (!Configuration::get('BUYSTER_PAYMENT_STATE_VALIDATION'))
Configuration::updateValue('BUYSTER_PAYMENT_STATE_VALIDATION', $this->addState('En attente de validation par '.Configuration::get('PS_SHOP_NAME'), 'Waiting for validation from '.Configuration::get('PS_SHOP_NAME')));
Configuration::updateValue('BUYSTER_PAYMENT_TOKEN', md5(rand()));
return true;
}
private function addState($fr, $en)
{
$orderState = new OrderState();
$orderState->name = array();
foreach (Language::getLanguages() AS $language)
{
if (strtolower($language['iso_code']) == 'fr')
$orderState->name[$language['id_lang']] = $fr;
else
$orderState->name[$language['id_lang']] = $en;
}
$orderState->send_email = false;
$orderState->color = '#DDEEFF';
$orderState->hidden = false;
$orderState->delivery = false;
$orderState->logable = true;
if ($orderState->add())
copy(dirname(__FILE__).'/logo_mini.png', dirname(__FILE__).'/../../img/os/'.(int)$orderState->id.'.gif');
return $orderState->id;
}
public function uninstall()
{
foreach ($this->_fieldsList as $keyConfiguration => $name)
{
if ($keyConfiguration != 'BUYSTER_PAYMENT_STATE' && $keyConfiguration != 'BUYSTER_PAYMENT_STATE_VALIDATION')
if (!Configuration::deleteByName($keyConfiguration))
return false;
}
include(dirname(__FILE__).'/sql-uninstall.php');
foreach ($sql as $s)
if (!Db::getInstance()->Execute($s))
return false;
if (!parent::uninstall())
return false;
return true;
}
public function loadingConfigurationVariablesNeeded()
{
$this->_fieldsList = array(
'BUYSTER_PAYMENT_ID' => $this->l('Buyster Login'),
'BUYSTER_PAYMENT_PASSWORD' => $this->l('Buyster Password'),
'BUYSTER_PAYMENT_SIGNATURE' => $this->l('Buyster Signature'),
'BUYSTER_PAYMENT_RETURN_URL' => '',
'BUYSTER_PAYMENT_PRODUCTION' => '',
'BUYSTER_PAYMENT_TRANSACTION_TYPE' => '',
'BUYSTER_PAYMENT_DAYS_DELAYED' => '',
'BUYSTER_PAYMENT_VALIDATION_DAYS' => '',
'BUYSTER_PAYMENT_TIME_PAYMENT' => '',
'BUYSTER_PAYMENT_PERIOD_PAYMENT' => '',
'BUYSTER_PAYMENT_INITIAL_AMOUNT' => '',
'BUYSTER_PAYMENT_SEVERAL_PAYMENT' => '',
'BUYSTER_PAYMENT_DELAYED_SEVERAL' => '',
'BUYSTER_PAYMENT_STATE' => '',
'BUYSTER_PAYMENT_STATE_VALIDATION' => '',
'BUYSTER_PAYMENT_TOKEN' => ''
);
}
public function getContent()
{
$this->_html .= '
';
if (!empty($_POST) AND Tools::isSubmit('submitSave'))
{
$this->_postValidation();
if (!sizeof($this->_postErrors))
$this->_postProcess();
else
foreach ($this->_postErrors AS $err)
$this->_html .= '
'.$err.'
';
}
if (Tools::getValue('submitLogo'))
{
foreach(array('leftColumn', 'rightColumn') as $hookName)
if ($this->isRegisteredInHook($hookName))
$this->unregisterHook(Hook::get($hookName));
if (Tools::getValue('logo_position') == self::LEFT_COLUMN)
$this->registerHook('leftColumn');
else if (Tools::getValue('logo_position') == self::RIGHT_COLUMN)
$this->registerHook('rightColumn');
}
$this->_displayForm();
return $this->_html;
}
private function _displayForm()
{
global $smarty;
$globalVar = array(
'tab' => Tools::safeOutput(Tools::getValue('tab')),
'configure' => Tools::safeOutput(Tools::getValue('configure')),
'token' => Tools::safeOutput(Tools::getValue('token')),
'tab_module' => Tools::safeOutput(Tools::getValue('tab_module')),
'module_name' => Tools::safeOutput(Tools::getValue('module_name')));
$smarty->assign('global', $globalVar);
$this->_html .= '