Current File : //var/www/vinorea/modules/tvcmsfootercategory/tvcmsfootercategory.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
*/
if (!defined('_PS_VERSION_')) {
exit;
}
include_once 'classes/tvcmsfootercategory_status.class.php';
class TvcmsFooterCategory extends Module
{
public function __construct()
{
$this->name = 'tvcmsfootercategory';
$this->tab = 'front_office_features';
$this->version = '4.0.0';
$this->author = 'ThemeVolty';
$this->need_instance = 0;
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('ThemeVolty - Footer Category');
$this->description = $this->l('Its Show Footer Cateogry in Front Side');
$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?'
);
}
public function install()
{
$this->installTab();
$this->createVariable();
return parent::install()
// && $this->registerHook('displayBackOfficeHeader')
&& $this->registerHook('displayFooterCategory');
// && $this->registerHook('displayFooterPart1');
// && $this->registerHook('displayFooterPart2');
}
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']] = 'Footer Cateogry';
}
$tab->id_parent = $parentTab_2->id;
$tab->module = $this->name;
$response &= $tab->add();
return $response;
}
public function createVariable()
{
$all_categories = Category::getAllCategoriesName();
unset($all_categories[0]);
unset($all_categories[1]);
$number_of_category_default = 4;
$i = 1;
$category_list = [];
foreach ($all_categories as $category) {
if ($i <= $number_of_category_default) {
$category_list[] = $category['id_category'];
}
++$i;
}
$category_list = implode(',', $category_list);
Configuration::updateValue(
'TVCMSFOOTERCATEGORY_CATEGOEY_LIST',
$category_list
);
$languages = Language::getLanguages();
$result = [];
foreach ($languages as $lang) {
$result['TVCMSFOOTERCATEGORY_TITLE'][$lang['id_lang']] = 'Category';
}
Configuration::updateValue(
'TVCMSFOOTERCATEGORY_TITLE',
$result['TVCMSFOOTERCATEGORY_TITLE']
);
if (empty($category_list)) {
Configuration::updateValue('TVCMSFOOTERCATEGORY_STATUS', 0);
} else {
Configuration::updateValue('TVCMSFOOTERCATEGORY_STATUS', 1);
}
}
public function uninstall()
{
$this->uninstallTab();
$this->deleteVariable();
return parent::uninstall();
}
public function deleteVariable()
{
Configuration::deleteByName('TVCMSFOOTERCATEGORY_TITLE');
Configuration::deleteByName('TVCMSFOOTERCATEGORY_STATUS');
}
public function uninstallTab()
{
$id_tab = Tab::getIdFromClassName('Admin' . $this->name);
$tab = new Tab($id_tab);
$tab->delete();
return true;
}
public function getContent()
{
$message = $this->postProcess();
$output = $message . $this->renderForm();
return $output;
}
public function postProcess()
{
$message = '';
$result = [];
if (Tools::isSubmit('submittvcmsFooterCategoryMainTitleForm') && Tools::getValue('TVCMSFOOTERCATEGORY_CATEGOEY_LIST')) {
$languages = Language::getLanguages();
foreach ($languages as $lang) {
$tmp = Tools::getValue(
'TVCMSFOOTERCATEGORY_TITLE_' . $lang['id_lang']
);
$result['TVCMSFOOTERCATEGORY_TITLE'][$lang['id_lang']] = $tmp;
}
Configuration::updateValue(
'TVCMSFOOTERCATEGORY_TITLE',
$result['TVCMSFOOTERCATEGORY_TITLE']
);
$tmp = Tools::getValue('TVCMSFOOTERCATEGORY_CATEGOEY_LIST');
$tmp = implode(',', $tmp);
Configuration::updateValue(
'TVCMSFOOTERCATEGORY_CATEGOEY_LIST',
$tmp
);
$tmp = Tools::getValue('TVCMSFOOTERCATEGORY_STATUS');
Configuration::updateValue('TVCMSFOOTERCATEGORY_STATUS', $tmp);
$this->clearCustomSmartyCache(
'tvcmsfootercategory_display_home.tpl'
);
$message .= $this->displayConfirmation(
$this->l('Footer Cateogry is Updated.')
);
}
return $message;
}
public function clearCustomSmartyCache($cache_id)
{
if (Cache::isStored($cache_id)) {
Cache::clean($cache_id);
}
}
protected function renderForm()
{
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->table = $this->table;
$helper->module = $this;
$helper->default_form_language = $this->context->language->id;
$helper->allow_employee_form_lang = Configuration::get(
'PS_BO_ALLOW_EMPLOYEE_FORM_LANG',
0
);
$helper->identifier = $this->identifier;
$helper->currentIndex =
$this->context->link->getAdminLink('AdminModules', false) .
'&configure=' .
$this->name .
'&tab_module=' .
$this->tab .
'&module_name=' .
$this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->tpl_vars = [
'fields_value' => $this->getConfigFormValues() /* Add values for your inputs */,
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
];
$form = [];
$tvcms_obj = new TvcmsFooterCategoryStatus();
$show_fields = $tvcms_obj->fieldStatusInformation();
if ($show_fields['form']) {
$form[] = $this->tvcmsFooterCategoryMainTitleForm();
}
return $helper->generateForm($form);
}
protected function tvcmsFooterCategoryMainTitleForm()
{
$tvcms_obj = new TvcmsFooterCategoryStatus();
$show_fields = $tvcms_obj->fieldStatusInformation();
$input = [];
$all_category = Category::getAllCategoriesName();
$value = [];
foreach ($all_category as $category) {
$value['id'] = $category['id_category'];
$value['use_checkbox'] = true;
$tmp = Configuration::get('TVCMSFOOTERCATEGORY_CATEGOEY_LIST');
$selected_categories = explode(',', $tmp);
$value['selected_categories'] = $selected_categories;
}
if ($show_fields['title']) {
$input[] = [
'col' => 7,
'type' => 'text',
'name' => 'TVCMSFOOTERCATEGORY_TITLE',
'label' => $this->l('Title'),
'lang' => true,
];
}
if ($show_fields['category_list']) {
$input[] = [
'col' => 7,
'type' => 'categories',
'name' => 'TVCMSFOOTERCATEGORY_CATEGOEY_LIST',
'label' => $this->l('Category List'),
'tree' => $value,
];
}
if ($show_fields['status']) {
$input[] = [
'type' => 'switch',
'label' => $this->l('Status'),
'name' => 'TVCMSFOOTERCATEGORY_STATUS',
'desc' => $this->l('Hide or show category.'),
'is_bool' => true,
'values' => [
[
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Show'),
],
[
'id' => 'active_off',
'value' => 0,
'label' => $this->l('Hide'),
],
],
];
}
return [
'form' => [
'legend' => [
'title' => $this->l('Footer Category'),
'icon' => 'icon-support',
],
'input' => $input,
'submit' => [
'title' => $this->l('Save'),
'name' => 'submittvcmsFooterCategoryMainTitleForm',
],
],
];
}
protected function getConfigFormValues()
{
$fields = [];
$languages = Language::getLanguages();
foreach ($languages as $lang) {
$tmp = Configuration::get(
'TVCMSFOOTERCATEGORY_TITLE',
$lang['id_lang']
);
$fields['TVCMSFOOTERCATEGORY_TITLE'][$lang['id_lang']] = $tmp;
}
$fields['TVCMSFOOTERCATEGORY_STATUS'] = Configuration::get(
'TVCMSFOOTERCATEGORY_STATUS'
);
return $fields;
}
public function hookDisplayTopColumn()
{
return $this->hookdisplayFooter();
}
public function hookDisplayFooterBefore()
{
return $this->hookdisplayFooter();
}
public function hookdisplayFooterPart2()
{
return $this->hookdisplayFooter();
// return '<h1>Welcome here</h1>';
}
public function getFooterCategoryResult()
{
$all_category = Configuration::get('TVCMSFOOTERCATEGORY_CATEGOEY_LIST');
$result = [];
if (!empty($all_category) && Configuration::get('TVCMSFOOTERCATEGORY_STATUS')) {
$all_category = explode(',', $all_category);
$i = 0;
foreach ($all_category as $category_id) {
$category = new Category($category_id);
$result[$i]['id'] = $category_id;
$result[$i]['name'] = $category->name;
$result[$i]['link'] = $this->context->link->getCategoryLink(
$category_id
);
++$i;
}
}
$this->context->smarty->assign('category_list', $result);
}
public function hookdisplayFooterPart1()
{
return $this->hookdisplayFooter();
}
public function hookdisplayFooter()
{
$this->getFooterCategoryResult();
if (!Cache::isStored('tvcmsfootercategory_display_home.tpl')) {
$tvcms_obj = new TvcmsFooterCategoryStatus();
$show_fields = $tvcms_obj->fieldStatusInformation();
$cookie = Context::getContext()->cookie;
$id_lang = $cookie->id_lang;
$this->context->smarty->assign('id_lang', $id_lang);
$this->context->smarty->assign('show_fields', $show_fields);
$output = $this->display(
__FILE__,
'views/templates/front/display_home.tpl'
);
Cache::store('tvcmsfootercategory_display_home.tpl', $output);
}
return Cache::retrieve('tvcmsfootercategory_display_home.tpl');
}
public function hookdisplayFooterCategory()
{
$this->getFooterCategoryResult();
if (!Cache::isStored('tvcmsfootercategory_display_home.tpl')) {
$tvcms_obj = new TvcmsFooterCategoryStatus();
$show_fields = $tvcms_obj->fieldStatusInformation();
$cookie = Context::getContext()->cookie;
$id_lang = $cookie->id_lang;
$this->context->smarty->assign('id_lang', $id_lang);
$this->context->smarty->assign('show_fields', $show_fields);
$output = $this->display(
__FILE__,
'views/templates/front/display_home.tpl'
);
Cache::store('tvcmsfootercategory_display_home.tpl', $output);
}
return Cache::retrieve('tvcmsfootercategory_display_home.tpl');
}
}