HEX
Server: Apache
System: Linux srv13.cpanelhost.cl 3.10.0-962.3.2.lve1.5.38.el7.x86_64 #1 SMP Thu Jun 18 05:28:41 EDT 2020 x86_64
User: cca63905 (4205)
PHP: 7.3.20
Disabled: NONE
Upload Files
File: /home4/cca63905/www/nueva/modules/ybc_productimagehover/ybc_productimagehover.php
<?php
/**
 * 2007-2017 PrestaShop
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future. If you wish to customize PrestaShop for your
 * needs please refer to http://www.prestashop.com for more information.
 *
 * @author    PrestaShop SA <contact@prestashop.com>
 * @copyright 2007-2017 PrestaShop SA
 * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 * @version  Release: $Revision$
 *  International Registered Trademark & Property of PrestaShop SA
 */

if (!defined('_PS_VERSION_'))
    exit;

class Ybc_productimagehover extends Module
{
    public function __construct()
    {
        $this->name = 'ybc_productimagehover';
        $this->tab = 'front_office_features';
        $this->version = '1.0.1';
        $this->author = 'ETS-Soft';
        $this->need_instance = 0;
        $this->secure_key = Tools::encrypt($this->name);
        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->l('Product image rollover');
        $this->description = $this->l('Display second image when hover over product image');

        if (version_compare(_PS_VERSION_, '1.5.6.1', '>='))
            $this->ps_versions_compliancy = array('min' => '1.5.6.1', 'max' => _PS_VERSION_);
    }

    /**
     * @see Module::install()
     */
    public function install()
    {
        Configuration::updateValue('YBC_PI_TRANSITION_EFFECT', 'fade');
        Configuration::updateValue('YBC_PI_THOSE_PAGES', 'allpage');
        return parent::install()
            && $this->registerHook('productImageHover')
            && $this->registerHook('displayHeader');
    }

    /**
     * @see Module::uninstall()
     */

    public function uninstall()
    {
        Configuration::deleteByName('YBC_PI_TRANSITION_EFFECT');
        Configuration::deleteByName('YBC_PI_THOSE_PAGES');
        return parent::uninstall();
    }

    public function hookDisplayHeader()
    {
        $page_setting = explode(',', Configuration::get('YBC_PI_THOSE_PAGES'));
        if (!in_array('allpage', $page_setting) && (($page = Tools::strtolower(trim(Tools::getValue('controller')))) && $page && !in_array($page, $page_setting)))
            return;
        if (version_compare(_PS_VERSION_, '1.7.0', '>='))
            $this->context->controller->addCSS($this->_path . 'views/css/fix17.css', 'all');
        elseif (version_compare(_PS_VERSION_, '1.6.0', '>='))
            $this->context->controller->addCSS($this->_path . 'views/css/productimagehover.css', 'all');
        else
            $this->context->controller->addCSS($this->_path . 'views/css/fix15.css', 'all');

        $this->context->controller->addJS($this->_path . 'views/js/productimagehover.js');
        $this->context->smarty->assign(array(
            'baseAjax' => $this->context->link->getModuleLink('ybc_productimagehover', 'ajax'),
            'YBC_PI_TRANSITION_EFFECT' => Configuration::get('YBC_PI_TRANSITION_EFFECT'),
            '_PI_VER_17_' => version_compare(_PS_VERSION_, '1.7.0', '>=') ? 1 : 0,
            '_PI_VER_16_' => version_compare(_PS_VERSION_, '1.6.0', '>=') ? 1 : 0,
        ));
        return $this->display(__FILE__, 'renderJs.tpl');
    }

    public function getContent()
    {
        if (Tools::isSubmit('submitUpdate')) {
            Configuration::updateValue('YBC_PI_TRANSITION_EFFECT', Tools::strtolower(trim(Tools::getValue('YBC_PI_TRANSITION_EFFECT'))));
            Tools::getValue('YBC_PI_THOSE_PAGES') && is_array(Tools::getValue('YBC_PI_THOSE_PAGES')) ? Configuration::updateValue('YBC_PI_THOSE_PAGES', Tools::strtolower(trim(implode(',', Tools::getValue('YBC_PI_THOSE_PAGES'))))) : Configuration::updateValue('YBC_PI_THOSE_PAGES', '');
        }
        if (version_compare(_PS_VERSION_, '1.6.0', '>='))
            $postUrl = $this->context->link->getAdminLink('AdminModules', true) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name;
        else
            $postUrl = AdminController::$currentIndex . '&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules');

