Files
2025-03-21 20:24:43 +01:00

102 lines
3.7 KiB
PHP

<?php
/**
* Page Cache Ultimate, Page Cache standard and Speed pack are powered by Jpresta (jpresta . com)
*
* @author Jpresta
* @copyright Jpresta
* @license See the license of this module in file LICENSE.txt, thank you.
*/
if (!defined('_PS_VERSION_')) {
exit;
}
class PrestaBlogBlogModuleFrontControllerOverride extends PrestaBlogBlogModuleFrontController
{
// Needed by creativeelements
private $news = array();
/**
* @return string The ObjectModel class name to be used by Page Cache Ultimate module to refresh the cache of pages generated by this controller
*/
public static function getJprestaModelObjectClassName()
{
return 'NewsClass';
}
/**
* @return int|null The ID of the current ObjectModel (if any) to be used by Page Cache Ultimate module to refresh the cache of pages generated by this controller
*/
public function getJprestaModelObjectId()
{
$id_post = (int)Tools::getValue('id');
if ($id_post && ($postObj = new NewsClass($id_post)) && Validate::isLoadedObject($postObj)) {
return $id_post;
}
return null;
}
/**
* List all URLs generated by this controller for the current shop context and the specified language.
* This is used by the Jresta-Cache-Warmer service to generate the cache of these pages.
* @param $id_lang int ID of the language
* @return string[] All URLs to warmup
*/
public static function getJprestaAllURLs($id_lang) {
$urls = [];
// Articles
$urlsInfos = NewsClass::getListe(
(int) $id_lang,
1,
0,
0,
null,
'n.`date`',
'desc',
date(
'Y-m-d H:i:s',
strtotime('-' . (int) Configuration::get('prestablog_sitemap_older') . ' months')
),
null,
null,
1,
(int) Configuration::get('prestablog_news_title_length'),
(int) Configuration::get('prestablog_news_intro_length')
);
foreach ($urlsInfos as $child) {
$urls[] = PrestaBlog::prestablogUrl(
[
'id' => (int) $child['id_prestablog_news'],
'seo' => $child['link_rewrite'],
'titre' => $child['title'],
'id_lang' => (int) $child['id_lang'],
]
);
}
// Categories
$urlsInfos = CategoriesClass::getListeNoArbo(1, (int) $id_lang);
foreach ($urlsInfos as $child) {
$urls[] = PrestaBlog::prestablogUrl([
'c' => (int)$child['id_prestablog_categorie'],
'titre' => ($child['link_rewrite'] != '' ? $child['link_rewrite'] : $child['title']),
'id_lang' => (int)$child['id_lang'],
]);
}
return $urls;
}
/**
* An estimated number of URLs that will be returned by self::getJprestaAllURLs() for the current shop context.
* Since we don't have the id_lang parameter we recommend to return the number of URLs for the language that have
* the most URLs.
* @return int The estimated number of URLs to warmup for the current shop context
*/
public static function getJprestaAllURLsCount() {
$queryCountArticle = 'SELECT count(*) FROM `'._DB_PREFIX_.'prestablog_news` WHERE actif=1 AND id_shop=' . (int) Shop::getContextShopID();
$queryCountCategories = 'SELECT count(*) FROM `'._DB_PREFIX_.'prestablog_categorie` WHERE actif=1 AND id_shop=' . (int) Shop::getContextShopID();
return (int) JPresta\SpeedPack\JprestaUtils::dbGetValue($queryCountArticle) + (int) JPresta\SpeedPack\JprestaUtils::dbGetValue($queryCountCategories);
}
}