Current File : //var/www/vinorea/modules/tvcmsblog/tvcmsblog.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/config/define.inc.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmsblogresizeclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmsimagetypeclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmscategorypostclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmscommentclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmscategoryclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmspostsclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/classes/tvcmspostmetaclass.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/controllers/front/main.php';
include_once _PS_MODULE_DIR_ . 'tvcmsblog/data/fields_array.php';
class TvcmsBlog extends Module
{
public static $tvcmsblogshortname = 'tvcmsblog';
public static $quick_key = 'tvcmsblogquickaceslink';
public static $tvcmslinkobj;
public static $dispatcherobj;
public static $inlinejs = [];
public $all_hooks = [
'displayheader',
'displayBackOfficeHeader',
'ModuleRoutes',
'displaytvcmsblogleft',
'displaytvcmsblogright',
'displayAdminAfterHeader',
];
public $fields_arr_path;
public $css_files = [
[
'key' => 'tvcmsblog_css',
'src' => 'tvcmsblog.css',
'priority' => 250,
'media' => 'all',
'load_theme' => false,
],
];
public $js_files = [
[
'key' => 'tvcmsblogJs',
'src' => 'tvcmsblog.js',
'priority' => 250,
'position' => 'bottom',
'load_theme' => false,
],
[
'key' => 'tvcmsblog_validator_js',
'src' => 'validator.min.js',
'priority' => 250,
'position' => 'bottom',
'load_theme' => false,
],
];
public $all_tabs = [
[
'class_name' => 'Admintvcmspost',
'id_parent' => 'parent',
'name' => 'Blog Posts',
],
[
'class_name' => 'Admintvcmscategory',
'id_parent' => 'parent',
'name' => 'Blog Categories',
],
[
'class_name' => 'Admintvcmscomment',
'id_parent' => 'parent',
'name' => 'Blog Comments',
],
[
'class_name' => 'Admintvcmsimagetype',
'id_parent' => 'parent',
'name' => 'Blog Image Type',
],
];
public $dbfiles = '/db/dbfiles.php';
public static $ModuleName = 'tvcmsblog';
public function __construct()
{
$MyFieldsForm = new MyFieldsForm();
$this->fields_form = $MyFieldsForm->getAllForm($this);
$this->name = 'tvcmsblog';
$this->tab = 'front_office_features';
$this->version = '4.0.3';
$this->author = 'ThemeVolty';
$this->bootstrap = true;
$this->need_upgrade = true;
$this->controllers = ['archive', 'single'];
parent::__construct();
$this->displayName = $this->l('ThemeVolty - Blog');
$this->description = $this->l('Manage Blog Module 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()
{
if (!parent::install()
|| !$this->registerHooks()
|| !$this->registerTabs()
|| !$this->registerSQL()
|| !$this->addQuickAccessLink()
// || !$this->createDefaultData()
|| !$this->installSampleData()
) {
return false;
}
return true;
}
public function uninstall()
{
if (!parent::uninstall()
|| !$this->unregisterHooks()
|| !$this->unregisterTabs()
|| !$this->unregisterSQL()
|| !$this->uninstallSampleData()
|| !$this->deleteQuickAccessLink()
) {
return false;
}
return true;
}
public function addQuickAccessLink()
{
$link = new Link();
$QuickAccess = new QuickAccess();
$QuickAccess->link = $link->getAdminLink('AdminModules') . '&configure=' . $this->name;
$languages = Language::getLanguages(false);
if (isset($languages) && !empty($languages)) {
foreach ($languages as $language) {
$QuickAccess->name[$language['id_lang']] = $this->l('ThemeVolty Settings');
}
}
$QuickAccess->new_window = '0';
if ($QuickAccess->save()) {
Configuration::updateValue(self::$quick_key, $QuickAccess->id);
}
return true;
}
public function deleteQuickAccessLink()
{
$quick_key = (int) Configuration::get(self::$quick_key);
if (0 != $quick_key) {
$QuickAccess = new QuickAccess($quick_key);
if ($QuickAccess->delete()) {
return true;
}
} else {
return false;
}
}
public function tvcmsblogJs($params, $content, &$smarty)
{
if (isset($params['name']) && !empty($params['name']) && !empty($content)) {
self::$inlinejs[$params['name']] = $content;
}
}
public function registerHooks()
{
$this->registerHook('displayBeforeBodyClosingTag');
if (isset($this->all_hooks)) {
foreach ($this->all_hooks as $hook) {
$this->registerHook($hook);
}
}
return true;
}
public function hookdisplayBeforeBodyClosingTag($params)
{
if (isset(self::$inlinejs) && !empty(self::$inlinejs)) {
foreach (self::$inlinejs as $keyinlinejs => $valueinlinejs) {
echo $valueinlinejs;
}
}
}
public function unregisterHooks()
{
$hook_idm = Module::getModuleIdByName('displayAdminAfterHeader');
$this->unregisterHook((int) $hook_idm);
$this->unregisterHook((int) $hook_idm);
if (isset($this->all_hooks)) {
foreach ($this->all_hooks as $hook) {
$hook_id = Module::getModuleIdByName($hook);
if (isset($hook_id) && !empty($hook_id)) {
$this->unregisterHook((int) $hook_id);
}
}
}
return true;
}
public function registerSQL()
{
$querys = [];
if (file_exists(dirname(__FILE__) . $this->dbfiles)) {
require dirname(__FILE__) . $this->dbfiles;
if (isset($querys) && !empty($querys)) {
foreach ($querys as $query) {
if (!Db::getInstance()->Execute($query)) {
return false;
}
}
}
}
return true;
}
public function unregisterSQL()
{
$querys_u = [];
if (file_exists(dirname(__FILE__) . $this->dbfiles)) {
require dirname(__FILE__) . $this->dbfiles;
if (isset($querys_u) && !empty($querys_u)) {
foreach ($querys_u as $query_u) {
if (!Db::getInstance()->Execute($query_u)) {
return false;
}
}
}
}
return true;
}
public function unregisterTabs()
{
$tabs_lists = [];
if (isset($this->all_tabs) && !empty($this->all_tabs)) {
foreach ($this->all_tabs as $tab_list) {
$tab_list_id = Tab::getIdFromClassName($tab_list['class_name']);
if (isset($tab_list_id) && !empty($tab_list_id)) {
$tabobj = new Tab($tab_list_id);
$tabobj->delete();
}
}
}
return true;
}
public function registerParentTabs()
{
$adminmodules_id = (int) Tab::getIdFromClassName('IMPROVE');
return (int) $adminmodules_id;
}
public function hookModuleRoutes($params)
{
$mainslug = Configuration::get(self::$tvcmsblogshortname . 'main_blog_url');
$postfixslug = Configuration::get(self::$tvcmsblogshortname . 'postfix_url_format');
$categoryslug = Configuration::get(self::$tvcmsblogshortname . 'category_blog_url');
$tagslug = Configuration::get(self::$tvcmsblogshortname . 'tag_blog_url');
$singleslug = Configuration::get(self::$tvcmsblogshortname . 'single_blog_url');
$main_slug = (isset($mainslug) && !empty($mainslug)) ? $mainslug : 'tvcmsblog';
$postfix_slug = (isset($postfixslug) && !empty($postfixslug) && ('enable_html' == $postfixslug)) ? '.html' : '';
$category_slug = (isset($categoryslug) && !empty($categoryslug)) ? $categoryslug : 'category';
$tag_slug = (isset($tagslug) && !empty($tagslug)) ? $tagslug : 'tag';
$single_slug = (isset($singleslug) && !empty($singleslug)) ? $singleslug : 'post';
$tvcmsblogroutes = [
'tvcmsblog-tvcmsblog-module' => [
'controller' => 'archive',
'rule' => $main_slug . $postfix_slug,
'keywords' => [],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'category',
],
],
'tvcmsblog-archive-module' => [
'controller' => 'archive',
'rule' => $main_slug . '/' . $category_slug . '/{id}_{rewrite}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'category',
],
],
'tvcmsblog-archive-aftrid-module' => [
'controller' => 'archive',
'rule' => $main_slug . '/' . $category_slug . '/{rewrite}_{id}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'category',
],
],
'tvcmsblog-archive-wid-module' => [
'controller' => 'archive',
'rule' => $main_slug . '/' . $category_slug . '/{rewrite}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'category',
],
],
'tvcmsblog-tag-module' => [
'controller' => 'archive',
'rule' => $main_slug . '/' . $tag_slug . '/{id}_{rewrite}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'tag',
],
],
'tvcmsblog-tag-aftrid-module' => [
'controller' => 'archive',
'rule' => $main_slug . '/' . $tag_slug . '/{rewrite}_{id}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'tag',
],
],
'tvcmsblog-tag-wid-module' => [
'controller' => 'archive',
'rule' => $main_slug . '/' . $tag_slug . '/{rewrite}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'subpage_type' => 'post',
'page_type' => 'tag',
],
],
'tvcmsblog-single-module' => [
'controller' => 'single',
'rule' => $main_slug . '/' . $single_slug . '/{id}_{rewrite}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'page_type' => 'post',
],
],
'tvcmsblog-single-aftrid-module' => [
'controller' => 'single',
'rule' => $main_slug . '/' . $single_slug . '/{rewrite}_{id}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'page_type' => 'post',
],
],
'tvcmsblog-single-wid-module' => [
'controller' => 'single',
'rule' => $main_slug . '/' . $single_slug . '/{rewrite}' . $postfix_slug,
'keywords' => [
'id' => ['regexp' => '[0-9]+', 'param' => 'id'],
'rewrite' => ['regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'],
],
'params' => [
'fc' => 'module',
'module' => 'tvcmsblog',
'page_type' => 'post',
],
],
];
return $tvcmsblogroutes;
}
public static function getLinkObject()
{
if (!isset(self::$tvcmslinkobj) || empty(self::$tvcmslinkobj)) {
$ssl = false;
if (Configuration::get('PS_SSL_ENABLED')
&& Configuration::get('PS_SSL_ENABLED_EVERYWHERE')
) {
$ssl = true;
}
$protocol_link = (Configuration::get('PS_SSL_ENABLED') || Tools::usingSecureMode()) ? 'https://' : 'http://';
$tmp = Configuration::get('PS_SSL_ENABLED');
$useSSL = ((isset($ssl) && $ssl && $tmp) || Tools::usingSecureMode()) ? true : false;
$protocol_content = ($useSSL) ? 'https://' : 'http://';
self::$tvcmslinkobj = new Link($protocol_link, $protocol_content);
}
return self::$tvcmslinkobj;
}
public static function getBaseLink($id_shop = null, $ssl = null, $relative_protocol = false)
{
static $force_ssl = null;
if (null === $ssl) {
if (null === $force_ssl) {
$force_ssl = (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE'));
}
$ssl = $force_ssl;
}
if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && null !== $id_shop) {
$shop = new Shop($id_shop);
} else {
$shop = Context::getContext()->shop;
}
if ($relative_protocol) {
$base = '//' . ($ssl ? $shop->domain_ssl : $shop->domain);
} else {
$base = (($ssl) ? 'https://' . $shop->domain_ssl : 'http://' . $shop->domain);
}
return $base . $shop->getBaseURI();
}
public static function getLangLink($id_lang = null, Context $context = null, $id_shop = null)
{
if (!$context) {
$context = Context::getContext();
}
if (!$id_shop) {
$id_shop = $context->shop->id;
}
$allow = (int) Configuration::get('PS_REWRITING_SETTINGS');
if ((!$allow && in_array($id_shop, [$context->shop->id, null]))
|| !Language::isMultiLanguageActivated($id_shop)
|| !(int) Configuration::get('PS_REWRITING_SETTINGS', null, null, $id_shop)
) {
return '';
}
if (!$id_lang) {
$id_lang = $context->language->id;
}
return Language::getIsoById($id_lang) . '/';
}
public static function tvcmsBlogMainLink()
{
$id_shop = (int) Context::getcontext()->shop->id;
$id_lang = (int) Context::getcontext()->language->id;
$ssl = null;
$relative_protocol = false;
$url = self::getBaseLink($id_shop, $ssl, $relative_protocol) . self::getLangLink($id_lang, null, $id_shop);
return $url;
}
public static function tvcmsBlogLink($rule = 'tvcmsblog-tvcmsblog-module', $params = [])
{
$context = Context::getContext();
$id_lang = (int) $context->language->id;
$id_shop = (int) $context->shop->id;
$mainurl = self::tvcmsBlogMainLink();
if (!isset(self::$dispatcherobj) || empty(self::$dispatcherobj)) {
self::$dispatcherobj = Dispatcher::getInstance();
}
$force_routes = (bool) Configuration::get('PS_REWRITING_SETTINGS');
return $mainurl . self::$dispatcherobj->createUrl($rule, $id_lang, $params, $force_routes);
}
public static function tvcmsBlogPostLink($params = [])
{
$url_format = Configuration::get(self::$tvcmsblogshortname . 'url_format');
if (isset($params['id']) && !isset($params['rewrite'])) {
$params['rewrite'] = TvcmsPostsClass::getTtheRewrite($params['id']);
}
if (!isset($params['id']) && isset($params['rewrite'])) {
$params['id'] = TvcmsPostsClass::getTheId($params['rewrite']);
}
if (!isset($params['page_type'])) {
$params['page_type'] = 'post';
}
if ('preid_seo_url' == $url_format) {
$rule = 'tvcmsblog-single-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('postid_seo_url' == $url_format) {
$rule = 'tvcmsblog-single-aftrid-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('wthotid_seo_url' == $url_format) {
$rule = 'tvcmsblog-single-wid-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('default_seo_url' == $url_format) {
return self::getLinkObject()->getModuleLink('tvcmsblog', 'single', $params);
} else {
$rule = 'tvcmsblog-single-module';
}
}
public static function tvcmsBlogTagLink($params = [])
{
$url_format = Configuration::get(self::$tvcmsblogshortname . 'url_format');
// if(isset($params['id']) && !isset($params['rewrite'])){
// $params['rewrite'] = tvcmspostsclass::getTtheRewrite($params['id']);
// }
if (!isset($params['page_type'])) {
$params['page_type'] = 'tag';
}
if (!isset($params['subpage_type'])) {
$params['subpage_type'] = 'post';
}
if ('preid_seo_url' == $url_format) {
$rule = 'tvcmsblog-tag-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('postid_seo_url' == $url_format) {
$rule = 'tvcmsblog-tag-aftrid-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('wthotid_seo_url' == $url_format) {
$rule = 'tvcmsblog-tag-wid-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('default_seo_url' == $url_format) {
return self::getLinkObject()->getModuleLink('tvcmsblog', 'archive', $params);
} else {
$rule = 'tvcmsblog-tag-module';
return self::tvcmsBlogLink($rule, $params);
}
}
public static function tvcmsBlogCategoryLink($params = [])
{
$url_format = Configuration::get(self::$tvcmsblogshortname . 'url_format');
// if(isset($params['id']) && !isset($params['rewrite'])){
// $params['rewrite'] = TvcmsPostsClass::getTtheRewrite($params['id']);
// }
if (!isset($params['page_type'])) {
$params['page_type'] = 'category';
}
if (!isset($params['subpage_type'])) {
$params['subpage_type'] = 'post';
}
if ('preid_seo_url' == $url_format) {
$rule = 'tvcmsblog-archive-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('postid_seo_url' == $url_format) {
$rule = 'tvcmsblog-archive-aftrid-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('wthotid_seo_url' == $url_format) {
$rule = 'tvcmsblog-archive-wid-module';
return self::tvcmsBlogLink($rule, $params);
} elseif ('default_seo_url' == $url_format) {
return self::getLinkObject()->getModuleLink('tvcmsblog', 'archive', $params);
} else {
$rule = 'tvcmsblog-archive-module';
return self::tvcmsBlogLink($rule, $params);
}
}
// tvcmsblog::getThemeName()
public static function getThemeName()
{
$theme_name = Configuration::get(self::$tvcmsblogshortname . 'theme_name');
if (isset($theme_name) && !empty($theme_name)) {
return $theme_name;
} else {
return 'default';
}
}
public function registerETabs()
{
$tabpar_listobj = new Tab();
$langs = Language::getLanguages();
$id_parent = (int) $this->registerParentTabs();
$tabpar_listobj->class_name = 'Adminxprtdashboard';
$tabpar_listobj->id_parent = $id_parent;
$tabpar_listobj->module = $this->name;
foreach ($langs as $l) {
$tabpar_listobj->name[$l['id_lang']] = $this->l('ThemeVolty Blog');
}
if ($tabpar_listobj->save()) {
return (int) $tabpar_listobj->id;
} else {
return (int) $id_parent;
}
}
public function registerTabs()
{
$tabs_lists = [];
$langs = Language::getLanguages();
$id_lang = (int) Configuration::get('PS_LANG_DEFAULT');
$save_tab_id = $this->registerETabs();
if (isset($this->all_tabs) && !empty($this->all_tabs)) {
foreach ($this->all_tabs as $tab_list) {
$tab_listobj = new Tab();
$tab_listobj->class_name = $tab_list['class_name'];
if ('parent' == $tab_list['id_parent']) {
$tab_listobj->id_parent = $save_tab_id;
} else {
$tab_listobj->id_parent = $tab_list['id_parent'];
}
if (isset($tab_list['module']) && !empty($tab_list['module'])) {
$tab_listobj->module = $tab_list['module'];
} else {
$tab_listobj->module = $this->name;
}
foreach ($langs as $l) {
$tab_listobj->name[$l['id_lang']] = $this->l($tab_list['name']);
}
$tab_listobj->save();
}
}
return true;
}
// Start Setting
public function installSampleData()
{
$multiple_arr = [];
$this->allFields();
foreach ($this->fields_form as $value) {
if (empty($multiple_arr)) {
$multiple_arr = $value['form']['input'];
} else {
$multiple_arr = array_merge($multiple_arr, $value['form']['input']);
}
}
// START LANG
$languages = Language::getLanguages(false);
if (isset($multiple_arr) && !empty($multiple_arr)) {
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['lang']) && true == $mvalue['lang'] && isset($mvalue['name'])) {
foreach ($languages as $lang) {
if (isset($mvalue['default_val'])) {
${$mvalue['name'] . '_lang'}[$lang['id_lang']] = $mvalue['default_val'];
}
}
}
}
}
// END LANG
if (isset($multiple_arr) && !empty($multiple_arr)) {
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['lang']) && true == $mvalue['lang'] && isset($mvalue['name'])) {
Configuration::updateValue(self::$tvcmsblogshortname . $mvalue['name'], ${$mvalue['name'] . '_lang'});
} else {
if (isset($mvalue['name'])) {
if (isset($mvalue['default_val'])) {
Configuration::updateValue(self::$tvcmsblogshortname
. $mvalue['name'], $mvalue['default_val']);
}
}
}
}
}
return true;
}
public function uninstallSampleData()
{
$multiple_arr = [];
$this->allFields();
foreach ($this->fields_form as $value) {
if (empty($multiple_arr)) {
$multiple_arr = $value['form']['input'];
} else {
$multiple_arr = array_merge($multiple_arr, $value['form']['input']);
}
}
if (isset($multiple_arr) && !empty($multiple_arr)) {
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['name'])) {
Configuration::deleteByName(self::$tvcmsblogshortname . $mvalue['name']);
}
}
}
return true;
}
public function allFields()
{
$tvcmsblog_settings = [];
include_once dirname(__FILE__) . $this->fields_arr_path;
if ($this->getConfigPath()) {
include_once $this->getConfigPath();
}
if (isset($tvcmsblog_settings) && !empty($tvcmsblog_settings)) {
foreach ($tvcmsblog_settings as $tvcmsblog_setting) {
$this->fields_form[]['form'] = $tvcmsblog_setting;
}
}
return $this->fields_form;
}
public function asignGlobalSettingValue()
{
$tvcmsblogsettings = $this->getSettingsValueS();
$this->smarty->assignGlobal('tvcmsblogsettings', $tvcmsblogsettings);
return true;
}
public static function getAllThemes()
{
$results = [];
$theme_dirs = _PS_THEME_DIR_ . 'modules/' . TVCMSBLOG_TPL_DIR;
$module_dirs = _PS_MODULE_DIR_ . TVCMSBLOG_TPL_DIR;
if (is_dir($theme_dirs)) {
$scandir = scandir($theme_dirs);
$all_folders = array_diff($scandir, ['..', '.', 'index.php']);
} elseif (is_dir($module_dirs)) {
$scandir = scandir($module_dirs);
$all_folders = array_diff($scandir, ['..', '.', 'index.php']);
}
if (isset($all_folders) && !empty($all_folders)) {
$i = 0;
foreach ($all_folders as $folder) {
$results[$i]['id'] = $folder;
$results[$i]['name'] = ucwords($folder);
++$i;
}
}
return $results;
}
public function getSettingsValueS()
{
$id_lang = Context::getcontext()->language->id;
$multiple_arr = [];
$tvcmsblogsettings = [];
$this->allFields();
foreach ($this->fields_form as $value) {
$multiple_arr = array_merge($multiple_arr, $value['form']['input']);
}
if (isset($multiple_arr) && !empty($multiple_arr)) {
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['lang']) && true == $mvalue['lang'] && isset($mvalue['name'])) {
$tvcmsblogsettings[$mvalue['name']] = Configuration::get(self::$tvcmsblogshortname
. $mvalue['name'], $id_lang);
} else {
if (isset($mvalue['name'])) {
$tvcmsblogsettings[$mvalue['name']] = Configuration::get(self::$tvcmsblogshortname
. $mvalue['name']);
}
}
}
}
return $tvcmsblogsettings;
}
public function hookdisplaytvcmsblogleft()
{
// return 'i am left';
}
public function hookdisplaytvcmsblogright()
{
// return 'i am right';
}
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($css_file['priority']) && !empty($tmp)) ? $css_file['priority'] : 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
. '/views/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($js_file['position']) && !empty($tmp)) ? $js_file['position'] : 'bottom';
$tmp = $js_file['priority'];
$priority = (isset($js_file['priority']) && !empty($tmp)) ? $js_file['priority'] : 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
. '/views/js/' . $js_file['src'], ['position' => $position, 'priority' => $priority]);
}
}
}
}
return true;
}
public function hookdisplayBackOfficeHeader()
{
$this->context->controller->addJS($this->_path . 'views/js/back.js');
$this->context->controller->addCSS($this->_path . 'views/css/back.css');
}
public function hookdisplayheader()
{
$this->context->controller->addCSS($this->_path . 'views/css/front.css');
$base_url = $this->context->shop->getBaseURL(true, true);
Media::addJsDef(['tvcms_base_dir' => $base_url]);
if ('front' == $this->context->controller->controller_type
|| 'modulefront' == $this->context->controller->controller_type
) {
// global $smarty;
smartyRegisterFunction($this->context->smarty, 'block', 'tvcmsblogJs', ['tvcmsblog', 'tvcmsblogJs']);
}
$this->registerCss();
$this->registerJs();
}
public function generateImageThumbnail($select_image_type = 'all')
{
$dir = _PS_MODULE_DIR_ . self::$ModuleName . '/views/img/';
$getAllImageTypes = TvcmsImageTypeClass::getAllImageTypes();
if ('all' == $select_image_type || 'category' == $select_image_type) {
// start category
$categories = TvcmsCategoryClass::getCategories();
if (isset($categories) && !empty($categories)) {
foreach ($categories as $category) {
if (isset($category['category_img'])
&& !empty($category['category_img'])
&& file_exists($dir . $category['category_img'])
) {
$ext = Tools::substr($category['category_img'], strrpos($category['category_img'], '.') + 1);
if (isset($getAllImageTypes) && !empty($getAllImageTypes)) {
foreach ($getAllImageTypes as $imagetype) {
// ImageManager::resize(
// $dir . $category['category_img'],
// $dir . $imagetype['name'] . '-' . $category['category_img'],
// (int)$imagetype['width'],
// (int)$imagetype['height'],
// $ext
// );
$w = (int) $imagetype['width'];
$h = (int) $imagetype['height'];
$resizeObj = new TvcmsBlogResizeClass($dir . $category['category_img']);
$resizeObj->resizeImage($w, $h, 3);
$resizeObj->saveImage($dir . $imagetype['name'] . '-' . $category['category_img']);
}
}
}
}
}
// End category
}
if ('all' == $select_image_type || 'gallery' == $select_image_type || 'post' == $select_image_type) {
$posts_count = TvcmsPostsClass::getCategoryPostsCount();
$all_posts = TvcmsPostsClass::getCategoryPosts(null, 1, $posts_count, 'post', 'DESC');
}
if ('all' == $select_image_type || 'post' == $select_image_type) {
// Start Post Image
if (isset($all_posts) && !empty($all_posts)) {
foreach ($all_posts as $all_post) {
if (isset($all_post['post_img'])
&& !empty($all_post['post_img'])
&& file_exists($dir . $all_post['post_img'])
) {
$ext = Tools::substr($all_post['post_img'], strrpos($all_post['post_img'], '.') + 1);
if (isset($getAllImageTypes) && !empty($getAllImageTypes)) {
foreach ($getAllImageTypes as $imagetype) {
// ImageManager::resize(
// $dir . $all_post['post_img'],
// $dir . $imagetype['name'] . '-' . $all_post['post_img'],
// (int)$imagetype['width'],
// (int)$imagetype['height'],
// $ext
// );
$w = (int) $imagetype['width'];
$h = (int) $imagetype['height'];
$resizeObj = new TvcmsBlogResizeClass($dir . $all_post['post_img']);
$resizeObj->resizeImage($w, $h, 3);
$resizeObj->saveImage($dir . $imagetype['name'] . '-' . $all_post['post_img']);
}
}
}
}
}
// End Post Image
}
if ('all' == $select_image_type || 'gallery' == $select_image_type) {
if (isset($all_posts) && !empty($all_posts)) {
foreach ($all_posts as $all_post) {
if (isset($all_post['gallery']) && !empty($all_post['gallery'])) {
$gallery = @explode(',', $all_post['gallery']);
if (isset($gallery) && !empty($gallery) && is_array($gallery)) {
foreach ($gallery as $gall) {
if (file_exists($dir . $gall)) {
$ext = Tools::substr($gall, strrpos($gall, '.') + 1);
if (isset($getAllImageTypes) && !empty($getAllImageTypes)) {
foreach ($getAllImageTypes as $imagetype) {
// ImageManager::resize(
// $dir . $gall,
// $dir . $imagetype['name'] . '-' . $gall,
// (int)$imagetype['width'],
// (int)$imagetype['height'],
// $ext
// );
$w = (int) $imagetype['width'];
$h = (int) $imagetype['height'];
$resizeObj = new TvcmsBlogResizeClass($dir . $gall);
$resizeObj->resizeImage($w, $h, 3);
$resizeObj->saveImage($dir . $imagetype['name'] . '-' . $gall);
}
}
}
}
}
}
}
}
}
}
public function getContent()
{
$useSSL = (isset($this->ssl) && $this->ssl && Configuration::get('PS_SSL_ENABLED')) || Tools::usingSecureMode() ? true : false;
$protocol_content = $useSSL ? 'https://' : 'http://';
$baseDir = $protocol_content . Tools::getHttpHost() . __PS_BASE_URI__;
$link = PS_ADMIN_DIR;
if (Tools::substr(strrchr($link, '/'), 1)) {
$admin_folder = Tools::substr(strrchr($link, '/'), 1);
} else {
$admin_folder = Tools::substr(strrchr($link, "\'"), 1);
}
$static_token = Tools::getAdminToken('AdminModules' . (int) Tab::getIdFromClassName('AdminModules') . (int) $this->context->employee->id);
$url_slidersampleupgrade = $baseDir . $admin_folder . '/index.php?controller=AdminModules&configure=' . $this->name . '&tab_module=front_office_features&module_name=' . $this->name . '&token=' . $static_token;
$this->context->smarty->assign('tvurlupgrade', $url_slidersampleupgrade);
if (Tools::isSubmit('submitTvcmsSampleinstall')) {
$this->createDefaultData();
}
if (Tools::isSubmit('submit_generateimage')) {
$select_image_type = Tools::getValue('select_image_type');
$this->generateImageThumbnail($select_image_type);
}
$this->context->controller->addJqueryPlugin('tagify');
Configuration::updateValue('tvcmsblogshortname', self::$tvcmsblogshortname);
$html = '';
$multiple_arr = [];
// START RENDER FIELDS
$this->allFields();
// END RENDER FIELDS
if (Tools::isSubmit('save' . $this->name)) {
foreach ($this->fields_form as $value) {
$multiple_arr = array_merge($multiple_arr, $value['form']['input']);
}
// START LANG
$languages = Language::getLanguages(false);
if (isset($multiple_arr) && !empty($multiple_arr)) {
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['lang']) && true == $mvalue['lang'] && isset($mvalue['name'])) {
foreach ($languages as $lang) {
${$mvalue['name'] . '_lang'}[$lang['id_lang']] = Tools::getvalue($mvalue['name']
. '_' . $lang['id_lang']);
}
}
}
}
// END LANG
if (isset($multiple_arr) && !empty($multiple_arr)) {
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['lang']) && true == $mvalue['lang'] && isset($mvalue['name'])) {
Configuration::updateValue(self::$tvcmsblogshortname
. $mvalue['name'], ${$mvalue['name'] . '_lang'});
} else {
if (isset($mvalue['name'])) {
Configuration::updateValue(self::$tvcmsblogshortname
. $mvalue['name'], Tools::getvalue($mvalue['name']));
}
}
}
}
$helper = $this->settingForm();
$html_form = $helper->generateForm($this->fields_form);
$html .= $this->displayConfirmation($this->l('Successfully Saved All Fields Values . '));
$html .= $html_form;
} else {
$helper = $this->settingForm();
$html_form = $helper->generateForm($this->fields_form);
$html .= $html_form;
}
return $html;
}
public function settingForm()
{
$languages = Language::getLanguages(false);
$default_lang = (int) Configuration::get('PS_LANG_DEFAULT');
$this->allFields();
$helper = new HelperForm();
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
foreach ($languages 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;
$multiple_arr = [];
foreach ($this->fields_form as $value) {
if (empty($multiple_arr)) {
if (isset($value['form']['input']) && !empty($value['form']['input'])) {
$multiple_arr = $value['form']['input'];
}
} else {
if (isset($value['form']['input']) && !empty($value['form']['input'])) {
$multiple_arr = array_merge($multiple_arr, $value['form']['input']);
}
}
}
foreach ($multiple_arr as $mvalue) {
if (isset($mvalue['lang']) && true == $mvalue['lang'] && isset($mvalue['name'])) {
foreach ($languages as $lang) {
$tmp = Configuration::get(self::$tvcmsblogshortname . $mvalue['name'], $lang['id_lang']);
$helper->fields_value[$mvalue['name']][$lang['id_lang']] = $tmp;
}
} else {
if (isset($mvalue['name'])) {
$helper->fields_value[$mvalue['name']] = Configuration::get(self::$tvcmsblogshortname
. $mvalue['name']);
}
}
}
return $helper;
}
public function getConfigPath()
{
$template = 'settings.php';
$themename = self::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;
}
// end settings
// tvcmsblog::uploadMedia('image');
public static function uploadMedia($name, $dir = null)
{
if (null == $dir) {
$dir = _PS_MODULE_DIR_ . self::$ModuleName . '/views/img/';
}
$file_name = false;
if (isset($_FILES[$name]) && isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name'])) {
$ext = Tools::substr($_FILES[$name]['name'], strrpos($_FILES[$name]['name'], '.') + 1);
$basename_file_name = basename($_FILES[$name]['name']);
if (file_exists(_PS_MODULE_DIR_ . self::$ModuleName . '/views/img/' . $basename_file_name)) {
$basename_file_name = date('YmdHis') . '_' . $basename_file_name;
}
$strlen = Tools::strlen($basename_file_name);
$strlen_ext = Tools::strlen($ext);
$basename_file_name = Tools::substr($basename_file_name, 0, $strlen - $strlen_ext);
$link_rewrite_file_name = Tools::link_rewrite($basename_file_name);
$link_rewrite_file_name = Tools::substr($link_rewrite_file_name, 0, 40);
$file_name = $link_rewrite_file_name . '.' . $ext;
$path = $dir . $file_name;
$getAllImageTypes = TvcmsImageTypeClass::getAllImageTypes();
if (!move_uploaded_file($_FILES[$name]['tmp_name'], $path)) {
return false;
} else {
if (isset($getAllImageTypes) && !empty($getAllImageTypes)) {
foreach ($getAllImageTypes as $imagetype) {
// ImageManager::resize($path, $dir . $imagetype['name'] . '-'
// .$file_name, (int)$imagetype['width'], (int)$imagetype['height'], $ext);
$w = (int) $imagetype['width'];
$h = (int) $imagetype['height'];
$resizeObj = new TvcmsBlogResizeClass($path);
$resizeObj->resizeImage($w, $h, 3);
$resizeObj->saveImage($dir . $imagetype['name'] . '-' . $file_name);
}
}
return $file_name;
}
} else {
return $file_name;
}
}
public static function bulkuploadMedia($name, $dir = null)
{
if (null == $dir) {
$dir = _PS_MODULE_DIR_ . self::$ModuleName . '/views/img/';
}
$results_imgs = [];
if (isset($_FILES[$name]) && isset($_FILES[$name]['tmp_name']) && !empty($_FILES[$name]['tmp_name'])) {
foreach ($_FILES[$name]['name'] as $fileskey => $filesvalue) {
// start upload
if (isset($_FILES[$name])
&& isset($_FILES[$name]['tmp_name'][$fileskey])
&& !empty($_FILES[$name]['tmp_name'][$fileskey])
) {
$ext = Tools::substr(
$_FILES[$name]['name'][$fileskey],
strrpos($_FILES[$name]['name'][$fileskey], '.') + 1
);
$basename_file_name = basename($_FILES[$name]['name'][$fileskey]);
$strlen = Tools::strlen($basename_file_name);
$strlen_ext = Tools::strlen($ext);
$basename_file_name = Tools::substr($basename_file_name, 0, $strlen - $strlen_ext);
$link_rewrite_file_name = Tools::link_rewrite($basename_file_name);
$file_name = $link_rewrite_file_name . '.' . $ext;
$path = $dir . $file_name;
$getAllImageTypes = TvcmsImageTypeClass::getAllImageTypes();
if (move_uploaded_file($_FILES[$name]['tmp_name'][$fileskey], $path)) {
if (isset($getAllImageTypes) && !empty($getAllImageTypes)) {
foreach ($getAllImageTypes as $imagetype) {
// ImageManager::resize($path, $dir . $imagetype['name'] . '-'
// .$file_name, (int)$imagetype['width'], (int)$imagetype['height'], $ext);
$w = (int) $imagetype['width'];
$h = (int) $imagetype['height'];
$resizeObj = new TvcmsBlogResizeClass($path);
$resizeObj->resizeImage($w, $h, 3);
$resizeObj->saveImage($dir . $imagetype['name'] . '-' . $file_name);
}
}
$results_imgs[] = $file_name;
}
}
}
if (file_exists(TVCMSBLOG_IMG_DIR . 'fileType')) {
unlink(TVCMSBLOG_IMG_DIR . 'fileType');
}
return $results_imgs;
} else {
return $results_imgs;
}
}
public function hookexecute()
{
$results = [];
$this->context->smarty->assign(['results' => $results]);
return $this->display(__FILE__, 'views/templates/front/tvcmsblog.tpl');
}
public function insertdummyData($categories, $class)
{
$languages = Language::getLanguages(false);
if (isset($categories) && !empty($categories)) {
$classobj = new $class();
foreach ($categories as $valu) {
if (isset($valu['lang']) && !empty($valu['lang'])) {
foreach ($valu['lang'] as $valukey => $value) {
foreach ($languages as $language) {
if (isset($valukey)) {
$classobj->{$valukey}[$language['id_lang']] = isset($value) ? $value : '';
}
}
}
}
if (isset($valu['notlang']) && !empty($valu['notlang'])) {
foreach ($valu['notlang'] as $valukey => $value) {
if (isset($valukey)) {
if ('id_shop' == $valukey) {
$classobj->{$valukey} = (int) Context::getContext()->shop->id;
} else {
$classobj->{$valukey} = $value;
}
}
}
}
$classobj->add();
}
}
}
public function reset()
{
$trn_tbl = [];
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmscategory`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmscategory_lang`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmscategory_shop`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmsposts`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmsposts_lang`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmsposts_shop`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcmspostmeta`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcms_image_type`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcms_category_post`';
$trn_tbl[] = 'TRUNCATE `' . _DB_PREFIX_ . 'tvcms_comments`';
foreach ($trn_tbl as $table) {
Db::getInstance()->execute($table);
}
}
public function createDefaultData()
{
$this->reset();
$id_lang = (int) Context::getContext()->language->id;
$id_shop = (int) Context::getContext()->shop->id;
$tvcmsblog_imagetype = '';
$tvcmsblog_categories = '';
$tvcmsblog_posts = '';
include_once dirname(__FILE__) . '/data/dummy_data.php';
$this->insertdummyData($tvcmsblog_imagetype, 'tvcmsimagetypeclass');
$this->insertdummyData($tvcmsblog_categories, 'tvcmscategoryclass');
$this->insertdummyData($tvcmsblog_posts, 'tvcmspostsclass');
return true;
}
public function hookdisplayAdminAfterHeader()
{
$controller = Tools::getValue('controller');
$configure = Tools::getValue('configure');
$controllers = ['Admintvcmspost', 'Admintvcmscategory', 'Admintvcmscomment', 'Admintvcmsimagetype'];
}
}