        $those_pages = array(
            array(
                'id' => 'allpage',
                'name' => $this->l('All pages')
            ),
            array(
                'id' => 'index',
                'name' => $this->l('Home page')
            ),
            array(
                'id' => 'category',
                'name' => $this->l('Category page')
            ),
            array(
                'id' => 'search',
                'name' => $this->l('Search resuilt page')
            ),
            array(
                'id' => 'pricesdrop',
                'name' => $this->l('Special products page')
            ),
            array(
                'id' => 'newproducts',
                'name' => $this->l('New products page')
            ),
            array(
                'id' => 'bestsales',
                'name' => $this->l('Best sales products page')
            ),
            array(
                'id' => 'manufacturer',
                'name' => $this->l('Manufacturer page')
            ),
            array(
                'id' => 'supplier',
                'name' => $this->l('Supplier page')
            ),
        );
        if (version_compare(_PS_VERSION_, '1.6.0', '>=')) {
            $those_pages[] = array(
                'id' => 'product',
                'name' => $this->l('Product detail page')
            );
        }
        $this->smarty->assign(
            array(
                'postUrl' => $postUrl,
                'effects' => array(
                    array(
                        'id' => 'zoom',
                        'name' => $this->l('Zoom')
                    ),
                    array(
                        'id' => 'fade',
                        'name' => $this->l('Fade')
                    ),
                    array(
                        'id' => 'vertical_scrolling_bottom_to_top',
                        'name' => $this->l('Vertical Scrolling  Bottom To Top')
                    ),
                    array(
                        'id' => 'vertical_scrolling_top_to_bottom',
                        'name' => $this->l('Vertical Scrolling Top To Bottom')
                    ),
                    array(
                        'id' => 'horizontal_scrolling_left_to_right',
                        'name' => $this->l('Horizontal Scrolling Left To Right')
                    ),
                    array(
                        'id' => 'horizontal_scrolling_right_to_left',
                        'name' => $this->l('Horizontal Scrolling Right To Left')
                    )
                ),
                'those_pages' => $those_pages,
                'YBC_PI_TRANSITION_EFFECT' => Configuration::get('YBC_PI_TRANSITION_EFFECT'),
                'YBC_PI_THOSE_PAGES' => Configuration::get('YBC_PI_THOSE_PAGES') ? explode(',', Configuration::get('YBC_PI_THOSE_PAGES')) : array(),
                'setting_updated' => Tools::isSubmit('submitUpdate') ? true : false,
            )
        );
        $template = ((version_compare(_PS_VERSION_, '1.6.0', '>=') ? 1 : 0) ? 'admin-config.tpl' : 'admin-config-v15.tpl');
        return $this->display(__FILE__, $template).$this->displayIframe();
    }
    public function displayIframe()
    {
        switch($this->context->language->iso_code) {
          case 'en':
            $url = 'https://cdn.prestahero.com/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe';
            break;
          case 'it':
            $url = 'https://cdn.prestahero.com/it/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe';
            break;
          case 'fr':
            $url = 'https://cdn.prestahero.com/fr/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe';
            break;
          case 'es':
            $url = 'https://cdn.prestahero.com/es/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe';
            break;
          default:
            $url = 'https://cdn.prestahero.com/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe';
        }
        $this->smarty->assign(
            array(
                'url_iframe' => $url
            )
        );
        return $this->display(__FILE__,'iframe.tpl');
    }
    public function hookProductImageHover($params)
    {
        $page_setting = explode(',', Configuration::get('YBC_PI_THOSE_PAGES'));
        if (!in_array('allpage', $page_setting) && (($page = Tools::strtolower(trim(Tools::getValue('controller')))) && $page && !in_array($page, $page_setting)))
            return;
        if (isset($params['id_product'])) {
            $product_id = $params['id_product'];
            $sql = "SELECT id_image 
                   FROM  `" . _DB_PREFIX_ . "image` 
                   WHERE  `id_product` =  $product_id AND (cover = 0 OR cover is null) ORDER BY  `position` ASC";
            $image = Db::getInstance()->getRow($sql);
            if (!$image) {
                $sql = "SELECT id_image 
                       FROM  `" . _DB_PREFIX_ . "image` 
                       WHERE  `id_product` =  $product_id AND cover =  1 ORDER BY  `position` ASC";
                $image = Db::getInstance()->getRow($sql);
            }
            if ($image) {
                $product = new Product($product_id, false, $this->context->language->id, $this->context->shop->id);

                $this->smarty->assign(array(
                    'product_name' => $product->name,
                    'img_url' => $this->context->link->getImageLink($product->link_rewrite, (int)$image['id_image'], ImageType::getFormattedName('home'))
                ));
            } else
                return;
        }
        $this->smarty->assign(array('YBC_PI_TRANSITION_EFFECT' => Configuration::get('YBC_PI_TRANSITION_EFFECT')));
        return $this->display(__FILE__, 'image.tpl');
    }
}