This commit is contained in:
2025-04-01 00:38:54 +02:00
parent d4d4c0c09d
commit 87da06293a
22351 changed files with 5168854 additions and 7538 deletions

View File

@@ -0,0 +1,617 @@
<?php
/**
* 2007-2015 Leotheme
*
* NOTICE OF LICENSE
*
* Content Management
*
* DISCLAIMER
*
* @author leotheme <leotheme@gmail.com>
* @copyright 2007-2015 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
include_once(_PS_MODULE_DIR_ . 'leoblog/loader.php');
use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever;
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter;
use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever;
class LeoblogblogModuleFrontController extends ModuleFrontController
{
public $php_self;
protected $template_path = '';
// public $rewrite;
public function __construct()
{
parent::__construct();
$this->context = Context::getContext();
$this->template_path = _PS_MODULE_DIR_ . 'leoblog/views/templates/front/';
// $this->rewrite = 'aaaa';
}
public function captcha()
{
include_once(_PS_MODULE_DIR_ . 'leoblog/classes/captcha.php');
$captcha = new LeoCaptcha();
$this->context->cookie->leocaptch = $captcha->getCode();
$captcha->showImage();
}
/**
* @param object &$object Object
* @param string $table Object table
* @ DONE
*/
protected function copyFromPost(&$object, $table, $post = array())
{
/* Classical fields */
foreach ($post as $key => $value)
{
if (key_exists($key, $object) && $key != 'id_' . $table)
{
/* Do not take care of password field if empty */
if ($key == 'passwd' && Tools::getValue('id_' . $table) && empty($value))
{
continue;
}
if ($key == 'passwd' && !empty($value))
{
/* Automatically encrypt password in MD5 */
$value = Tools::encrypt($value);
}
$object->{$key} = $value;
}
}
/* Multilingual fields */
$rules = call_user_func(array(get_class($object), 'getValidationRules'), get_class($object));
if (count($rules['validateLang']))
{
$languages = Language::getLanguages(false);
foreach ($languages as $language)
{
foreach (array_keys($rules['validateLang']) as $field)
{
$field_name = $field . '_' . (int)($language['id_lang']);
$value = Tools::getValue($field_name);
if (isset($value))
{
# validate module
$object->{$field}[(int)($language['id_lang'])] = $value;
}
}
}
}
}
/**
* Save user comment
*/
protected function comment()
{
$post = array();
$post['user'] = Tools::getValue('user');
$post['email'] = Tools::getValue('email');
$post['comment'] = Tools::getValue('comment');
$post['captcha'] = Tools::getValue('captcha');
$post['id_leoblog_blog'] = Tools::getValue('id_leoblog_blog');
$post['submitcomment'] = Tools::getValue('submitcomment');
if (!empty($post))
{
$comment = new LeoBlogComment();
$captcha = Tools::getValue('captcha');
$this->copyFromPost($comment, 'comment', $post);
$error = new stdClass();
$error->error = true;
if (isset($this->context->cookie->leocaptch) && $captcha && $captcha == $this->context->cookie->leocaptch)
{
if ($comment->validateFields(false) && $comment->validateFieldsLang(false))
{
$comment->save();
$error->message = $this->l('Thanks for your comment, it will be published soon!!!', 'blog');
$error->error = false;
}
else
{
# validate module
$error->message = $this->l('An error occurred while sending the comment. Please recorrect data in fields!!!', 'blog');
}
}
else
{
# validate module
$error->message = $this->l('An error with captcha code, please try to recorrect!!!', 'blog');
}
die(Tools::jsonEncode($error));
}
}
public function returnProduct($id_product)
{
$x = (array)new Product($id_product, true, $this->context->language->id);
if (is_int($x['id'])) {
$productss[$id_product] = $x;
$productss[$id_product]['id_product'] = $id_product;
}
$products = Product::getProductsProperties($this->context->language->id, $productss);
$assembler = new ProductAssembler($this->context);
$presenterFactory = new ProductPresenterFactory($this->context);
$presentationSettings = $presenterFactory->getPresentationSettings();
$presenter = new ProductListingPresenter(
new ImageRetriever(
$this->context->link
),
$this->context->link,
new PriceFormatter(),
new ProductColorsRetriever(),
$this->context->getTranslator()
);
$products_for_template = [];
foreach ($products as $rawProduct) {
$products_for_template[] = $presenter->present(
$presentationSettings,
$assembler->assembleProduct($rawProduct),
$this->context->language
);
}
$this->context->smarty->assign('products', $products_for_template);
$this->context->smarty->assign('feedtype', "cmsSingleProductFeed");
return $this->context->smarty->fetch('module:cmsproducts/products.tpl');
}
public function returnProducts($id_product)
{
$explode_products = explode(",", $id_product);
foreach ($explode_products AS $idp) {
$explode[] = $idp;
foreach ($explode as $tproduct) {
if ($tproduct != '') {
$x = (array)new Product($tproduct, true, $this->context->language->id);
if (is_int($x['id'])) {
$productss[$tproduct] = $x;
$productss[$tproduct]['id_product'] = $tproduct;
}
}
}
}
$products = Product::getProductsProperties($this->context->language->id, $productss);
$assembler = new ProductAssembler($this->context);
$presenterFactory = new ProductPresenterFactory($this->context);
$presentationSettings = $presenterFactory->getPresentationSettings();
$presenter = new ProductListingPresenter(
new ImageRetriever(
$this->context->link
),
$this->context->link,
new PriceFormatter(),
new ProductColorsRetriever(),
$this->context->getTranslator()
);
$products_for_template = [];
foreach ($products as $rawProduct) {
$products_for_template[] = $presenter->present(
$presentationSettings,
$assembler->assembleProduct($rawProduct),
$this->context->language
);
}
$this->context->smarty->assign('products', ($this->psversion() == 7 ? $products_for_template : $products));
$this->context->smarty->assign('feedtype', "cmsProductsFeed");
return $this->context->smarty->fetch('module:cmsproducts/products.tpl');
}
public static function psversion($part = 1)
{
$version = _PS_VERSION_;
$exp = explode('.', $version);
if ($part == 0) {
return $exp[0];
}
if ($part == 1) {
if ($exp[0] >= 8) {
return 7;
}
return $exp[1];
}
if ($part == 2) {
return $exp[2];
}
if ($part == 3) {
return $exp[3];
}
}
/**
* @see FrontController::initContent()
*/
public function initContent()
{
$this->php_self = 'blog';
// $this->php_self = 'module-leoblog-blog';
if (Tools::getValue('captchaimage'))
{
$this->captcha();
exit();
}
$config = LeoBlogConfig::getInstance();
/* Load Css and JS File */
LeoBlogHelper::loadMedia($this->context, $this);
parent::initContent();
if (Tools::isSubmit('submitcomment'))
{
# validate module
$this->comment();
}
$helper = LeoBlogHelper::getInstance();
if ($config->get('url_use_id', 1))
{
// URL HAVE ID
$blog = new LeoBlogBlog(Tools::getValue('id'), $this->context->language->id);
}
else
{
// REMOVE ID FROM URL
$url_rewrite = explode('/', $_SERVER['REQUEST_URI']);
$url_last_item = count($url_rewrite) - 1;
$url_rewrite = rtrim($url_rewrite[$url_last_item], 'html');
$url_rewrite = rtrim($url_rewrite, '\.'); // result : product.html -> product.
$blog = LeoBlogBlog::findByRewrite(array('link_rewrite' => $url_rewrite));
// echo '<pre>';
// print_r($url_rewrite);die();
}
if (!$blog->id_leoblog_blog)
{
$full_path = '<a href="' . $helper->getFontBlogLink() . '">' . htmlentities($config->get('blog_link_title_' . $this->context->language->id, 'Blog'), ENT_NOQUOTES, 'UTF-8') . '</a>';
$vars = array(
'error' => true,
'path' => $full_path
);
$this->context->smarty->assign($vars);
return $this->setTemplate('module:leoblog/views/templates/front/' . $config->get('template', 'default') . '/blog.tpl');
}
$category = new leoblogcat($blog->id_leoblogcat, $this->context->language->id);
$image_w = $config->get('item_img_width', 690);
$image_h = $config->get('item_img_height', 300);
$template = !empty($category->template) ? $category->template : 'default'; // have to have a value ( not empty )
$this->template_path .= $template . '/';
$module_tpl = $this->template_path;
$url = _PS_BASE_URL_;
if (Tools::usingSecureMode())
{
# validate module
$url = _PS_BASE_URL_SSL_;
}
$id_shop = $this->context->shop->id;
$blog->preview_url = '';
if ($blog->image)
{
$blog->image_url = $url . _THEME_DIR_ . 'assets/img/modules/leoblog/' . $id_shop . '/b/' . $blog->image;
if (!file_exists(_LEOBLOG_CACHE_IMG_DIR_ . 'b/' . $id_shop . '/' . $blog->id . '/lg-' . $blog->image))
{
@mkdir(_LEOBLOG_CACHE_IMG_DIR_ . 'b/' . $id_shop, 0777);
@mkdir(_LEOBLOG_CACHE_IMG_DIR_ . 'b/' . $id_shop . '/' . $blog->id, 0777);
if (ImageManager::resize(_PS_THEME_DIR_ . 'assets/img/modules/leoblog/' . $id_shop . '/b/' . $blog->image, _LEOBLOG_CACHE_IMG_DIR_ . 'b/' . $id_shop . '/' . $blog->id . '/lg-' . $blog->image, $image_w, $image_h))
{
# validate module
$blog->preview_url = $url . _LEOBLOG_CACHE_IMG_URI_ . 'b/' . $id_shop . '/' . $blog->id . '/lg-' . $blog->image;
}
}
$blog->preview_url = $url . _LEOBLOG_CACHE_IMG_URI_ . 'b/' . $id_shop . '/' . $blog->id . '/lg-' . $blog->image;
}
$captcha_image = $helper->getBlogLink(get_object_vars($blog), array('captchaimage' => 1));
$blog_link = $helper->getBlogLink(get_object_vars($blog));
// print_r($blog_link);
$params = array(
'rewrite' => $category->link_rewrite,
'id' => $category->id_leoblogcat
);
$blog->category_link = $helper->getBlogCatLink($params);
$blog->category_title = $category->title;
//DONGND:: author name
if ($blog->author_name != '')
{
$blog->author = $blog->author_name;
$blog->author_link = $helper->getBlogAuthorLink($blog->author_name);
}
else
{
$employee = new Employee($blog->id_employee);
$blog->author = $employee->firstname . ' ' . $employee->lastname;
$blog->author_link = $helper->getBlogAuthorLink($employee->id);
}
$tags = array();
if ($blog->tags && $tmp = explode(',', $blog->tags))
{
foreach ($tmp as $tag)
{
$tags[] = array(
'tag' => $tag,
'link' => $helper->getBlogTagLink($tag)
);
}
}
$blog->hits = $blog->hits + 1;
//$blog->save();
$blog->updateField($blog->id, array('hits' => $blog->hits));
/* breadscrumb */
$params = array(
'rewrite' => $category->link_rewrite,
'id' => $category->id_leoblogcat
);
$category_link = $helper->getBlogCatLink($params);
$full_path = '<a href="' . $helper->getFontBlogLink() . '">' . htmlentities($config->get('blog_link_title_' . $this->context->language->id, 'Blog'), ENT_NOQUOTES, 'UTF-8')
. '</a><span class="navigation-pipe">' . Configuration::get('PS_NAVIGATION_PIPE') . '</span>';
$full_path .= '<a href="' . Tools::safeOutput($category_link) . '">' . htmlentities($category->title, ENT_NOQUOTES, 'UTF-8') . '</a><span class="navigation-pipe">' . Configuration::get('PS_NAVIGATION_PIPE') . '</span>' . $blog->meta_title;
$limit = 5;
$samecats = LeoBlogBlog::getListBlogs($category->id_leoblogcat, $this->context->language->id, 0, $limit, 'date_add', 'DESC', array('type' => 'samecat', 'id_leoblog_blog' => $blog->id_leoblog_blog), true);
foreach ($samecats as $key => $sblog)
{
$sblog['link'] = $helper->getBlogLink($sblog);
$samecats[$key] = $sblog;
}
$tagrelated = array();
if ($blog->tags)
{
$tagrelated = LeoBlogBlog::getListBlogs($category->id_leoblogcat, $this->context->language->id, 0, $limit, 'id_leoblog_blog', 'DESC', array('type' => 'tag', 'tag' => $blog->tags), true);
foreach ($tagrelated as $key => $tblog)
{
$tblog['link'] = $helper->getBlogLink($tblog);
$tagrelated[$key] = $tblog;
}
}
/* Comments */
$evars = array();
if ($config->get('item_comment_engine', 'local') == 'local')
{
$count_comment = 0;
if ($config->get('comment_engine', 'local') == 'local')
{
# validate module
$count_comment = LeoBlogComment::countComments($blog->id_leoblog_blog, true);
}
$blog_link = $helper->getBlogLink(get_object_vars($blog));
$limit = (int)$config->get('item_limit_comments', 10);
$n = $limit;
$p = abs((int)(Tools::getValue('p', 1)));
$comment = new LeoBlogComment();
$comments = $comment->getList($blog->id_leoblog_blog, $this->context->language->id, $p, $limit);
$nb_blogs = $count_comment;
$range = 2; /* how many pages around page selected */
if ($p > (($nb_blogs / $n) + 1))
{
Tools::redirect(preg_replace('/[&?]p=\d+/', '', $_SERVER['REQUEST_URI']));
}
$pages_nb = ceil($nb_blogs / (int)($n));
$start = (int)($p - $range);
if ($start < 1)
{
$start = 1;
}
$stop = (int)($p + $range);
if ($stop > $pages_nb)
{
$stop = (int)($pages_nb);
}
$evars = array(
'pages_nb' => $pages_nb,
'nb_items' => $count_comment,
'p' => (int)$p,
'n' => (int)$n,
'requestPage' => $blog_link,
'requestNb' => $blog_link,
'start' => $start,
'comments' => $comments,
'range' => $range,
'blog_count_comment' => $count_comment,
'stop' => $stop
);
}
if ((bool)Module::isEnabled('smartshortcode'))
{
if (context::getcontext()->controller->controller_type == 'front')
{
$smartshortcode = Module::getInstanceByName('smartshortcode');
$blog->content = $smartshortcode->parse($blog->content);
}
}
$content = $blog->content;
preg_match_all('/\{product\:[(0-9\,)]+\}/i', $content, $matches);
foreach ($matches[0] as $index => $match) {
$explode = explode(":", $match);
$content = str_replace($match, $this->returnProduct(str_replace("}", "", $explode[1])), $content);
}
preg_match_all('/\{products\:[(0-9\,)]+\}/i', $content, $matches);
foreach ($matches[0] as $index => $match) {
$explode = explode(":", $match);
$content = str_replace($match, $this->returnProducts(str_replace("}", "", $explode[1])), $content);
}
$blog->content = $content;
// $page = parent::getTemplateVarPage();
// echo '<pre>';
// print_r($page);die();
//DONGND:: add meta
// $this->getTemplateVarPage($blog);
// $this->blog_obj = $blog;
// echo '<pre>';
// print_r($this->blog_obj);die();
// $page = parent::getTemplateVarPage();
// $page['meta']['title'] = Tools::ucfirst($blog->meta_title).' - '.Configuration::get('PS_SHOP_NAME');
// $page['meta']['keywords'] = $blog->meta_keywords;
// $page['meta']['description'] = $blog->meta_description;
$vars = array(
'tags' => $tags,
'meta_title' => Tools::ucfirst($blog->meta_title) . ' - ' . Configuration::get('PS_SHOP_NAME'),
'meta_keywords' => $blog->meta_keywords,
'meta_description' => $blog->meta_description,
'blog' => $blog,
'samecats' => $samecats,
'tagrelated' => $tagrelated,
'path' => $full_path,
'config' => $config,
'id_leoblog_blog' => $blog->id_leoblog_blog,
'is_active' => $blog->active,
'productrelated' => array(),
'module_tpl' => $module_tpl,
'captcha_image' => $captcha_image,
'blog_link' => $blog_link,
'id_shop' => (int)Context::getContext()->shop->id,
);
$vars = array_merge($vars, $evars);
$this->context->smarty->assign($vars);
// $this->setTemplate($template.'/blog.tpl');
$this->setTemplate('module:leoblog/views/templates/front/' . $template . '/blog.tpl');
}
// DONGND:: add meta
public function getTemplateVarPage()
{
$page = parent::getTemplateVarPage();
$config = LeoBlogConfig::getInstance();
if ($config->get('url_use_id', 1))
{
$blog = new LeoBlogBlog(Tools::getValue('id'), $this->context->language->id);
}
else
{
$url_rewrite = explode('/', $_SERVER['REQUEST_URI']);
$url_last_item = count($url_rewrite) - 1;
$url_rewrite = rtrim($url_rewrite[$url_last_item], '.html');
$blog = LeoBlogBlog::findByRewrite(array('link_rewrite' => $url_rewrite));
}
$page['meta']['title'] = Tools::ucfirst($blog->meta_title) . ' - ' . Configuration::get('PS_SHOP_NAME');
$page['meta']['keywords'] = $blog->meta_keywords;
$page['meta']['description'] = $blog->meta_description;
// echo '<pre>';
// print_r($page);die();
return $page;
}
//DONGND:: add breadcrumb
public function getBreadcrumbLinks()
{
$breadcrumb = parent::getBreadcrumbLinks();
$helper = LeoBlogHelper::getInstance();
$link = $helper->getFontBlogLink();
$config = LeoBlogConfig::getInstance();
$breadcrumb['links'][] = array(
'title' => $config->get('blog_link_title_' . $this->context->language->id, $this->l('Blog', 'blog')),
'url' => $link,
);
if ($config->get('url_use_id', 1))
{
$blog = new LeoBlogBlog(Tools::getValue('id'), $this->context->language->id);
}
else
{
$url_rewrite = explode('/', $_SERVER['REQUEST_URI']);
$url_last_item = count($url_rewrite) - 1;
$url_rewrite = rtrim($url_rewrite[$url_last_item], '.html');
$blog = LeoBlogBlog::findByRewrite(array('link_rewrite' => $url_rewrite));
}
$category = new leoblogcat($blog->id_leoblogcat, $this->context->language->id);
$params = array(
'rewrite' => $category->link_rewrite,
'id' => $category->id_leoblogcat
);
$category_link = $helper->getBlogCatLink($params);
$breadcrumb['links'][] = array(
'title' => $category->title,
'url' => $category_link,
);
$breadcrumb['links'][] = array(
'title' => Tools::ucfirst($blog->meta_title),
'url' => $helper->getBlogLink(get_object_vars($blog)),
);
return $breadcrumb;
}
//DONGND:: get layout
public function getLayout()
{
$entity = 'module-leoblog-' . $this->php_self;
$layout = $this->context->shop->theme->getLayoutRelativePathForPage($entity);
if ($overridden_layout = Hook::exec(
'overrideLayoutTemplate',
array(
'default_layout' => $layout,
'entity' => $entity,
'locale' => $this->context->language->locale,
'controller' => $this,
)
))
{
return $overridden_layout;
}
if ((int) Tools::getValue('content_only'))
{
$layout = 'layouts/layout-content-only.tpl';
}
return $layout;
}
}

