Current File : /var/www/vinorea/modules/tvcmsblogdisplayposts/tvcmsblogdisplayposts.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
*/
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmspostsclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmscategoryclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/tvcmsblog.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblogdisplayposts/classes/tvcmsblogdisplayposts_image_upload.class.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblogdisplayposts/classes/tvcmsblogdisplayposts_status.class.php';
class TvcmsBlogDisplayPosts extends Module
{
public $js_files = [
[
'key' => 'tvcmsblogdisplayposts',
'src' => 'tvcmsblogdisplayposts.js',
'priority' => 50,
'position' => 'bottom', // bottom or head
'load_theme' => false,
],
];
public function __construct()
{
$this->name = 'tvcmsblogdisplayposts';
$this->tab = 'front_office_features';
$this->version = '4.0.0';
$this->author = 'ThemeVolty';
$this->bootstrap = true;
$this->dependencies = ['tvcmsblog'];
parent::__construct();
$this->displayName = $this->l('ThemeVolty - Blog Post Display');
$this->description = $this->l('This is child module only display some of posts on your home page.');
$this->ps_versions_compliancy = ['min' => '1.7', 'max' => _PS_VERSION_];
$this->module_key = '';
$this->confirmUninstall = $this->l('Warning: all the data saved in your database will be deleted.' .
' Are you sure you want uninstall this module?');
}
// For installation service
public function install()
{
parent::install();
$this->installTab();
if (!$this->registerHook('displayHeader')
|| !$this->registerHook('displayLeftColumn')
|| !$this->registerHook('displayHome')) {
return false;
}
$this->createVariable();
return true;
}
public function createVariable()
{
$languages = Language::getLanguages(false);
foreach ($languages as $lang) {
Configuration::updateValue('tvcmsbdp_title_' . $lang['id_lang'], 'LATEST BLOG POST');
Configuration::updateValue('tvcmsbdp_subtext_' . $lang['id_lang'], 'Mirum est notare quam littera gothica,'
. ' quam nunc putamus parum claram anteposuerit litterarum formas.');
Configuration::updateValue('tvcmsbdp_description_' . $lang['id_lang'], 'Our News & Article');
Configuration::updateValue('tvcmsbdp_image_' . $lang['id_lang'], 'demo_main_img.jpg');
}
Configuration::updateValue('tvcmsbdp_postcount', 6);
}
public function installTab()
{
$response = true;
// First check for parent tab
$parentTabID = Tab::getIdFromClassName('AdminThemeVolty');
if ($parentTabID) {
$parentTab = new Tab($parentTabID);
} else {
$parentTab = new Tab();
$parentTab->active = 1;
$parentTab->name = [];
$parentTab->class_name = 'AdminThemeVolty';
foreach (Language::getLanguages() as $lang) {
$parentTab->name[$lang['id_lang']] = 'ThemeVolty Extension';
}
$parentTab->id_parent = 0;
$parentTab->module = $this->name;
$response &= $parentTab->add();
}
// Check for parent tab2
$parentTab_2ID = Tab::getIdFromClassName('AdminThemeVoltyModules');
if ($parentTab_2ID) {
$parentTab_2 = new Tab($parentTab_2ID);
} else {
$parentTab_2 = new Tab();
$parentTab_2->active = 1;
$parentTab_2->name = [];
$parentTab_2->class_name = 'AdminThemeVoltyModules';
foreach (Language::getLanguages() as $lang) {
$parentTab_2->name[$lang['id_lang']] = 'ThemeVolty Configure';
}
$parentTab_2->id_parent = $parentTab->id;
$parentTab_2->module = $this->name;
$response &= $parentTab_2->add();
}
// Created tab
$tab = new Tab();
$tab->active = 1;
$tab->class_name = 'Admin' . $this->name;
$tab->name = [];
foreach (Language::getLanguages() as $lang) {
$tab->name[$lang['id_lang']] = 'Blog on Home Page';
}
$tab->id_parent = $parentTab_2->id;
$tab->module = $this->name;
$response &= $tab->add();
return $response;
}
public function uninstall()
{
parent::uninstall();
$this->uninstallTab();
return true;
}
public function uninstallTab()
{
$id_tab = Tab::getIdFromClassName('Admin' . $this->name);
$tab = new Tab($id_tab);
$tab->delete();
return true;
}
public function settingForm()
{
$tvcms_obj = new TvcmsBlogDisplayPostsStatus();
$show_fields = $tvcms_obj->fieldStatusInformation();
$default_lang = (int) Configuration::get('PS_LANG_DEFAULT');
$this->fields_form[0]['form'] = [
'legend' => [
'title' => $this->l('Setting'),
],
'submit' => [
'title' => $this->l('Save'),
'class' => 'button',
],
];
if ($show_fields['main_title']) {
$this->fields_form[0]['form']['input'][] = [
'type' => 'text',
'label' => $this->l('Title'),
'name' => 'tvcmsbdp_title',
'lang' => true,
];
}
if ($show_fields['main_sub_title']) {
$this->fields_form[0]['form']['input'][] = [
'type' => 'text',
'label' => $this->l('Sub Title'),
'name' => 'tvcmsbdp_subtext',
'lang' => true,
];
}
if ($show_fields['main_description']) {
$this->fields_form[0]['form']['input'][] = [
'type' => 'text',
'label' => $this->l('Description'),
'name' => 'tvcmsbdp_description',
'lang' => true,
];
}
if ($show_fields['main_image']) {
$this->fields_form[0]['form']['input'][] = [
'type' => 'image_file',
'label' => $this->l('Image'),
'name' => 'tvcmsbdp_image',
'lang' => true,
];
}
// $this->fields_form[0]['form']['input'][] = array(
// 'type' => 'text',
// 'label' => $this->l('How Many Post You Want To Display'),
// 'name' => 'tvcmsbdp_postcount',
// );
$helper = new HelperForm();
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
foreach (Language::getLanguages(false) as $lang) {
$helper->languages[] = [
'id_lang' => $lang['id_lang'],
'iso_code' => $lang['iso_code'],
'name' => $lang['name'],
'is_default' => ($default_lang == $lang['id_lang'] ? 1 : 0),
];
}
$helper->toolbar_btn = [
'save' => [
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex . '&configure=' . $this->name . '&save'
. $this->name . 'token=' . Tools::getAdminTokenLite('AdminModules'),
],
];
$helper->default_form_language = $default_lang;
$helper->allow_employee_form_lang = $default_lang;
$helper->title = $this->displayName;
$helper->show_toolbar = true;
$helper->toolbar_scroll = true;
$helper->submit_action = 'save' . $this->name;
$languages = Language::getLanguages(false);
foreach ($languages as $lang) {
$tmp = Configuration::get('tvcmsbdp_title_' . $lang['id_lang']);
$helper->fields_value['tvcmsbdp_title'][$lang['id_lang']] = $tmp;
$tmp = Configuration::get('tvcmsbdp_subtext_' . $lang['id_lang']);
$helper->fields_value['tvcmsbdp_subtext'][$lang['id_lang']] = $tmp;
$tmp = Configuration::get('tvcmsbdp_description_' . $lang['id_lang']);
$helper->fields_value['tvcmsbdp_description'][$lang['id_lang']] = $tmp;
$tmp = Configuration::get('tvcmsbdp_image_' . $lang['id_lang']);
$helper->fields_value['tvcmsbdp_image'][$lang['id_lang']] = $tmp;
}
$helper->fields_value['tvcmsbdp_postcount'] = Configuration::get('tvcmsbdp_postcount');
$path = _MODULE_DIR_ . $this->name . '/views/img/';
$this->context->smarty->assign('path', $path);
return $helper;
}
// All Functional Logic here.
public function getContent()
{
$html = '';
$result = [];
if (Tools::isSubmit('save' . $this->name)) {
$languages = Language::getLanguages(false);
$tvcms_obj = new TvcmsBlogDisplayPostsStatus();
$show_fields = $tvcms_obj->fieldStatusInformation();
foreach ($languages as $lang) {
$obj_image = new TvcmsBlogDisplayPostsImageUpload();
if ($show_fields['main_image']) {
$old_file = Configuration::get('tvcmsbdp_image_' . $lang['id_lang']);
if (!empty($_FILES['tvcmsbdp_image_' . $lang['id_lang']]['name'])) {
$new_file = $_FILES['tvcmsbdp_image_' . $lang['id_lang']];
$ans = $obj_image->imageUploading($new_file, $old_file);
// print_r($ans);
// exit;
if ($ans['success']) {
$result['tvcmsbdp_image'][$lang['id_lang']] = $ans['name'];
Configuration::updateValue(
'tvcmsbdp_image_' . $lang['id_lang'],
$ans['name']
);
} else {
$html .= $ans['error'];
Configuration::updateValue(
'tvcmsbdp_image_' . $lang['id_lang'],
$old_file
);
}
} else {
Configuration::updateValue(
'tvcmsbdp_image_' . $lang['id_lang'],
$old_file
);
}
}
Configuration::updateValue(
'tvcmsbdp_title_' . $lang['id_lang'],
Tools::getvalue('tvcmsbdp_title_' . $lang['id_lang'])
);
Configuration::updateValue(
'tvcmsbdp_subtext_' . $lang['id_lang'],
Tools::getvalue('tvcmsbdp_subtext_' . $lang['id_lang'])
);
Configuration::updateValue(
'tvcmsbdp_description_' . $lang['id_lang'],
Tools::getvalue('tvcmsbdp_description_' . $lang['id_lang'])
);
}
Configuration::updateValue('tvcmsbdp_postcount', Tools::getvalue('tvcmsbdp_postcount'));
$html .= $this->displayConfirmation($this->l('Record is Successfully Updated.'));
}
$helper = $this->settingForm();
$html .= $helper->generateForm($this->fields_form);
return $html;
}
public function registerCss()
{
if (isset($this->css_files) && !empty($this->css_files)) {
$theme_name = $this->context->shop->theme_name;
foreach ($this->css_files as $css_file) {
if (isset($css_file['key'])
&& !empty($css_file['key'])
&& isset($css_file['src'])
&& !empty($css_file['src'])) {
$media = (isset($css_file['media']) && !empty($css_file['media'])) ? $css_file['media'] : 'all';
$tmp = $css_file['priority'];
$priority = (isset($tmp) && !empty($tmp)) ? $tmp : 50;
if (isset($css_file['load_theme']) && (true == $css_file['load_theme'])) {
$this->context->controller->registerStylesheet($css_file['key'], 'themes/' . $theme_name
. '/assets/css/' . $css_file['src'], ['media' => $media, 'priority' => $priority]);
} else {
$this->context->controller->registerStylesheet($css_file['key'], 'modules/' . $this->name
. '/css/' . $css_file['src'], ['media' => $media, 'priority' => $priority]);
}
}
}
}
return true;
}
public function registerJs()
{
if (isset($this->js_files) && !empty($this->js_files)) {
foreach ($this->js_files as $js_file) {
if (isset($js_file['key'])
&& !empty($js_file['key'])
&& isset($js_file['src'])
&& !empty($js_file['src'])) {
$tmp = $js_file['position'];
$position = (isset($tmp) && !empty($tmp)) ? $tmp : 'bottom';
$tmp = $js_file['priority'];
$priority = (isset($tmp) && !empty($tmp)) ? $tmp : 50;
if (isset($js_file['load_theme']) && (true == $js_file['load_theme'])) {
$this->context->controller->registerJavascript($js_file['key'], _THEME_DIR_ . 'assets/js/'
. $js_file['src'], ['position' => $position, 'priority' => $priority]);
} else {
$this->context->controller->registerJavascript($js_file['key'], 'modules/' . $this->name
. '/js/' . $js_file['src'], ['position' => $position, 'priority' => $priority]);
}
}
}
}
return true;
}
// Display Header Hook Execute Functions
public function hookdisplayHeader($params)
{
$this->registerCss();
$this->registerJs();
$this->context->controller->addCSS($this->_path . 'views/css/front.css');
$this->context->controller->addJS($this->_path . 'views/js/front.js');
}
// Display Header Hook Execute Functions
public function getArrMainTitle($main_heading, $main_heading_data)
{
if (!$main_heading['main_title'] || empty($main_heading_data['title'])) {
$main_heading['main_title'] = false;
}
if (!$main_heading['main_sub_title'] || empty($main_heading_data['short_desc'])) {
$main_heading['main_sub_title'] = false;
}
if (!$main_heading['main_description'] || empty($main_heading_data['desc'])) {
$main_heading['main_description'] = false;
}
if (!$main_heading['main_image'] || empty($main_heading_data['image'])) {
$main_heading['main_image'] = false;
}
if (!$main_heading['main_title']
&& !$main_heading['main_sub_title']
&& !$main_heading['main_description']
&& !$main_heading['main_image']) {
$main_heading['main_status'] = false;
}
return $main_heading;
}
public function showFrontSideResult()
{
$tvcmsbdp_postcount = Configuration::get('tvcmsbdp_postcount');
$data = [];
if (Module::isInstalled('tvcmsblog') && Module::isEnabled('tvcmsblog')) {
$data = TvcmsPostsClass::getCategoryPosts(0, 1, $tvcmsbdp_postcount, 'post', 'DESC');
}
if (empty($data)) {
Configuration::updateValue('TVCMSBLOGSHOW', '0');
}
$id_shop = (int) Context::getContext()->shop->id;
$sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'tvcms_image_type` ';
$sql .= ' WHERE active = 1 AND id_shop = ' . (int) $id_shop;
$queryexec = Db::getInstance()->executeS($sql);
if ($queryexec) {
$smallwidthLeft = $queryexec[3]['width'];
$smallheightLeft = $queryexec[3]['height'];
$this->context->smarty->assign('smallwidthLeft', $smallwidthLeft);
$this->context->smarty->assign('smallheightLeft', $smallheightLeft);
}
$cookie = Context::getContext()->cookie;
$id_lang = $cookie->id_lang;
$tvcms_obj = new TvcmsBlogDisplayPostsStatus();
$main_heading = $tvcms_obj->fieldStatusInformation();
if ($main_heading['main_status']) {
$main_heading_data = [];
$main_heading_data['title'] = Configuration::get('tvcmsbdp_title_' . $id_lang);
$main_heading_data['short_desc'] = Configuration::get('tvcmsbdp_subtext_' . $id_lang);
$main_heading_data['desc'] = Configuration::get('tvcmsbdp_description_' . $id_lang);
$main_heading_data['image'] = Configuration::get('image_file_' . $id_lang);
$main_heading = $this->getArrMainTitle($main_heading, $main_heading_data);
$main_heading['data'] = $main_heading_data;
}
$disArrResult = [];
$disArrResult['data'] = $data;
$disArrResult['status'] = empty($disArrResult['data']) ? false : true;
$disArrResult['path'] = _MODULE_DIR_ . $this->name . '/views/img/';
$disArrResult['id_lang'] = $id_lang;
$this->context->smarty->assign('main_heading', $main_heading);
$this->context->smarty->assign('dis_arr_result', $disArrResult);
return $disArrResult['status'] ? true : false;
}
public function hookdisplayWrapperBottom($params)
{
return $this->hookdisplayHome($params);
}
public function hookdisplayHome($params)
{
$result = $this->showFrontSideResult();
if (!$result) {
return false;
}
$output = $this->display(__FILE__, '/views/templates/front/tvcmsblogdisplayposts_home.tpl');
return $output;
}
// display blog in left panel
public function hookdisplayLeftColumn($params)
{
$result = $this->showFrontSideResult();
if (!$result) {
return false;
}
$output = $this->display(__FILE__, '/views/templates/front/tvcmsblogdisplayposts_left.tpl');
return $output;
}
public function hookdisplayRightColumn($params)
{
return $this->hookdisplayLeftColumn($params);
}
// Display Blog category in Left Column
// public function hookdisplayLeftColumn($params)
// {
// $final_categories = array();
// $categories = TvcmsCategoryClass::getCategories();
// $i = 0;
// foreach ($categories as $category) {
// if (TvcmsPostsClass::getCategoryPostsCount($category['id_tvcmscategory']) > 0) {
// $params = array();
// $final_categories[$i] = $category;
// $params['page_type'] = 'category';
// $params['id'] = $category['id_tvcmscategory'];
// $params['rewrite'] = $category['link_rewrite'];
// $path = TvcmsBlog::tvcmsBlogCategoryLink($params);
// $path_2 = TvcmsCategoryClass::getCategoryPath($category['id_tvcmscategory']);
// $final_categories[$i]['path'] = $path;
// $final_categories[$i]['path_2'] = $path_2;
// $i++;
// }
// }
// $this->context->smarty->assign('categories', $final_categories);
// return $this->fetch('module:' . $this->name . '/views/templates/front/tvcmsblogdisplaycategory.tpl');
// }
}