1346 lines
55 KiB
PHP
1346 lines
55 KiB
PHP
<?php
|
|
/**
|
|
* Please read the terms of the CLUF license attached to this module(cf "licences" folder)
|
|
*
|
|
* @author Línea Gráfica E.C.E. S.L.
|
|
* @copyright Lineagrafica.es - Línea Gráfica E.C.E. S.L. all rights reserved.
|
|
* @license https://www.lineagrafica.es/licenses/license_en.pdf
|
|
* https://www.lineagrafica.es/licenses/license_es.pdf
|
|
* https://www.lineagrafica.es/licenses/license_fr.pdf
|
|
*/
|
|
|
|
if (!defined('_PS_VERSION_')) {
|
|
exit;
|
|
}
|
|
|
|
require_once(
|
|
_PS_MODULE_DIR_ .
|
|
DIRECTORY_SEPARATOR .
|
|
'lgcomments' .
|
|
DIRECTORY_SEPARATOR .
|
|
'classes' .
|
|
DIRECTORY_SEPARATOR .
|
|
'LGUtils.php'
|
|
);
|
|
require_once(
|
|
_PS_MODULE_DIR_ .
|
|
DIRECTORY_SEPARATOR .
|
|
'lgcomments' .
|
|
DIRECTORY_SEPARATOR .
|
|
'classes' .
|
|
DIRECTORY_SEPARATOR .
|
|
'LGCommentsWidget.php'
|
|
);
|
|
require_once(
|
|
_PS_MODULE_DIR_ .
|
|
DIRECTORY_SEPARATOR .
|
|
'lgcomments' .
|
|
DIRECTORY_SEPARATOR .
|
|
'classes' .
|
|
DIRECTORY_SEPARATOR .
|
|
'LGStoreComment.php'
|
|
);
|
|
require_once(
|
|
_PS_MODULE_DIR_ .
|
|
DIRECTORY_SEPARATOR .
|
|
'lgcomments' .
|
|
DIRECTORY_SEPARATOR .
|
|
'classes' .
|
|
DIRECTORY_SEPARATOR .
|
|
'LGProductComment.php'
|
|
);
|
|
require_once(
|
|
_PS_MODULE_DIR_ .
|
|
DIRECTORY_SEPARATOR .
|
|
'lgcomments' .
|
|
DIRECTORY_SEPARATOR .
|
|
'classes' .
|
|
DIRECTORY_SEPARATOR .
|
|
'LGCSV.php'
|
|
);
|
|
|
|
class LGComments extends Module
|
|
{
|
|
public $bootstrap;
|
|
public $html;
|
|
public $stars = array();
|
|
public $store_widget = array();
|
|
|
|
public function __construct()
|
|
{
|
|
$this->name = 'lgcomments';
|
|
$this->tab = 'advertising_marketing';
|
|
$this->version = '1.6.0';
|
|
$this->author = 'Línea Gráfica';
|
|
$this->need_instance = 0;
|
|
$this->ps_versions_compliancy = array('min' => '1.7');
|
|
$this->module_key = '7a311a563a0daa4a8636f6a5ec27c0e6';
|
|
$this->bootstrap = true;
|
|
$this->is_configurable = true;
|
|
$this->initContext();
|
|
parent::__construct();
|
|
$this->displayName = $this->l('Store Reviews, Product Reviews and Google Rich Snippets');
|
|
$this->description = $this->l('Get your own system of reviews about your store and products.');
|
|
|
|
$this->confirmUninstall = $this->l('Are you sure you want to uninstall?');
|
|
|
|
$this->id_lang = (int)Context::getContext()->language->id;
|
|
$this->id_lang = (int)Context::getContext()->language->id;
|
|
$this->iso_lang = pSQL(Language::getIsoById($this->id_lang));
|
|
$this->stars = LGUtils::getStarsConfig($this);
|
|
$this->store_widget = LGUtils::getStoreWidgetConfig($this);
|
|
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
$this->context->smarty->assign(array(
|
|
'content_dir' => _MODULE_DIR_ . $this->name,
|
|
));
|
|
}
|
|
}
|
|
|
|
/* Retrocompatibility 1.4/1.5 */
|
|
private function initContext()
|
|
{
|
|
$this->context = Context::getContext();
|
|
}
|
|
|
|
public function install()
|
|
{
|
|
include(dirname(__FILE__) . '/sql/install.php');
|
|
|
|
if (substr_count(_PS_VERSION_, '1.6') > 0) {
|
|
$tab_type = 1;
|
|
} else {
|
|
$tab_type = 2;
|
|
}
|
|
|
|
// Default value
|
|
$default_values = array(
|
|
'tab_type' => $tab_type,
|
|
'extraright_css_config' => LGUtils::getExtraRightCSSConfig('vertical'),
|
|
'subject_cron' => $this->l('The opinion requests have been sent correctly'),
|
|
'subject_newreviews' => $this->l('You have received new reviews'),
|
|
);
|
|
|
|
if (!parent::install() ||
|
|
!$this->registerHook('header') ||
|
|
!$this->registerHook('backOfficeHeader') ||
|
|
!$this->registerHook('footer') ||
|
|
!$this->registerHook('productTab') ||
|
|
!$this->registerHook('productTabContent') ||
|
|
!$this->registerHook('displayFooterProduct') ||
|
|
!$this->registerHook('extraRight') ||
|
|
!$this->registerHook('displayProductListReviews') ||
|
|
!$this->registerHook('displayHome') ||
|
|
!$this->registerHook('displayCustomerAccount') ||
|
|
!$this->registerHook('displayLgStoreCommentSlider') ||
|
|
!$this->installModuleTab('AdminLGCommentsStore', $this->l('Store reviews')) ||
|
|
!$this->installModuleTab('AdminLGCommentsProducts', $this->l('Products reviews')) ||
|
|
!LGUtils::createDefaultConfig($default_values) ||
|
|
!LGUtils::createDefaultData() ||
|
|
!LGUtils::createDefaultMetas()
|
|
) {
|
|
return false;
|
|
}
|
|
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
if (!$this->registerHook('actionFrontControllerSetMedia')) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function hookCustomerAccount()
|
|
{
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
return $this->display(__FILE__, 'views/templates/front/account_button_17.tpl');
|
|
} else {
|
|
return $this->display(__FILE__, 'views/templates/front/account_button.tpl');
|
|
}
|
|
}
|
|
|
|
public function uninstall()
|
|
{
|
|
include(dirname(__FILE__) . '/sql/uninstall.php');
|
|
|
|
$sql = 'SELECT `id_tab` FROM `' . _DB_PREFIX_ . 'tab` WHERE `module` = "' . pSQL($this->name) . '"';
|
|
$result = Db::getInstance()->ExecuteS($sql);
|
|
|
|
if ($result && count($result)) {
|
|
foreach ($result as $tabData) {
|
|
$tab = new Tab($tabData['id_tab']);
|
|
|
|
if (Validate::isLoadedObject($tab)) {
|
|
$tab->delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (substr_count(_PS_VERSION_, '1.6') > 0) {
|
|
$id_meta = Db::getInstance()->getValue(
|
|
'SELECT id_meta ' .
|
|
'FROM ' . _DB_PREFIX_ . 'meta ' .
|
|
'WHERE page = "module-lgcomments-reviews"'
|
|
);
|
|
Db::getInstance()->Execute(
|
|
'DELETE FROM ' . _DB_PREFIX_ . 'meta WHERE id_meta = ' . (int)$id_meta
|
|
);
|
|
Db::getInstance()->Execute(
|
|
'DELETE FROM ' . _DB_PREFIX_ . 'meta_lang WHERE id_meta = ' . (int)$id_meta
|
|
);
|
|
Db::getInstance()->Execute(
|
|
'DELETE FROM ' . _DB_PREFIX_ . 'theme_meta WHERE id_meta = ' . (int)$id_meta
|
|
);
|
|
}
|
|
|
|
return parent::uninstall();
|
|
}
|
|
|
|
private function installModuleTab($class, $name)
|
|
{
|
|
$sql = 'SELECT `id_tab` FROM `' . _DB_PREFIX_ . 'tab` WHERE `class_name` = "AdminCatalog"';
|
|
|
|
$tabParent = (int)(Db::getInstance()->getValue($sql));
|
|
|
|
if (!is_array($name)) {
|
|
$name = self::getMultilangField($name);
|
|
}
|
|
|
|
$tab = new Tab();
|
|
$tab->name = $name;
|
|
$tab->class_name = $class;
|
|
$tab->module = $this->name;
|
|
$tab->id_parent = $tabParent;
|
|
return $tab->save();
|
|
}
|
|
|
|
private static function getMultilangField($field)
|
|
{
|
|
$languages = Language::getLanguages();
|
|
$res = array();
|
|
|
|
foreach ($languages as $lang) {
|
|
$res[$lang['id_lang']] = $field;
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
private function formatBootstrap($text)
|
|
{
|
|
$text = str_replace('<fieldset>', '<div class="panel">', $text);
|
|
$text = str_replace(
|
|
'<fieldset style="background:#DFF2BF;color:#4F8A10;border:1px solid #4F8A10;">',
|
|
'<div class="panel" style="background:#DFF2BF;color:#4F8A10;border:1px solid #4F8A10;">',
|
|
$text
|
|
);
|
|
$text = str_replace('</fieldset>', '</div>', $text);
|
|
$text = str_replace('<legend>', '<h3>', $text);
|
|
$text = str_replace('</legend>', '</h3>', $text);
|
|
return $text;
|
|
}
|
|
|
|
/* CONFIGURATION MODULE */
|
|
|
|
private function getLGCommentsOrderStatus($id_state)
|
|
{
|
|
$estado = Db::getInstance()->ExecuteS(
|
|
'SELECT * ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_status ' .
|
|
'WHERE id_order_status = ' . (int)$id_state
|
|
);
|
|
return $estado;
|
|
}
|
|
|
|
private function checkIfEmptyStore()
|
|
{
|
|
$checkS = Db::getInstance()->getValue(
|
|
'SELECT COUNT(*) ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_storecomments'
|
|
);
|
|
return $checkS;
|
|
}
|
|
|
|
private function checkIfEmptyProduct()
|
|
{
|
|
$checkP = Db::getInstance()->getValue(
|
|
'SELECT COUNT(*) ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_productcomments'
|
|
);
|
|
return $checkP;
|
|
}
|
|
|
|
private function checkIfEmptyStatus()
|
|
{
|
|
$checkE = Db::getInstance()->getValue(
|
|
'SELECT COUNT(*) ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_status'
|
|
);
|
|
return $checkE;
|
|
}
|
|
|
|
private function checkIfEmptyGroup()
|
|
{
|
|
$checkG = Db::getInstance()->getValue(
|
|
'SELECT COUNT(*) ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_customergroups'
|
|
);
|
|
return $checkG;
|
|
}
|
|
|
|
private function checkIfEmptyMultistore()
|
|
{
|
|
$checkM = Db::getInstance()->getValue(
|
|
'SELECT COUNT(*) ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_multistore'
|
|
);
|
|
return $checkM;
|
|
}
|
|
|
|
private function getHookList()
|
|
{
|
|
$hookList = Db::getInstance()->ExecuteS(
|
|
'SELECT h.name ' .
|
|
'FROM ' . _DB_PREFIX_ . 'hook h ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'hook_module hm ' .
|
|
'ON h.id_hook = hm.id_hook ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'module m ' .
|
|
'ON hm.id_module = m.id_module ' .
|
|
'WHERE m.name = "lgcomments" ' .
|
|
'AND hm.id_shop = ' . (int)$this->context->shop->id
|
|
);
|
|
return $hookList;
|
|
}
|
|
|
|
private function getCustomerGroupsByGroup($id_group)
|
|
{
|
|
$grupog = Db::getInstance()->ExecuteS(
|
|
'SELECT * ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_customergroups ' .
|
|
'WHERE id_customer_group = ' . (int)$id_group
|
|
);
|
|
return $grupog;
|
|
}
|
|
|
|
private function getCustomerGroupsByCustomer($customer_id)
|
|
{
|
|
$groups = Db::getInstance()->ExecuteS(
|
|
'SELECT DISTINCT lcg.*, gl.name ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_customergroups lcg ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'group_lang gl ON lcg.id_customer_group = gl.id_group ' .
|
|
'RIGHT JOIN ' . _DB_PREFIX_ . 'customer_group cg ON gl.id_group = cg.id_group ' .
|
|
'WHERE gl.id_lang = ' . (int)$this->context->language->id . ' ' .
|
|
'AND cg.id_customer = ' . (int)$customer_id
|
|
);
|
|
return $groups;
|
|
}
|
|
|
|
private function getSelectedShops($id_shop)
|
|
{
|
|
$shop = Db::getInstance()->ExecuteS(
|
|
'SELECT * ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_multistore ' .
|
|
'WHERE id_shop = ' . (int)$id_shop
|
|
);
|
|
return $shop;
|
|
}
|
|
|
|
private function getShopsByCustomer($id_customer)
|
|
{
|
|
$cshop = Db::getInstance()->ExecuteS(
|
|
'SELECT DISTINCT lm.*, s.name ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_multistore lm ' .
|
|
'LEFT JOIN ' . _DB_PREFIX_ . 'customer c ON lm.id_shop = c.id_shop ' .
|
|
'LEFT JOIN ' . _DB_PREFIX_ . 'shop s ON lm.id_shop = s.id_shop ' .
|
|
'WHERE c.id_customer = ' . (int)$id_customer
|
|
);
|
|
return $cshop;
|
|
}
|
|
|
|
public function getCorrespondingOrders($date1, $date2)
|
|
{
|
|
if (Configuration::get('PS_LGCOMMENTS_BOXES') == 2) {
|
|
$boxes_checked = 'AND c.newsletter = 1 ';
|
|
} elseif (Configuration::get('PS_LGCOMMENTS_BOXES') == 3) {
|
|
$boxes_checked = 'AND c.optin = 1 ';
|
|
} elseif (Configuration::get('PS_LGCOMMENTS_BOXES') == 4) {
|
|
$boxes_checked = 'AND c.newsletter = 1 AND c.optin = 1 ';
|
|
} else {
|
|
$boxes_checked = '';
|
|
}
|
|
$orderList = Db::getInstance()->ExecuteS(
|
|
'SELECT DISTINCT o.id_order, o.id_customer, o.reference, o.date_add, osl.name as statusname, ' .
|
|
'lo.date_email, lo.voted, lo.sent, lo.date_email2, os.color, c.newsletter, c.optin, ' .
|
|
'CONCAT(c.firstname, " ", (SUBSTRING(c.lastname,1,1)), ".") as customer ' .
|
|
'FROM ' . _DB_PREFIX_ . 'orders o ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'lgcomments_status ek ON o.current_state = ek.id_order_status ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'order_state_lang osl ON o.current_state = osl.id_order_state ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'order_state os ON osl.id_order_state = os.id_order_state ' .
|
|
'LEFT JOIN ' . _DB_PREFIX_ . 'lgcomments_orders lo ON o.id_order = lo.id_order ' .
|
|
'RIGHT JOIN ' . _DB_PREFIX_ . 'customer_group cg ON o.id_customer = cg.id_customer ' .
|
|
'RIGHT JOIN ' . _DB_PREFIX_ . 'customer c ON o.id_customer = c.id_customer ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'lgcomments_customergroups lcg ON cg.id_group = lcg.id_customer_group ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'group_lang gl ON cg.id_group = gl.id_group ' .
|
|
'RIGHT JOIN ' . _DB_PREFIX_ . 'lgcomments_multistore lm ON o.id_shop = lm.id_shop ' .
|
|
'WHERE o.date_add >= DATE_SUB(NOW(),INTERVAL ' . (int)$date1 . ' DAY) ' .
|
|
'AND o.date_add <= DATE_SUB(NOW(),INTERVAL ' . (int)$date2 . ' DAY) ' .
|
|
'AND osl.id_lang = ' . (int)$this->context->language->id . ' ' .
|
|
'AND gl.id_lang = ' . (int)$this->context->language->id . ' ' .
|
|
$boxes_checked .
|
|
'ORDER BY o.id_order DESC'
|
|
);
|
|
return $orderList;
|
|
}
|
|
|
|
public function getCorrespondingStatus()
|
|
{
|
|
$statusList = Db::getInstance()->ExecuteS(
|
|
'SELECT osl.name, os.color ' .
|
|
'FROM ' . _DB_PREFIX_ . 'order_state_lang osl ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'lgcomments_status lgs ON osl.id_order_state = lgs.id_order_status ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'order_state os ON osl.id_order_state = os.id_order_state ' .
|
|
'WHERE osl.id_lang = ' . (int)$this->context->language->id . ''
|
|
);
|
|
return $statusList;
|
|
}
|
|
|
|
public function getCorrespondingGroups()
|
|
{
|
|
$groupList = Db::getInstance()->ExecuteS(
|
|
'SELECT DISTINCT lcg.*, gl.name ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_customergroups lcg ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'group_lang gl ON lcg.id_customer_group = gl.id_group ' .
|
|
'WHERE gl.id_lang = ' . (int)$this->context->language->id . ''
|
|
);
|
|
return $groupList;
|
|
}
|
|
|
|
public function getCorrespondingShops()
|
|
{
|
|
$shopList = Db::getInstance()->ExecuteS(
|
|
'SELECT DISTINCT lm.*, s.name ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_multistore lm ' .
|
|
'INNER JOIN ' . _DB_PREFIX_ . 'shop s ON lm.id_shop = s.id_shop '
|
|
);
|
|
return $shopList;
|
|
}
|
|
|
|
private function getCronUrl($secure_key)
|
|
{
|
|
$link = new Link();
|
|
$ssl = Configuration::get('PS_SSL_ENABLED_EVERYWHERE') && Configuration::get('PS_SSL_ENABLED');
|
|
|
|
return $link->getModuleLink(
|
|
$this->name,
|
|
'cron',
|
|
array(
|
|
'secureKey' => $secure_key
|
|
),
|
|
$ssl
|
|
);
|
|
}
|
|
|
|
/* PRODUCT COMMENTS */
|
|
|
|
public function getProdComments($id_product, $order)
|
|
{
|
|
$comments = Db::getInstance()->executeS(
|
|
'SELECT pc.*, CONCAT(c.firstname, " ", (SUBSTRING(c.lastname,1,1)), ".") as customer ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lgcomments_productcomments pc ' .
|
|
'LEFT JOIN ' . _DB_PREFIX_ . 'customer as c ON pc.id_customer = c.id_customer ' .
|
|
'WHERE pc.id_product = ' . (int)$id_product . ' ' .
|
|
'AND pc.active = 1 ' .
|
|
'ORDER BY pc.position ' . pSQL($order)
|
|
);
|
|
return $comments;
|
|
}
|
|
|
|
private function getProductRewrite($id_product)
|
|
{
|
|
$rewrite = Db::getInstance()->getValue(
|
|
'SELECT link_rewrite ' .
|
|
'FROM ' . _DB_PREFIX_ . 'product_lang ' .
|
|
'WHERE id_product = ' . (int)$id_product .
|
|
' AND id_lang = ' . (int)$this->context->language->id
|
|
);
|
|
return $rewrite;
|
|
}
|
|
|
|
/* SHOP COMMENTS */
|
|
|
|
public function getSliderShopComments($number)
|
|
{
|
|
$slider = Db::getInstance()->executeS(
|
|
'SELECT st.*, CONCAT(c.firstname, " ", (SUBSTRING(c.lastname,1,1)), ".") as customer ' .
|
|
'FROM `' . _DB_PREFIX_ . 'lgcomments_storecomments` st ' .
|
|
'LEFT JOIN `' . _DB_PREFIX_ . 'customer` c ON st.`id_customer` = c.`id_customer` ' .
|
|
'WHERE st.active = 1 ' .
|
|
'ORDER BY st.date DESC ' .
|
|
'LIMIT ' . (int)$number
|
|
);
|
|
|
|
return $slider;
|
|
}
|
|
|
|
public function getSliderShopCommentsByLang($number)
|
|
{
|
|
$sliderL = Db::getInstance()->executeS(
|
|
'SELECT st.*, CONCAT(c.firstname, " ", (SUBSTRING(c.lastname,1,1)), ".") as customer ' .
|
|
'FROM `' . _DB_PREFIX_ . 'lgcomments_storecomments` st ' .
|
|
'LEFT JOIN `' . _DB_PREFIX_ . 'customer` c ON st.`id_customer` = c.`id_customer` ' .
|
|
'WHERE st.active = 1 ' .
|
|
'AND st.id_lang = ' . (int)$this->context->language->id . ' ' .
|
|
'ORDER BY st.date DESC ' .
|
|
'LIMIT ' . (int)$number
|
|
);
|
|
return $sliderL;
|
|
}
|
|
|
|
public function getDateFormatFull()
|
|
{
|
|
$format = Db::getInstance()->getValue(
|
|
'SELECT date_format_full ' .
|
|
'FROM ' . _DB_PREFIX_ . 'lang ' .
|
|
'WHERE id_lang = ' . (int)$this->context->language->id
|
|
);
|
|
return $format;
|
|
}
|
|
|
|
/* BANNER */
|
|
|
|
private function getP()
|
|
{
|
|
$default_lang = $this->context->language->id;
|
|
$lang = Language::getIsoById($default_lang);
|
|
$pl = array('es', 'fr');
|
|
if (!in_array($lang, $pl)) {
|
|
$lang = 'en';
|
|
}
|
|
$this->context->controller->addCSS(_MODULE_DIR_ . $this->name . '/views/css/publi/style.css');
|
|
$base = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ?
|
|
'https://' . $this->context->shop->domain_ssl :
|
|
'http://' . $this->context->shop->domain);
|
|
if (version_compare(_PS_VERSION_, '1.5.0', '>')) {
|
|
$uri = $base . $this->context->shop->getBaseURI();
|
|
} else {
|
|
$uri = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ?
|
|
'https://' . _PS_SHOP_DOMAIN_SSL_DOMAIN_ :
|
|
'http://' . _PS_SHOP_DOMAIN_) . __PS_BASE_URI__;
|
|
}
|
|
$path = _PS_MODULE_DIR_ . $this->name
|
|
. DIRECTORY_SEPARATOR . 'views'
|
|
. DIRECTORY_SEPARATOR . 'publi'
|
|
. DIRECTORY_SEPARATOR . $lang
|
|
. DIRECTORY_SEPARATOR . 'index.php';
|
|
$object = Tools::file_get_contents($path);
|
|
$object = str_replace('src="/modules/', 'src="' . $uri . 'modules/', $object);
|
|
|
|
return $object;
|
|
}
|
|
|
|
public function getContent()
|
|
{
|
|
$tokenC = Tools::getAdminTokenLite('AdminCustomers');
|
|
$tokenO = Tools::getAdminTokenLite('AdminOrders');
|
|
$tokenL = Tools::getAdminTokenLite('AdminLanguages');
|
|
$tokenPC = Tools::getAdminTokenLite('AdminLGCommentsProducts');
|
|
$tokenSC = Tools::getAdminTokenLite('AdminLGCommentsStore');
|
|
$tokenPe = Tools::getAdminTokenLite('AdminPerformance');
|
|
$tokenPr = Tools::getAdminTokenLite('AdminProducts');
|
|
$tokenM = Tools::getAdminTokenLite('AdminModulesPositions');
|
|
$tokenE = Tools::getAdminTokenLite('AdminEmails');
|
|
$secureKey = md5(_COOKIE_KEY_ . Configuration::get('PS_SHOP_NAME'));
|
|
$this->html = $this->getP();
|
|
|
|
// Saving rating config
|
|
if (Tools::isSubmit('submitLGCommentsGeneral')) {
|
|
if (LGUtils::saveRatingsConfig()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Rating configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Rating configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
// Saving widget config
|
|
if (Tools::isSubmit('submitLGCommentsWidget')) {
|
|
if (LGUtils::saveStoreWidgetConfig()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Widget configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Widget configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
// Saving home page slider config
|
|
if (Tools::isSubmit('submitLGCommentsHomepage')) {
|
|
if (LGUtils::saveHomeSliderConfig()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Homepage configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Homepage configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
// Saving store page review config
|
|
if (Tools::isSubmit('submitLGCommentsStore')) {
|
|
if (LGUtils::saveStorePageReviewConfig()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Store review configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Store review configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
if (Tools::isSubmit('submitLGCommentsProducts')) {
|
|
if (LGUtils::saveProductReviewConfig()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Product review configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Product review configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
if (Tools::isSubmit('submitLGCommentsSnippets')) {
|
|
if (LGUtils::saveRichSnippetsConfig()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Rich Snippets configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Rich Snippets configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
if (Tools::isSubmit('submitLGCommentsSend')) {
|
|
if (LGUtils::saveSendEmails()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Send emails configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Send emails configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
if (Tools::isSubmit('submitLGCommentsConfigure')) {
|
|
if (LGUtils::saveConfigureEmails()) {
|
|
$this->html .= $this->displayConfirmation($this->l('Emails configuration updated'));
|
|
} else {
|
|
$this->html .= $this->displayError($this->l('Emails configuration cannot be updated'));
|
|
}
|
|
}
|
|
|
|
if (Tools::isSubmit('submitLGCommentsManage')) {
|
|
// Opinion form
|
|
Configuration::updateValue(
|
|
'PS_LGCOMMENTS_OPINION_FORM',
|
|
(int)Tools::getValue('PS_LGCOMMENTS_OPINION_FORM', 1)
|
|
);
|
|
// Validation
|
|
Configuration::updateValue(
|
|
'PS_LGCOMMENTS_VALIDATION',
|
|
(int)Tools::getValue('lgcomments_validation', 1)
|
|
);
|
|
$this->html .= $this->displayConfirmation($this->l('General review configuration updated'));
|
|
}
|
|
|
|
// Import product comments
|
|
if (Tools::isSubmit('productCSV')) {
|
|
$this->html .= LGCSV::importProductComments($this);
|
|
}
|
|
|
|
// Import store comments
|
|
if (Tools::isSubmit('storeCSV')) {
|
|
$this->html .= LGCSV::importStorecomments($this);
|
|
}
|
|
|
|
// Export product comments
|
|
if (Tools::isSubmit('exportProductCSV')) {
|
|
$this->html .= LGCSV::exportProductComments($this);
|
|
}
|
|
|
|
// Export store comments
|
|
if (Tools::isSubmit('exportStoreCSV')) {
|
|
$this->html .= LGCSV::exportStoreComments($this);
|
|
}
|
|
|
|
// Display error messages
|
|
if ((int)Configuration::get('PS_DISABLE_NON_NATIVE_MODULE') > 0) {
|
|
$this->html .= $this->displayError(
|
|
$this->l('Non PrestaShop modules are currently disabled on your store.') . ' ' .
|
|
$this->l('Please change the configuration') . ' '.
|
|
$this->getAnchor(
|
|
array(
|
|
'lgcomments_warning_link_href' => 'index.php?tab=AdminPerformance&token='.$tokenPe,
|
|
'lgcomments_warning_link_target' => '_blank',
|
|
'lgcomments_warning_link_message' => $this->l('here'),
|
|
)
|
|
)
|
|
);
|
|
}
|
|
$checkIfEmpty = $this->checkIfEmptyStore();
|
|
if ($checkIfEmpty == false) {
|
|
$this->html .= $this->displayError(
|
|
$this->getAnchor(
|
|
array(
|
|
'lgcomments_warning_link_href' => 'index.php?controller=AdminLGCommentsStore&token='
|
|
.$tokenSC,
|
|
'lgcomments_warning_link_target' => '_blank',
|
|
'lgcomments_warning_link_class' => 'redtext',
|
|
'lgcomments_warning_link_message' => $this->l(
|
|
'You haven\'t received any store reviews at the moment.'
|
|
)
|
|
)
|
|
)
|
|
. ' ' . $this->l('Please take a look at our') . ' '.
|
|
$this->getAnchor(
|
|
array(
|
|
'lgcomments_warning_link_href' => '../modules/'
|
|
.$this->name.'/readme/readme_'.$this->l('en').'.pdf#page=11',
|
|
'lgcomments_warning_link_target' => '_blank',
|
|
'lgcomments_warning_link_message' => $this->l('PDF documentation')
|
|
)
|
|
)
|
|
. ' ' . $this->l('to see how to send opinion requests to your customers.')
|
|
);
|
|
}
|
|
$checkIfEmpty2 = $this->checkIfEmptyProduct();
|
|
if ($checkIfEmpty2 == false) {
|
|
$this->html .= $this->displayError(
|
|
$this->getAnchor(
|
|
array(
|
|
'lgcomments_warning_link_href' => 'index.php?controller=AdminLGCommentsProducts&token='
|
|
.$tokenPC,
|
|
'lgcomments_warning_link_target' => '_blank',
|
|
'lgcomments_warning_link_message' => $this->l(
|
|
'You haven\'t received any product reviews at the moment.'
|
|
)
|
|
)
|
|
)
|
|
. ' ' . $this->l('Please take a look at our') . ' '.
|
|
$this->getAnchor(
|
|
array(
|
|
'lgcomments_warning_link_href' => '../modules/'
|
|
.$this->name.'/readme/readme_'.$this->l('en').'.pdf#page=11',
|
|
'lgcomments_warning_link_target' => '_blank',
|
|
'lgcomments_warning_link_message' => $this->l('PDF documentation')
|
|
)
|
|
)
|
|
. ' ' . $this->l('to see how to send opinion requests to your customers.')
|
|
);
|
|
}
|
|
$checkIfEmpty3 = $this->checkIfEmptyStatus();
|
|
if ($checkIfEmpty3 == false) {
|
|
$this->html .= $this->displayError(
|
|
$this->l('You must select at least one order status') . ' ' .
|
|
$this->l('to be able to send opinion requests to your customers.')
|
|
);
|
|
}
|
|
$checkIfEmpty4 = $this->checkIfEmptyGroup();
|
|
if ($checkIfEmpty4 == false) {
|
|
$this->html .= $this->displayError(
|
|
$this->l('You must select at least one group of customers') . ' ' .
|
|
$this->l('to be able to send opinion requests to your customers.')
|
|
);
|
|
}
|
|
$checkIfEmpty5 = $this->checkIfEmptyMultistore();
|
|
if ($checkIfEmpty5 == false) {
|
|
$this->html .= $this->displayError(
|
|
$this->l('You must select at least one shop') . ' ' .
|
|
$this->l('to be able to send opinion requests to your customers.')
|
|
);
|
|
}
|
|
// Check if the widget is inserted into several hooks at the time
|
|
$moduleHook = $this->getHookList();
|
|
$hookFooter = 0;
|
|
$hookLeft = 0;
|
|
$hookRight = 0;
|
|
|
|
foreach ($moduleHook as $mHook) {
|
|
if (in_array('displayFooter', $mHook)) {
|
|
$hookFooter++;
|
|
}
|
|
|
|
if (in_array('displayLeftColumn', $mHook)) {
|
|
$hookLeft++;
|
|
}
|
|
|
|
if (in_array('displayRightColumn', $mHook)) {
|
|
$hookRight++;
|
|
}
|
|
}
|
|
|
|
$widgetHook = $hookFooter + $hookLeft + $hookRight;
|
|
|
|
if ($hookFooter) {
|
|
$hookFooterName = ' - displayFooter';
|
|
} else {
|
|
$hookFooterName = '';
|
|
}
|
|
|
|
if ($hookLeft) {
|
|
$hookLeftName = ' - displayLeftColumn';
|
|
} else {
|
|
$hookLeftName = '';
|
|
}
|
|
|
|
if ($hookRight) {
|
|
$hookRightName = ' - displayRightColumn';
|
|
} else {
|
|
$hookRightName = '';
|
|
}
|
|
|
|
if ($widgetHook > 1) {
|
|
$this->html .= $this->displayError(
|
|
$this->l('The store widget is called in several hooks at once') .
|
|
' (' . $hookFooterName . $hookLeftName . $hookRightName . '). ' .
|
|
$this->l('Please remove it from the extra hooks') .
|
|
$this->getAnchor(
|
|
array(
|
|
'lgcomments_warning_link_href' => 'index.php?tab=AdminModulesPositions&token=' . $tokenM,
|
|
'lgcomments_warning_link_target' => '_blank',
|
|
'lgcomments_warning_link_message' => $this->l('here'),
|
|
)
|
|
).
|
|
' ' . $this->l('(the widget can only be called in one hook at once).')
|
|
);
|
|
}
|
|
|
|
/* common vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'module_path' => $this->getPathUri(),
|
|
'iso_lang' => $this->iso_lang,
|
|
'tokenPC' => $tokenPC,
|
|
)
|
|
);
|
|
|
|
/* menubar.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'LGCOMMENTS_SELECTED_MENU' => pSQL(
|
|
Tools::getValue(
|
|
'LGCOMMENTS_SELECTED_MENU',
|
|
'general-config'
|
|
)
|
|
),
|
|
)
|
|
);
|
|
|
|
/* ratings.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'stars' => $this->stars,
|
|
'selected_star_design' => Configuration::get('PS_LGCOMMENTS_STARDESIGN1'),
|
|
'selected_star_colour' => Configuration::get('PS_LGCOMMENTS_STARDESIGN2'),
|
|
'selected_star_size' => Configuration::get('PS_LGCOMMENTS_STARSIZE'),
|
|
'selected_star_scale' => Configuration::get('PS_LGCOMMENTS_SCALE'),
|
|
'zero_star' => Configuration::get('PS_LGCOMMENTS_DISPLAY_ZEROSTAR'),
|
|
'cat_top_margin' => Configuration::get('PS_LGCOMMENTS_CATTOPMARGIN'),
|
|
'cat_bottom_margin' => Configuration::get('PS_LGCOMMENTS_CATBOTMARGIN'),
|
|
'pro_top_margin' => Configuration::get('PS_LGCOMMENTS_PRODTOPMARGIN'),
|
|
'pro_bottom_margin' => Configuration::get('PS_LGCOMMENTS_PRODBOTMARGIN'),
|
|
)
|
|
);
|
|
|
|
/* store_widget.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'store_widget' => $this->store_widget,
|
|
'PS_LGCOMMENTS_DISPLAY' => Configuration::get('PS_LGCOMMENTS_DISPLAY'),
|
|
'display_type' => Configuration::get('PS_LGCOMMENTS_DISPLAY_TYPE'),
|
|
'display_side' => Configuration::get('PS_LGCOMMENTS_DISPLAY_SIDE'),
|
|
'moduleHook' => $this->getHookList(),
|
|
'bg_design' => Configuration::get('PS_LGCOMMENTS_BGDESIGN1'),
|
|
'bg_color' => Configuration::get('PS_LGCOMMENTS_BGDESIGN2'),
|
|
'display' => Configuration::get('PS_LGCOMMENTS_DISPLAYpSQL'),
|
|
'cross' => Configuration::get('PS_LGCOMMENTS_CROSS'),
|
|
'text_color' => Configuration::get('PS_LGCOMMENTS_TEXTCOLOR2'),
|
|
// REFACTORIZAR: Poner esto como constante o algo
|
|
'tokenM' => $tokenM,
|
|
)
|
|
);
|
|
|
|
/* homepage.tpl vars*/
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'display_slider' => Configuration::get('PS_LGCOMMENTS_DISPLAY_SLIDER'),
|
|
'slider_blocks' => Configuration::get('PS_LGCOMMENTS_SLIDER_BLOCKS'),
|
|
'slider_total' => Configuration::get('PS_LGCOMMENTS_SLIDER_TOTAL'),
|
|
)
|
|
);
|
|
|
|
/* store_reviews.tpl vars*/
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'store_form' => Configuration::get('PS_LGCOMMENTS_STORE_FORM'),
|
|
'PS_LGCOMMENTS_STORE_FILTER' => Configuration::get('PS_LGCOMMENTS_STORE_FILTER'),
|
|
'PS_LGCOMMENTS_DISPLAY_LANGUAGE' => Configuration::get('PS_LGCOMMENTS_DISPLAY_LANGUAGE'),
|
|
'PS_LGCOMMENTS_TEXTCOLOR2' => Configuration::get('PS_LGCOMMENTS_TEXTCOLOR2'),
|
|
'PS_LGCOMMENTS_BACKCOLOR2' => Configuration::get('PS_LGCOMMENTS_BACKCOLOR2'),
|
|
'PS_LGCOMMENTS_PER_PAGE' => Configuration::get('PS_LGCOMMENTS_PER_PAGE'),
|
|
'PS_LGCOMMENTS_DISPLAY_ORDER' => Configuration::get('PS_LGCOMMENTS_DISPLAY_ORDER'),
|
|
)
|
|
);
|
|
|
|
/* store_reviews.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'PS_LGCOMMENTS_DISPLAY_COMMENTS' => Configuration::get('PS_LGCOMMENTS_DISPLAY_COMMENTS'),
|
|
'PS_LGCOMMENTS_TAB_CONTENT' => Configuration::get('PS_LGCOMMENTS_TAB_CONTENT'),
|
|
'PS_LGCOMMENTS_PRODUCT_FORM' => Configuration::get('PS_LGCOMMENTS_PRODUCT_FORM'),
|
|
'PS_LGCOMMENTS_PRODUCT_FILTER' => Configuration::get('PS_LGCOMMENTS_PRODUCT_FILTER'),
|
|
'PS_LGCOMMENTS_PRODUCT_FILTER_NB' => Configuration::get('PS_LGCOMMENTS_PRODUCT_FILTER_NB'),
|
|
'PS_LGCOMMENTS_DISPLAY_DEFAULT' => Configuration::get('PS_LGCOMMENTS_DISPLAY_DEFAULT'),
|
|
'PS_LGCOMMENTS_DISPLAY_MORE' => Configuration::get('PS_LGCOMMENTS_DISPLAY_MORE'),
|
|
'PS_LGCOMMENTS_DISPLAY_ORDER2' => Configuration::get('PS_LGCOMMENTS_DISPLAY_ORDER2'),
|
|
'PS_LGCOMMENTS_DISPLAY_LANGUAGE2' => Configuration::get('PS_LGCOMMENTS_DISPLAY_LANGUAGE2'),
|
|
)
|
|
);
|
|
|
|
/* google_ritch_snippets.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'PS_LGCOMMENTS_DISPLAY_SNIPPETS2' => Configuration::get('PS_LGCOMMENTS_DISPLAY_SNIPPETS2'),
|
|
'PS_LGCOMMENTS_DISPLAY_SNIPPETS' => Configuration::get('PS_LGCOMMENTS_DISPLAY_SNIPPETS'),
|
|
'PS_LGCOMMENTS_PRICE_RANGE' => Configuration::get('PS_LGCOMMENTS_PRICE_RANGE'),
|
|
'currency' => $this->context->currency->getSign(),
|
|
)
|
|
);
|
|
|
|
/* send_emails.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'tokenSC' => $tokenSC,
|
|
'tokenE' => $tokenE,
|
|
'cron_url' => $this->getCronUrl($secureKey),
|
|
'PS_LGCOMMENTS_SUBJECT_NEWREVIEWS' => Configuration::get('PS_LGCOMMENTS_SUBJECT_NEWREVIEWS'),
|
|
'PS_LGCOMMENTS_SUBJECT_CRON' => Configuration::get('PS_LGCOMMENTS_SUBJECT_CRON'),
|
|
'PS_LGCOMMENTS_EMAIL_ALERTS' => Configuration::get('PS_LGCOMMENTS_EMAIL_ALERTS'),
|
|
'PS_LGCOMMENTS_EMAIL_CRON' => Configuration::get('PS_LGCOMMENTS_EMAIL_CRON'),
|
|
)
|
|
);
|
|
|
|
/* configure_emails.tpl vars */
|
|
$customerGroupsChecked = LGUtils::getCustomerGroups();
|
|
foreach ($customerGroupsChecked as $index => $cGroup) {
|
|
$customerGroupsChecked[$index]['checked'] = (bool)$this->getCustomerGroupsByGroup($cGroup['id_group']);
|
|
}
|
|
|
|
$subjects = array();
|
|
$langs = LanguageCore::getLanguages();
|
|
foreach ($langs as $lang) {
|
|
$subjects[$lang['iso_code']]['PS_LGCOMMENTS_SUBJECT'] = Configuration::get(
|
|
'PS_LGCOMMENTS_SUBJECT' .
|
|
$lang['iso_code']
|
|
);
|
|
$subjects[$lang['iso_code']]['PS_LGCOMMENTS_SUBJECT2'] = Configuration::get(
|
|
'PS_LGCOMMENTS_SUBJECT2' .
|
|
$lang['iso_code']
|
|
);
|
|
$subjects[$lang['iso_code']]['PS_LGCOMMENTS_SUBJECT3'] = Configuration::get(
|
|
'PS_LGCOMMENTS_SUBJECT3' .
|
|
$lang['iso_code']
|
|
);
|
|
}
|
|
|
|
$orderStatus = LGUtils::getOrdersStatus();
|
|
foreach ($orderStatus as $index => $estado) {
|
|
$orderStatus[$index]['checked'] = (bool)$this->getLGCommentsOrderStatus($estado['id_order_state']);
|
|
}
|
|
|
|
$shopList = LGUtils::getShops();
|
|
foreach ($shopList as $index => $shop) {
|
|
$shopList[$index]['checked'] = (bool)$this->getSelectedShops($shop['id_shop']);
|
|
}
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'langs' => $langs,
|
|
'customerGroups' => $customerGroupsChecked,
|
|
'subjects' => $subjects,
|
|
'orderStatus' => $orderStatus,
|
|
'shopList' => $shopList,
|
|
)
|
|
);
|
|
|
|
/* corresponding_orders.tpl vars */
|
|
// Check orders
|
|
$days1 = Configuration::get('PS_LGCOMMENTS_DIAS');
|
|
$days2 = Configuration::get('PS_LGCOMMENTS_DIAS2');
|
|
$days3 = Configuration::get('PS_LGCOMMENTS_DAYS_AFTER');
|
|
$orderList = $this->getCorrespondingOrders($days1, $days2);
|
|
$days4 = $days2 + $days3;
|
|
$date1 = new DateTime('now');
|
|
$date2 = new DateTime('now');
|
|
$date3 = new DateTime('now');
|
|
$date1->sub(new DateInterval('P' . $days1 . 'D'));
|
|
$date2->sub(new DateInterval('P' . $days2 . 'D'));
|
|
$date3->sub(new DateInterval('P' . $days4 . 'D'));
|
|
|
|
foreach ($orderList as $io => $order) {
|
|
$orderList[$io]['shops'] = $this->getShopsByCustomer($order['id_customer']);
|
|
$orderList[$io]['groups'] = $this->getCustomerGroupsByCustomer($order['id_customer']);
|
|
$orderList[$io]['date_email_formated'] = date("d/m/Y H:i", strtotime($order['date_email']));
|
|
$orderList[$io]['date_email2_formated'] = date("d/m/Y H:i", strtotime($order['date_email2']));
|
|
}
|
|
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'allGroups' => $this->getCorrespondingGroups(),
|
|
'allShops' => $this->getCorrespondingShops(),
|
|
'allStatus' => $this->getCorrespondingStatus(),
|
|
'orderList' => $orderList,
|
|
'date1' => $date1->format($this->getDateFormatFull()),
|
|
'date2' => $date2->format($this->getDateFormatFull()),
|
|
'date3' => $date3->format($this->getDateFormatFull()),
|
|
'date_format_full' => $this->getDateFormatFull(),
|
|
)
|
|
);
|
|
|
|
/* import_store_comments.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'tokenC' => $tokenC,
|
|
'tokenO' => $tokenO,
|
|
'tokenL' => $tokenL,
|
|
)
|
|
);
|
|
|
|
/* import_product_comments.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'tokenC' => $tokenC,
|
|
'tokenPr' => $tokenPr,
|
|
'tokenL' => $tokenL,
|
|
)
|
|
);
|
|
|
|
/* manage_reviews.tpl vars */
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'tokenSC' => $tokenSC,
|
|
'tokenPC' => $tokenPC,
|
|
'PS_LGCOMMENTS_VALIDATION' => Configuration::get('PS_LGCOMMENTS_VALIDATION'),
|
|
'PS_LGCOMMENTS_OPINION_FORM' => Configuration::get('PS_LGCOMMENTS_OPINION_FORM'),
|
|
)
|
|
);
|
|
|
|
$this->html .= $this->context->smarty->fetch(
|
|
_PS_MODULE_DIR_ . $this->name
|
|
. DIRECTORY_SEPARATOR . 'views'
|
|
. DIRECTORY_SEPARATOR . 'templates'
|
|
. DIRECTORY_SEPARATOR . 'admin'
|
|
. DIRECTORY_SEPARATOR . 'configuration.tpl'
|
|
);
|
|
|
|
if ($this->bootstrap == true) {
|
|
$this->html = $this->formatBootstrap($this->html);
|
|
}
|
|
return $this->html;
|
|
}
|
|
|
|
public function getMedia()
|
|
{
|
|
$path = LGUtils::getMediaBasePath($this);
|
|
LGUtils::addJS($path . 'views/js/store_widget.js', 'lgcomments_store_widget_js');
|
|
LGUtils::addCSS($path . 'views/css/store_widget.css', 'lgcomments_store_widget_Css', $this->context);
|
|
|
|
if ($this->context->controller instanceof ProductController) {
|
|
$this->context->controller->addJqueryPlugin('fancybox');
|
|
LGUtils::addJS($path . 'views/js/form_review.js', 'form_review');
|
|
LGUtils::addJS($path . 'views/js/product_reviews.js', 'product_reviews');
|
|
LGUtils::addCSS($path . 'views/css/form_review.css', 'form_review');
|
|
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
LGUtils::addCSS($path . 'views/css/product_reviews_17.css', 'product_reviews_17');
|
|
} else {
|
|
LGUtils::addCSS($path . 'views/css/product_reviews.css', 'product_reviews');
|
|
}
|
|
} elseif ($this->context->controller instanceof LGCommentsReviewsModuleFrontController) {
|
|
LGUtils::addCSS($path . 'views/css/form_review.css', 'form_review');
|
|
LGUtils::addJS($path . 'views/js/form_review.js', 'form_review');
|
|
LGUtils::addCSS($path . 'views/css/form_review.css', 'form_review');
|
|
LGUtils::addCSS($path . 'views/css/store_reviews.css', 'store_reviews');
|
|
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
LGUtils::addJS($path . 'views/js/store_reviews.js', 'store_reviews_17');
|
|
LGUtils::addCSS($path . 'views/css/store_reviews_17.css', 'store_reviews_17');
|
|
} else {
|
|
LGUtils::addJS($path . 'views/js/store_reviews.js', 'store_reviews');
|
|
LGUtils::addCSS($path . 'views/css/store_reviews.css', 'store_reviews');
|
|
}
|
|
} elseif ($this->context->controller instanceof IndexController) {
|
|
LGUtils::addCSS($path . 'views/css/jquery.lgslider.css', 'jquery.lgslider');
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
LGUtils::addJS($path . 'views/js/jquery.lgslider17.js', 'jquery.lgslider');
|
|
} else {
|
|
LGUtils::addJS($path . 'views/js/jquery.lgslider.js', 'jquery.lgslider');
|
|
}
|
|
LGUtils::addJS($path . 'views/js/home_reviews.js', 'home_reviews');
|
|
} elseif ($this->context->controller instanceof LGCommentsAccountModuleFrontController) {
|
|
LGUtils::addJS($path . 'views/js/account.js', 'account');
|
|
}
|
|
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
LGUtils::addCSS($path . 'views/css/product_list_17.css', 'product_list_17');
|
|
} else {
|
|
LGUtils::addCSS($path . 'views/css/product_list.css', 'product_list');
|
|
}
|
|
}
|
|
|
|
public function hookActionFrontControllerSetMedia($params)
|
|
{
|
|
$this->getMedia();
|
|
}
|
|
|
|
public function hookDisplayBackOfficeHeader()
|
|
{
|
|
if ($this->context->controller instanceof AdminModulesController &&
|
|
pSQL(Tools::getValue('configure')) == $this->name
|
|
) {
|
|
$this->context->controller->addJquery();
|
|
$this->context->controller->addCSS($this->_path . 'views/css/lgcomments.css');
|
|
$this->context->controller->addJS($this->_path . 'views/js/jscolor.js');
|
|
$this->context->controller->addJS($this->_path . 'views/js/menu.js');
|
|
|
|
// Carlos Utrera: Agragamos validaciones por JQuery
|
|
// Todo: Comprobar compatibilidad en 1.5 y 1.7
|
|
$this->context->controller->addjQueryPlugin('validate');
|
|
$this->context->controller->addJS(
|
|
_PS_JS_DIR_.'jquery/plugins/validate/localization/messages_'
|
|
.$this->context->language->iso_code.'.js'
|
|
);
|
|
$this->context->controller->addJS($this->_path . 'views/js/jquery.validate-integer.js');
|
|
$this->context->controller->addJS($this->_path . 'views/js/jquery.validate-hexadecimal.js');
|
|
$this->context->controller->addJS($this->_path . 'views/js/jquery.validate-nonempty.js');
|
|
$this->context->controller->addCSS($this->_path . 'views/css/admin.css');
|
|
$this->context->controller->addJS($this->_path . 'views/js/admin.js');
|
|
|
|
if (version_compare(_PS_VERSION_, '1.6.0', '<')) {
|
|
$this->context->controller->addJS(_MODULE_DIR_ . $this->name . 'views/js/bootstrap.js');
|
|
$this->context->controller->addJS(_MODULE_DIR_ . $this->name . 'views/js/admin15.js');
|
|
$this->context->controller->addCSS(_MODULE_DIR_ . $this->name . 'views/css/admin15.css');
|
|
}
|
|
}
|
|
}
|
|
|
|
public function hookHeader()
|
|
{
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '<')) {
|
|
$this->context->controller->addJQuery();
|
|
}
|
|
|
|
$ssl = Configuration::get('PS_SSL_ENABLED_EVERYWHERE') && Configuration::get('PS_SSL_ENABLED');
|
|
$link = Context::getContext()->link;
|
|
$values = array(
|
|
'lgcomments_products_default_display' => Configuration::get('PS_LGCOMMENTS_DISPLAY_DEFAULT'),
|
|
'lgcomments_products_extra_display' => Configuration::get('PS_LGCOMMENTS_DISPLAY_MORE'),
|
|
'module_dir' => $this->_path,
|
|
'star_style' => Configuration::get('PS_LGCOMMENTS_STARDESIGN1'),
|
|
'star_color' => Configuration::get('PS_LGCOMMENTS_STARDESIGN2'),
|
|
'comment_tab' => Configuration::get('PS_LGCOMMENTS_TAB_CONTENT'),
|
|
'sliderblocks' => Configuration::get('PS_LGCOMMENTS_SLIDER_BLOCKS'),
|
|
'send_successfull_msg' => $this->l('The review has been correctly sent.'),
|
|
'review_controller_link' => $link->getModuleLink(
|
|
'lgcomments',
|
|
'reviews',
|
|
array(
|
|
'action' => 'sendReview',
|
|
'ajax' => '1'
|
|
),
|
|
$ssl
|
|
),
|
|
);
|
|
|
|
$this->getMedia();
|
|
|
|
$this->context->smarty->assign($values);
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
Media::addJsDef($values);
|
|
} else {
|
|
return ($this->display(__FILE__, '/views/templates/front/header.tpl'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* display Rating on Product page right column
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function hookExtraRight()
|
|
{
|
|
if (Configuration::get('PS_LGCOMMENTS_DISPLAY_COMMENTS')) {
|
|
return LGProductComment::render(LGProductComment::PRODUCT_EXTRA_RIGHT);
|
|
}
|
|
}
|
|
|
|
public function hookProductTab()
|
|
{
|
|
if (Configuration::get('PS_LGCOMMENTS_DISPLAY_COMMENTS')) {
|
|
if (Configuration::get('PS_LGCOMMENTS_TAB_CONTENT') == 2) {
|
|
return LGProductComment::render(LGProductComment::PRODUCT_REVIEW_TAB);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function hookProductTabContent()
|
|
{
|
|
if (Configuration::get('PS_LGCOMMENTS_DISPLAY_COMMENTS')) {
|
|
return LGProductComment::render(LGProductComment::PRODUCT_REVIEW_CONTENT);
|
|
}
|
|
}
|
|
|
|
public function hookDisplayFooterProduct()
|
|
{
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '>=')) {
|
|
return $this->hookProductTabContent();
|
|
}
|
|
}
|
|
|
|
public function hookDisplayLgStoreCommentSlider()
|
|
{
|
|
return $this->hookDisplayHome();
|
|
}
|
|
|
|
/**
|
|
* Display product rating on products lists
|
|
*
|
|
* @param $params
|
|
* @return mixed
|
|
*/
|
|
public function hookDisplayProductListReviews($params)
|
|
{
|
|
if (Configuration::get('PS_LGCOMMENTS_DISPLAY_COMMENTS')) {
|
|
$id_product = (int)$params['product']['id_product'];
|
|
$number_of_reviews = LGProductComment::getNummberOfReviews($id_product);
|
|
|
|
if ($number_of_reviews
|
|
|| (!$number_of_reviews && Configuration::get('PS_LGCOMMENTS_DISPLAY_ZEROSTAR'))
|
|
) {
|
|
if (!$this->isCached('product_list.tpl', $this->getCacheId($id_product))) {
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'path_lgcomments' => _MODULE_DIR_ . $this->name,
|
|
'number_of_reviews' => $number_of_reviews,
|
|
'starstyle' => Configuration::get('PS_LGCOMMENTS_STARDESIGN1'),
|
|
'starcolor' => Configuration::get('PS_LGCOMMENTS_STARDESIGN2'),
|
|
'starsize' => Configuration::get('PS_LGCOMMENTS_STARSIZE'),
|
|
'zerostar' => Configuration::get('PS_LGCOMMENTS_DISPLAY_ZEROSTAR'),
|
|
'cattopmargin' => Configuration::get('PS_LGCOMMENTS_CATTOPMARGIN'),
|
|
'catbotmargin' => Configuration::get('PS_LGCOMMENTS_CATBOTMARGIN'),
|
|
'productlink' => $this->context->link->getProductLink(
|
|
$id_product,
|
|
$this->getProductRewrite($id_product)
|
|
),
|
|
)
|
|
);
|
|
|
|
if ($number_of_reviews > 0) {
|
|
$sum_of_reviews = LGProductComment::getSumOfReviews($id_product);
|
|
$averagecomments = @round($sum_of_reviews / $number_of_reviews);
|
|
$this->context->smarty->assign(array(
|
|
'sumcomments' => $sum_of_reviews,
|
|
'averagecomments' => $averagecomments,
|
|
));
|
|
}
|
|
return $this->display(__FILE__, '/views/templates/front/product_list.tpl');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* displays Reviews Widget
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function hookFooter()
|
|
{
|
|
// Línea Gráfica - Carlos Utrera:
|
|
// Extraemos la lógica de la carga del widget a una clase
|
|
if (version_compare(_PS_VERSION_, '1.7.0', '<')) {
|
|
$this->context->controller->addJQuery();
|
|
}
|
|
if (Configuration::get('PS_LGCOMMENTS_DISPLAY')
|
|
&& LGCommentsWidget::isActive()
|
|
) {
|
|
$this->context->smarty->assign(LGCommentsWidget::getTemplateVars($this));
|
|
return ($this->display(__FILE__, LGCommentsWidget::getTemplate()));
|
|
}
|
|
}
|
|
|
|
public function hookLeftColumn($params)
|
|
{
|
|
return $this->hookFooter($params);
|
|
}
|
|
|
|
public function hookRightColumn($params)
|
|
{
|
|
return $this->hookFooter($params);
|
|
}
|
|
|
|
/**
|
|
* displays reviews carusel on home page
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function hookDisplayHome()
|
|
{
|
|
$slidertotal = Configuration::get('PS_LGCOMMENTS_SLIDER_TOTAL');
|
|
|
|
if (version_compare(_PS_VERSION_, '1.6.0', '>')) {
|
|
$ps16 = true;
|
|
} else {
|
|
$ps16 = false;
|
|
}
|
|
|
|
$base = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ?
|
|
'https://' . $this->context->shop->domain_ssl :
|
|
'http://' . $this->context->shop->domain);
|
|
|
|
if (Configuration::get('PS_LGCOMMENTS_DISPLAY_LANGUAGE') == 1) {
|
|
$totalcomentarios = LGStoreComment::getSumShopCommentsByLang();
|
|
$numerocomentarios = LGStoreComment::getCountShopCommentsByLang();
|
|
$mediacomentarios = @round($totalcomentarios / $numerocomentarios);
|
|
$mediacomentarios2 = @round($totalcomentarios / $numerocomentarios, 1);
|
|
$allreviews = $this->getSliderShopCommentsByLang($slidertotal);
|
|
} else {
|
|
$totalcomentarios = LGStoreComment::getSumShopComments();
|
|
$numerocomentarios = LGStoreComment::getCountShopComments();
|
|
$mediacomentarios = @round($totalcomentarios / $numerocomentarios);
|
|
$mediacomentarios2 = @round($totalcomentarios / $numerocomentarios, 1);
|
|
$allreviews = $this->getSliderShopComments($slidertotal);
|
|
}
|
|
|
|
$this->context->smarty->assign(array(
|
|
'numerocomentarios' => $numerocomentarios,
|
|
'mediacomentarios' => $mediacomentarios,
|
|
'mediacomentarios2' => $mediacomentarios2,
|
|
'allreviews' => $allreviews,
|
|
'ps16' => $ps16,
|
|
'displaysnippets' => Configuration::get('PS_LGCOMMENTS_DISPLAY_SNIPPETS'),
|
|
'storename' => Configuration::get('PS_SHOP_NAME'),
|
|
'address_street1' => Configuration::get('PS_SHOP_ADDR1'),
|
|
'address_street2' => Configuration::get('PS_SHOP_ADDR2'),
|
|
'address_zip' => Configuration::get('PS_SHOP_CODE'),
|
|
'address_city' => Configuration::get('PS_SHOP_CITY'),
|
|
'address_state' => Configuration::get('PS_SHOP_STATE'),
|
|
'address_country' => Configuration::get('PS_SHOP_COUNTRY'),
|
|
'address_phone' => Configuration::get('PS_SHOP_PHONE'),
|
|
'price_range' => Configuration::get('PS_LGCOMMENTS_PRICE_RANGE'),
|
|
'starstyle' => Configuration::get('PS_LGCOMMENTS_STARDESIGN1'),
|
|
'starcolor' => Configuration::get('PS_LGCOMMENTS_STARDESIGN2'),
|
|
'starsize' => Configuration::get('PS_LGCOMMENTS_STARSIZE'),
|
|
'ratingscale' => Configuration::get('PS_LGCOMMENTS_SCALE'),
|
|
'displayslider' => Configuration::get('PS_LGCOMMENTS_DISPLAY_SLIDER'),
|
|
'base_url' => $base,
|
|
'dateformat' => LGUtils::getDateFormat(),
|
|
'module_name' => $this->name
|
|
));
|
|
return $this->display(__FILE__, '/views/templates/front/home_reviews.tpl');
|
|
}
|
|
|
|
public function getAnchor($array)
|
|
{
|
|
$this->context->smarty->assign($array);
|
|
return $this->context->smarty->fetch(
|
|
_PS_MODULE_DIR_.$this->name
|
|
.DIRECTORY_SEPARATOR.'views'
|
|
.DIRECTORY_SEPARATOR.'templates'
|
|
.DIRECTORY_SEPARATOR.'admin'
|
|
.DIRECTORY_SEPARATOR.'_partials'
|
|
.DIRECTORY_SEPARATOR.'warningLink.tpl'
|
|
);
|
|
}
|
|
}
|