View File

@@ -0,0 +1,343 @@
<?php
/**
* 2007-2015 Leotheme
*
* NOTICE OF LICENSE
*
* Content Management
*
* DISCLAIMER
*
* @author leotheme <leotheme@gmail.com>
* @copyright 2007-2015 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
include_once(_PS_MODULE_DIR_.'leoblog/loader.php');
class LeoblogcategoryModuleFrontController extends ModuleFrontController
{
public $php_self;
protected $template_path = '';
public function __construct()
{
parent::__construct();
$this->context = Context::getContext();
$this->template_path = _PS_MODULE_DIR_.'leoblog/views/templates/front/';
}
/**
* @see FrontController::initContent()
*/
public function initContent()
{
$config = LeoBlogConfig::getInstance();
/* Load Css and JS File */
LeoBlogHelper::loadMedia($this->context, $this);
$this->php_self = 'category';
// $this->php_self = 'module-leoblog-category';
parent::initContent();
$id_category = (int)Tools::getValue('id');
$helper = LeoBlogHelper::getInstance();
$limit_leading_blogs = (int)$config->get('listing_leading_limit_items', 1);
$limit_secondary_blogs = (int)$config->get('listing_secondary_limit_items', 6);
$limit = (int)$limit_leading_blogs + (int)$limit_secondary_blogs;
$n = $limit;
$p = abs((int)(Tools::getValue('p', 1)));
if ($config->get('url_use_id', 1)) {
// URL HAVE ID
$category = new Leoblogcat($id_category, $this->context->language->id);
} else {
// REMOVE ID FROM URL
$url_rewrite = explode('/', $_SERVER['REQUEST_URI']) ;
$url_last_item = count($url_rewrite) - 1;
$url_rewrite = rtrim($url_rewrite[$url_last_item], 'html');
$url_rewrite = rtrim($url_rewrite, '\.'); // result : product.html -> product.
$category = Leoblogcat::findByRewrite(array('link_rewrite'=>$url_rewrite));
}
$template = isset($category->template) && $category->template ? $category->template : $config->get('template', 'default');
if ($category->id_leoblogcat && $category->active) {
// $_GET['rewrite'] = $category->link_rewrite;
$this->template_path .= $template.'/';
$id_shop = $this->context->shop->id;
$url = _PS_BASE_URL_;
if (Tools::usingSecureMode()) {
# validate module
$url = _PS_BASE_URL_SSL_;
}
if ($category->image) {
# validate module
$category->image = $url._THEME_DIR_.'assets/img/modules/leoblog/'.$id_shop.'/c/'.$category->image;
}
$blogs = LeoBlogBlog::getListBlogs($category->id_leoblogcat, $this->context->language->id, $p, $limit, 'id_leoblog_blog', 'DESC', array(), true);
$count = LeoBlogBlog::countBlogs($category->id_leoblogcat, $this->context->language->id, true);
$authors = array();
$leading_blogs = array();
$secondary_blogs = array();
// $links = array();
if (count($blogs)) {
$leading_blogs = array_slice($blogs, 0, $limit_leading_blogs);
$secondary_blogs = array_splice($blogs, $limit_leading_blogs, count($blogs));
}
$image_w = (int)$config->get('listing_leading_img_width', 690);
$image_h = (int)$config->get('listing_leading_img_height', 300);
foreach ($leading_blogs as $key => $blog) {
$blog = LeoBlogHelper::buildBlog($helper, $blog, $image_w, $image_h, $config);
if ($blog['id_employee']) {
if (!isset($authors[$blog['id_employee']])) {
# validate module
$authors[$blog['id_employee']] = new Employee($blog['id_employee']);
}
if ($blog['author_name'] != '') {
$blog['author'] = $blog['author_name'];
$blog['author_link'] = $helper->getBlogAuthorLink($blog['author_name']);
} else {
$blog['author'] = $authors[$blog['id_employee']]->firstname.' '.$authors[$blog['id_employee']]->lastname;
$blog['author_link'] = $helper->getBlogAuthorLink($authors[$blog['id_employee']]->id);
}
} else {
$blog['author'] = '';
$blog['author_link'] = '';
}
$leading_blogs[$key] = $blog;
}
$image_w = (int)$config->get('listing_secondary_img_width', 390);
$image_h = (int)$config->get('listing_secondary_img_height', 200);
foreach ($secondary_blogs as $key => $blog) {
$blog = LeoBlogHelper::buildBlog($helper, $blog, $image_w, $image_h, $config);
if ($blog['id_employee']) {
if (!isset($authors[$blog['id_employee']])) {
# validate module
$authors[$blog['id_employee']] = new Employee($blog['id_employee']);
}
if ($blog['author_name'] != '') {
$blog['author'] = $blog['author_name'];
$blog['author_link'] = $helper->getBlogAuthorLink($blog['author_name']);
} else {
$blog['author'] = $authors[$blog['id_employee']]->firstname.' '.$authors[$blog['id_employee']]->lastname;
$blog['author_link'] = $helper->getBlogAuthorLink($authors[$blog['id_employee']]->id);
}
} else {
$blog['author'] = '';
$blog['author_link'] = '';
}
$secondary_blogs[$key] = $blog;
}
$nb_blogs = $count;
$range = 2; /* how many pages around page selected */
if ($p > (($nb_blogs / $n) + 1)) {
Tools::redirect(preg_replace('/[&?]p=\d+/', '', $_SERVER['REQUEST_URI']));
}
$pages_nb = ceil($nb_blogs / (int)($n));
$start = (int)($p - $range);
if ($start < 1) {
$start = 1;
}
$stop = (int)($p + $range);
if ($stop > $pages_nb) {
$stop = (int)($pages_nb);
}
$params = array(
'rewrite' => $category->link_rewrite,
'id' => $category->id_leoblogcat
);
/* breadcrumb */
$r = $helper->getPaginationLink('module-leoblog-category', 'category', $params, false, true);
$path = '';
$all_cats = array();
self::parentCategories($category, $all_cats);
foreach ($all_cats as $key => $cat) {
if ($cat->id == 1) {
# validate module
$path .= '<a href="'.$helper->getFontBlogLink().'">'.htmlentities($config->get('blog_link_title_'.$this->context->language->id, 'Blog'), ENT_NOQUOTES, 'UTF-8').'</a><span class="navigation-pipe">'.Configuration::get('PS_NAVIGATION_PIPE').'</span>';
} elseif ((count($all_cats) - 1) == $key) {
# validate module
$path .= $cat->title;
} else {
$params = array(
'rewrite' => $cat->link_rewrite,
'id' => $cat->id
);
$path .= '<a href="'.$helper->getBlogCatLink($params).'">'.htmlentities($cat->title, ENT_NOQUOTES, 'UTF-8').'</a><span class="navigation-pipe">'.Configuration::get('PS_NAVIGATION_PIPE').'</span>';
}
}
/* sub categories */
$categories = $category->getChild($category->id_leoblogcat, $this->context->language->id);
$childrens = array();
if ($categories) {
foreach ($categories as $child) {
$params = array(
'rewrite' => $child['link_rewrite'],
'id' => $child['id_leoblogcat']
);
$child['thumb'] = $url._THEME_DIR_.'assets/img/modules/leoblog/'.$id_shop.'/c/'.$child['image'];
$child['category_link'] = $helper->getBlogCatLink($params);
$childrens[] = $child;
}
}
$this->context->smarty->assign(array(
'leading_blogs' => $leading_blogs,
'secondary_blogs' => $secondary_blogs,
'listing_leading_column' => $config->get('listing_leading_column', 1),
'listing_secondary_column' => $config->get('listing_secondary_column', 3),
'module_tpl' => $this->template_path,
'config' => $config,
'range' => $range,
'category' => $category,
'start' => $start,
'childrens' => $childrens,
'stop' => $stop,
'path' => $path,
'pages_nb' => $pages_nb,
'nb_items' => $count,
'p' => (int)$p,
'n' => (int)$n,
'meta_title' => Tools::ucfirst($category->title).' - '.Configuration::get('PS_SHOP_NAME'),
'meta_keywords' => $category->meta_keywords,
'meta_description' => $category->meta_description,
'requestPage' => $r['requestUrl'],
'requestNb' => $r,
'category' => $category
));
} else {
$path = '<a href="'.$helper->getFontBlogLink().'">'.htmlentities($config->get('blog_link_title_'.$this->context->language->id, 'Blog'), ENT_NOQUOTES, 'UTF-8').'</a><span class="navigation-pipe">'.Configuration::get('PS_NAVIGATION_PIPE').'</span>';
$this->context->smarty->assign(array(
'active' => '0',
'path' => $path,
'leading_blogs' => array(),
'secondary_blogs' => array(),
'controller' => 'category',
'category' => $category
));
}
// $this->setTemplate($template.'/category.tpl');
$this->setTemplate('module:leoblog/views/templates/front/'.$template.'/category.tpl');
}
public static function parentCategories($current, &$return)
{
if ($current->id_parent) {
$obj = new Leoblogcat($current->id_parent, Context::getContext()->language->id);
self::parentCategories($obj, $return);
}
$return[] = $current;
}
//DONGND:: add meta
public function getTemplateVarPage()
{
$page = parent::getTemplateVarPage();
$config = LeoBlogConfig::getInstance();
if ($config->get('url_use_id', 1)) {
// URL HAVE ID
$category = new Leoblogcat((int)Tools::getValue('id'), $this->context->language->id);
} else {
// REMOVE ID FROM URL
$url_rewrite = explode('/', $_SERVER['REQUEST_URI']) ;
$url_last_item = count($url_rewrite) - 1;
$url_rewrite = rtrim($url_rewrite[$url_last_item], '.html');
$category = Leoblogcat::findByRewrite(array('link_rewrite' => $url_rewrite));
}
$page['meta']['title'] = Tools::ucfirst($category->title).' - '.Configuration::get('PS_SHOP_NAME');
$page['meta']['keywords'] = $category->meta_keywords;
$page['meta']['description'] = $category->meta_description;
return $page;
}
//DONGND:: add breadcrumb
public function getBreadcrumbLinks()
{
$breadcrumb = parent::getBreadcrumbLinks();
$helper = LeoBlogHelper::getInstance();
$link = $helper->getFontBlogLink();
$config = LeoBlogConfig::getInstance();
$breadcrumb['links'][] = array(
'title' => $config->get('blog_link_title_'.$this->context->language->id, $this->l('Blog', 'category')),
'url' => $link,
);
if ($config->get('url_use_id', 1)) {
// URL HAVE ID
$category = new Leoblogcat((int)Tools::getValue('id'), $this->context->language->id);
} else {
// REMOVE ID FROM URL
$url_rewrite = explode('/', $_SERVER['REQUEST_URI']) ;
$url_last_item = count($url_rewrite) - 1;
$url_rewrite = rtrim($url_rewrite[$url_last_item], '.html');
$category = Leoblogcat::findByRewrite(array('link_rewrite'=>$url_rewrite));
}
$params = array(
'rewrite' => $category->link_rewrite,
'id' => $category->id_leoblogcat
);
$category_link = $helper->getBlogCatLink($params);
$breadcrumb['links'][] = array(
'title' => $category->title,
'url' => $category_link,
);
return $breadcrumb;
}
//DONGND:: get layout
public function getLayout()
{
$entity = 'module-leoblog-'.$this->php_self;
$layout = $this->context->shop->theme->getLayoutRelativePathForPage($entity);
if ($overridden_layout = Hook::exec(
'overrideLayoutTemplate',
array(
'default_layout' => $layout,
'entity' => $entity,
'locale' => $this->context->language->locale,
'controller' => $this,
)
)) {
return $overridden_layout;
}
if ((int) Tools::getValue('content_only')) {
$layout = 'layouts/layout-content-only.tpl';
}
return $layout;
}
}

