359 lines
11 KiB
PHP
Raw Normal View History

2016-08-24 15:46:06 +02:00
<?php
/**
* @author Antadis
*/
if (!defined('_PS_VERSION_'))
exit;
class Ant_Popover extends Module {
/**
*
* @param type $name
* @param Context $context
*/
public function __construct() {
$this->name = 'ant_popover';
$this->tab = 'front_office_feature';
$this->version = '1.0.0';
$this->author = 'Antadis';
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Ant Popover');
$this->description = $this->l('Ant popover popups');
$this->confirmUninstall = $this->l('Are you sure you want to uninstall this module?');
}
/**
*
* @return boolean
*/
public function install() {
if (!parent::install() ||
!$this->installDb() ||
!$this->registerHooks()
){
$this->uninstall();
return false;
}
return true;
}
public function registerHooks(){
return (
$this->registerHook('displayFooter')
);
}
public function installDb(){
return Db::getInstance()->execute('
CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'ant_popover_email`(
`id_ant_popover` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id_ant_popover`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;');
}
public function getContent(){
$this->html = '';
$this->postProcess();
$this->displaySettingsForm();
return $this->html;
}
public function postProcess(){
if (Tools::isSubmit('ap_submitConf')){
$this->updateSettings();
}
}
private function displaySettingsForm(){
$form = array(
'form' => array(
'legend' => array(
'title' => $this->l('Pop-up settings'),
'icon' => 'icon-cogs'
),
2016-08-24 15:53:44 +02:00
/*'input' => array(
2016-08-24 15:46:06 +02:00
array(
'type' => 'switch',
'label' => $this->l('Display new customer popup'),
'name' => 'ANT_POPOVER_CUSTOMER_YIELD',
'class' => 't',
'is_bool' => true,
'values' => array(
array(
'id' => 'ANT_POPOVER_CUSTOMER_YIELD_on',
'value' => 1
),
array(
'id' => 'ANT_POPOVER_CUSTOMER_YIELD_off',
'value' => 0
)
),
),
array(
'type' => 'switch',
'label' => $this->l('Display cart popup'),
'name' => 'ANT_POPOVER_CART_YIELD',
'class' => 't',
'is_bool' => true,
'values' => array(
array(
'id' => 'ANT_POPOVER_CART_YIELD_on',
'value' => 1
),
array(
'id' => 'ANT_POPOVER_CART_YIELD_off',
'value' => 0
)
),
),
array(
'type' => 'switch',
'label' => $this->l('Display product popup'),
'name' => 'ANT_POPOVER_PRODUCT_YIELD',
'class' => 't',
'is_bool' => true,
'values' => array(
array(
'id' => 'ANT_POPOVER_PRODUCT_YIELD_on',
'value' => 1
),
array(
'id' => 'ANT_POPOVER_PRODUCT_YIELD_off',
'value' => 0
)
),
),
array(
'type' => 'switch',
'label' => $this->l('Afficher la pop up jeu concours'),
'name' => 'ANT_POPOVER_CONCOURS_YIELD',
'class' => 't',
'is_bool' => true,
'values' => array(
array(
'id' => 'ANT_POPOVER_CONCOURS_YIELD_on',
'value' => 1
),
array(
'id' => 'ANT_POPOVER_CONCOURS_YIELD_off',
'value' => 0
)
),
),
array(
'type' => 'switch',
'label' => $this->l('Afficher la pop up d\'entrée de site'),
'name' => 'ANT_POPOVER_PROMO_YIELD',
'class' => 't',
'is_bool' => true,
'values' => array(
array(
'id' => 'ANT_POPOVER_PROMO_YIELD_on',
'value' => 1
),
array(
'id' => 'ANT_POPOVER_PROMO_YIELD_off',
'value' => 0
)
),
),
2016-08-24 15:53:44 +02:00
),*/
2016-08-24 15:46:06 +02:00
'submit' => array(
'title' => $this->l('Save')
)
)
);
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
$helper->module = $this;
$helper->submit_action = 'ap_submitConf';
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->tpl_vars = array(
'fields_value' => $this->getSettingsVar()
);
$this->html .= $helper->generateForm(array($form));
}
public function getSettingsVar(){
return array(
'ANT_POPOVER_CUSTOMER_YIELD' => Configuration::get('ANT_POPOVER_CUSTOMER_YIELD'),
'ANT_POPOVER_PROMO_YIELD' => Configuration::get('ANT_POPOVER_PROMO_YIELD'),
'ANT_POPOVER_PROMO_YIELD_LINK' => Configuration::get('ANT_POPOVER_PROMO_YIELD_LINK'),
'ANT_POPOVER_PROMO_YIELD_TEXT' => Configuration::get('ANT_POPOVER_PROMO_YIELD_TEXT'),
'ANT_POPOVER_CART_YIELD' => Configuration::get('ANT_POPOVER_CART_YIELD'),
'ANT_POPOVER_PRODUCT_YIELD' => Configuration::get('ANT_POPOVER_PRODUCT_YIELD'),
'ANT_POPOVER_CONCOURS_YIELD' => Configuration::get('ANT_POPOVER_CONCOURS_YIELD'),
);
}
public function updateSettings(){
Configuration::updateValue('ANT_POPOVER_CUSTOMER_YIELD', Tools::getValue('ANT_POPOVER_CUSTOMER_YIELD'));
Configuration::updateValue('ANT_POPOVER_PROMO_YIELD', Tools::getValue('ANT_POPOVER_PROMO_YIELD'));
Configuration::updateValue('ANT_POPOVER_PROMO_YIELD_LINK', Tools::getValue('ANT_POPOVER_PROMO_YIELD_LINK'));
Configuration::updateValue('ANT_POPOVER_PROMO_YIELD_TEXT', Tools::getValue('ANT_POPOVER_PROMO_YIELD_TEXT'));
Configuration::updateValue('ANT_POPOVER_CART_YIELD', Tools::getValue('ANT_POPOVER_CART_YIELD'));
Configuration::updateValue('ANT_POPOVER_PRODUCT_YIELD', Tools::getValue('ANT_POPOVER_PRODUCT_YIELD'));
Configuration::updateValue('ANT_POPOVER_CONCOURS_YIELD', Tools::getValue('ANT_POPOVER_CONCOURS_YIELD'));
}
/**
*
* @return boolean
*/
public function uninstall() {
if (!parent::uninstall())
return false;
return true;
}
public function getPath($tpl_name){
if (file_exists(_PS_THEME_DIR_.'modules/ant_popover/views/templates/hook/'.$tpl_name.'.tpl'))
return _PS_THEME_DIR_.'modules/ant_popover/views/templates/hook/'.$tpl_name.'.tpl';
else
return _PS_MODULE_DIR_.'ant_popover/views/templates/hook/'.$tpl_name.'.tpl';
}
public function getImgPath(){
if (file_exists(_THEME_DIR_.'modules/ant_popover/img/'))
return _THEME_DIR_.'modules/ant_popover/img/';
else
return _MODULE_DIR_.'ant_popover/img/';
}
public function hookDisplayFooter($params){
$this->context->controller->addJS(_PS_MODULE_DIR_.'ant_popover/js/ant_popover.js');
$page_name = $this->smarty->getTemplateVars('page_name');
$cart = Context::getContext()->cart;
$products = $cart->getProducts();
$display_cart_popup = false;
$tmp_product = array();
$template_paths = array();
if (Configuration::get('ANT_POPOVER_CART_YIELD') &&
Validate::isLoadedObject($cart) &&
$page_name == 'order' &&
$products && !empty($products) ){
$template_paths[] = $this->getPath('ant_popover_cart_yield');
foreach ($products as $product)
if (!isset($tmp_product['price_wt']) || $product['price_wt'] > $tmp_product['price_wt'])
$tmp_product = $product;
$ap_product_price = Product::getPriceStatic($tmp_product['id_product'], true, $tmp_product['id_product_attribute']);
$ap_product_old_price = Product::getPriceStatic($tmp_product['id_product'], true, $tmp_product['id_product_attribute'], 6, null, false, false);
$ap_product_reduction = (1 - ($ap_product_price / $ap_product_old_price))*100;
$this->smarty->assign(array(
'ap_cart_product' => $tmp_product,
'ap_product_price' => $ap_product_price,
'ap_product_old_price' => $ap_product_old_price,
'ap_product_reduction' => $ap_product_reduction,
));
$display_cart_popup = true;
}
if (Configuration::get('ANT_POPOVER_CUSTOMER_YIELD') &&
!$this->context->cookie->isLogged() &&
!$display_cart_popup &&
$page_name != 'authentication' )
$template_paths[] = $this->getPath('ant_popover_customer_yield');
if (Configuration::get('ANT_POPOVER_PRODUCT_YIELD') && $page_name == 'product')
$template_paths[] = $this->getPath('ant_popover_product_yield');
if (Configuration::get('ANT_POPOVER_CONCOURS_YIELD') && ($page_name == 'index' || $page_name == 'module-privatesales-home'))
$template_paths[] = $this->getPath('ant_popover_concours_yield');
if (Configuration::get('ANT_POPOVER_PROMO_YIELD') && !$display_cart_popup)
{
$template_paths[] = $this->getPath('ant_popover_promo_yield');
$this->smarty->assign(array(
'ap_home_link' => Configuration::get('ANT_POPOVER_PROMO_YIELD_LINK'),
'ap_home_text_link'=> Configuration::get('ANT_POPOVER_PROMO_YIELD_TEXT')
));
}
$this->smarty->assign(array(
'ap_paths' => $template_paths,
'ap_img_dir' => $this->getImgPath(),
'ap_ajax_path' => '/modules/ant_popover/ap_ajax.php'
));
return $this->display(__FILE__, 'ap_footer.tpl');
}
public function hookDisplayPopupY(){
$this->context->controller->addJS(_PS_MODULE_DIR_.'ant_popover/js/ant_popover.js');
$page_name = $this->smarty->getTemplateVars('page_name');
$cart = Context::getContext()->cart;
$products = $cart->getProducts();
$display_cart_popup = false;
$tmp_product = array();
$template_paths = array();
if (Configuration::get('ANT_POPOVER_CART_YIELD') &&
Validate::isLoadedObject($cart) &&
$page_name == 'order' &&
$products && !empty($products) ){
$template_paths[] = $this->getPath('ant_popover_cart_yield');
foreach ($products as $product)
if (!isset($tmp_product['price_wt']) || $product['price_wt'] > $tmp_product['price_wt'])
$tmp_product = $product;
$ap_product_price = Product::getPriceStatic($tmp_product['id_product'], true, $tmp_product['id_product_attribute']);
$ap_product_old_price = Product::getPriceStatic($tmp_product['id_product'], true, $tmp_product['id_product_attribute'], 6, null, false, false);
$ap_product_reduction = (1 - ($ap_product_price / $ap_product_old_price))*100;
$this->smarty->assign(array(
'ap_cart_product' => $tmp_product,
'ap_product_price' => $ap_product_price,
'ap_product_old_price' => $ap_product_old_price,
'ap_product_reduction' => $ap_product_reduction,
));
$display_cart_popup = true;
}
if (Configuration::get('ANT_POPOVER_CUSTOMER_YIELD') &&
!$this->context->cookie->isLogged() &&
!$display_cart_popup &&
$page_name != 'authentication' )
$template_paths[] = $this->getPath('ant_popover_customer_yield');
if (Configuration::get('ANT_POPOVER_PRODUCT_YIELD') && $page_name == 'product')
$template_paths[] = $this->getPath('ant_popover_product_yield');
if (Configuration::get('ANT_POPOVER_CONCOURS_YIELD') && ($page_name == 'index' || $page_name == 'module-privatesales-home'))
$template_paths[] = $this->getPath('ant_popover_concours_yield');
if (Configuration::get('ANT_POPOVER_PROMO_YIELD') && !$display_cart_popup)
{
$template_paths[] = $this->getPath('ant_popover_promo_yield');
$this->smarty->assign(array(
'ap_home_link' => Configuration::get('ANT_POPOVER_PROMO_YIELD_LINK'),
'ap_home_text_link'=> Configuration::get('ANT_POPOVER_PROMO_YIELD_TEXT')
));
}
$this->smarty->assign(array(
'ap_paths' => $template_paths,
'ap_img_dir' => $this->getImgPath(),
'ap_ajax_path' => '/modules/ant_popover/ap_ajax.php'
));
return $this->display(__FILE__, 'ap_footer.tpl');
}
}