1925 lines
71 KiB
PHP
1925 lines
71 KiB
PHP
|
<?php
|
|||
|
if (!defined('_PS_VERSION_'))
|
|||
|
exit;
|
|||
|
|
|||
|
class Invite extends Module {
|
|||
|
public function __construct() {
|
|||
|
$this->name = 'invite';
|
|||
|
$this->tab = 'advertising_marketing';
|
|||
|
$this->version = '2.0';
|
|||
|
$this->author = 'Antadis';
|
|||
|
$this->need_instance = 0;
|
|||
|
|
|||
|
parent::__construct();
|
|||
|
|
|||
|
$this->displayName = $this->l('Customer referral program with Open Inviter');
|
|||
|
$this->description = $this->l('Integrate a referral program system into your shop with Open Inviter support.');
|
|||
|
|
|||
|
$this->confirmUninstall = $this->l('All sponsors and friends will be deleted. Are you sure you want to uninstall this module?');
|
|||
|
$this->_errors = array();
|
|||
|
}
|
|||
|
|
|||
|
public function installDB() {
|
|||
|
return Db::getInstance()->Execute('
|
|||
|
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'invite` (
|
|||
|
`id_invite` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|||
|
`id_sponsor` INT UNSIGNED NOT NULL,
|
|||
|
`email` VARCHAR(255) NOT NULL,
|
|||
|
`lastname` VARCHAR(128) NOT NULL,
|
|||
|
`firstname` VARCHAR(128) NOT NULL,
|
|||
|
`id_customer` INT UNSIGNED DEFAULT NULL,
|
|||
|
`id_discount` INT UNSIGNED DEFAULT NULL,
|
|||
|
`id_discount_sponsor` INT UNSIGNED DEFAULT NULL,
|
|||
|
`credit` BOOL NOT NULL,
|
|||
|
`credit_sponsor` BOOL NOT NULL,
|
|||
|
`date_add` DATETIME NOT NULL,
|
|||
|
`date_upd` DATETIME NOT NULL,
|
|||
|
PRIMARY KEY (`id_invite`),
|
|||
|
UNIQUE KEY `index_unique_invite_email` (`email`)
|
|||
|
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;
|
|||
|
')
|
|||
|
&& Db::getInstance()->Execute('
|
|||
|
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'invite_credit` (
|
|||
|
`id_customer` INTEGER UNSIGNED NOT NULL,
|
|||
|
`credit` DECIMAL(20, 6) DEFAULT 0.0 NOT NULL,
|
|||
|
PRIMARY KEY (`id_customer`)
|
|||
|
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
public function uninstallDB() {
|
|||
|
return Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'invite`;')
|
|||
|
&& Db::getInstance()->Execute('DROP TABLE `'._DB_PREFIX_.'invite_credit`;');
|
|||
|
}
|
|||
|
|
|||
|
public function install() {
|
|||
|
if(!parent::install() || !$this->installDB()
|
|||
|
|| !$this->registerHook('adminCustomers')
|
|||
|
|| !$this->registerHook('createAccount')
|
|||
|
|| !$this->registerHook('createAccountForm')
|
|||
|
|| !$this->registerHook('updateOrderStatus')
|
|||
|
|| !$this->registerHook('customerAccount')
|
|||
|
|| !$this->registerHook('preProcess')) {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
public function uninstall() {
|
|||
|
$result = TRUE
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSOR_TYPE')
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSORED_TYPE')
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSOR_ON')
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSORED_ON')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_CUMULABLE')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_CUMULABLE_REDUC')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_MINIMAL')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_MINIMAL_WT')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_CART')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_PREFIX')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_DESCRIPTION')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_VALIDITY')
|
|||
|
&& Configuration::deleteByName('INVITE_OPENINVITER_ENABLE')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_PREFIX')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_DESCRIPTION')
|
|||
|
&& Configuration::deleteByName('INVITE_DISCOUNT_VALIDITY')
|
|||
|
&& Configuration::deleteByName('INVITE_CONDITIONS')
|
|||
|
&& Configuration::deleteByName('INVITE_CREDIT_ENABLE')
|
|||
|
&& Configuration::deleteByName('INVITE_CREDIT_RATE')
|
|||
|
&& Configuration::deleteByName('INVITE_CREDIT_DISPLAY')
|
|||
|
&& Configuration::deleteByName('INVITE_ORDER_QTY')
|
|||
|
&& Configuration::deleteByName('INVITE_ASK_NAME')
|
|||
|
&& Configuration::deleteByName('INVITE_FORM_FIELDS')
|
|||
|
&& Configuration::deleteByName('INVITE_FORM_FIELDS_MAX')
|
|||
|
&& Configuration::deleteByName('INVITE_FORM_SHOWLINK')
|
|||
|
&& Configuration::deleteByName('INVITE_FORM_LINKFORMAT');
|
|||
|
|
|||
|
foreach(Group::getGroups() as $group) {
|
|||
|
$result = $result
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSOR_VALUE_'.(int)($group['id_group']))
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSORED_VALUE_'.(int)($group['id_group']));
|
|||
|
foreach(Currency::getCurrencies() as $currency) {
|
|||
|
$result = $result
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSOR_VALUE_'.(int)($group['id_group']).'_'.(int)($currency['id_currency']))
|
|||
|
&& Configuration::deleteByName('INVITE_REWARD_SPONSORED_VALUE_'.(int)($group['id_group']).'_'.(int)($currency['id_currency']));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (!parent::uninstall()
|
|||
|
|| !$this->uninstallDB()
|
|||
|
|| !$result
|
|||
|
) {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
public function getContent() {
|
|||
|
$this->_html .= '<h2>'.$this->displayName.'</h2>
|
|||
|
<style type="text/css">
|
|||
|
#content .alert {
|
|||
|
width: auto;
|
|||
|
}
|
|||
|
</style>
|
|||
|
';
|
|||
|
if(Tools::getValue('submitInvite')) {
|
|||
|
$this->_postValidation();
|
|||
|
|
|||
|
if (!sizeof($this->_errors)) {
|
|||
|
$this->_postProcess();
|
|||
|
} else {
|
|||
|
foreach($this->_errors as $error) {
|
|||
|
$this->_html .= $this->displayError($error);
|
|||
|
}
|
|||
|
}
|
|||
|
} elseif(Tools::getValue('submitImport')) {
|
|||
|
$this->_doImport();
|
|||
|
}
|
|||
|
$this->_displayForm();
|
|||
|
return $this->_html;
|
|||
|
}
|
|||
|
|
|||
|
private function _postValidation() {
|
|||
|
global $cookie;
|
|||
|
|
|||
|
$groups = Group::getGroups($cookie->id_lang);
|
|||
|
$currencies = Currency::getCurrencies();
|
|||
|
|
|||
|
if(Tools::getValue('form_fields') && !Validate::isInt(Tools::getValue('form_fields'))) {
|
|||
|
$this->_errors[] = $this->l('The form fields quantity value is invalid.');
|
|||
|
}
|
|||
|
|
|||
|
if(Tools::getValue('form_fields_max') && !Validate::isInt(Tools::getValue('form_fields_max'))) {
|
|||
|
$this->_errors[] = $this->l('The maximum invites quantity value is invalid.');
|
|||
|
}
|
|||
|
|
|||
|
if(Tools::getValue('order_qty') && !Validate::isInt(Tools::getValue('order_qty'))) {
|
|||
|
$this->_errors[] = $this->l('The order quantity value is invalid.');
|
|||
|
}
|
|||
|
|
|||
|
if(Tools::getValue('credit_rate') && !Validate::isFloat(Tools::getValue('credit_rate'))) {
|
|||
|
$this->_errors[] = $this->l('The credit rate value is invalid.');
|
|||
|
}
|
|||
|
|
|||
|
if(Tools::getValue('discount_reward_minimal') && !Validate::isFloat(Tools::getValue('discount_reward_minimal'))) {
|
|||
|
$this->_errors[] = $this->l('The minimal order value is invalid.');
|
|||
|
}
|
|||
|
|
|||
|
if((int)(Tools::getValue('sponsor_reward_type') == 1)
|
|||
|
|| (int)(Tools::getValue('sponsor_reward_type') == 2)
|
|||
|
|| (int)(Tools::getValue('sponsor_reward_type') == 3)) {
|
|||
|
$sponsor_reward = Tools::getValue('sponsor_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
if(isset($sponsor_reward[$group['id_group']]) && !Validate::isInt($sponsor_reward[$group['id_group']])) {
|
|||
|
$this->_errors[] = $this->l('The reward value for sponsors in the').' '.$group['name'].' '.$this->l('is invalid.');
|
|||
|
}
|
|||
|
}
|
|||
|
} elseif((int)(Tools::getValue('sponsor_reward_type') == 4)) {
|
|||
|
foreach($groups as $group) {
|
|||
|
$sponsor_reward = Tools::getValue('sponsor_reward_value');
|
|||
|
foreach($currencies as $currency) {
|
|||
|
if(isset($sponsor_reward[$group['id_group']][$currency['id_currency']]) && !Validate::isInt($sponsor_reward[$group['id_group']][$currency['id_currency']])) {
|
|||
|
$this->_errors[] = $this->l('The reward value for sponsors in the').' '.$group['name'].' '.$this->l('with the currency').' '.$currency['name'].' '.$this->l('is invalid.');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if((int)(Tools::getValue('sponsored_reward_type') == 1)
|
|||
|
|| (int)(Tools::getValue('sponsored_reward_type') == 2)
|
|||
|
|| (int)(Tools::getValue('sponsored_reward_type') == 3)) {
|
|||
|
$sponsored_reward = Tools::getValue('sponsored_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
if(isset($sponsored_reward[$group['id_group']]) && !Validate::isFloat($sponsored_reward[$group['id_group']])) {
|
|||
|
$this->_errors[] = $this->l('The reward value for sponsored people in the').' '.$group['name'].' '.$this->l('is invalid.');
|
|||
|
}
|
|||
|
}
|
|||
|
} elseif((int)(Tools::getValue('sponsored_reward_type') == 4)) {
|
|||
|
$sponsored_reward = Tools::getValue('sponsored_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
foreach($currencies as $currency) {
|
|||
|
if(isset($sponsored_reward[$group['id_group']][$currency['id_currency']]) && !Validate::isFloat($sponsored_reward[$group['id_group']][$currency['id_currency']])) {
|
|||
|
$this->_errors[] = $this->l('The reward value for sponsored people in the').' '.$group['name'].' '.$this->l('with the currency').' '.$currency['name'].' '.$this->l('is invalid.');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private function _doImport() {
|
|||
|
|
|||
|
$old_struct = TRUE;
|
|||
|
foreach(Db::getInstance()->ExecuteS('
|
|||
|
DESCRIBE `'._DB_PREFIX_.'invite`
|
|||
|
') as $column) {
|
|||
|
if($column['Field'] == 'credit') {
|
|||
|
$old_struct = FALSE;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if($old_struct) {
|
|||
|
@ini_set('max_execution_time', (int) Tools::getValue('time_limit'), 30);
|
|||
|
|
|||
|
Db::getInstance()->Execute('
|
|||
|
ALTER TABLE `'._DB_PREFIX_.'invite`
|
|||
|
ADD COLUMN `credit` BOOL NOT NULL
|
|||
|
AFTER `id_discount_sponsor`
|
|||
|
');
|
|||
|
Db::getInstance()->Execute('
|
|||
|
ALTER TABLE `'._DB_PREFIX_.'invite`
|
|||
|
ADD COLUMN `credit_sponsor` BOOL NOT NULL
|
|||
|
AFTER `credit`
|
|||
|
');
|
|||
|
|
|||
|
if(Tools::getValue('reset_credit', 0)) {
|
|||
|
Db::getInstance()->Execute('
|
|||
|
DELETE FROM `'._DB_PREFIX_.'invite_credit`
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
$credit_customers = array();
|
|||
|
$points = Db::getInstance()->ExecuteS('
|
|||
|
SELECT `id_customer`, SUM(`points`) AS `value`
|
|||
|
FROM `'._DB_PREFIX_.'loyalty`
|
|||
|
WHERE `id_loyalty_state` = 2
|
|||
|
AND `points` > 0
|
|||
|
GROUP BY `id_customer`
|
|||
|
');
|
|||
|
if($points) {
|
|||
|
foreach($points as $credit) {
|
|||
|
Db::getInstance()->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'invite_credit`
|
|||
|
VALUES (
|
|||
|
'.(int) $credit['id_customer'].',
|
|||
|
'.(float) $credit['value'].'
|
|||
|
)
|
|||
|
');
|
|||
|
$credit_customers[] = (int) $credit['id_customer'];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
foreach(Db::getInstance()->ExecuteS('
|
|||
|
SELECT `id_discount`, `id_customer`, `value`
|
|||
|
FROM `'._DB_PREFIX_.'discount`
|
|||
|
WHERE `name` LIKE "FID%"
|
|||
|
AND `quantity` > 0
|
|||
|
AND `active` != 0
|
|||
|
AND `date_to` > NOW()
|
|||
|
AND `id_discount` NOT IN (
|
|||
|
SELECT `id_discount`
|
|||
|
FROM `'._DB_PREFIX_.'order_discount`
|
|||
|
)
|
|||
|
') as $discount) {
|
|||
|
if(in_array((int) $discount['id_customer'], $credit_customers)) {
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite_credit`
|
|||
|
SET `credit` = `credit` + '.(float) $credit['value'].'
|
|||
|
WHERE `id_customer` = '.(int) $credit['id_customer'].'
|
|||
|
');
|
|||
|
} else {
|
|||
|
Db::getInstance()->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'invite_credit`
|
|||
|
VALUES (
|
|||
|
'.(int) $credit['id_customer'].',
|
|||
|
'.(float) $credit['value'].'
|
|||
|
)
|
|||
|
');
|
|||
|
$credit_customers[] = (int) $discount['id_customer'];
|
|||
|
}
|
|||
|
$d = new Discount((int) $discount['id_discount']);
|
|||
|
$d->delete();
|
|||
|
}
|
|||
|
|
|||
|
$this->_html .= $this->displayConfirmation($this->l('Import completed.'));
|
|||
|
} else {
|
|||
|
$this->_html .= $this->displayError($this->l('Database already up-to-date.'));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private function _postProcess() {
|
|||
|
global $cookie;
|
|||
|
|
|||
|
$groups = Group::getGroups($cookie->id_lang);
|
|||
|
$currencies = Currency::getCurrencies();
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_PREFIX', Tools::getValue('discount_reward_prefix'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_DESCRIPTION', Tools::getValue('discount_reward_description'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_VALIDITY', (int) Tools::getValue('discount_reward_validity'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_CUMULABLE', (int) Tools::getValue('discount_reward_cumulable'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_CUMULABLE_REDUC', (int) Tools::getValue('discount_reward_cumulable_reduction'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_MINIMAL', (float) Tools::getValue('discount_reward_minimal'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_MINIMAL_WT', (int) Tools::getValue('discount_reward_minimal_wt'));
|
|||
|
Configuration::updateValue('INVITE_DISCOUNT_CART', (int) Tools::getValue('discount_reward_cart'));
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_ORDER_QTY', (int) Tools::getValue('order_qty'));
|
|||
|
Configuration::updateValue('INVITE_FORM_FIELDS', (int) Tools::getValue('form_fields'));
|
|||
|
Configuration::updateValue('INVITE_FORM_FIELDS_MAX', (int) Tools::getValue('form_fields_max'));
|
|||
|
Configuration::updateValue('INVITE_FORM_SHOWLINK', (int) Tools::getValue('form_show_link'));
|
|||
|
Configuration::updateValue('INVITE_FORM_LINKFORMAT', (int) Tools::getValue('form_link_format'));
|
|||
|
Configuration::updateValue('INVITE_ASK_NAME', (int) Tools::getValue('form_ask_name'));
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_CREDIT_ENABLE', (int) Tools::getValue('credit_enable'));
|
|||
|
Configuration::updateValue('INVITE_CREDIT_RATE', (float) Tools::getValue('credit_rate'));
|
|||
|
Configuration::updateValue('INVITE_CREDIT_DISPLAY', (int) Tools::getValue('credit_display'));
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSOR_ON', (int) Tools::getValue('sponsor_reward_on'));
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSORED_ON', (int) Tools::getValue('sponsored_reward_on'));
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_CONDITIONS', Tools::getValue('conditions'), TRUE);
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSOR_TYPE', (int)Tools::getValue('sponsor_reward_type'));
|
|||
|
if((int)(Tools::getValue('sponsor_reward_type')) == 4) {
|
|||
|
$sponsor_reward = Tools::getValue('sponsor_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
foreach($currencies as $currency) {
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSOR_VALUE_'.$group['id_group'].'_'.$currency['id_currency'], (float)($sponsor_reward[$group['id_group']][$currency['id_currency']]));
|
|||
|
}
|
|||
|
}
|
|||
|
} elseif((int)(Tools::getValue('sponsor_reward_type')) == 1
|
|||
|
|| (int)(Tools::getValue('sponsor_reward_type')) == 2
|
|||
|
|| (int)(Tools::getValue('sponsor_reward_type')) == 3) {
|
|||
|
$sponsor_reward = Tools::getValue('sponsor_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSOR_VALUE_'.$group['id_group'], (int)($sponsor_reward[$group['id_group']]));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSORED_TYPE', (int) Tools::getValue('sponsored_reward_type'));
|
|||
|
if((int)(Tools::getValue('sponsored_reward_type')) == 4) {
|
|||
|
$sponsored_reward = Tools::getValue('sponsored_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
foreach($currencies as $currency) {
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSORED_VALUE_'.$group['id_group'].'_'.$currency['id_currency'], (float)($sponsored_reward[$group['id_group']][$currency['id_currency']]));
|
|||
|
}
|
|||
|
}
|
|||
|
} elseif((int)(Tools::getValue('sponsored_reward_type')) == 1
|
|||
|
|| (int)(Tools::getValue('sponsored_reward_type')) == 2
|
|||
|
|| (int)(Tools::getValue('sponsored_reward_type')) == 3) {
|
|||
|
$sponsored_reward = Tools::getValue('sponsored_reward_value');
|
|||
|
foreach($groups as $group) {
|
|||
|
Configuration::updateValue('INVITE_REWARD_SPONSORED_VALUE_'.$group['id_group'], (int)($sponsored_reward[$group['id_group']]));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
Configuration::updateValue('INVITE_OPENINVITER_ENABLE', (int) Tools::getValue('openinviter_enable'));
|
|||
|
$this->_write_oi_config(
|
|||
|
Tools::getValue('openinviter_username'),
|
|||
|
Tools::getValue('openinviter_pk'),
|
|||
|
Tools::getValue('openinviter_cookiespath')
|
|||
|
);
|
|||
|
$this->_manage_oi_plugins(
|
|||
|
Tools::getValue('openinviter_plugins_disabled'),
|
|||
|
Tools::getValue('openinviter_plugins_enabled')
|
|||
|
);
|
|||
|
$this->_html .= $this->displayConfirmation($this->l('Configuration updated.'));
|
|||
|
}
|
|||
|
|
|||
|
private function _displayForm() {
|
|||
|
$this->_html .= '
|
|||
|
<link rel="stylesheet" type="text/css" href="'.__PS_BASE_URI__.'css/tabpane.css" />
|
|||
|
<style type="text/css">
|
|||
|
.clear {
|
|||
|
clear: both;
|
|||
|
}
|
|||
|
.block_hidden_only_for_screen {
|
|||
|
display: none;
|
|||
|
}
|
|||
|
ul.idTabs {
|
|||
|
padding: 0px;
|
|||
|
margin: 0px;
|
|||
|
overflow: hidden;
|
|||
|
background: none;
|
|||
|
border: 0px;
|
|||
|
z-index: 10;
|
|||
|
position: absolute;
|
|||
|
top: 0px;
|
|||
|
}
|
|||
|
ul.idTabs li.tab a {
|
|||
|
padding: 3px 25px 4px 25px;
|
|||
|
margin: 0px;
|
|||
|
display: block;
|
|||
|
border: 1px solid #efefef !important;
|
|||
|
border-bottom: 1px solid #cccccc !important;
|
|||
|
}
|
|||
|
ul.idTabs li a.selected {
|
|||
|
border: 1px solid #ccc !important;
|
|||
|
border-bottom: 1px solid #FFF6D3 !important;
|
|||
|
background: #FFF6D3;
|
|||
|
z-index: 3;
|
|||
|
padding: 3px 25px 4px 25px;
|
|||
|
margin: 0px;
|
|||
|
top: -2px;
|
|||
|
}
|
|||
|
ul.idTabs li.tab {
|
|||
|
padding: 0px;
|
|||
|
margin: 0px;
|
|||
|
border: 0px;
|
|||
|
}
|
|||
|
.tab-page {
|
|||
|
margin-top: 24px;
|
|||
|
}
|
|||
|
.tab-pane {
|
|||
|
position: relative;
|
|||
|
}
|
|||
|
</style>
|
|||
|
<script type="text/javascript" src="'.__PS_BASE_URI__.'js/jquery/jquery.idTabs.modified.js"></script>
|
|||
|
<form action="'.$_SERVER['REQUEST_URI'].'" method="post" class="tab-pane" enctype="multipart/form-data">
|
|||
|
<div id="tabs">
|
|||
|
<ul class="idTabs tab-row">
|
|||
|
<li class="tab"><a href="#idTab1">'.$this->l('General settings').'</a></li>
|
|||
|
<li class="tab"><a href="#idTab2">'.$this->l('Program conditions').'</a></li>
|
|||
|
<li class="tab"><a href="#idTab3">'.$this->l('Rewards').'</a></li>
|
|||
|
<li class="tab"><a href="#idTab4">'.$this->l('Open Inviter').'</a></li>
|
|||
|
<li class="tab"><a href="#idTab5">'.$this->l('Import').'</a></li>
|
|||
|
</ul>
|
|||
|
|
|||
|
<div id="idTab1" class="tab-page">';
|
|||
|
$this->_tab_1();
|
|||
|
$this->_html .= '<div class="clear center"><input class="button" style="margin-top: 10px" name="submitInvite" value="'.$this->l('Update settings').'" type="submit" /></div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div id="idTab2" class="tab-page">';
|
|||
|
$this->_tab_2();
|
|||
|
$this->_html .= '<div class="clear center"><input class="button" style="margin-top: 10px" name="submitInvite" value="'.$this->l('Update settings').'" type="submit" /></div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div id="idTab3" class="tab-page">';
|
|||
|
$this->_tab_3();
|
|||
|
$this->_html .= '<div class="clear center"><input class="button" style="margin-top: 10px" name="submitInvite" value="'.$this->l('Update settings').'" type="submit" /></div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div id="idTab4" class="tab-page">';
|
|||
|
$this->_tab_4();
|
|||
|
$this->_html .= '<div class="clear center"><input class="button" style="margin-top: 10px" name="submitInvite" value="'.$this->l('Update settings').'" type="submit" /></div>
|
|||
|
</div>
|
|||
|
|
|||
|
<div id="idTab5" class="tab-page">';
|
|||
|
$this->_tab_5();
|
|||
|
$this->_html .= '
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<script type="text/javascript">
|
|||
|
$(".idTabs li").idTabs();
|
|||
|
</script>
|
|||
|
</form>
|
|||
|
';
|
|||
|
}
|
|||
|
|
|||
|
private function _get_oi_plugins($enabled=TRUE) {
|
|||
|
$path = realpath(dirname(__FILE__)).'/openinviter/conf'.($enabled? '': '_disabled').'/';
|
|||
|
$dirs = scandir($path);
|
|||
|
$result = array();
|
|||
|
foreach($dirs as $dir) {
|
|||
|
if($dir != '.' && $dir != '..' && substr($dir, 0, 1) != '_') {
|
|||
|
$result[] = str_replace('.conf', '', $dir);
|
|||
|
}
|
|||
|
}
|
|||
|
return $result;
|
|||
|
}
|
|||
|
|
|||
|
private function _tab_1() {
|
|||
|
$defaultCurrency = Currency::getDefaultCurrency();
|
|||
|
|
|||
|
$this->_html .= '
|
|||
|
<p>
|
|||
|
<label class="t" for="order_qty">'.$this->l('Minimum number of orders a customer must place to unlock the referral program:').'</label>
|
|||
|
|
|||
|
<input type="text" name="order_qty" style="width: 50px;" id="order_qty" value="'.Configuration::get('INVITE_ORDER_QTY').'" />
|
|||
|
</p>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="form_fields">'.$this->l('Default invite fields quantity on the front-office form:').'</label>
|
|||
|
|
|||
|
<input type="text" name="form_fields" style="width: 50px;" id="form_fields" value="'.Configuration::get('INVITE_FORM_FIELDS').'" />
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<label class="t" for="form_fields_max">'.$this->l('Maximum simultaneous invites:').'</label>
|
|||
|
|
|||
|
<input type="text" name="form_fields_max" style="width: 50px;" id="form_fields_max" value="'.Configuration::get('INVITE_FORM_FIELDS_MAX').'" />
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Ask for the friend name:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="form_ask_name" id="form_ask_name_off" value="0" '.(Tools::getValue('form_ask_name', Configuration::get('INVITE_ASK_NAME')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="form_ask_name_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="form_ask_name" id="form_ask_name_on" value="1" '.(Tools::getValue('form_ask_name', Configuration::get('INVITE_ASK_NAME')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="form_ask_name_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Show the referral link:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="form_show_link" id="form_show_link_off" value="0" '.(Tools::getValue('form_show_link', Configuration::get('INVITE_FORM_SHOWLINK')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="form_show_link_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="form_show_link" id="form_show_link_on" value="1" '.(Tools::getValue('form_show_link', Configuration::get('INVITE_FORM_SHOWLINK')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="form_show_link_on">'.$this->l('Yes').'</label>
|
|||
|
</p>';
|
|||
|
|
|||
|
|
|||
|
if(Configuration::get('PS_REWRITING_SETTINGS')) {
|
|||
|
$this->_html .= '
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Referral link format:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="form_link_format" id="form_link_format_off" value="0" '.(Tools::getValue('form_link_format', Configuration::get('INVITE_FORM_LINKFORMAT')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="form_link_format_off">'.$this->l('Clear').'</label>
|
|||
|
|
|||
|
<input type="radio" name="form_link_format" id="form_link_format_on" value="1" '.(Tools::getValue('form_link_format', Configuration::get('INVITE_FORM_LINKFORMAT')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="form_link_format_on">'.$this->l('Rewritten').'</label>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<label class="t" for="rewrite">'.$this->l('Add this line to your custom rewrite rules:').'</label>
|
|||
|
|
|||
|
<input readonly="true" type="text" name="time_limit" style="width: 500px; " id="rewrite" value="
|
|||
|
RewriteRule ^invite/(.*)$ '.__PS_BASE_URI__.'modules/invite/sponsor.php?sponsor=$1 [QSA,L]" />
|
|||
|
</p>
|
|||
|
';
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
$this->_html .= '<p> </p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Enable customer credit:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="credit_enable" id="credit_enable_off" value="0" '.(Tools::getValue('credit_enable', Configuration::get('INVITE_CREDIT_ENABLE')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="credit_enable_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="credit_enable" id="credit_enable_on" value="1" '.(Tools::getValue('credit_enable', Configuration::get('INVITE_CREDIT_ENABLE')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="credit_enable_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="credit_rate">'.$this->l('Credit conversion rate:').'</label>
|
|||
|
'.$this->l('1 credit').' =
|
|||
|
<input type="text" name="credit_rate" style="width: 50px;" id="credit_rate" value="'.Configuration::get('INVITE_CREDIT_RATE').'" /> '.$defaultCurrency->sign.'
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="credit_display">'.$this->l('Credit display on the front-office:').'</label>
|
|||
|
|
|||
|
<select id="credit_display" name="credit_display">
|
|||
|
<option value="0"'.(Configuration::get('INVITE_CREDIT_DISPLAY') == 0? ' selected="selected"': '').'>'.$this->l('Amount (Value)').'</option>
|
|||
|
<option value="1"'.(Configuration::get('INVITE_CREDIT_DISPLAY') == 1? ' selected="selected"': '').'>'.$this->l('Value (Amount)').'</option>
|
|||
|
<option value="2"'.(Configuration::get('INVITE_CREDIT_DISPLAY') == 2? ' selected="selected"': '').'>'.$this->l('Amount').'</option>
|
|||
|
<option value="3"'.(Configuration::get('INVITE_CREDIT_DISPLAY') == 3? ' selected="selected"': '').'>'.$this->l('Value').'</option>
|
|||
|
</select>
|
|||
|
</p>';
|
|||
|
}
|
|||
|
|
|||
|
private function _tab_2() {
|
|||
|
global $cookie;
|
|||
|
|
|||
|
$defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT'));
|
|||
|
$languages = Language::getLanguages(FALSE);
|
|||
|
$iso = Language::getIsoById($defaultLanguage);
|
|||
|
$divLangName = 'cpara¤dd';
|
|||
|
$iso = Language::getIsoById((int)($cookie->id_lang));
|
|||
|
$isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en');
|
|||
|
$ad = dirname($_SERVER["PHP_SELF"]);
|
|||
|
|
|||
|
$rules = Configuration::getInt('INVITE_CONDITIONS');
|
|||
|
|
|||
|
$this->_html .= '
|
|||
|
<label class="t" style="margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px; width: auto;">'.$this->l('Referral program conditions:').'</label>
|
|||
|
|
|||
|
<script type="text/javascript">
|
|||
|
var iso = \''.$isoTinyMCE.'\' ;
|
|||
|
var pathCSS = \''._THEME_CSS_DIR_.'\' ;
|
|||
|
var ad = \''.$ad.'\' ;
|
|||
|
</script>
|
|||
|
<script type="text/javascript" src="'.__PS_BASE_URI__.'js/tiny_mce/tiny_mce.js"></script>
|
|||
|
<script type="text/javascript" src="'.__PS_BASE_URI__.'js/tinymce.inc.js"></script>
|
|||
|
<script language="javascript">id_language = Number('.$defaultLanguage.');</script>';
|
|||
|
foreach ($languages as $language) {
|
|||
|
$this->_html .= '
|
|||
|
<div id="cpara_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $defaultLanguage ? 'block' : 'none').';float: left;">
|
|||
|
<textarea class="rte" cols="120" rows="25" id="conditions_'.$language['id_lang'].'" name="conditions['.$language['id_lang'].']">'.$rules[$language['id_lang']].'</textarea>
|
|||
|
</div>';
|
|||
|
}
|
|||
|
$this->_html .= $this->displayFlags($languages, $defaultLanguage, $divLangName, 'cpara', TRUE);
|
|||
|
}
|
|||
|
|
|||
|
private function _tab_3() {
|
|||
|
global $cookie;
|
|||
|
|
|||
|
$groups = Group::getGroups($cookie->id_lang);
|
|||
|
$currencies = Currency::getCurrencies();
|
|||
|
|
|||
|
$defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT'));
|
|||
|
$languages = Language::getLanguages(FALSE);
|
|||
|
|
|||
|
$iso = Language::getIsoById($defaultLanguage);
|
|||
|
$divLangName = 'cpara¤dd';
|
|||
|
$iso = Language::getIsoById((int)($cookie->id_lang));
|
|||
|
|
|||
|
// TODO: give products, or a percent of the sponsored order
|
|||
|
$this->_html .= '
|
|||
|
<script type="text/javascript">
|
|||
|
var groups = '.json_encode($groups).';
|
|||
|
var currencies = '.json_encode($currencies).';
|
|||
|
|
|||
|
function showValue(el, ed) {
|
|||
|
$("#sponsor" + (ed? "ed": "") + "_reward_valueform").remove();
|
|||
|
|
|||
|
if($(el).val() == 1 || $(el).val() == 2 || $(el).val() == 3) {
|
|||
|
var t = "\
|
|||
|
<div id=\"sponsor" + (ed? "ed": "") + "_reward_valueform\">\
|
|||
|
<label class=\"t\" style=\"margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;\">'.$this->l('Value:').'</label>\
|
|||
|
<table class=\"table\" cellspacing=\"0\">\
|
|||
|
<thead>\
|
|||
|
<tr>\
|
|||
|
<th>'.$this->l('Group').'</th>\
|
|||
|
<th>'.$this->l('Value').'</th>\
|
|||
|
</tr>\
|
|||
|
</thead>\
|
|||
|
<tfoot>\
|
|||
|
<tr>\
|
|||
|
<th>'.$this->l('Group').'</th>\
|
|||
|
<th>'.$this->l('Value').'</th>\
|
|||
|
</tr>\
|
|||
|
</tfoot>\
|
|||
|
<tbody>";
|
|||
|
$(groups).each(function(id, item) {
|
|||
|
t += "\
|
|||
|
<tr>\
|
|||
|
<td>" + item["name"] + "</td>\
|
|||
|
<td><input type=\"text\" value=\"\" style=\"text-align: right;\" name=\"sponsor" + (ed? "ed": "") + "_reward_value[" + item["id_group"] + "]\" /></td>\
|
|||
|
</tr>";
|
|||
|
});
|
|||
|
t += "\
|
|||
|
</tbody>\
|
|||
|
</table>\
|
|||
|
</div>";
|
|||
|
$(t).insertAfter($(el).parent().next());
|
|||
|
} else if($(el).val() == 4) {
|
|||
|
var t = "\
|
|||
|
<div id=\"sponsor" + (ed? "ed": "") + "_reward_valueform\">\
|
|||
|
<label class=\"t\" style=\"margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;\">'.$this->l('Value:').'</label>\
|
|||
|
<table class=\"table\" cellspacing=\"0\">\
|
|||
|
<thead>\
|
|||
|
<tr>\
|
|||
|
<th>'.$this->l('Group').'</th>\
|
|||
|
<th>'.$this->l('Currency').'</th>\
|
|||
|
<th>'.$this->l('Value').'</th>\
|
|||
|
</tr>\
|
|||
|
</thead>\
|
|||
|
<tfoot>\
|
|||
|
<tr>\
|
|||
|
<th>'.$this->l('Group').'</th>\
|
|||
|
<th>'.$this->l('Currency').'</th>\
|
|||
|
<th>'.$this->l('Value').'</th>\
|
|||
|
</tr>\
|
|||
|
</tfoot>\
|
|||
|
<tbody>";
|
|||
|
$(groups).each(function(id, item) {
|
|||
|
$(currencies).each(function(id2, item2) {
|
|||
|
t += "<tr>";
|
|||
|
if(id2 == 0) {
|
|||
|
t += "<td rowspan=\"" + currencies.length + "\">" + item["name"] + "</td>";
|
|||
|
}
|
|||
|
t += "<td>" + item2["name"] + "</td>\
|
|||
|
<td><input type=\"text\" style=\"text-align: right;\" value=\"\" name=\"sponsor" + (ed? "ed": "") + "_reward_value[" + item["id_group"] + "][" + item2["id_currency"] + "]\" /></td>\
|
|||
|
</tr>";
|
|||
|
});
|
|||
|
});
|
|||
|
t += "\
|
|||
|
</tbody>\
|
|||
|
</table>\
|
|||
|
</div>";
|
|||
|
$(t).insertAfter($(el).parent().next());
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="sponsor_reward_type">'.$this->l('Sponsor reward:').'</label>
|
|||
|
|
|||
|
<select id="sponsor_reward_type" name="sponsor_reward_type" onchange="showValue(this, 0);">
|
|||
|
<option value="0"'.(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 0? ' selected="selected"': '').'>'.$this->l('Nothing').'</option>
|
|||
|
<option value="1"'.(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 1? ' selected="selected"': '').'>'.$this->l('Credit').'</option>
|
|||
|
<option value="2"'.(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 2? ' selected="selected"': '').'>'.$this->l('Loyalty points').'</option>
|
|||
|
<option value="3"'.(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 3? ' selected="selected"': '').'>'.$this->l('Voucher (%)').'</option>
|
|||
|
<option value="4"'.(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 4? ' selected="selected"': '').'>'.$this->l('Voucher (amount)').'</option>
|
|||
|
<option value="5"'.(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 5? ' selected="selected"': '').'>'.$this->l('Voucher (free shipping)').'</option>
|
|||
|
</select>
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="sponsor_reward_on">'.$this->l('Give the sponsor a reward on:').'</label>
|
|||
|
|
|||
|
<select id="sponsor_reward_on" name="sponsor_reward_on">
|
|||
|
<option value="0"'.(Configuration::get('INVITE_REWARD_SPONSOR_ON') == 0? ' selected="selected"': '').'>'.$this->l('The sponsored registration').'</option>
|
|||
|
<option value="1"'.(Configuration::get('INVITE_REWARD_SPONSOR_ON') == 1? ' selected="selected"': '').'>'.$this->l('The sponsored first order').'</option>
|
|||
|
</select>
|
|||
|
</p>';
|
|||
|
|
|||
|
if(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 1
|
|||
|
|| Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 2
|
|||
|
|| Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 3) {
|
|||
|
$this->_html .= '
|
|||
|
<div id="sponsor_reward_valueform">
|
|||
|
<label class="t" style="margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;">'.$this->l('Value:').'</label>
|
|||
|
<table class="table" cellspacing="0">
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tfoot>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</tfoot>
|
|||
|
<tbody>';
|
|||
|
foreach($groups as $group) {
|
|||
|
$this->_html .= '
|
|||
|
<tr>
|
|||
|
<td>'.$group['name'].'</td>
|
|||
|
<td><input type="text" style="text-align: right;" value="'.Configuration::get('INVITE_REWARD_SPONSOR_VALUE_'.$group['id_group']).'" name="sponsor_reward_value['.$group['id_group'].']" /></td>
|
|||
|
</tr>
|
|||
|
';
|
|||
|
}
|
|||
|
$this->_html .= '
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>';
|
|||
|
} elseif(Configuration::get('INVITE_REWARD_SPONSOR_TYPE') == 4) {
|
|||
|
$this->_html .= '
|
|||
|
<div id="sponsor_reward_valueform">
|
|||
|
<label class="t" style="margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;">'.$this->l('Value:').'</label>
|
|||
|
<table class="table" cellspacing="0">
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Currency').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tfoot>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Currency').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</tfoot>
|
|||
|
<tbody>';
|
|||
|
|
|||
|
foreach($groups as $group) {
|
|||
|
$i = 0;
|
|||
|
foreach($currencies as $currency) {
|
|||
|
$this->_html .= '
|
|||
|
<tr>
|
|||
|
'.($i === 0? '<td rowspan="'.count($currencies).'">'.$group['name'].'</td>': '').'
|
|||
|
<td>'.$currency['name'].'</td>
|
|||
|
<td><input type="text" style="text-align: right;" value="'.Configuration::get('INVITE_REWARD_SPONSOR_VALUE_'.$group['id_group'].'_'.$currency['id_currency']).'" name="sponsor_reward_value['.$group['id_group'].']['.$currency['id_currency'].']" /></td>
|
|||
|
</tr>
|
|||
|
';
|
|||
|
$i = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
$this->_html .= '
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>';
|
|||
|
}
|
|||
|
|
|||
|
$this->_html .= '
|
|||
|
<p> </p><p> </p><p> </p><p> </p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Sponsored reward:').'</label>
|
|||
|
|
|||
|
<select name="sponsored_reward_type" onchange="showValue(this, 1);">
|
|||
|
<option value="0">'.$this->l('Nothing').'</option>
|
|||
|
<option value="1">'.$this->l('Credit').'</option>
|
|||
|
<option value="2">'.$this->l('Loyalty points').'</option>
|
|||
|
<option value="3">'.$this->l('Voucher (%)').'</option>
|
|||
|
<option value="4">'.$this->l('Voucher (amount)').'</option>
|
|||
|
<option value="5">'.$this->l('Voucher (free shipping)').'</option>
|
|||
|
</select>
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="sponsored_reward_on">'.$this->l('Give the sponsored a reward on:').'</label>
|
|||
|
|
|||
|
<select id="sponsored_reward_on" name="sponsored_reward_on">
|
|||
|
<option value="0"'.(Configuration::get('INVITE_REWARD_SPONSORED_ON') == 0? ' selected="selected"': '').'>'.$this->l('Registration').'</option>
|
|||
|
<option value="1"'.(Configuration::get('INVITE_REWARD_SPONSORED_ON') == 1? ' selected="selected"': '').'>'.$this->l('His/Her first order').'</option>
|
|||
|
</select>
|
|||
|
</p>';
|
|||
|
|
|||
|
if(Configuration::get('INVITE_REWARD_SPONSORED_TYPE') == 1
|
|||
|
|| Configuration::get('INVITE_REWARD_SPONSORED_TYPE') == 2
|
|||
|
|| Configuration::get('INVITE_REWARD_SPONSORED_TYPE') == 3) {
|
|||
|
$this->_html .= '
|
|||
|
<div id="sponsored_reward_valueform">
|
|||
|
<label class="t" style="margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;">'.$this->l('Value:').'</label>
|
|||
|
<table class="table" cellspacing="0">
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tfoot>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</tfoot>
|
|||
|
<tbody>';
|
|||
|
foreach($groups as $group) {
|
|||
|
$this->_html .= '
|
|||
|
<tr>
|
|||
|
<td>'.$group['name'].'</td>
|
|||
|
<td><input type="text" style="text-align: right;" value="'.Configuration::get('INVITE_REWARD_SPONSORED_VALUE_'.$group['id_group']).'" name="sponsored_reward_value['.$group['id_group'].']" /></td>
|
|||
|
</tr>
|
|||
|
';
|
|||
|
}
|
|||
|
$this->_html .= '
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>';
|
|||
|
} elseif(Configuration::get('INVITE_REWARD_SPONSORED_TYPE') == 4) {
|
|||
|
$this->_html .= '
|
|||
|
<div id="sponsored_reward_valueform">
|
|||
|
<label class="t" style="margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;">'.$this->l('Value:').'</label>
|
|||
|
<table class="table" cellspacing="0">
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Currency').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tfoot>
|
|||
|
<tr>
|
|||
|
<th>'.$this->l('Group').'</th>
|
|||
|
<th>'.$this->l('Currency').'</th>
|
|||
|
<th>'.$this->l('Value').'</th>
|
|||
|
</tr>
|
|||
|
</tfoot>
|
|||
|
<tbody>';
|
|||
|
|
|||
|
foreach($groups as $group) {
|
|||
|
$i = 0;
|
|||
|
foreach($currencies as $currency) {
|
|||
|
$this->_html .= '
|
|||
|
<tr>
|
|||
|
'.($i === 0? '<td rowspan="'.count($currencies).'">'.$group['name'].'</td>': '').'
|
|||
|
<td>'.$currency['name'].'</td>
|
|||
|
<td><input type="text" value="'.Configuration::get('INVITE_REWARD_SPONSORED_VALUE_'.$group['id_group'].'_'.$currency['id_currency']).'" style="text-align: right;" name="sponsored_reward_value['.$group['id_group'].']['.$currency['id_currency'].']" /></td>
|
|||
|
</tr>
|
|||
|
';
|
|||
|
$i = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
$this->_html .= '
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>';
|
|||
|
}
|
|||
|
$this->_html .= '
|
|||
|
<p> </p><p> </p><p> </p><p> </p>
|
|||
|
|
|||
|
<label class="t" style="margin-bottom: 5px; display: block; float: none; text-align: left; padding-left: 0px;">'.$this->l('Vouchers parameters').'</label>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="discount_reward_prefix">'.$this->l('Prefix:').'</label>
|
|||
|
|
|||
|
<input type="text" name="discount_reward_prefix" style="width: 50px;" id="discount_reward_prefix" value="'.Configuration::get('INVITE_DISCOUNT_PREFIX').'" />
|
|||
|
</p>
|
|||
|
|
|||
|
<div style="overflow: auto;"><label class="t" for="discount_reward_description" style="margin-right: 8px; float: left; text-align: left; width: auto; padding-top: 3px;">'.$this->l('Description:').'</label>';
|
|||
|
$description = Configuration::getInt('INVITE_DISCOUNT_DESCRIPTION');
|
|||
|
foreach ($languages AS $language) {
|
|||
|
$this->_html .= '
|
|||
|
<div id="dd_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $defaultLanguage ? 'block' : 'none').'; float: left; margin-left: 4px;">
|
|||
|
<input type="text" name="discount_reward_description['.$language['id_lang'].']" id="discount_reward_description['.$language['id_lang'].']" value="'.(isset($_POST['discount_reward_description'][(int)($language['id_lang'])]) ? $_POST['discount_reward_description'][(int)($language['id_lang'])] : $description[(int)($language['id_lang'])]).'" style="width: 200px;" />
|
|||
|
</div>';
|
|||
|
}
|
|||
|
$this->_html .= $this->displayFlags($languages, $defaultLanguage, $divLangName, 'dd', TRUE).'</div>';
|
|||
|
|
|||
|
$this->_html .= '
|
|||
|
<p style="clear: both;">
|
|||
|
<label class="t" for="discount_reward_validity">'.$this->l('Validity (days):').'</label>
|
|||
|
|
|||
|
<input type="text" name="discount_reward_validity" style="width: 50px;" id="discount_reward_validity" value="'.Configuration::get('INVITE_DISCOUNT_VALIDITY').'" />
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Cumulable:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="discount_reward_cumulable" id="discount_reward_cumulable_off" value="0" '.(Tools::getValue('discount_reward_cumulable', Configuration::get('INVITE_DISCOUNT_CUMULABLE')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="discount_reward_cumulable_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="discount_reward_cumulable" id="discount_reward_cumulable_on" value="1" '.(Tools::getValue('discount_reward_cumulable', Configuration::get('INVITE_DISCOUNT_CUMULABLE')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="discount_reward_cumulable_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Cumulable with specials:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="discount_reward_cumulable_specials" id="discount_reward_cumulable_specials_off" value="0" '.(Tools::getValue('discount_reward_cumulable_specials', Configuration::get('INVITE_DISCOUNT_CUMULABLE_REDUC')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="discount_reward_cumulable_specials_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="discount_reward_cumulable_specials" id="discount_reward_cumulable_specials_on" value="1" '.(Tools::getValue('discount_reward_cumulable_specials', Configuration::get('INVITE_DISCOUNT_CUMULABLE_REDUC')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="discount_reward_cumulable_specials_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Show on cart:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="discount_reward_cart" id="discount_reward_cart_off" value="0" '.(Tools::getValue('discount_reward_cart', Configuration::get('INVITE_DISCOUNT_CART')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="discount_reward_cart_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="discount_reward_cart" id="discount_reward_cart_on" value="1" '.(Tools::getValue('discount_reward_cart', Configuration::get('INVITE_DISCOUNT_CART')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="discount_reward_cart_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
|
|||
|
<p style="clear: both;">
|
|||
|
<label class="t" for="discount_reward_minimal">'.$this->l('Minimal order amount:').'</label>
|
|||
|
|
|||
|
<input type="text" name="discount_reward_minimal" style="width: 50px; text-align: right;" id="discount_reward_minimal" value="'.Configuration::get('INVITE_DISCOUNT_MINIMAL').'" />
|
|||
|
<select name="discount_reward_minimal_wt" style="height: 21px;">
|
|||
|
<option value="0"'.(Configuration::get('INVITE_DISCOUNT_MINIMAL_WT') == 0? ' selected="selected"': '').'>'.$this->l('without taxes').'</option>
|
|||
|
<option value="1"'.(Configuration::get('INVITE_DISCOUNT_MINIMAL_WT') == 1? ' selected="selected"': '').'>'.$this->l('with taxes').'</option>
|
|||
|
</select>
|
|||
|
</p>';
|
|||
|
}
|
|||
|
|
|||
|
private function _tab_4() {
|
|||
|
$this->_html .= '
|
|||
|
<script type="text/javascript">
|
|||
|
function updateSelects() {
|
|||
|
var disabled_plugins = [];
|
|||
|
$("#select_openinviter_plugins_disabled option").each(function(id, value) {
|
|||
|
disabled_plugins[disabled_plugins.length] = $(value).val();
|
|||
|
});
|
|||
|
|
|||
|
var enabled_plugins = [];
|
|||
|
$("#select_openinviter_plugins_enabled option").each(function(id, value) {
|
|||
|
enabled_plugins[enabled_plugins.length] = $(value).val();
|
|||
|
});
|
|||
|
|
|||
|
$("#openinviter_plugins_disabled").attr("value", disabled_plugins.join(","));
|
|||
|
$("#openinviter_plugins_enabled").attr("value", enabled_plugins.join(","));
|
|||
|
}
|
|||
|
|
|||
|
function enablePlugins() {
|
|||
|
var to_enable = $("#select_openinviter_plugins_disabled").val();
|
|||
|
$("#select_openinviter_plugins_disabled option:selected").remove();
|
|||
|
$(to_enable).each(function(id, value) {
|
|||
|
$(document.createElement("option")).attr("value", value).text(value).appendTo($("#select_openinviter_plugins_enabled"));
|
|||
|
});
|
|||
|
updateSelects();
|
|||
|
}
|
|||
|
|
|||
|
function disablePlugins() {
|
|||
|
var to_disable = $("#select_openinviter_plugins_enabled").val();
|
|||
|
$("#select_openinviter_plugins_enabled option:selected").remove();
|
|||
|
$(to_disable).each(function(id, value) {
|
|||
|
$(document.createElement("option")).attr("value", value).text(value).appendTo($("#select_openinviter_plugins_disabled"));
|
|||
|
});
|
|||
|
updateSelects();
|
|||
|
}
|
|||
|
</script>
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Enable OpenInviter:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="openinviter_enable" id="openinviter_enable_off" value="0" '.(Tools::getValue('openinviter_enable', Configuration::get('INVITE_OPENINVITER_ENABLE')) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="openinviter_enable_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="openinviter_enable" id="openinviter_enable_on" value="1" '.(Tools::getValue('openinviter_enable', Configuration::get('INVITE_OPENINVITER_ENABLE')) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="openinviter_enable_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="openinviter_username">'.$this->l('Username:').'</label>
|
|||
|
|
|||
|
<input type="text" name="openinviter_username" id="openinviter_username" value="" />
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<label class="t" for="openinviter_pk">'.$this->l('Private key:').'</label>
|
|||
|
|
|||
|
<input type="text" name="openinviter_pk" id="openinviter_pk" value="" />
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<label class="t" for="openinviter_cookiespath">'.$this->l('Path to the cookies directory:').'</label>
|
|||
|
|
|||
|
<input type="text" name="openinviter_cookiespath" id="openinviter_cookiespath" value="" style="width: 400px;" />
|
|||
|
</p>
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<label style="display: block; float: none; text-align: left; padding: 0px; margin: 0px 0px 10px;">'.$this->l('Plugins').'</label>
|
|||
|
<select name="select_openinviter_plugins_disabled[]" id="select_openinviter_plugins_disabled" style="width: 200px; height: 300px; float: left; margin-left: 200px;" multiple="multiple">';
|
|||
|
$plugins = $this->_get_oi_plugins(FALSE);
|
|||
|
foreach($plugins as $plugin) {
|
|||
|
$this->_html .= '<option value="'.$plugin.'" style="padding: 0px 2px;">'.$plugin.'</option>';
|
|||
|
}
|
|||
|
$this->_html .= '</select>
|
|||
|
<input type="hidden" id="openinviter_plugins_disabled" name="openinviter_plugins_disabled" value="'.implode(',', $plugins).'">
|
|||
|
|
|||
|
<div style="height: 180px; float: left; padding: 120px 10px 0px;">
|
|||
|
<a class="button" onclick="disablePlugins();return false;" style="padding: 5px 10px; display: block; cursor: pointer; text-align: center;">< '.$this->l('Disable').'</a><br />
|
|||
|
<a class="button" onclick="enablePlugins();return false;" style="padding: 5px 10px; display: block; cursor: pointer; text-align: center;">'.$this->l('Enable').' ></a>
|
|||
|
</div>';
|
|||
|
|
|||
|
$plugins = $this->_get_oi_plugins();
|
|||
|
$this->_html .= '<select name="select_openinviter_plugins_enabled[]" id="select_openinviter_plugins_enabled" style="width: 200px; height: 300px; float: left;" multiple="multiple">';
|
|||
|
foreach($plugins as $plugin) {
|
|||
|
$this->_html .= '<option value="'.$plugin.'" style="padding: 0px 2px;">'.$plugin.'</option>';
|
|||
|
}
|
|||
|
$this->_html .= '</select>
|
|||
|
<input type="hidden" id="openinviter_plugins_enabled" name="openinviter_plugins_enabled" value="'.implode(',', $plugins).'">
|
|||
|
<p class="clear"></p>';
|
|||
|
}
|
|||
|
|
|||
|
private function _tab_5() {
|
|||
|
$this->_html .= '
|
|||
|
<p>'.$this->l('This tab allows you to import referrals from the referralprogram module or from the previous version of this module.').'</p>
|
|||
|
<p><strong>'.$this->l('Note:').'</strong> '.$this->l('clicking on the import button will discard any modification made in the other tabs.').'</p>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<p>
|
|||
|
<label class="t" for="time_limit">'.$this->l('Time limit for the import:').'</label>
|
|||
|
|
|||
|
<input type="text" name="time_limit" style="width: 30px; text-align: right;" id="time_limit" value="'.ini_get('max_execution_time').'" /> '.$this->l('seconds').'
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<label class="t">'.$this->l('Reset existing credit values:').'</label>
|
|||
|
|
|||
|
<input type="radio" name="reset_credit" id="reset_credit_off" value="0" '.(Tools::getValue('reset_credit', 0) == 0 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="reset_credit_off">'.$this->l('No').'</label>
|
|||
|
|
|||
|
<input type="radio" name="reset_credit" id="reset_credit_on" value="1" '.(Tools::getValue('reset_credit', 0) == 1 ? 'checked="checked"' : '').' />
|
|||
|
<label class="t" for="reset_credit_on">'.$this->l('Yes').'</label>
|
|||
|
</p>
|
|||
|
|
|||
|
<div class="clear center"><input class="button" style="margin-top: 10px" name="submitImport" value="'.$this->l('Import').'" type="submit" /></div>';
|
|||
|
}
|
|||
|
|
|||
|
private function _manage_oi_plugins($to_disable=FALSE, $to_enable=FALSE) {
|
|||
|
if($to_disable !== FALSE && $to_enable !== FALSE) {
|
|||
|
$to_disable = explode(',', str_replace(array('.', '..', '/', '\\'), '', $to_disable));
|
|||
|
$to_enable = explode(',', str_replace(array('.', '..', '/', '\\'), '', $to_enable));
|
|||
|
|
|||
|
$path = dirname(__FILE__).'/openinviter/';
|
|||
|
|
|||
|
foreach($to_disable as $plugin) {
|
|||
|
@rename($path.'conf/'.$plugin.'.conf', $path.'conf_disabled/'.$plugin.'.conf');
|
|||
|
@rename($path.'plugins/'.$plugin.'.plg.php', $path.'plugins_disabled/'.$plugin.'.plg.php');
|
|||
|
}
|
|||
|
|
|||
|
foreach($to_enable as $plugin) {
|
|||
|
@rename($path.'conf_disabled/'.$plugin.'.conf', $path.'conf/'.$plugin.'.conf');
|
|||
|
@rename($path.'plugins_disabled/'.$plugin.'.plg.php', $path.'plugins/'.$plugin.'.plg.php');
|
|||
|
}
|
|||
|
|
|||
|
include(dirname(__FILE__).'/openinviter/config.php');
|
|||
|
@unlink($openinviter_settings['cookie_path'].'/oi_plugins.php');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private function _write_oi_config($username=FALSE, $pk=FALSE, $path=FALSE) {
|
|||
|
if($username !== FALSE && $pk !== FALSE && !empty($username) && !empty($pk)) {
|
|||
|
@file_put_contents(dirname(__FILE__).'/openinviter/config.php', '<?php
|
|||
|
$openinviter_settings=array(
|
|||
|
\'username\'=>\''.addslashes($username).'\',
|
|||
|
\'private_key\'=>\''.addslashes($pk).'\',
|
|||
|
\'cookie_path\'=>'.($path !== FALSE && !empty($path)? '\''.$path.'\'': 'dirname(__FILE__).\'/cookies\'').',
|
|||
|
\'message_body\'=>\'\',
|
|||
|
\'message_subject\'=>\'\',
|
|||
|
\'transport\'=>\'curl\', // curl or wget
|
|||
|
\'local_debug\'=>\'on_error\', // on_error => log only requests containing errors; always => log all requests; false => don`t log anything
|
|||
|
\'remote_debug\'=>FALSE, // When set to TRUE OpenInviter sends debug information to our servers. Set it to FALSE to disable this feature
|
|||
|
\'hosted\'=>FALSE, //When set to TRUE OpenInviter uses the OpenInviter Hosted Solution servers to import the contacts.
|
|||
|
\'proxies\'=>array(), //If you want to use a proxy in OpenInviter by adding another key to the array. Example: \'proxy_1\'=>array(\'host\'=>\'1.2.3.4\',\'port\'=>\'8080\',\'user\'=>\'user\',\'password\'=>\'pass\')
|
|||
|
//You can add as many proxies as you want and OpenInviter will randomly choose which one to use on each import.
|
|||
|
\'stats\'=>TRUE,
|
|||
|
\'plugins_cache_time\'=>1800,
|
|||
|
\'plugins_cache_file\'=>\'oi_plugins.php\',
|
|||
|
\'update_files\'=>true,
|
|||
|
\'stats_user\'=>\'\', //Required to access the stats
|
|||
|
\'stats_password\'=>\'\' //Required to access the stats
|
|||
|
);
|
|||
|
?>');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function hookCustomerAccount($params) {
|
|||
|
return $this->display(__FILE__, 'my-account.tpl');
|
|||
|
}
|
|||
|
|
|||
|
public function hookMyAccountBlock($params) {
|
|||
|
return $this->hookCustomerAccount($params);
|
|||
|
}
|
|||
|
|
|||
|
public function hookCreateAccountForm($params) {
|
|||
|
global $smarty, $site_version_front;
|
|||
|
|
|||
|
if($firstname = Tools::getValue('firstname')) {
|
|||
|
$_POST['firstname'] = $firstname;
|
|||
|
}
|
|||
|
|
|||
|
if($lastname = Tools::getValue('lastname')) {
|
|||
|
$_POST['lastname'] = $lastname;
|
|||
|
}
|
|||
|
|
|||
|
if($email = Tools::getValue('email')) {
|
|||
|
$_POST['email'] = $email;
|
|||
|
}
|
|||
|
|
|||
|
if(Configuration::get('PS_CIPHER_ALGORITHM')) {
|
|||
|
$cipherTool = new Rijndael(_RIJNDAEL_KEY_, _RIJNDAEL_IV_);
|
|||
|
} else {
|
|||
|
$cipherTool = new Blowfish(_COOKIE_KEY_, _COOKIE_IV_);
|
|||
|
}
|
|||
|
$explodeResult = explode('|', $cipherTool->decrypt(rawurldecode(Tools::getValue('sponsor'))));
|
|||
|
|
|||
|
if($explodeResult
|
|||
|
&& count($explodeResult) > 1) {
|
|||
|
list($id_invite, $email) = $explodeResult;
|
|||
|
$customer = new Customer();
|
|||
|
|
|||
|
if((int) $id_invite
|
|||
|
&& !empty($email)
|
|||
|
&& Validate::isEmail($email)
|
|||
|
&& ($customer = $customer->getByEmail($email))
|
|||
|
&& Validate::isLoadedObject($customer)) {
|
|||
|
$smarty->assign(array(
|
|||
|
'sponsor_email' => $email,
|
|||
|
));
|
|||
|
|
|||
|
if(Module::isInstalled('trackingtag') && Db::getInstance()->getRow('
|
|||
|
SELECT `id_trackingtag`
|
|||
|
FROM `'._DB_PREFIX_.'trackingtag`
|
|||
|
WHERE `sponsor` = "'.pSQL($email).'"
|
|||
|
AND `version` = "'.pSQL($site_version_front).'"
|
|||
|
AND `enabled` = 1
|
|||
|
')) {
|
|||
|
$smarty->assign(array(
|
|||
|
'hide_sponsor' => TRUE,
|
|||
|
));
|
|||
|
|
|||
|
//get tracking info
|
|||
|
$tr_infos = Db::getInstance()->getRow('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'trackingtag`
|
|||
|
WHERE (`date_start` <= NOW() OR `date_start` = "0000-00-00 00:00:00")
|
|||
|
AND (`date_end` > NOW() OR `date_end` = "0000-00-00 00:00:00")
|
|||
|
AND `enabled` = 1
|
|||
|
AND `version` = "'.pSQL($site_version_front).'"
|
|||
|
AND `sponsor` = "'.pSQL($email).'"
|
|||
|
');
|
|||
|
if (!empty($tr_infos['tag_auth'])) {
|
|||
|
$smarty->assign(array(
|
|||
|
'tag_auth' => $tr_infos['tag_auth'],
|
|||
|
));
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if($c = Db::getInstance()->getRow('
|
|||
|
SELECT i.`email`
|
|||
|
FROM `'._DB_PREFIX_.'invite` i
|
|||
|
WHERE i.`id_sponsor` = '.(int) $customer->id.'
|
|||
|
AND i.`id_invite` = '.(int) $id_invite.'
|
|||
|
')) {
|
|||
|
$_POST['email'] = $c['email'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if(isset($_COOKIE['4598484FDSFDSREFERAL8849FDS'])){
|
|||
|
$referal_email = base64_decode($_COOKIE['4598484FDSFDSREFERAL8849FDS']);
|
|||
|
$smarty->assign('sponsor_email', $referal_email);
|
|||
|
} else {
|
|||
|
if (isset($customer)) {
|
|||
|
setcookie('4598484FDSFDSREFERAL8849FDS', base64_encode($customer->email), time() + 3600 * 24, '/', 'bebeboutik.com');
|
|||
|
}
|
|||
|
}
|
|||
|
// setcookie('554b43403edef30d31412286d5098965', $sponsor, time() + 3600 * 24, '/', 'bebeboutik.com');
|
|||
|
|
|||
|
// if(isset($_COOKIE['554b43403edef30d31412286d5098965'])){
|
|||
|
// $sponsor = $_COOKIE['554b43403edef30d31412286d5098965'];
|
|||
|
// $email = base64_decode(strrev(substr($sponsor, 12)));
|
|||
|
// $smarty->assign('referralprogram', $email);
|
|||
|
// }
|
|||
|
|
|||
|
return $this->display(__FILE__, 'authentication.tpl');
|
|||
|
}
|
|||
|
|
|||
|
public function hookPreProcess($params) {
|
|||
|
global $cookie;
|
|||
|
if(Configuration::get('INVITE_CREDIT_ENABLE') == 1 && $cookie->isLogged()) {
|
|||
|
global $smarty, $page_name, $cart;
|
|||
|
$smarty->assign('customer_credit', $this->_get_credit((int) $cookie->id_customer, FALSE, FALSE, 'frontoffice'));
|
|||
|
|
|||
|
if($page_name == 'order' && $cart->nbProducts() && isset($_GET['deleteDiscount']) && Validate::isUnsignedId($_GET['deleteDiscount'])) {
|
|||
|
$discount = new Discount((int) $_GET['deleteDiscount']);
|
|||
|
if(substr($discount->name, 0, strlen(Configuration::get('INVITE_DISCOUNT_PREFIX'))) == Configuration::get('INVITE_DISCOUNT_PREFIX') && (int) $discount->id_customer == (int) $cookie->id_customer) {
|
|||
|
$this->set_credit_value($cookie->id_customer, $this->get_credit_value($cookie->id_customer) + (float) $discount->value);
|
|||
|
$discount->delete();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function get_credit_value($id_customer=0) {
|
|||
|
global $cookie;
|
|||
|
if(Configuration::get('INVITE_CREDIT_ENABLE') == 1 && $cookie->isLogged()) {
|
|||
|
return $this->_get_credit((int) $cookie->id_customer, TRUE);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function set_credit_value($id_customer=0, $value=0) {
|
|||
|
global $cookie;
|
|||
|
if(Configuration::get('INVITE_CREDIT_ENABLE') == 1 && $cookie->isLogged()) {
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite_credit`
|
|||
|
SET `credit` = '.((float) $value / Configuration::get('INVITE_CREDIT_RATE')).'
|
|||
|
WHERE `id_customer` = '.(int) $id_customer
|
|||
|
);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function hookAdminCustomers($params) {
|
|||
|
global $cookie;
|
|||
|
|
|||
|
$customer = new Customer((int) $params['id_customer']);
|
|||
|
|
|||
|
if (!Validate::isLoadedObject($customer))
|
|||
|
die (Tools::displayError('Incorrect object Customer.'));
|
|||
|
|
|||
|
$result = '';
|
|||
|
|
|||
|
if(Configuration::get('INVITE_CREDIT_ENABLE') == 1) {
|
|||
|
$credit = $this->_get_credit($customer->id, FALSE, FALSE, 'info');
|
|||
|
|
|||
|
$result .= '
|
|||
|
<div class="clear"> </div><br />
|
|||
|
<h2>'.$this->l('Customer credit:').' '.$credit.'</h2>';
|
|||
|
}
|
|||
|
|
|||
|
$sponsor = $this->_get_sponsor($customer->id);
|
|||
|
|
|||
|
if(Configuration::get('INVITE_FORM_LINKFORMAT')) {
|
|||
|
$invitelink = Tools::getShopDomain(TRUE).__PS_BASE_URI__.'invite/'.substr(base64_encode($customer->date_add), 0, 12).strrev(base64_encode(strval($customer->email)));
|
|||
|
} else {
|
|||
|
if(Configuration::get('PS_CIPHER_ALGORITHM')) {
|
|||
|
$cipherTool = new Rijndael(_RIJNDAEL_KEY_, _RIJNDAEL_IV_);
|
|||
|
} else {
|
|||
|
$cipherTool = new Blowfish(_COOKIE_KEY_, _COOKIE_IV_);
|
|||
|
}
|
|||
|
$invitelink = $link->getPageLink('authentication.php', TRUE).'?create_account=1&sponsor='.urlencode($cipherTool->encrypt('1|'.$customer->email.'|'));
|
|||
|
}
|
|||
|
|
|||
|
$result .= '
|
|||
|
<div class="clear"> </div>
|
|||
|
<h2>'.$this->l('Referral program').'</h2>
|
|||
|
<h3>'.$this->l('Invite link:').'</h3>
|
|||
|
<input type="text" style="width: 800px" onclick="$(this).select();" value="'.$invitelink.'" />
|
|||
|
<br /><br /><br />
|
|||
|
|
|||
|
<h3>'.($sponsor? $this->l('Customer\'s sponsor:').' <a href="index.php?tab=AdminCustomers&id_customer='.(int) $sponsor['id_customer'].'&viewcustomer&token='.Tools::getAdminToken('AdminCustomers'.(int) Tab::getIdFromClassName('AdminCustomers').(int) $cookie->id_employee).'">'.$sponsor['firstname'].' '.$sponsor['lastname'].'</a>': $this->l('No one has sponsored this customer.')).'</h3>
|
|||
|
<br />
|
|||
|
<h3>'.$this->l('Customer\'s pending friends:').'</h3>
|
|||
|
<button onclick="var btn = $(this); btn.attr(\'disabled\', \'disabled\'); $.ajax({
|
|||
|
url: \''.__PS_BASE_URI__.'modules/invite/ajax_friends.php?id='.$customer->id.'&pending=1&adtoken='.Tools::encrypt('InviteAdmFriendsPending'.$customer->id).'\',
|
|||
|
success: function(response) {
|
|||
|
btn.replaceWith(response)
|
|||
|
}
|
|||
|
});" class="button">'.$this->l('Click here to load the friends list').'</button>
|
|||
|
<br /><br /><br />
|
|||
|
<h3>'.$this->l('Customer\'s friends:').'</h3>
|
|||
|
<p>Nb filleuls : '.(int) $this->getNbFriends((int) $customer->id).'</p>
|
|||
|
<button onclick="var btn = $(this); btn.attr(\'disabled\', \'disabled\'); $.ajax({
|
|||
|
url: \''.__PS_BASE_URI__.'modules/invite/ajax_friends.php?id='.$customer->id.'&adtoken='.Tools::encrypt('InviteAdmFriends'.$customer->id).'\',
|
|||
|
success: function(response) {
|
|||
|
btn.replaceWith(response)
|
|||
|
}
|
|||
|
});" class="button">'.$this->l('Click here to load the friends list').'</button>
|
|||
|
';
|
|||
|
|
|||
|
return $result.'<br /><br />';
|
|||
|
}
|
|||
|
|
|||
|
private function _get_credit($id_customer=FALSE, $value=FALSE, $with_sign=FALSE, $mode=FALSE) {
|
|||
|
$credit = Db::getInstance()->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite_credit`
|
|||
|
WHERE `id_customer` = '.(int) $id_customer
|
|||
|
);
|
|||
|
|
|||
|
if(count($credit) == 0) {
|
|||
|
$credit = 0;
|
|||
|
} else {
|
|||
|
$credit = $credit[0]['credit'];
|
|||
|
}
|
|||
|
|
|||
|
if($mode === FALSE) {
|
|||
|
if(!$value) {
|
|||
|
return $credit;
|
|||
|
} else {
|
|||
|
$value = $credit * Configuration::get('INVITE_CREDIT_RATE');
|
|||
|
if(!$with_sign) {
|
|||
|
return $value;
|
|||
|
} else {
|
|||
|
$currency = Currency::getDefaultCurrency();
|
|||
|
return $value.' '.$currency->sign;
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
$value = $credit * Configuration::get('INVITE_CREDIT_RATE');
|
|||
|
$currency = Currency::getDefaultCurrency();
|
|||
|
|
|||
|
if($mode === 'info') {
|
|||
|
return sprintf('%.02f', $credit).' ('.$value.' '.$currency->sign.')';
|
|||
|
} elseif($mode === 'frontoffice') {
|
|||
|
$format = (int) Configuration::get('INVITE_CREDIT_DISPLAY');
|
|||
|
if($format === 0) {
|
|||
|
return rtrim(rtrim(sprintf('%.02f', $credit), '0'), '.').' ('.$value.' '.$currency->sign.')';
|
|||
|
} elseif($format === 1) {
|
|||
|
return $value.' '.$currency->sign.' ('.rtrim(rtrim(sprintf('%.02f', $credit), '0'), '.').')';
|
|||
|
} elseif($format === 2) {
|
|||
|
return rtrim(rtrim(sprintf('%.02f', $credit), '0'), '.');
|
|||
|
} else {
|
|||
|
return $value.' '.$currency->sign;
|
|||
|
}
|
|||
|
} else {
|
|||
|
return array($credit, $value, $currency->sign);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private function _get_sponsor($id_customer=FALSE) {
|
|||
|
if(!(int) $id_customer) {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
|
|||
|
SELECT c.`id_customer`, c.`firstname`, c.`lastname`
|
|||
|
FROM `'._DB_PREFIX_.'customer` c
|
|||
|
LEFT JOIN `'._DB_PREFIX_.'invite` i
|
|||
|
ON i.`id_sponsor` = c.`id_customer`
|
|||
|
WHERE i.`id_customer` = '.(int) $id_customer.'
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
private function _register_discount($params) {
|
|||
|
$discount = new Discount();
|
|||
|
$discount->id_customer = $params['id_customer'];
|
|||
|
$discount->id_discount_type = $params['discount_type'];
|
|||
|
$discount->cumulable = Configuration::get('INVITE_DISCOUNT_CUMULABLE');
|
|||
|
$discount->cumulable_reduction = Configuration::get('INVITE_DISCOUNT_CUMULABLE_REDUC');
|
|||
|
$discount->minimal = Configuration::get('INVITE_DISCOUNT_MINIMAL');
|
|||
|
$discount->include_tax = Configuration::get('INVITE_DISCOUNT_MINIMAL_WT');
|
|||
|
$discount->cart_display = Configuration::get('INVITE_DISCOUNT_CART');
|
|||
|
$discount->active = 1;
|
|||
|
$discount->quantity = 1;
|
|||
|
$discount->quantity_per_user = 1;
|
|||
|
$discount->date_from = date('Y-m-d H:i:s');
|
|||
|
$discount->date_to = date('Y-m-d H:i:s', time() + Configuration::get('INVITE_DISCOUNT_VALIDITY') * 86400);
|
|||
|
|
|||
|
$name = Tools::passwdGen(8);
|
|||
|
if(Discount::discountExists(Configuration::get('INVITE_DISCOUNT_PREFIX').$name)) {
|
|||
|
// It should not happen, but who knows...
|
|||
|
$name = Tools::passwdGen(8);
|
|||
|
}
|
|||
|
$discount->name = Configuration::get('INVITE_DISCOUNT_PREFIX').$name;
|
|||
|
|
|||
|
$discount->description = Configuration::getInt('INVITE_DISCOUNT_DESCRIPTION');
|
|||
|
if(isset($params['value']) && isset($params['currency'])) {
|
|||
|
$discount->id_currency = $params['currency'];
|
|||
|
$discount->value = $params['value'];
|
|||
|
}
|
|||
|
|
|||
|
$discount->add();
|
|||
|
|
|||
|
return $discount;
|
|||
|
}
|
|||
|
|
|||
|
public function hookUpdateOrderStatus($params) {
|
|||
|
if(!Validate::isLoadedObject($params['newOrderStatus'])) {
|
|||
|
die (Tools::displayError('Missing parameters'));
|
|||
|
}
|
|||
|
|
|||
|
$orderState = $params['newOrderStatus'];
|
|||
|
|
|||
|
$order = new Order((int)($params['id_order']));
|
|||
|
if($order AND !Validate::isLoadedObject($order)) {
|
|||
|
die(Tools::displayError('Incorrect object Order.'));
|
|||
|
}
|
|||
|
|
|||
|
$customer = new Customer((int) $order->id_customer);
|
|||
|
$stats = $customer->getStats();
|
|||
|
$nbOrdersCustomer = (int) $stats['nb_orders'] + 1;
|
|||
|
|
|||
|
$invite = Db::getInstance()->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `id_customer` = '.$customer->id
|
|||
|
);
|
|||
|
if(count($invite) > 0) {
|
|||
|
$invite = $invite[0];
|
|||
|
$sponsor = new Customer((int) $invite['id_sponsor']);
|
|||
|
|
|||
|
if((int) $orderState->logable && $nbOrdersCustomer == 1) {
|
|||
|
if(Configuration::get('INVITE_REWARD_SPONSOR_ON') == 1) {
|
|||
|
$this->_make_rewards($sponsor);
|
|||
|
}
|
|||
|
|
|||
|
if(Configuration::get('INVITE_REWARD_SPONSORED_ON') == 1) {
|
|||
|
$this->_make_rewards($customer, TRUE);
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
public function hookCreateAccount($params) {
|
|||
|
global $cookie;
|
|||
|
|
|||
|
$newCustomer = $params['newCustomer'];
|
|||
|
if(!Validate::isLoadedObject($newCustomer)) {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
$postVars = $params['_POST'];
|
|||
|
if(empty($postVars) || !isset($postVars['invite']) || empty($postVars['invite'])) {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
$sponsorEmail = $postVars['invite'];
|
|||
|
|
|||
|
if(!Validate::isEmail($sponsorEmail) || $sponsorEmail == $newCustomer->email) {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
$sponsor = new Customer();
|
|||
|
if($sponsor = $sponsor->getByEmail($sponsorEmail)) {
|
|||
|
$invite = Db::getInstance()->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `email` = "'.pSQL($newCustomer->email).'"
|
|||
|
');
|
|||
|
|
|||
|
if(count($invite) == 0) {
|
|||
|
// If the customer was not invited by the sponsor, we create the invitation dynamically
|
|||
|
Db::getInstance()->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'invite`
|
|||
|
VALUES (
|
|||
|
DEFAULT,
|
|||
|
'.$sponsor->id.',
|
|||
|
"'.pSQL($newCustomer->email).'",
|
|||
|
"'.pSQL($newCustomer->lastname).'",
|
|||
|
"'.pSQL($newCustomer->firstname).'",
|
|||
|
'.$newCustomer->id.',
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
NOW(),
|
|||
|
NOW(),
|
|||
|
0
|
|||
|
)
|
|||
|
');
|
|||
|
$invite = Db::getInstance()->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `email` = "'.pSQL($newCustomer->email).'"
|
|||
|
');
|
|||
|
} else {
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite`
|
|||
|
SET `id_customer` = '.$newCustomer->id.' , `date_upd` = NOW()
|
|||
|
WHERE `email` = "'.pSQL($newCustomer->email).'"
|
|||
|
');
|
|||
|
$invite[0]['id_customer'] = $newCustomer->id;
|
|||
|
}
|
|||
|
|
|||
|
$invite = $invite[0];
|
|||
|
|
|||
|
if(Configuration::get('INVITE_REWARD_SPONSOR_ON') == 0) {
|
|||
|
$this->_make_rewards($sponsor);
|
|||
|
}
|
|||
|
|
|||
|
if(Configuration::get('INVITE_REWARD_SPONSORED_ON') == 0) {
|
|||
|
$this->_make_rewards($newCustomer, TRUE);
|
|||
|
}
|
|||
|
|
|||
|
return TRUE;
|
|||
|
}
|
|||
|
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
|
|||
|
public function hookShoppingCart($params) {
|
|||
|
global $cookie, $cart, $smarty;
|
|||
|
|
|||
|
if($cookie->isLogged() && $cart->getOrderTotal() > 0) {
|
|||
|
$customer = new Customer((int) $cookie->id_customer);
|
|||
|
if(Validate::isLoadedObject($customer)) {
|
|||
|
if(Configuration::get('INVITE_CREDIT_ENABLE') == 1) {
|
|||
|
$credit = $this->_get_credit($customer->id, FALSE, FALSE, 'array');
|
|||
|
$already_used = FALSE;
|
|||
|
$d_prefix = Configuration::get('INVITE_DISCOUNT_PREFIX');
|
|||
|
$d_prefix_l = strlen($d_prefix);
|
|||
|
foreach($cart->getDiscounts(TRUE) as $d) {
|
|||
|
if(substr($d['name'], 0, $d_prefix_l) == $d_prefix) {
|
|||
|
$already_used = TRUE;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$display_credits = true;
|
|||
|
$sql = 'SELECT id_customer FROM `'._DB_PREFIX_.'customer_credits` WHERE id_customer = ' .(int) $customer->id;
|
|||
|
if(Db::getInstance()->getValue($sql)){
|
|||
|
$display_credits = false;
|
|||
|
}
|
|||
|
|
|||
|
if($credit[0] > 0 && !$already_used) {
|
|||
|
$smarty->assign(array(
|
|||
|
'display_credits' => $display_credits,
|
|||
|
'invite_credit' => $credit,
|
|||
|
));
|
|||
|
return $this->display(__FILE__, 'shopping-cart-credit.tpl');
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private function _make_rewards($customer, $sponsored=FALSE) {
|
|||
|
$reward_type = Configuration::get('INVITE_REWARD_SPONSOR'.($sponsored? 'ED': '').'_TYPE');
|
|||
|
|
|||
|
if($reward_type == 1) {
|
|||
|
$groups = $customer->getGroups();
|
|||
|
$value = 0;
|
|||
|
foreach($groups as $group) {
|
|||
|
$value = max($value, Configuration::get('INVITE_REWARD_SPONSOR'.($sponsored? 'ED': '').'_VALUE_'.$group));
|
|||
|
}
|
|||
|
|
|||
|
if($value != 0) {
|
|||
|
if(count(Db::getInstance()->ExecuteS('
|
|||
|
SELECT `id_customer`
|
|||
|
FROM `'._DB_PREFIX_.'invite_credit`
|
|||
|
WHERE `id_customer` = '.$customer->id
|
|||
|
)) == 0) {
|
|||
|
Db::getInstance()->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'invite_credit`
|
|||
|
VALUES (
|
|||
|
'.$customer->id.',
|
|||
|
'.(int) $value.'
|
|||
|
)
|
|||
|
');
|
|||
|
} else {
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite_credit`
|
|||
|
SET `credit` = `credit` + '.(int) $value.'
|
|||
|
WHERE `id_customer` = '.$customer->id
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite`
|
|||
|
SET `credit'.($sponsored? '': '_sponsor').'` = 1
|
|||
|
WHERE `id_invite` = '.$invite['id_invite']
|
|||
|
);
|
|||
|
|
|||
|
$this->_send_credit_mail(array(
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'firstname' => $customer->firstname,
|
|||
|
'lastname' => $customer->lastname,
|
|||
|
'email' => $customer->email,
|
|||
|
'credit' => $value,
|
|||
|
));
|
|||
|
}
|
|||
|
} elseif($reward_type == 2) {
|
|||
|
$groups = $customer->getGroups();
|
|||
|
$value = 0;
|
|||
|
foreach($groups as $group) {
|
|||
|
$value = max($value, Configuration::get('INVITE_REWARD_SPONSOR'.($sponsored? 'ED': '').'_VALUE_'.$group));
|
|||
|
}
|
|||
|
|
|||
|
if($value != 0) {
|
|||
|
// Auto-validate points
|
|||
|
Db::getInstance()->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'loyalty`
|
|||
|
VALUES (
|
|||
|
DEFAULT,
|
|||
|
2,
|
|||
|
'.$customer->id.',
|
|||
|
0,
|
|||
|
0,
|
|||
|
'.$value.',
|
|||
|
NOW(),
|
|||
|
NOW()
|
|||
|
|
|||
|
)
|
|||
|
');
|
|||
|
$id_loyalty = Db::getInstance()->Insert_ID();
|
|||
|
|
|||
|
Db::getInstance()->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'loyalty_history`
|
|||
|
VALUES (
|
|||
|
DEFAULT
|
|||
|
'.$id_loyalty.',
|
|||
|
2,
|
|||
|
'.$value.',
|
|||
|
NOW()
|
|||
|
)
|
|||
|
');
|
|||
|
|
|||
|
$this->_send_loyalty_mail(array(
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'firstname' => $customer->firstname,
|
|||
|
'lastname' => $customer->lastname,
|
|||
|
'email' => $customer->email,
|
|||
|
'value' => $value,
|
|||
|
));
|
|||
|
}
|
|||
|
} elseif($reward_type == 3) {
|
|||
|
$groups = $customer->getGroups();
|
|||
|
$value = 0;
|
|||
|
foreach($groups as $group) {
|
|||
|
$value = max($value, Configuration::get('INVITE_REWARD_SPONSOR'.($sponsored? 'ED': '').'_VALUE_'.$group));
|
|||
|
}
|
|||
|
|
|||
|
if($value != 0) {
|
|||
|
$discount = $this->_register_discount(array(
|
|||
|
'discount_type' => 3,
|
|||
|
'id_customer' => $customer->id,
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'value' => $value,
|
|||
|
'id_currency' => (int) $cookie->id_currency,
|
|||
|
));
|
|||
|
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite`
|
|||
|
SET `id_discount'.($sponsored? '': '_sponsor').'` = '.(int) $discount->id.'
|
|||
|
WHERE `id_invite` = '.$invite['id_invite']
|
|||
|
);
|
|||
|
|
|||
|
$this->_send_discount_mail('percent', array(
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'firstname' => $customer->firstname,
|
|||
|
'lastname' => $customer->lastname,
|
|||
|
'email' => $customer->email,
|
|||
|
'discount' => $discount->name,
|
|||
|
'discount_value' => $discount->value.'%',
|
|||
|
));
|
|||
|
}
|
|||
|
} elseif($reward_type == 4) {
|
|||
|
$groups = $customer->getGroups();
|
|||
|
$value = 0;
|
|||
|
foreach($groups as $group) {
|
|||
|
$value = max($value, Configuration::get('INVITE_REWARD_SPONSOR'.($sponsored? 'ED': '').'_VALUE_'.$group.'_'.(int) $cookie->id_currency));
|
|||
|
}
|
|||
|
|
|||
|
if($value != 0) {
|
|||
|
$discount = $this->_register_discount(array(
|
|||
|
'discount_type' => 3,
|
|||
|
'id_customer' => $customer->id,
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'value' => $value,
|
|||
|
'id_currency' => (int) $cookie->id_currency,
|
|||
|
));
|
|||
|
|
|||
|
$currency = new Currency((int) $cookie->id_currency);
|
|||
|
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite`
|
|||
|
SET `id_discount'.($sponsored? '': '_sponsor').'` = '.(int) $discount->id.'
|
|||
|
WHERE `id_invite` = '.$invite['id_invite']
|
|||
|
);
|
|||
|
|
|||
|
$this->_send_discount_mail('amount', array(
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'firstname' => $customer->firstname,
|
|||
|
'lastname' => $customer->lastname,
|
|||
|
'email' => $customer->email,
|
|||
|
'discount' => $discount->name,
|
|||
|
'discount_value' => $discount->value.$currency->sign,
|
|||
|
));
|
|||
|
}
|
|||
|
} elseif($reward_type == 5) {
|
|||
|
$discount = $this->_register_discount(array(
|
|||
|
'discount_type' => 3,
|
|||
|
'id_customer' => $customer->id,
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
));
|
|||
|
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite`
|
|||
|
SET `id_discount'.($sponsored? '': '_sponsor').'` = '.(int) $discount->id.'
|
|||
|
WHERE `id_invite` = '.$invite['id_invite']
|
|||
|
);
|
|||
|
|
|||
|
$this->_send_discount_mail('shipping', array(
|
|||
|
'id_lang' => (int) $cookie->id_lang,
|
|||
|
'firstname' => $customer->firstname,
|
|||
|
'lastname' => $customer->lastname,
|
|||
|
'email' => $customer->email,
|
|||
|
'discount' => $discount->name,
|
|||
|
'discount_value' => '',
|
|||
|
));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private function _send_discount_mail($type, $params) {
|
|||
|
Mail::Send(
|
|||
|
$params['id_lang'],
|
|||
|
'invite-voucher-'.$type,
|
|||
|
Mail::l('Congratulations!'),
|
|||
|
array(
|
|||
|
'{firstname}' => $params['firstname'],
|
|||
|
'{lastname}' => $params['lastname'],
|
|||
|
'{voucher_num}' => $params['discount'],
|
|||
|
'{voucher_value}' => $params['discount_value'],
|
|||
|
),
|
|||
|
$params['email'],
|
|||
|
$params['firstname'].' '.$params['lastname'],
|
|||
|
strval(Configuration::get('PS_SHOP_EMAIL')),
|
|||
|
strval(Configuration::get('PS_SHOP_NAME')),
|
|||
|
NULL,
|
|||
|
NULL,
|
|||
|
dirname(__FILE__).'/mails/'
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
private function _send_credit_mail($params) {
|
|||
|
Mail::Send(
|
|||
|
$params['id_lang'],
|
|||
|
'invite-credit',
|
|||
|
Mail::l('Congratulations!'),
|
|||
|
array(
|
|||
|
'{firstname}' => $params['firstname'],
|
|||
|
'{lastname}' => $params['lastname'],
|
|||
|
'{credit}' => $params['credit'],
|
|||
|
),
|
|||
|
$params['email'],
|
|||
|
$params['firstname'].' '.$params['lastname'],
|
|||
|
strval(Configuration::get('PS_SHOP_EMAIL')),
|
|||
|
strval(Configuration::get('PS_SHOP_NAME')),
|
|||
|
NULL,
|
|||
|
NULL,
|
|||
|
dirname(__FILE__).'/mails/'
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
private function _send_loyalty_mail($params) {
|
|||
|
Mail::Send(
|
|||
|
$params['id_lang'],
|
|||
|
'invite-loyalty',
|
|||
|
Mail::l('Congratulations!'),
|
|||
|
array(
|
|||
|
'{firstname}' => $params['firstname'],
|
|||
|
'{lastname}' => $params['lastname'],
|
|||
|
'{value}' => $params['value'],
|
|||
|
),
|
|||
|
$params['email'],
|
|||
|
$params['firstname'].' '.$params['lastname'],
|
|||
|
strval(Configuration::get('PS_SHOP_EMAIL')),
|
|||
|
strval(Configuration::get('PS_SHOP_NAME')),
|
|||
|
NULL,
|
|||
|
NULL,
|
|||
|
dirname(__FILE__).'/mails/'
|
|||
|
);
|
|||
|
}
|
|||
|
|
|||
|
public function getPendingFriends($id_customer=FALSE) {
|
|||
|
if(!(int) $id_customer) {
|
|||
|
return array();
|
|||
|
}
|
|||
|
|
|||
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
SELECT `'._DB_PREFIX_.'invite`.*
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `'._DB_PREFIX_.'invite`.`id_sponsor` = '.(int) $id_customer.'
|
|||
|
AND `'._DB_PREFIX_.'invite`.`id_customer` = 0
|
|||
|
AND `'._DB_PREFIX_.'invite`.`email` NOT IN (
|
|||
|
SELECT `'._DB_PREFIX_.'customer`.`email`
|
|||
|
FROM `'._DB_PREFIX_.'customer`
|
|||
|
WHERE `email` = `'._DB_PREFIX_.'invite`.`email`
|
|||
|
)
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
public function getFriends($id_customer=FALSE, $date_limit) {
|
|||
|
if(!(int) $id_customer) {
|
|||
|
return array();
|
|||
|
}
|
|||
|
|
|||
|
if ($date_limit) {
|
|||
|
$date_end = new DateTime();
|
|||
|
$date = new DateTime();
|
|||
|
$date_end->modify('-'. (int) $date_limit.' days');
|
|||
|
|
|||
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `id_sponsor` = '.(int) $id_customer.'
|
|||
|
AND `date_add` BETWEEN "'.$date_end->format('Y-m-d').' 00:00:00" AND "'.$date->format('Y-m-d').' 00:00:00"
|
|||
|
AND `id_customer` != 0
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `id_sponsor` = '.(int) $id_customer.'
|
|||
|
AND `id_customer` != 0
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
public function getNbFriends($id_customer=FALSE) {
|
|||
|
if(!(int) $id_customer) {
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
|
|||
|
SELECT COUNT(`id_customer`) as total
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `id_sponsor` = '.(int) $id_customer.'
|
|||
|
AND `id_customer` != 0
|
|||
|
');
|
|||
|
}
|
|||
|
|
|||
|
public function addInvite($id_customer=FALSE, $friend_firstname='', $friend_lastname='', $friend_email='', $when_invite = 0) {
|
|||
|
Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
INSERT INTO `'._DB_PREFIX_.'invite`
|
|||
|
VALUES (
|
|||
|
DEFAULT,
|
|||
|
'.(int) $id_customer.',
|
|||
|
"'.pSQL($friend_email).'",
|
|||
|
"'.pSQL($friend_lastname).'",
|
|||
|
"'.pSQL($friend_firstname).'",
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
0,
|
|||
|
NOW(),
|
|||
|
NOW(),
|
|||
|
'. $when_invite .'
|
|||
|
)
|
|||
|
');
|
|||
|
return Db::getInstance()->Insert_ID();
|
|||
|
}
|
|||
|
|
|||
|
public function isFriend($id_customer, $id_invite) {
|
|||
|
return (bool) count(Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
SELECT `id_invite`
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `id_sponsor` = '.(int) $id_customer.'
|
|||
|
AND `id_invite` = '.(int) $id_invite.'
|
|||
|
'));
|
|||
|
}
|
|||
|
|
|||
|
public function getInvite($id_invite=FALSE) {
|
|||
|
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
SELECT *
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `id_invite` = '.(int) $id_invite.'
|
|||
|
');
|
|||
|
if(count($result) > 0) {
|
|||
|
return $result[0];
|
|||
|
} else {
|
|||
|
return FALSE;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public function emailExists($email='') {
|
|||
|
return (bool) count(Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
|
|||
|
SELECT `id_invite`
|
|||
|
FROM `'._DB_PREFIX_.'invite`
|
|||
|
WHERE `email` = "'.pSQL($email).'"
|
|||
|
'));
|
|||
|
}
|
|||
|
|
|||
|
public function updateInvite($id_invite=FALSE) {
|
|||
|
Db::getInstance()->Execute('
|
|||
|
UPDATE `'._DB_PREFIX_.'invite`
|
|||
|
SET `date_upd` = NOW()
|
|||
|
WHERE `id_invite` = '.(int) $id_invite.'
|
|||
|
');
|
|||
|
}
|
|||
|
}
|