View File

@@ -0,0 +1,36 @@
<?php
/*
* 2007-2012 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-2012 PrestaShop SA
* @version Release: $Revision: 13573 $
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Location: ../");
exit;

View File

@@ -0,0 +1,268 @@
<?php
/**
* 2007-2015 Leotheme
*
* NOTICE OF LICENSE
*
* Content Management
*
* DISCLAIMER
*
* @author leotheme <leotheme@gmail.com>
* @copyright 2007-2015 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
include_once(_PS_MODULE_DIR_.'leoblog/loader.php');
class LeobloglistModuleFrontController extends ModuleFrontController
{
public $php_self;
protected $template_path = '';
public function __construct()
{
parent::__construct();
$this->context = Context::getContext();
$this->template_path = _PS_MODULE_DIR_.'leoblog/views/templates/front/';
}
/**
* @see FrontController::initContent()
*/
public function initContent()
{
// $this->php_self = 'module-leoblog-list';
$this->php_self = 'list';
$config = LeoBlogConfig::getInstance();
$authors = array();
/* Load Css and JS File */
LeoBlogHelper::loadMedia($this->context, $this);
parent::initContent();
$helper = LeoBlogHelper::getInstance();
$limit_leading_blogs = (int)$config->get('listing_leading_limit_items', 1);
$limit_secondary_blogs = (int)$config->get('listing_secondary_limit_items', 6);
//$latest_limit_items = (int)$config->get( 'latest_limit_items', 20 );
$author = Tools::getValue('author');
// echo '<pre>';
// print_r(new Employee($author));die();
$tag = trim(Tools::getValue('tag'));
$n = (int)$limit_leading_blogs + (int)$limit_secondary_blogs;
$p = abs((int)(Tools::getValue('p', 1)));
$template = $config->get('template', 'default');
$this->template_path .= $template.'/';
$condition = array();
if ($author) {
$employee_obj = new Employee($author);
if (isset($employee_obj) && $employee_obj->id != '') {
$condition = array(
'type' => 'author',
'id_employee' => $author,
'employee' => new Employee($author)
);
} else {
$condition = array(
'type' => 'author',
'author_name' => $author,
);
}
$r = $helper->getPaginationLink('module-leoblog-list', 'list', array('author' => $author));
}
if ($tag) {
$condition = array(
'type' => 'tag',
'tag' => urldecode($tag)
);
$r = $helper->getPaginationLink('module-leoblog-list', 'list', array('tag' => $tag));
}
$blogs = LeoBlogBlog::getListBlogs(null, $this->context->language->id, $p, $n, 'id_leoblog_blog', 'DESC', $condition, true);
$count = LeoBlogBlog::countBlogs(null, $this->context->language->id, $condition, true);
$leading_blogs = array();
$secondary_blogs = array();
// $links = array();
if (count($blogs)) {
$leading_blogs = array_slice($blogs, 0, $limit_leading_blogs);
$secondary_blogs = array_splice($blogs, $limit_leading_blogs, count($blogs));
}
$image_w = (int)$config->get('listing_leading_img_width', 690);
$image_h = (int)$config->get('listing_leading_img_height', 300);
// print_r('aaa');die();
foreach ($leading_blogs as $key => $blog) {
$blog = LeoBlogHelper::buildBlog($helper, $blog, $image_w, $image_h, $config);
if ($blog['id_employee']) {
if (!isset($authors[$blog['id_employee']])) {
# validate module
$authors[$blog['id_employee']] = new Employee($blog['id_employee']);
}
if ($blog['author_name'] != '') {
$blog['author'] = $blog['author_name'];
$blog['author_link'] = $helper->getBlogAuthorLink($blog['author_name']);
} else {
$blog['author'] = $authors[$blog['id_employee']]->firstname.' '.$authors[$blog['id_employee']]->lastname;
$blog['author_link'] = $helper->getBlogAuthorLink($authors[$blog['id_employee']]->id);
}
} else {
$blog['author'] = '';
$blog['author_link'] = '';
}
$leading_blogs[$key] = $blog;
}
$image_w = (int)$config->get('listing_secondary_img_width', 390);
$image_h = (int)$config->get('listing_secondary_img_height', 200);
foreach ($secondary_blogs as $key => $blog) {
$blog = LeoBlogHelper::buildBlog($helper, $blog, $image_w, $image_h, $config);
if ($blog['id_employee']) {
if (!isset($authors[$blog['id_employee']])) {
# validate module
$authors[$blog['id_employee']] = new Employee($blog['id_employee']);
}
if ($blog['author_name'] != '') {
$blog['author'] = $blog['author_name'];
$blog['author_link'] = $helper->getBlogAuthorLink($blog['author_name']);
} else {
$blog['author'] = $authors[$blog['id_employee']]->firstname.' '.$authors[$blog['id_employee']]->lastname;
$blog['author_link'] = $helper->getBlogAuthorLink($authors[$blog['id_employee']]->id);
}
} else {
$blog['author'] = '';
$blog['author_link'] = '';
}
$secondary_blogs[$key] = $blog;
}
$module_tpl = $this->template_path;
//$nbBlogs = $count > $latest_limit_items?$latest_limit_items:$count;
$nb_blogs = $count;
$range = 2; /* how many pages around page selected */
if ($p > (($nb_blogs / $n) + 1)) {
Tools::redirect(preg_replace('/[&?]p=\d+/', '', $_SERVER['REQUEST_URI']));
}
$pages_nb = ceil($nb_blogs / (int)($n));
$start = (int)($p - $range);
if ($start < 1) {
$start = 1;
}
$stop = (int)($p + $range);
if ($stop > $pages_nb) {
$stop = (int)($pages_nb);
}
if (!isset($r)) {
$r = $helper->getPaginationLink('module-leoblog-list', 'list', array(), false, true);
}
//$module_tpl = $this->template_path;
$module_tpl = 'module:leoblog/views/templates/front/'.$template;
//$module_tpl_listing = 'module:leoblog/views/templates/front/'.$template.'/_listing_blog.tpl';
/* breadcrumb */
// echo '<pre>';
// print_r($config);die();
$path = '<a href="'.$helper->getFontBlogLink().'">'.htmlentities($config->get('blog_link_title_'.$this->context->language->id, 'Blog'), ENT_NOQUOTES, 'UTF-8').'</a>';
$url_rss = '';
$enbrss = (int)$config->get('indexation', 0);
if ($enbrss == 1) {
$url_rss = Tools::htmlentitiesutf8('http://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__).'modules/leoblog/rss.php';
}
// echo '<pre>';
// print_r($leading_blogs);die();
$this->context->smarty->assign(array(
'leading_blogs' => $leading_blogs,
'secondary_blogs' => $secondary_blogs,
'listing_leading_column' => $config->get('listing_leading_column', 1),
'listing_secondary_column' => $config->get('listing_secondary_column', 3),
'filter' => $condition,
'module_tpl' => $module_tpl,
//'module_tpl_listing' => $module_tpl_listing,
'nb_items' => $count,
'range' => $range,
'path' => $path,
'start' => $start,
'stop' => $stop,
'pages_nb' => $pages_nb,
'config' => $config,
'p' => (int)$p,
'n' => (int)$n,
'meta_title' => $config->get('meta_title_'.Context::getContext()->language->id).' - '.Configuration::get('PS_SHOP_NAME'),
'meta_keywords' => $config->get('meta_keywords_'.Context::getContext()->language->id),
'meta_description' => $config->get('meta_description_'.Context::getContext()->language->id),
'requestPage' => $r['requestUrl'],
'requestNb' => $r,
'controller' => 'latest',
'url_rss' => $url_rss,
));
$this->setTemplate('module:leoblog/views/templates/front/'.$template.'/listing.tpl');
// $this->setTemplate($template.'/listing.tpl');
}
//DONGND:: add meta title, meta description, meta keywords
public function getTemplateVarPage()
{
$page = parent::getTemplateVarPage();
$config = LeoBlogConfig::getInstance();
// echo '<pre>';
// print_r($config);die();
$page['meta']['title'] = $config->get('meta_title_'.Context::getContext()->language->id).' - '.Configuration::get('PS_SHOP_NAME');
$page['meta']['keywords'] = $config->get('meta_keywords_'.Context::getContext()->language->id);
$page['meta']['description'] = $config->get('meta_description_'.Context::getContext()->language->id);
// echo '<pre>';
// print_r($page);die();
return $page;
}
//DONGND:: add breadcrumb
public function getBreadcrumbLinks()
{
$breadcrumb = parent::getBreadcrumbLinks();
$link = LeoBlogHelper::getInstance()->getFontBlogLink();
$config = LeoBlogConfig::getInstance();
$breadcrumb['links'][] = array(
'title' => $config->get('blog_link_title_'.$this->context->language->id, $this->l('Blog', 'list')),
'url' => $link,
);
return $breadcrumb;
}
//DONGND:: get layout
public function getLayout()
{
$entity = 'module-leoblog-'.$this->php_self;
$layout = $this->context->shop->theme->getLayoutRelativePathForPage($entity);
if ($overridden_layout = Hook::exec(
'overrideLayoutTemplate',
array(
'default_layout' => $layout,
'entity' => $entity,
'locale' => $this->context->language->locale,
'controller' => $this,
)
)) {
return $overridden_layout;
}
if ((int) Tools::getValue('content_only')) {
$layout = 'layouts/layout-content-only.tpl';
}
return $layout;
}
}