Files
bio-concept-pharma/web/modules/cyb_simplecomment/cyb_simplecomment.php
2019-11-17 19:14:07 +01:00

145 lines
5.5 KiB
PHP

<?php
if (!defined('_PS_VERSION_')){
exit;
}
require_once _PS_MODULE_DIR_.'netreviews/NetReviewsModel.php';
class Cyb_SimpleComment extends Module {
public function __construct(){
$this->name = 'cyb_simplecomment';
$this->tab = 'cyb_simplecomment';
$this->version = '1.1';
$this->author = 'Cyberscope Gabriel';
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
$this->display = 'view';
parent::__construct();
$this->displayName = $this->l('Cyberscope Simple Comment');
$this->description = $this->l('');
$this->confirmUninstall = $this->l('Êtes-vous sûr de vouloir désinstaller ce module ?');
$this->templateFile = 'module:cyb_simplecomment/cyb_simplecomment.tpl';
if (isset($this->context)){
$this->current_shop_id = $this->context->shop->getContextShopID();
}else{ // _PS_VERSION_ < 1.4
$this->current_shop_id = '';
}
if (Configuration::get('AV_MULTILINGUE', null, null, $this->current_shop_id) == 'checked') {
$this->id_lang = $this->context->language->id;
$this->iso_lang = pSQL(Language::getIsoById($this->id_lang));
$this->group_name = $this->getIdConfigurationGroup($this->iso_lang);
}
$this->all_multishops_reviews = false;
$this->all_languages_reviews = false;
}
public function install(){
if(!parent::install() ||
!Configuration::updateValue('cy_sc', '') ||
!$this->registerHook('displayProductRatingAVG') ||
!$this->registerHook('displayProductRatingSUM') ||
!$this->registerHook('displayMenuItems')
){
return false;
}
else{
return true;
}
}
public function uninstall(){
if(!parent::uninstall() || !Configuration::deleteByName('cy_sc')){
return false;
}
else{
return true;
}
}
public function hookDisplayProductRatingAVG($params){
$id_product = (int)$params['product']['id_product'];
$avisverifies_display_stars = Configuration::get('AV_DISPLAYSTARPLIST', null, null, $this->current_shop_id);
if (!isset($id_product) || empty($id_product) || !isset($avisverifies_display_stars) || empty($avisverifies_display_stars)) {
return ;
}
$o_av = new NetReviewsModel();
$stats_product = (!isset($this->stats_product) || empty($this->stats_product)) ? $o_av->getStatsProduct($id_product, $this->group_name, $this->current_shop_id) : $this->stats_product;
if ($this->all_multishops_reviews || $this->all_languages_reviews){ // override rate & nb_reviews
$language_group = ($this->all_languages_reviews)?null:$this->group_name;
$shop_id_group = ($this->all_multishops_reviews)?null:$this->current_shop_id;
$reviews = $o_av->getProductReviews($id_product, $language_group, $shop_id_group, 0, 1, 'horodate_DESC', 0, false);
$num_reviews = count($reviews);
if ($num_reviews < 1 || !$avisverifies_display_stars) {
return ;
}
$somme_rate = 0;
foreach ($reviews as $review) {
$somme_rate += $review['rate'];
}
$stats_product['rate'] = $somme_rate / $num_reviews;
$stats_product['nb_reviews'] = $num_reviews;
}
if (!isset($stats_product['nb_reviews']) || $stats_product['nb_reviews'] == 0) {
return ;
}
return !is_null($stats_product) && !is_null($stats_product['rate']) ? ceil((float)$stats_product['rate']) : "";
}
public function hookDisplayProductRatingSUM($params){
$id_product = (int)$params['product']['id_product'];
$avisverifies_display_stars = Configuration::get('AV_DISPLAYSTARPLIST', null, null, $this->current_shop_id);
if (!isset($id_product) || empty($id_product) || !isset($avisverifies_display_stars) || empty($avisverifies_display_stars)) {
return ;
}
$o_av = new NetReviewsModel();
$stats_product = (!isset($this->stats_product) || empty($this->stats_product)) ? $o_av->getStatsProduct($id_product, $this->group_name, $this->current_shop_id) : $this->stats_product;
if ($this->all_multishops_reviews || $this->all_languages_reviews){ // override rate & nb_reviews
$language_group = ($this->all_languages_reviews)?null:$this->group_name;
$shop_id_group = ($this->all_multishops_reviews)?null:$this->current_shop_id;
$reviews = $o_av->getProductReviews($id_product, $language_group, $shop_id_group, 0, 1, 'horodate_DESC', 0, false);
$num_reviews = count($reviews);
if ($num_reviews < 1 || !$avisverifies_display_stars) {
return ;
}
$somme_rate = 0;
foreach ($reviews as $review) {
$somme_rate += $review['rate'];
}
$stats_product['rate'] = $somme_rate / $num_reviews;
$stats_product['nb_reviews'] = $num_reviews;
}
if (!isset($stats_product['nb_reviews']) || $stats_product['nb_reviews'] == 0) {
return ;
}
return !is_null($stats_product) && !is_null($stats_product['nb_reviews']) ? $stats_product['nb_reviews'] : "";
}
public function hookDisplayMenuItems($params) {
return $this->display(__FILE__, '/views/templates/hook/rating-sorts.tpl');
}
}