Current File : //var/www/vinorea/modules/tvcmsblog/controllers/front/main.php |
<?php
/**
* 2007-2025 PrestaShop.
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 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/afl-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-2025 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class TvcmsBlogMainModuleFrontController extends ModuleFrontController
{
public $nbProducts;
public $page_type;
public $module_name = 'tvcmsblog';
public static $initialized = false;
public $display_column_left = true;
public $display_column_right = true;
public function __construct()
{
parent::__construct();
$this->controller_type = 'modulefront';
}
public function init()
{
$this->page_type = pSQL(Tools::getValue('page_type'));
$post_per_page = (int) Configuration::get(TvcmsBlog::$tvcmsblogshortname . 'post_per_page');
$this->n = (isset($post_per_page) && !empty($post_per_page)) ? $post_per_page : 12;
if (self::$initialized) {
return;
}
self::$initialized = true;
parent::init();
}
public function initContent()
{
parent::initContent();
// $test = new TvcmsBlogMainModuleFrontController();
// echo '<pre>'; print_r($test); die;
$tvcmsblog = new TvcmsBlog();
$tvcmsblogsettings = $tvcmsblog->getSettingsValueS();
$column_use = Configuration::get(TvcmsBlog::$tvcmsblogshortname . 'column_use');
if ($this->display_column_left && ('own_ps' == $column_use)) {
$this->context->smarty->assign([
'HOOK_LEFT_COLUMN' => Hook::exec('displaytvcmsblogleft'),
]);
}
if ($this->display_column_right && ('own_ps' == $column_use)) {
$this->context->smarty->assign([
'HOOK_RIGHT_COLUMN' => Hook::exec('displaytvcmsblogright'),
]);
}
$this->context->smarty->assign('tvcmsblogsettings', $tvcmsblogsettings);
}
public function setTemplate($template, $params = [], $locale = null)
{
if (!$path = $this->getTemplatePath($template)) {
$themename = TvcmsBlog::getThemeName();
throw new PrestaShopException('ThemeVolty' . $themename . " Theme '$template' Template not found");
}
$this->template = $path;
}
public function getTemplatePath($template)
{
$themename = TvcmsBlog::getThemeName();
if (Tools::file_exists_cache(_PS_THEME_DIR_ . 'modules/' . TvcmsBlog::$ModuleName . '/views/templates/front/'
. $themename . '/' . $template)) {
return _PS_THEME_DIR_ . 'modules/' . TvcmsBlog::$ModuleName . '/views/templates/front/' . $themename . '/' . $template;
} elseif (Tools::file_exists_cache(_PS_THEME_DIR_ . 'modules/' . TvcmsBlog::$ModuleName . '/views/templates/front/'
. $template)) {
return _PS_THEME_DIR_ . 'modules/' . TvcmsBlog::$ModuleName . '/views/templates/front/' . $template;
} elseif (Tools::file_exists_cache(_PS_MODULE_DIR_ . TvcmsBlog::$ModuleName . '/views/templates/front/' . $themename
. '/' . $template)) {
return _PS_MODULE_DIR_ . TvcmsBlog::$ModuleName . '/views/templates/front/' . $themename . '/' . $template;
} elseif (Tools::file_exists_cache(_PS_MODULE_DIR_ . TvcmsBlog::$ModuleName . '/views/templates/front/'
. $template)) {
return _PS_MODULE_DIR_ . TvcmsBlog::$ModuleName . '/views/templates/front/' . $template;
}
return false;
}
public function pagination($total_products = null)
{
if (!self::$initialized) {
$this->init();
} elseif (!$this->context) {
$this->context = Context::getContext();
}
// Retrieve the default number of products per page and the other available selections
$default_products_per_page = max(1, (int) Configuration::get(TvcmsBlog::$tvcmsblogshortname . 'post_per_page'));
$n_array = [$default_products_per_page, $default_products_per_page * 2, $default_products_per_page * 5];
if ((int) Tools::getValue('n') && (int) $total_products > 0) {
$n_array[] = $total_products;
}
// Retrieve the current number of products per page (either the default,
// the GET parameter or the one in the cookie)
$this->n = $default_products_per_page;
if (isset($this->context->cookie->nb_item_per_page)
&& in_array($this->context->cookie->nb_item_per_page, $n_array)
) {
$this->n = (int) $this->context->cookie->nb_item_per_page;
}
if ((int) Tools::getValue('n') && in_array((int) Tools::getValue('n'), $n_array)) {
$this->n = (int) Tools::getValue('n');
}
// Retrieve the page number (either the GET parameter or the first page)
$this->p = (int) Tools::getValue('p', 1);
// Remove the page parameter in order to get a clean URL for the pagination template
$current_url = preg_replace('/(?:(\?)|&)p=\d+/', '$1', Tools::htmlentitiesUTF8($_SERVER['REQUEST_URI']));
if ($this->n != $default_products_per_page || isset($this->context->cookie->nb_item_per_page)) {
$this->context->cookie->nb_item_per_page = $this->n;
}
$pages_nb = ceil($total_products / (int) $this->n);
if ($this->p > $pages_nb && 0 != $total_products) {
Tools::redirect($this->context->link->getPaginationLink(false, false, $this->n, false, $pages_nb, false));
}
$range = 2; // how many pages around page selected
$start = (int) ($this->p - $range);
if ($start < 1) {
$start = 1;
}
$stop = (int) ($this->p + $range);
if ($stop > $pages_nb) {
$stop = (int) $pages_nb;
}
$this->context->smarty->assign([
'nb_products' => $total_products,
'products_per_page' => $this->n,
'pages_nb' => $pages_nb,
'p' => $this->p,
'n' => $this->n,
'nArray' => $n_array,
'range' => $range,
'start' => $start,
'stop' => $stop,
'current_url' => $current_url,
]);
}
}