1387 lines
59 KiB
PHP
1387 lines
59 KiB
PHP
<?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
|
|
*/
|
|
|
|
if (!defined('_PS_VERSION_')) {
|
|
# module validation
|
|
exit;
|
|
}
|
|
|
|
include_once(_PS_MODULE_DIR_.'leoblog/loader.php');
|
|
|
|
class Leoblog extends Module
|
|
{
|
|
private static $leo_xml_fields = array('title', 'guid', 'description', 'author', 'comments', 'pubDate', 'source', 'link', 'content');
|
|
public $base_config_url;
|
|
private $_html = '';
|
|
|
|
public function __construct()
|
|
{
|
|
$currentIndex = '';
|
|
|
|
$this->name = 'leoblog';
|
|
$this->tab = 'front_office_features';
|
|
$this->version = '3.1.0';
|
|
$this->author = 'LeoTheme';
|
|
$this->controllers = array('blog', 'category', 'list');
|
|
$this->need_instance = 0;
|
|
$this->bootstrap = true;
|
|
|
|
$this->secure_key = Tools::encrypt($this->name);
|
|
|
|
parent::__construct();
|
|
|
|
$this->base_config_url = $currentIndex.'&configure='.$this->name.'&token='.Tools::getValue('token');
|
|
$this->displayName = $this->l('Leo Blog Management');
|
|
$this->description = $this->l('Manage Blog Content');
|
|
}
|
|
|
|
/**
|
|
* Uninstall
|
|
*/
|
|
private function uninstallModuleTab($class_sfx = '')
|
|
{
|
|
$tab_class = 'Admin'.Tools::ucfirst($this->name).Tools::ucfirst($class_sfx);
|
|
|
|
$id_tab = Tab::getIdFromClassName($tab_class);
|
|
if ($id_tab != 0) {
|
|
$tab = new Tab($id_tab);
|
|
$tab->delete();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Install Module Tabs
|
|
*/
|
|
private function installModuleTab($title, $class_sfx = '', $parent = '')
|
|
{
|
|
$class = 'Admin'.Tools::ucfirst($this->name).Tools::ucfirst($class_sfx);
|
|
@copy(_PS_MODULE_DIR_.$this->name.'/logo.gif', _PS_IMG_DIR_.'t/'.$class.'.gif');
|
|
if ($parent == '') {
|
|
# validate module
|
|
$position = Tab::getCurrentTabId();
|
|
} else {
|
|
# validate module
|
|
$position = Tab::getIdFromClassName($parent);
|
|
}
|
|
|
|
$tab1 = new Tab();
|
|
$tab1->class_name = $class;
|
|
$tab1->module = $this->name;
|
|
$tab1->id_parent = (int)$position;
|
|
$langs = Language::getLanguages(false);
|
|
foreach ($langs as $l) {
|
|
# validate module
|
|
$tab1->name[$l['id_lang']] = $title;
|
|
}
|
|
// $id_tab1 = $tab1->add(true, false);
|
|
$tab1->add(true, false);
|
|
}
|
|
|
|
/**
|
|
* @see Module::install()
|
|
*/
|
|
public function install()
|
|
{
|
|
/* Adds Module */
|
|
if (parent::install() && $this->createTables()) {
|
|
$res = true;
|
|
/* Creates tables */
|
|
// $res &= $this->createTables();
|
|
|
|
Configuration::updateValue('LEOBLOG_CATEORY_MENU', 1);
|
|
Configuration::updateValue('LEOBLOG_COLUMN_POSITION', 'left');
|
|
Configuration::updateValue('LEOBLOG_SHARE_FB', 1);
|
|
Configuration::updateValue('LEOBLOG_SHARE_TW', 1);
|
|
|
|
Configuration::updateValue('LEOBLOG_IMAGE_TYPE', 'jpg');
|
|
Configuration::updateValue('LEOBLOG_DASHBOARD_DEFAULTTAB', '#fieldset_0');
|
|
Configuration::updateValue('AP_INSTALLED_LEOBLOG', '1');
|
|
|
|
//DONGND: check thumb column, if not exist auto add
|
|
if (Db::getInstance()->executeS('SHOW TABLES LIKE \'%leoblog_blog%\'') && count(Db::getInstance()->executes('SELECT "thumb" FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'._DB_NAME_.'" AND TABLE_NAME = "'._DB_PREFIX_.'leoblog_blog" AND COLUMN_NAME = "thumb"'))<1) {
|
|
Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'leoblog_blog` ADD `thumb` varchar(255) DEFAULT NULL');
|
|
}
|
|
|
|
// $this->registerHook('header'); # remove code in 2016
|
|
$id_parent = Tab::getIdFromClassName('IMPROVE');
|
|
|
|
$class = 'Admin'.Tools::ucfirst($this->name).'Management';
|
|
$tab1 = new Tab();
|
|
$tab1->class_name = $class;
|
|
$tab1->module = $this->name;
|
|
$tab1->id_parent = $id_parent;
|
|
$langs = Language::getLanguages(false);
|
|
foreach ($langs as $l) {
|
|
# validate module
|
|
$tab1->name[$l['id_lang']] = $this->l('Leo Blog Management');
|
|
}
|
|
// $id_tab1 = $tab1->add(true, false);
|
|
$tab1->add(true, false);
|
|
|
|
# insert icon for tab
|
|
Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'tab` SET `icon` = "create" WHERE `id_tab` = "'.(int)$tab1->id.'"');
|
|
|
|
$this->installModuleTab('Blog Dashboard', 'dashboard', 'AdminLeoblogManagement');
|
|
$this->installModuleTab('Categories Management', 'categories', 'AdminLeoblogManagement');
|
|
$this->installModuleTab('Blogs Management', 'blogs', 'AdminLeoblogManagement');
|
|
$this->installModuleTab('Comment Management', 'comments', 'AdminLeoblogManagement');
|
|
$this->installModuleTab('Leo Blog Configuration', 'module', 'AdminLeoblogManagement');
|
|
|
|
//DONGND:: move image folder from module to theme
|
|
$this->moveImageFolder();
|
|
|
|
return (bool)$res;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function hookDisplayBackOfficeHeader()
|
|
{
|
|
$media_dir = $this->getMediaDir();
|
|
if (file_exists(_PS_THEME_DIR_.'css/modules/leoblog/assets/admin/blogmenu.css')) {
|
|
$this->context->controller->addCss($this->_path.'assets/admin/blogmenu.css');
|
|
} else {
|
|
$this->context->controller->addCss(__PS_BASE_URI__.$media_dir.'css/admin/blogmenu.css');
|
|
}
|
|
Media::addJsDef(array(
|
|
'url_ajax_blog' => $this->context->shop->getBaseURL(true, true).'modules/leoblog/adminajax.php',
|
|
));
|
|
}
|
|
|
|
public function postProcess()
|
|
{
|
|
if (count($this->errors) > 0) {
|
|
return;
|
|
}
|
|
|
|
if (Tools::isSubmit('submitBlockCategories')) {
|
|
# VALIDATE MODULE
|
|
Configuration::updateValue('LEOBLOG_CATEORY_MENU', (int)Tools::getValue('LEOBLOG_CATEORY_MENU'));
|
|
Configuration::updateValue('LEOBLOG_COLUMN_POSITION', Tools::getValue('LEOBLOG_COLUMN_POSITION'));
|
|
Configuration::updateValue('LEOBLOG_SHARE_FB', Tools::getValue('LEOBLOG_SHARE_FB'));
|
|
Configuration::updateValue('LEOBLOG_SHARE_TW', Tools::getValue('LEOBLOG_SHARE_TW'));
|
|
|
|
Configuration::updateValue('LEOBLOG_IMAGE_TYPE', Tools::getValue('LEOBLOG_IMAGE_TYPE'));
|
|
}
|
|
|
|
if (Tools::getValue('correctmodule')) {
|
|
$this->correctModule();
|
|
}
|
|
|
|
if (Tools::getValue('success')) {
|
|
switch (Tools::getValue('success')) {
|
|
case 'correct':
|
|
$this->_html .= $this->displayConfirmation($this->l('Correct Module is successful'));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getContent()
|
|
{
|
|
$this->errors = array();
|
|
if (!$this->access('configure')) {
|
|
$this->errors[] = $this->trans('You do not have permission to configure this.', array(), 'Admin.Notifications.Error');
|
|
$this->context->smarty->assign('errors', $this->errors);
|
|
$this->_html .= $this->context->smarty->fetch($this->local_path.'views/templates/admin/errors.tpl');
|
|
}
|
|
|
|
$this->postProcess();
|
|
|
|
$this->context->smarty->assign(array(
|
|
'link' => Context::getContext()->link,
|
|
));
|
|
$this->_html .= Context::getContext()->smarty->fetch($this->local_path.'views/templates/admin/correct_module.tpl');
|
|
return $this->_html.$this->renderForm();
|
|
}
|
|
|
|
public function getTreeForApPageBuilder($selected)
|
|
{
|
|
$cat = new Leoblogcat();
|
|
return $cat->getTreeForApPageBuilder($selected);
|
|
}
|
|
|
|
public function renderForm()
|
|
{
|
|
$fields_form = array(
|
|
'form' => array(
|
|
'legend' => array(
|
|
'title' => $this->l('Settings'),
|
|
'icon' => 'icon-cogs'
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Enable Categories Tree Block'),
|
|
'name' => 'LEOBLOG_CATEORY_MENU',
|
|
'desc' => $this->l('Activate The Module.'),
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled')
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled')
|
|
)
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Image type'),
|
|
'name' => 'LEOBLOG_IMAGE_TYPE',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id' => 'jpg',
|
|
'name' => $this->l('jpg')
|
|
),
|
|
array(
|
|
'id' => 'png',
|
|
'name' => $this->l('png')
|
|
),
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
'desc' => $this->l('For images png type. Keep png type or optimize to jpg type'),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Show column'),
|
|
'name' => 'LEOBLOG_COLUMN_POSITION',
|
|
'desc' => $this->l('Choose a position for block search'),
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id' => 'left',
|
|
'name' => $this->l('left')
|
|
),
|
|
array(
|
|
'id' => 'right',
|
|
'name' => $this->l('right')
|
|
)
|
|
),
|
|
'id' => 'id',
|
|
'name' => 'name'
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Button share facebook'),
|
|
'name' => 'LEOBLOG_SHARE_FB',
|
|
'desc' => $this->l('Show button share facebook on the blogs.'),
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled')
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled')
|
|
)
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Button share twitter'),
|
|
'name' => 'LEOBLOG_SHARE_TW',
|
|
'desc' => $this->l('Show button share twitter on the blogs.'),
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled')
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled')
|
|
)
|
|
),
|
|
),
|
|
),
|
|
'submit' => array(
|
|
'title' => $this->l('Save'),
|
|
'class' => 'btn btn-default')
|
|
),
|
|
);
|
|
|
|
$helper = new HelperForm();
|
|
$helper->show_toolbar = false;
|
|
$helper->table = $this->table;
|
|
$lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
|
|
$helper->default_form_language = $lang->id;
|
|
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
|
|
$helper->identifier = $this->identifier;
|
|
$helper->submit_action = 'submitBlockCategories';
|
|
$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 = array(
|
|
'fields_value' => $this->getConfigFieldsValues(),
|
|
'languages' => $this->context->controller->getLanguages(),
|
|
'id_language' => $this->context->language->id
|
|
);
|
|
|
|
return $helper->generateForm(array($fields_form));
|
|
}
|
|
|
|
public function getConfigFieldsValues()
|
|
{
|
|
return array(
|
|
'LEOBLOG_CATEORY_MENU' => Tools::getValue('LEOBLOG_CATEORY_MENU', Configuration::get('LEOBLOG_CATEORY_MENU')),
|
|
'LEOBLOG_COLUMN_POSITION' => Tools::getValue('LEOBLOG_COLUMN_POSITION', Configuration::get('LEOBLOG_COLUMN_POSITION')),
|
|
'LEOBLOG_SHARE_FB' => Tools::getValue('LEOBLOG_SHARE_FB', Configuration::get('LEOBLOG_SHARE_FB')),
|
|
'LEOBLOG_SHARE_TW' => Tools::getValue('LEOBLOG_SHARE_TW', Configuration::get('LEOBLOG_SHARE_TW')),
|
|
'LEOBLOG_IMAGE_TYPE' => Tools::getValue('LEOBLOG_IMAGE_TYPE', Configuration::get('LEOBLOG_IMAGE_TYPE')),
|
|
|
|
);
|
|
}
|
|
|
|
public function _prepareHook()
|
|
{
|
|
$helper = LeoBlogHelper::getInstance();
|
|
|
|
$category = new Leoblogcat(Tools::getValue('id_leoblogcat'), $this->context->language->id);
|
|
|
|
$tree = $category->getFrontEndTree((int)$category->id_leoblogcat > 1 ? $category->id_leoblogcat : 1, $helper);
|
|
$this->smarty->assign('tree', $tree);
|
|
if ($category->id_leoblogcat) {
|
|
# validate module
|
|
$this->smarty->assign('currentCategory', $category);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function hookDisplayHeader()
|
|
{
|
|
$config = LeoBlogConfig::getInstance();
|
|
$template = $config->get('template');
|
|
$media_dir = $this->getMediaDir();
|
|
if (Tools::getValue('bloglayout') != null) {
|
|
if (is_dir(_PS_THEME_DIR_.'modules/leoblog/views/templates/front/'.Tools::getValue('bloglayout'))
|
|
|| is_dir(_PS_MODULE_DIR_ .'leoblog/views/templates/front/'.Tools::getValue('bloglayout'))) {
|
|
$template = Tools::getValue('bloglayout');
|
|
}
|
|
}
|
|
if (file_exists(_PS_THEME_DIR_.$media_dir.'css/'.$template.'.css') || file_exists(_PS_THEME_DIR_.'assets/css/'.$media_dir.'css/'.$template.'.css')) {
|
|
Context::getContext()->controller->addCSS(__PS_BASE_URI__.$media_dir.'css/'.$template.'.css', 'all');
|
|
} else {
|
|
if (file_exists(_PS_MODULE_DIR_ .'leoblog/views/css/'.$template.'.css')) {
|
|
Context::getContext()->controller->addCSS(_PS_MODULE_DIR_ .'leoblog/views/css/'.$template.'.css');
|
|
} else {
|
|
if (file_exists(_PS_THEME_DIR_.'css/modules/leoblog/assets/leoblog.css')) {
|
|
Context::getContext()->controller->addCSS(__PS_BASE_URI__.$media_dir.'assets/leoblog.css', 'all');
|
|
} else {
|
|
Context::getContext()->controller->addCSS(__PS_BASE_URI__.$media_dir.'css/leoblog.css', 'all');
|
|
}
|
|
}
|
|
}
|
|
|
|
//DONGND:: update language link
|
|
if (Tools::getValue('module') == 'leoblog') {
|
|
$langs = Language::getLanguages(false);
|
|
if (count($langs) > 1) {
|
|
$config = LeoBlogConfig::getInstance();
|
|
$array_list_rewrite = array();
|
|
$array_category_rewrite = array();
|
|
$array_config_category_rewrite = array();
|
|
$array_blog_rewrite = array();
|
|
$array_config_blog_rewrite = array();
|
|
$config_url_use_id = $config->get('url_use_id');
|
|
|
|
$page_name = Dispatcher::getInstance()->getController();
|
|
|
|
if ($page_name == 'blog') {
|
|
if ($config_url_use_id == 1) {
|
|
$id_blog = Tools::getValue('id');
|
|
} else {
|
|
$id_shop = (int)Context::getContext()->shop->id;
|
|
$block_rewrite = Tools::getValue('rewrite');
|
|
$sql = 'SELECT bl.id_leoblog_blog FROM '._DB_PREFIX_.'leoblog_blog_lang bl';
|
|
$sql .= ' INNER JOIN '._DB_PREFIX_.'leoblog_blog_shop bs on bl.id_leoblog_blog=bs.id_leoblog_blog AND id_shop='.(int)$id_shop;
|
|
$sql .= " AND link_rewrite = '".pSQL($block_rewrite)."'";
|
|
if ($row = Db::getInstance()->getRow($sql)) {
|
|
$id_blog = $row['id_leoblog_blog'];
|
|
}
|
|
}
|
|
$blog_obj = new Leoblogblog($id_blog);
|
|
}
|
|
|
|
if ($page_name == 'category') {
|
|
if ($config_url_use_id == 1) {
|
|
$id_category = Tools::getValue('id');
|
|
} else {
|
|
$id_shop = (int)Context::getContext()->shop->id;
|
|
$category_rewrite = Tools::getValue('rewrite');
|
|
$sql = 'SELECT cl.id_leoblogcat FROM '._DB_PREFIX_.'leoblogcat_lang cl';
|
|
$sql .= ' INNER JOIN '._DB_PREFIX_.'leoblogcat_shop cs on cl.id_leoblogcat=cs.id_leoblogcat AND id_shop='.(int)$id_shop;
|
|
$sql .= ' INNER JOIN '._DB_PREFIX_.'leoblogcat cc on cl.id_leoblogcat=cc.id_leoblogcat AND cl.id_leoblogcat != cc.id_parent'; # FIX : PARENT IS NOT THIS CATEGORY
|
|
$sql .= " AND link_rewrite = '".pSQL($category_rewrite)."'";
|
|
|
|
if ($row = Db::getInstance()->getRow($sql)) {
|
|
$id_category = $row['id_leoblogcat'];
|
|
}
|
|
}
|
|
$blog_category_obj = new Leoblogcat($id_category);
|
|
}
|
|
|
|
foreach ($langs as $lang) {
|
|
$array_list_rewrite[$lang['iso_code']] = $config->get('link_rewrite_'.$lang['id_lang'], 'blog');
|
|
|
|
if (isset($id_blog)) {
|
|
$array_blog_rewrite[$lang['iso_code']] = $blog_obj->link_rewrite[$lang['id_lang']];
|
|
if ($config_url_use_id == 0) {
|
|
$array_config_blog_rewrite[$lang['iso_code']] = $config->get('detail_rewrite_'.$lang['id_lang'], 'detail');
|
|
}
|
|
}
|
|
|
|
if (isset($id_category)) {
|
|
$array_category_rewrite[$lang['iso_code']] = $blog_category_obj->link_rewrite[$lang['id_lang']];
|
|
if ($config_url_use_id == 0) {
|
|
$array_config_category_rewrite[$lang['iso_code']] = $config->get('category_rewrite_'.$lang['id_lang'], 'category');
|
|
}
|
|
}
|
|
};
|
|
|
|
Media::addJsDef(array(
|
|
'array_list_rewrite' => $array_list_rewrite,
|
|
'array_category_rewrite' => $array_category_rewrite,
|
|
'array_blog_rewrite' => $array_blog_rewrite,
|
|
'array_config_category_rewrite' => $array_config_category_rewrite,
|
|
'array_config_blog_rewrite' => $array_config_blog_rewrite,
|
|
'config_url_use_id' => $config_url_use_id
|
|
));
|
|
}
|
|
}
|
|
}
|
|
|
|
public function hookleoLeftBlog()
|
|
{
|
|
$html = '';
|
|
$fc = Tools::getValue('fc');
|
|
$module = Tools::getValue('module');
|
|
|
|
if ($fc == 'module' && $module =='leoblog') {
|
|
if (Configuration::get('LEOBLOG_COLUMN_POSITION') == 'left') {
|
|
$html .= $this->searchBlog();
|
|
}
|
|
$html .= $this->leftCategoryBlog();
|
|
$html .= $this->leftPopularBlog();
|
|
$html .= $this->leftRecentBlog();
|
|
$html .= $this->lefTagBlog();
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function hookLeftColumn()
|
|
{
|
|
$html = '';
|
|
$fc = Tools::getValue('fc');
|
|
$module = Tools::getValue('module');
|
|
|
|
if ($fc == 'module' && $module =='leoblog') {
|
|
if (Configuration::get('LEOBLOG_COLUMN_POSITION') == 'left') {
|
|
$html .= $this->searchBlog();
|
|
}
|
|
$html .= $this->leftCategoryBlog();
|
|
$html .= $this->leftPopularBlog();
|
|
$html .= $this->leftRecentBlog();
|
|
$html .= $this->lefTagBlog();
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function searchBlog()
|
|
{
|
|
$html = '';
|
|
|
|
if (Configuration::get('LEOBLOG_COLUMN_POSITION') && $this->_prepareHook()) {
|
|
$html .= $this->display(__FILE__, 'views/templates/hook/search_blog.tpl');
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function leftCategoryBlog()
|
|
{
|
|
$html = '';
|
|
|
|
if (Configuration::get('LEOBLOG_CATEORY_MENU') && $this->_prepareHook()) {
|
|
$html .= $this->display(__FILE__, 'views/templates/hook/categories_menu.tpl');
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function leftPopularBlog()
|
|
{
|
|
$html = '';
|
|
|
|
$config = LeoBlogConfig::getInstance();
|
|
if ($config->get('show_popular_blog', 0)) {
|
|
$limit = (int)$config->get('limit_popular_blog', 5);
|
|
$helper = LeoBlogHelper::getInstance();
|
|
$image_w = (int)$config->get('listing_leading_img_width', 690);
|
|
$image_h = (int)$config->get('listing_leading_img_height', 300);
|
|
$authors = array();
|
|
|
|
$leading_blogs = array();
|
|
if ($limit > 0) {
|
|
$leading_blogs = LeoBlogBlog::getListBlogs(null, $this->context->language->id, 1, $limit, 'hits', 'DESC', array(), true);
|
|
}
|
|
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;
|
|
}
|
|
|
|
$this->smarty->assign('leading_blogs', $leading_blogs);
|
|
$html .= $this->display(__FILE__, 'views/templates/hook/left_popular.tpl');
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function leftRecentBlog()
|
|
{
|
|
$html = '';
|
|
|
|
$config = LeoBlogConfig::getInstance();
|
|
if ($config->get('show_recent_blog', 0)) {
|
|
$limit = (int)$config->get('limit_recent_blog', 5);
|
|
$config = LeoBlogConfig::getInstance();
|
|
$helper = LeoBlogHelper::getInstance();
|
|
$image_w = (int)$config->get('listing_leading_img_width', 690);
|
|
$image_h = (int)$config->get('listing_leading_img_height', 300);
|
|
$authors = array();
|
|
|
|
$leading_blogs = array();
|
|
if ($limit > 0) {
|
|
$leading_blogs = LeoBlogBlog::getListBlogs(null, $this->context->language->id, 1, $limit, 'date_add', 'DESC', array(), true);
|
|
}
|
|
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;
|
|
}
|
|
|
|
$this->smarty->assign('leading_blogs', $leading_blogs);
|
|
$html .= $this->display(__FILE__, 'views/templates/hook/left_recent.tpl');
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
public function lefTagBlog()
|
|
{
|
|
$html = '';
|
|
$helper = LeoBlogHelper::getInstance();
|
|
|
|
$config = LeoBlogConfig::getInstance();
|
|
if ($config->get('show_all_tags', 0)) {
|
|
$leading_blogs = LeoBlogBlog::getListBlogs(null, $this->context->language->id, 1, 100000, 'date_add', 'DESC', array(), true);
|
|
|
|
$tags_temp = array();
|
|
foreach ($leading_blogs as $key => $value) {
|
|
$tags_temp = array_merge($tags_temp, explode(",", $value['tags']));
|
|
}
|
|
// validate module
|
|
unset($key);
|
|
|
|
$tags_temp = array_unique($tags_temp);
|
|
$tags = array();
|
|
foreach ($tags_temp as $tag_temp) {
|
|
$tags[] = array(
|
|
'name' => $tag_temp,
|
|
'link' => $helper->getBlogTagLink($tag_temp)
|
|
);
|
|
}
|
|
|
|
$this->smarty->assign('leoblogtags', $tags);
|
|
$html .= $this->display(__FILE__, 'views/templates/hook/left_leoblogtags.tpl');
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
/*
|
|
function hookRSS($params)
|
|
{
|
|
if (!$this->isCached('leoblogrss.tpl', $cacheId)) {
|
|
// Getting data
|
|
$config = LeoBlogConfig::getInstance();
|
|
$title = strval($config->get('rss_title_item', 'RSS FEED'));
|
|
$url = Tools::htmlentitiesutf8('http://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__).'modules/leoblog/rss.php';
|
|
$nb = (int)$config->get('rss_limit_item', 1);
|
|
$cacheId = $this->getCacheId($this->name.'-'.date("YmdH"));
|
|
$rss_links = array();
|
|
if ($url && ($contents = Tools::file_get_contents($url)))
|
|
try
|
|
{
|
|
if (@$src = new XML_Feed_Parser($contents))
|
|
for ($i = 0; $i < ($nb ? $nb : 5); $i++)
|
|
if (@$item = $src->getEntryByOffset($i)) {
|
|
$xmlValues = array();
|
|
foreach (self::$leo_xml_fields as $xmlField)
|
|
$xmlValues[$xmlField] = $item->__get($xmlField);
|
|
$xmlValues['enclosure'] = $item->getEnclosure();
|
|
# Compatibility
|
|
$xmlValues['url'] = $xmlValues['link'];
|
|
$rss_links[] = $xmlValues;
|
|
}
|
|
}
|
|
catch (XML_Feed_Parser_Exception $e) {
|
|
Tools::dieOrLog(sprintf($this->l('Error: invalid RSS feed in "leoblogrss" module: %s'), $e->getMessage()), false);
|
|
}
|
|
|
|
// Display smarty
|
|
$this->smarty->assign(array('title' => ($title ? $title : $this->l('RSS feed')), 'rss_links' => $rss_links));
|
|
}
|
|
|
|
return $this->display(__FILE__, 'views/templates/hook/leoblogrss.tpl', $cacheId);
|
|
}
|
|
*/
|
|
|
|
protected function getCacheId($name = null)
|
|
{
|
|
$name = ($name ? $name.'|' : '').implode('-', Customer::getGroupsStatic($this->context->customer->id));
|
|
return parent::getCacheId($name);
|
|
}
|
|
|
|
public function hookRightcolumn($params)
|
|
{
|
|
$html = '';
|
|
$fc = Tools::getValue('fc');
|
|
$module = Tools::getValue('module');
|
|
|
|
if ($fc == 'module' && $module =='leoblog') {
|
|
if (Configuration::get('LEOBLOG_COLUMN_POSITION') == 'right') {
|
|
$html .= $this->searchBlog();
|
|
}
|
|
$html .= $this->leftCategoryBlog();
|
|
$html .= $this->leftPopularBlog();
|
|
$html .= $this->leftRecentBlog();
|
|
$html .= $this->lefTagBlog();
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* @see Module::uninstall()
|
|
*/
|
|
public function uninstall()
|
|
{
|
|
if (parent::uninstall()) {
|
|
$res = true;
|
|
$this->unregisterLeoHook();
|
|
$this->uninstallModuleTab('management');
|
|
$this->uninstallModuleTab('dashboard');
|
|
$this->uninstallModuleTab('categories');
|
|
$this->uninstallModuleTab('blogs');
|
|
$this->uninstallModuleTab('comments');
|
|
$this->uninstallModuleTab('module');
|
|
|
|
$res &= $this->deleteTables();
|
|
$this->deleteConfiguration();
|
|
|
|
return (bool)$res;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function deleteTables()
|
|
{
|
|
return Db::getInstance()->execute('
|
|
DROP TABLE IF EXISTS
|
|
`'._DB_PREFIX_.'leoblogcat`,
|
|
`'._DB_PREFIX_.'leoblogcat_lang`,
|
|
`'._DB_PREFIX_.'leoblogcat_shop`,
|
|
`'._DB_PREFIX_.'leoblog_comment`,
|
|
`'._DB_PREFIX_.'leoblog_blog`,
|
|
`'._DB_PREFIX_.'leoblog_blog_lang`,
|
|
`'._DB_PREFIX_.'leoblog_blog_shop`');
|
|
}
|
|
|
|
public function deleteConfiguration()
|
|
{
|
|
Configuration::deleteByName('LEOBLOG_CATEORY_MENU');
|
|
Configuration::deleteByName('LEOBLOG_COLUMN_POSITION');
|
|
Configuration::deleteByName('LEOBLOG_SHARE_FB');
|
|
Configuration::deleteByName('LEOBLOG_SHARE_TW');
|
|
Configuration::deleteByName('LEOBLOG_IMAGE_TYPE');
|
|
|
|
Configuration::deleteByName('LEOBLOG_DASHBOARD_DEFAULTTAB');
|
|
Configuration::deleteByName('LEOBLOG_CFG_GLOBAL');
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Creates tables
|
|
*/
|
|
protected function createTables()
|
|
{
|
|
if ($this->_installDataSample()) {
|
|
return true;
|
|
} else {
|
|
$res = true;
|
|
// $res &= $this->createConfiguration();
|
|
$res &= $this->registerLeoHook();
|
|
include_once(dirname(__FILE__).'/install/install.php');
|
|
return $res;
|
|
}
|
|
}
|
|
|
|
private function _installDataSample()
|
|
{
|
|
if (!file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
|
return false;
|
|
}
|
|
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php');
|
|
|
|
$sample = new Datasample(1);
|
|
return $sample->processImport($this->name);
|
|
}
|
|
|
|
protected function installSample()
|
|
{
|
|
$res = 1;
|
|
include_once(dirname(__FILE__).'/install/sample.php');
|
|
return $res;
|
|
}
|
|
|
|
// public function hookDisplayNav($params)
|
|
// {
|
|
// return $this->hookDisplayTop($params);
|
|
// }
|
|
|
|
/**
|
|
* Show correct re_write url on BlockLanguage module
|
|
* http://ps_1609_test/vn/index.php?controller=blog?id=9&fc=module&module=leoblog
|
|
* $default_rewrite = array(
|
|
'1' => 'http://ps_1609_test/en/blog/lang-en-b9.html',
|
|
'2' => 'http://ps_1609_test/vn/blog/lang-vn-b9.html',
|
|
'3' => 'http://ps_1609_test/cb/blog/lang-cb-b9.html',
|
|
);
|
|
*
|
|
*/
|
|
public function hookDisplayBanner()
|
|
{
|
|
if (Module::isEnabled('blocklanguages')) {
|
|
$default_rewrite = array();
|
|
$module = Validate::isModuleName(Tools::getValue('module')) ? Tools::getValue('module') : '';
|
|
$controller = Tools::getValue('controller');
|
|
if ($module == 'leoblog' && $controller == 'blog' && ($id_blog = (int)Tools::getValue('id'))) {
|
|
$languages = Language::getLanguages(true, $this->context->shop->id);
|
|
if (!count($languages)) {
|
|
return false;
|
|
}
|
|
$link = new Link();
|
|
|
|
foreach ($languages as $lang) {
|
|
$config = LeoBlogConfig::getInstance();
|
|
$config->cur_id_lang = $lang['id_lang'];
|
|
|
|
$cur_key = 'link_rewrite'.'_'.Context::getContext()->language->id;
|
|
$cur_prefix = '/'.$config->cur_prefix_rewrite = $config->get($cur_key, 'blog').'/';
|
|
|
|
$other_key = 'link_rewrite'.'_'.$lang['id_lang'];
|
|
$other_prefix = '/'.$config->cur_prefix_rewrite = $config->get($other_key, 'blog').'/';
|
|
|
|
$blog = new LeoBlogBlog($id_blog, $lang['id_lang']);
|
|
$temp_link = $link->getModuleLink($module, $controller, array('id' => $id_blog, 'rewrite' => $blog->link_rewrite), null, $lang['id_lang']);
|
|
$default_rewrite[$lang['id_lang']] = str_replace($cur_prefix, $other_prefix, $temp_link);
|
|
// $default_rewrite[$lang['id_lang']] = $link->getModuleLink($module, $controller, array('id'=>$id_blog, 'rewrite'=>$blog->link_rewrite), null, $lang['id_lang']);
|
|
}
|
|
} elseif ($module == 'leoblog' && $controller == 'category' && ($id_blog = (int)Tools::getValue('id'))) {
|
|
$languages = Language::getLanguages(true, $this->context->shop->id);
|
|
if (!count($languages)) {
|
|
return false;
|
|
}
|
|
$link = new Link();
|
|
|
|
foreach ($languages as $lang) {
|
|
$config = LeoBlogConfig::getInstance();
|
|
$config->cur_id_lang = $lang['id_lang'];
|
|
|
|
$cur_key = 'link_rewrite'.'_'.Context::getContext()->language->id;
|
|
$cur_prefix = '/'.$config->cur_prefix_rewrite = $config->get($cur_key, 'blog').'/';
|
|
|
|
$other_key = 'link_rewrite'.'_'.$lang['id_lang'];
|
|
$other_prefix = '/'.$config->cur_prefix_rewrite = $config->get($other_key, 'blog').'/';
|
|
|
|
$blog = new Leoblogcat($id_blog, $lang['id_lang']);
|
|
$temp_link = $link->getModuleLink($module, $controller, array('id' => $id_blog, 'rewrite' => $blog->link_rewrite), null, $lang['id_lang']);
|
|
$default_rewrite[$lang['id_lang']] = str_replace($cur_prefix, $other_prefix, $temp_link);
|
|
// $default_rewrite[$lang['id_lang']] = $link->getModuleLink($module, $controller, array('id'=>$id_blog, 'rewrite'=>$blog->link_rewrite), null, $lang['id_lang']);
|
|
}
|
|
} elseif ($module == 'leoblog' && $controller == 'list') {
|
|
$languages = Language::getLanguages(true, $this->context->shop->id);
|
|
if (!count($languages)) {
|
|
return false;
|
|
}
|
|
$link = new Link();
|
|
|
|
foreach ($languages as $lang) {
|
|
$config = LeoBlogConfig::getInstance();
|
|
$config->cur_id_lang = $lang['id_lang'];
|
|
|
|
$cur_key = 'link_rewrite'.'_'.Context::getContext()->language->id;
|
|
$cur_prefix = '/'.$config->cur_prefix_rewrite = $config->get($cur_key, 'blog').'';
|
|
|
|
$other_key = 'link_rewrite'.'_'.$lang['id_lang'];
|
|
$other_prefix = '/'.$config->cur_prefix_rewrite = $config->get($other_key, 'blog').'';
|
|
|
|
$temp_link = $link->getModuleLink($module, $controller, array(), null, $lang['id_lang']);
|
|
$default_rewrite[$lang['id_lang']] = str_replace($cur_prefix, $other_prefix, $temp_link);
|
|
}
|
|
}
|
|
|
|
$this->context->smarty->assign('lang_leo_rewrite_urls', $default_rewrite);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Hook Display Top
|
|
*/
|
|
public function hookDisplayTop($params)
|
|
{
|
|
# validate module
|
|
unset($params);
|
|
$this->smarty->assign(array(
|
|
'hook_name' => 'hookDisplayTop',
|
|
'title' => LeoBlogConfig::getInstance()->get('blog_link_title_'.Context::getContext()->language->id, 'Blog'),
|
|
'link' => LeoBlogHelper::getInstance()->getFontBlogLink(),
|
|
));
|
|
return $this->display(__FILE__, 'link_list.tpl');
|
|
}
|
|
|
|
/**
|
|
* Hook ModuleRoutes
|
|
*/
|
|
public function hookModuleRoutes($route = '', $detail = array())
|
|
{
|
|
$config = LeoBlogConfig::getInstance();
|
|
Configuration::deleteByName('PS_ROUTE_module-leoblog-list');
|
|
Configuration::deleteByName('PS_ROUTE_module-leoblog-blog');
|
|
Configuration::deleteByName('PS_ROUTE_module-leoblog-category');
|
|
|
|
$routes = array();
|
|
|
|
$routes['module-leoblog-list'] = array(
|
|
'controller' => 'list',
|
|
'rule' => _LEO_BLOG_REWRITE_ROUTE_.'.html',
|
|
'keywords' => array(
|
|
),
|
|
'params' => array(
|
|
'fc' => 'module',
|
|
'module' => 'leoblog'
|
|
)
|
|
);
|
|
if (Tools::getIsset('configure') && Tools::getValue('configure') == 'gsitemap') {
|
|
return $routes;
|
|
}
|
|
if ($config->get('url_use_id', 1)) {
|
|
// URL HAVE ID
|
|
$routes['module-leoblog-blog'] = array(
|
|
'controller' => 'blog',
|
|
'rule' => _LEO_BLOG_REWRITE_ROUTE_.'/{rewrite}-b{id}.html',
|
|
'keywords' => array(
|
|
'id' => array('regexp' => '[0-9]+', 'param' => 'id'),
|
|
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'),
|
|
),
|
|
'params' => array(
|
|
'fc' => 'module',
|
|
'module' => 'leoblog',
|
|
|
|
)
|
|
);
|
|
|
|
$routes['module-leoblog-category'] = array(
|
|
'controller' => 'category',
|
|
'rule' => _LEO_BLOG_REWRITE_ROUTE_.'/{rewrite}-c{id}.html',
|
|
'keywords' => array(
|
|
'id' => array('regexp' => '[0-9]+', 'param' => 'id'),
|
|
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'),
|
|
),
|
|
'params' => array(
|
|
'fc' => 'module',
|
|
'module' => 'leoblog',
|
|
|
|
)
|
|
);
|
|
} else {
|
|
// REMOVE ID FROM URL
|
|
$category_rewrite = 'category_rewrite'.'_'.Context::getContext()->language->id;
|
|
$category_rewrite = $config->get($category_rewrite, 'category');
|
|
$detail_rewrite = 'detail_rewrite'.'_'.Context::getContext()->language->id;
|
|
$detail_rewrite = $config->get($detail_rewrite, 'detail');
|
|
|
|
$routes['module-leoblog-blog'] = array(
|
|
'controller' => 'blog',
|
|
'rule' => _LEO_BLOG_REWRITE_ROUTE_.'/'.$detail_rewrite.'/{rewrite}.html',
|
|
'keywords' => array(
|
|
'id' => array('regexp' => '[0-9]+', 'param' => 'id'),
|
|
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'),
|
|
),
|
|
'params' => array(
|
|
'fc' => 'module',
|
|
'module' => 'leoblog',
|
|
)
|
|
);
|
|
|
|
$routes['module-leoblog-category'] = array(
|
|
'controller' => 'category',
|
|
'rule' => _LEO_BLOG_REWRITE_ROUTE_.'/'.$category_rewrite.'/{rewrite}.html',
|
|
'keywords' => array(
|
|
'id' => array('regexp' => '[0-9]+', 'param' => 'id'),
|
|
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'rewrite'),
|
|
),
|
|
'params' => array(
|
|
'fc' => 'module',
|
|
'module' => 'leoblog',
|
|
)
|
|
);
|
|
}
|
|
return $routes;
|
|
}
|
|
|
|
/**
|
|
* Get lastest blog for ApPageBuilder module
|
|
* @param type $params
|
|
* @return type
|
|
*/
|
|
public function getBlogsFont($params)
|
|
{
|
|
$config = LeoBlogConfig::getInstance();
|
|
$id_categories = '';
|
|
if (isset($params['chk_cat'])) {
|
|
# validate module
|
|
$id_categories = $params['chk_cat'];
|
|
}
|
|
$order_by = isset($params['order_by']) ? $params['order_by'] : 'id_leoblog_blog';
|
|
$order_way = isset($params['order_way']) ? $params['order_way'] : 'DESC';
|
|
$helper = LeoBlogHelper::getInstance();
|
|
$limit = (int)$params['nb_blogs'];
|
|
$blogs = LeoBlogBlog::getListBlogsForApPageBuilder($id_categories, $this->context->language->id, $limit, $order_by, $order_way, array(), true);
|
|
// $authors = array(); #validate module
|
|
$image_w = (int)$config->get('listing_leading_img_width', 690);
|
|
$image_h = (int)$config->get('listing_leading_img_height', 300);
|
|
foreach ($blogs as $key => &$blog) {
|
|
$blog = LeoBlogHelper::buildBlog($helper, $blog, $image_w, $image_h, $config, true);
|
|
|
|
if ((bool)Module::isEnabled('appagebuilder')) {
|
|
$appagebuilder = Module::getInstanceByName('appagebuilder');
|
|
$blog['description'] = $appagebuilder->buildShortCode($blog['description']);
|
|
$blog['content'] = $appagebuilder->buildShortCode($blog['content']);
|
|
}
|
|
|
|
if ($blog['author_name']) {
|
|
# HAVE AUTHOR IN BO
|
|
$blog['author'] = $blog['author_name'];
|
|
$blog['author_link'] = $helper->getBlogAuthorLink($blog['author_name']);
|
|
} elseif ($blog['id_employee']) {
|
|
# AUTO GENERATE AUTHOR
|
|
$employee = new Employee($blog['id_employee']);
|
|
$blog['author'] = $employee->firstname.' '.$employee->lastname;
|
|
$blog['author_link'] = $helper->getBlogAuthorLink($employee->id);
|
|
} else {
|
|
$blog['author'] = '';
|
|
$blog['author_link'] = '';
|
|
}
|
|
|
|
# validate module
|
|
unset($key);
|
|
}
|
|
return $blogs;
|
|
}
|
|
|
|
/**
|
|
* Run only one when install/change Theme_of_Leo
|
|
*/
|
|
public function hookActionAdminBefore($params)
|
|
{
|
|
if (isset($params) && isset($params['controller']) && isset($params['controller']->theme_manager)) {
|
|
// Validate : call hook from theme_manager
|
|
} else {
|
|
// Other module call this hook -> duplicate data
|
|
return;
|
|
}
|
|
|
|
$this->unregisterHook('actionAdminBefore');
|
|
|
|
# FIX : update Prestashop by 1-Click module -> NOT NEED RESTORE DATABASE
|
|
$ap_version = Configuration::get('AP_CURRENT_VERSION');
|
|
if ($ap_version != false) {
|
|
$ps_version = Configuration::get('PS_VERSION_DB');
|
|
$versionCompare = version_compare($ap_version, $ps_version);
|
|
if ($versionCompare != 0) {
|
|
// Just update Prestashop
|
|
Configuration::updateValue('AP_CURRENT_VERSION', $ps_version);
|
|
return;
|
|
}
|
|
}
|
|
|
|
# WHENE INSTALL THEME, INSERT HOOK FROM DATASAMPLE IN THEME
|
|
$hook_from_theme = false;
|
|
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
|
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php');
|
|
$sample = new Datasample();
|
|
if ($sample->processHook($this->name)) {
|
|
$hook_from_theme = true;
|
|
};
|
|
}
|
|
|
|
# INSERT HOOK FROM MODULE_DATASAMPLE
|
|
if ($hook_from_theme == false) {
|
|
$this->registerLeoHook();
|
|
}
|
|
|
|
# WHEN INSTALL MODULE, NOT NEED RESTORE DATABASE IN THEME
|
|
$install_module = (int)Configuration::get('AP_INSTALLED_LEOBLOG', 0);
|
|
if ($install_module) {
|
|
Configuration::updateValue('AP_INSTALLED_LEOBLOG', '0'); // next : allow restore sample
|
|
return;
|
|
}
|
|
|
|
# INSERT DATABASE FROM THEME_DATASAMPLE
|
|
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
|
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php');
|
|
$sample = new Datasample();
|
|
$sample->processImport($this->name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Common method
|
|
* Resgister all hook for module
|
|
*/
|
|
public function registerLeoHook()
|
|
{
|
|
$res = true;
|
|
$res &= $this->registerHook('header');
|
|
$res &= $this->registerHook('displayTop');
|
|
$res &= $this->registerHook('leftColumn');
|
|
$res &= $this->registerHook('leoLeftBlog');
|
|
$res &= $this->registerHook('rightColumn');
|
|
$res &= $this->registerHook('moduleRoutes');
|
|
$res &= $this->registerHook('displayBackOfficeHeader');
|
|
# Multishop create new shop
|
|
$res &= $this->registerHook('actionAdminShopControllerSaveAfter');
|
|
$res &= $this->registerHook('actionAdminControllerSetMedia');
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* Common method
|
|
* Unresgister all hook for module
|
|
*/
|
|
public function unregisterLeoHook()
|
|
{
|
|
$res = true;
|
|
$res &= $this->unregisterHook('header');
|
|
$res &= $this->unregisterHook('displayTop');
|
|
$res &= $this->unregisterHook('leftColumn');
|
|
$res &= $this->unregisterHook('leoLeftBlog');
|
|
$res &= $this->unregisterHook('rightColumn');
|
|
$res &= $this->unregisterHook('moduleRoutes');
|
|
$res &= $this->unregisterHook('displayBackOfficeHeader');
|
|
# Multishop create new shop
|
|
$res &= $this->unregisterHook('actionAdminShopControllerSaveAfter');
|
|
$res &= $this->unregisterHook('actionAdminControllerSetMedia');
|
|
return $res;
|
|
}
|
|
|
|
public function correctModule()
|
|
{
|
|
//DONGND:: check thumb column, if not exist auto add
|
|
if (Db::getInstance()->executeS('SHOW TABLES LIKE \'%leoblog_blog%\'') && count(Db::getInstance()->executes('SELECT "thumb" FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'._DB_NAME_.'" AND TABLE_NAME = "'._DB_PREFIX_.'leoblog_blog" AND COLUMN_NAME = "thumb"'))<1) {
|
|
Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'leoblog_blog` ADD `thumb` varchar(255) DEFAULT NULL');
|
|
}
|
|
|
|
//DONGND:: check author name column, if not exist auto add
|
|
// Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'leoblog_blog` ADD `author_name` varchar(255) DEFAULT NULL');
|
|
if (Db::getInstance()->executeS('SHOW TABLES LIKE \'%leoblog_blog%\'') && count(Db::getInstance()->executes('SELECT "author_name" FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'._DB_NAME_.'" AND TABLE_NAME = "'._DB_PREFIX_.'leoblog_blog" AND COLUMN_NAME = "author_name"'))<1) {
|
|
Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'leoblog_blog` ADD `author_name` varchar(255) DEFAULT NULL');
|
|
}
|
|
// check `favorite` name column, if not exist auto add
|
|
if (Db::getInstance()->executeS('SHOW TABLES LIKE \'%leoblog_blog%\'') && count(Db::getInstance()->executes('SELECT "favorite" FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'._DB_NAME_.'" AND TABLE_NAME = "'._DB_PREFIX_.'leoblog_blog" AND COLUMN_NAME = "favorite"'))<1) {
|
|
Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'leoblog_blog` ADD `favorite` tinyint(1) NOT NULL');
|
|
}
|
|
// check `subtitle` name column, if not exist auto add
|
|
if (Db::getInstance()->executeS('SHOW TABLES LIKE \'%leoblog_blog_lang%\'') && count(Db::getInstance()->executes('SELECT "subtitle" FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = "'._DB_NAME_.'" AND TABLE_NAME = "'._DB_PREFIX_.'leoblog_blog_lang" AND COLUMN_NAME = "subtitle"'))<1) {
|
|
Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'leoblog_blog_lang` ADD `subtitle` varchar(250) NULL');
|
|
}
|
|
if (!is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog')) {
|
|
$this->moveImageFolder();
|
|
}
|
|
}
|
|
|
|
//DONGND:: move image folder from module to theme
|
|
public function moveImageFolder()
|
|
{
|
|
//DONGND:: copy image from module to theme
|
|
if (!file_exists(_PS_THEME_DIR_.'assets/img/index.php')) {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/index.php');
|
|
}
|
|
|
|
if (!is_dir(_PS_THEME_DIR_.'assets/img/modules')) {
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules', 0777, true);
|
|
}
|
|
|
|
if (!file_exists(_PS_THEME_DIR_.'assets/img/modules/index.php')) {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/modules/index.php');
|
|
}
|
|
|
|
if (!is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog')) {
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog', 0777, true);
|
|
}
|
|
|
|
if (!file_exists(_PS_THEME_DIR_.'assets/img/modules/leoblog/index.php')) {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/modules/leoblog/index.php');
|
|
}
|
|
|
|
if (!is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample')) {
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample', 0777, true);
|
|
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/b', 0777, true);
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/c', 0777, true);
|
|
|
|
if (is_dir(_LEOBLOG_BLOG_IMG_DIR_.'b') && is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/b')) {
|
|
$objects_b = scandir(_LEOBLOG_BLOG_IMG_DIR_.'b');
|
|
$objects_theme_b = scandir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/b');
|
|
if (count($objects_b) > 2 && count($objects_theme_b) <= 2) {
|
|
foreach ($objects_b as $objects_b_val) {
|
|
if ($objects_b_val != '.' && $objects_b_val != '..') {
|
|
if (filetype(_LEOBLOG_BLOG_IMG_DIR_.'b'.'/'.$objects_b_val) == 'file') {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'b'.'/'.$objects_b_val, _PS_THEME_DIR_.'assets/img/modules/leoblog/sample/b/'.$objects_b_val);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_dir(_LEOBLOG_BLOG_IMG_DIR_.'c') && is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/c')) {
|
|
$objects_c = scandir(_LEOBLOG_BLOG_IMG_DIR_.'c');
|
|
$objects_theme_c = scandir(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/c');
|
|
if (count($objects_c) > 2 && count($objects_theme_c) <= 2) {
|
|
foreach ($objects_c as $objects_c_val) {
|
|
if ($objects_c_val != '.' && $objects_c_val != '..') {
|
|
if (filetype(_LEOBLOG_BLOG_IMG_DIR_.'c'.'/'.$objects_c_val) == 'file') {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'c'.'/'.$objects_c_val, _PS_THEME_DIR_.'assets/img/modules/leoblog/sample/c/'.$objects_c_val);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!file_exists(_PS_THEME_DIR_.'assets/img/modules/leoblog/sample/index.php')) {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/modules/leoblog/sample/index.php');
|
|
}
|
|
|
|
// if (!is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/b')) {
|
|
// mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/b', 0777, true);
|
|
// }
|
|
|
|
// if (!file_exists(_PS_THEME_DIR_.'assets/img/modules/leoblog/b/index.php')) {
|
|
// @copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/modules/leoblog/b/index.php');
|
|
// }
|
|
|
|
// if (!is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/c')) {
|
|
// mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/c', 0777, true);
|
|
// }
|
|
|
|
// if (!file_exists(_PS_THEME_DIR_.'assets/img/modules/leoblog/c/index.php')) {
|
|
// @copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/modules/leoblog/c/index.php');
|
|
// }
|
|
|
|
//DONGND:: get list id_shop from database of blog
|
|
$list_id_shop = Db::getInstance()->executes('SELECT `id_shop` FROM `'._DB_PREFIX_.'leoblog_blog_shop` GROUP BY `id_shop`');
|
|
|
|
if (count($list_id_shop) > 0) {
|
|
foreach ($list_id_shop as $list_id_shop_val) {
|
|
if (!is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'])) {
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'], 0777, true);
|
|
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'index.php', _PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/index.php');
|
|
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/b', 0777, true);
|
|
|
|
mkdir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/c', 0777, true);
|
|
|
|
if (is_dir(_LEOBLOG_BLOG_IMG_DIR_.'b') && is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/b')) {
|
|
$objects_b = scandir(_LEOBLOG_BLOG_IMG_DIR_.'b');
|
|
$objects_theme_b = scandir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/b');
|
|
if (count($objects_b) > 2 && count($objects_theme_b) <= 2) {
|
|
foreach ($objects_b as $objects_b_val) {
|
|
if ($objects_b_val != '.' && $objects_b_val != '..') {
|
|
if (filetype(_LEOBLOG_BLOG_IMG_DIR_.'b'.'/'.$objects_b_val) == 'file') {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'b'.'/'.$objects_b_val, _PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/b/'.$objects_b_val);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (is_dir(_LEOBLOG_BLOG_IMG_DIR_.'c') && is_dir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/c')) {
|
|
$objects_c = scandir(_LEOBLOG_BLOG_IMG_DIR_.'c');
|
|
$objects_theme_c = scandir(_PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/c');
|
|
if (count($objects_c) > 2 && count($objects_theme_c) <= 2) {
|
|
foreach ($objects_c as $objects_c_val) {
|
|
if ($objects_c_val != '.' && $objects_c_val != '..') {
|
|
if (filetype(_LEOBLOG_BLOG_IMG_DIR_.'c'.'/'.$objects_c_val) == 'file') {
|
|
@copy(_LEOBLOG_BLOG_IMG_DIR_.'c'.'/'.$objects_c_val, _PS_THEME_DIR_.'assets/img/modules/leoblog/'.$list_id_shop_val['id_shop'].'/c/'.$objects_c_val);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @Action Create new shop, choose theme then auto restore datasample.
|
|
*/
|
|
public function hookActionAdminShopControllerSaveAfter($param)
|
|
{
|
|
if (Tools::getIsset('controller') !== false && Tools::getValue('controller') == 'AdminShop'
|
|
&& Tools::getIsset('submitAddshop') !== false && Tools::getValue('submitAddshop')
|
|
&& Tools::getIsset('theme_name') !== false && Tools::getValue('theme_name')) {
|
|
$shop = $param['return'];
|
|
|
|
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
|
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php');
|
|
$sample = new Datasample();
|
|
LeoBlogHelper::$id_shop = $shop->id;
|
|
$sample->_id_shop = $shop->id;
|
|
$sample->processImport('leoblog');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add the CSS & JavaScript files you want to be loaded in the BO.
|
|
*/
|
|
public function hookActionAdminControllerSetMedia()
|
|
{
|
|
$this->autoRestoreSampleData();
|
|
}
|
|
|
|
// public function isCached($template, $cache_id = null, $compile_id = null)
|
|
// {
|
|
// if (version_compare(_PS_VERSION_, '1.7.4.0', '>=') || version_compare(Configuration::get('PS_VERSION_DB'), '1.7.4.0', '>=')) {
|
|
// return false;
|
|
// }
|
|
// return parent::isCached($template, $cache_id, $compile_id);
|
|
// }
|
|
|
|
/**
|
|
* FIX BUG 1.7.3.3 : install theme lose hook displayHome, displayLeoProfileProduct
|
|
* because ajax not run hookActionAdminBefore();
|
|
*/
|
|
public function autoRestoreSampleData()
|
|
{
|
|
if (Hook::isModuleRegisteredOnHook($this, 'actionAdminBefore', (int)Context::getContext()->shop->id)) {
|
|
$theme_manager = new stdclass();
|
|
$theme_manager->theme_manager = 'theme_manager';
|
|
$this->hookActionAdminBefore(array(
|
|
'controller' => $theme_manager,
|
|
));
|
|
}
|
|
}
|
|
|
|
public function getMediaDir()
|
|
{
|
|
$media_dir = '';
|
|
if (version_compare(_PS_VERSION_, '1.7.4.0', '>=') || version_compare(Configuration::get('PS_VERSION_DB'), '1.7.4.0', '>=')) {
|
|
$media_dir = 'modules/'.$this->name.'/views/';
|
|
} else {
|
|
$media_dir = 'modules/'.$this->name.'/';
|
|
}
|
|
return $media_dir;
|
|
}
|
|
|
|
/**
|
|
* PERMISSION ACCOUNT demo@demo.com
|
|
*/
|
|
public function getPermission($variable, $employee = null)
|
|
{
|
|
if ($variable == 'configure') {
|
|
// Allow see form if permission is : configure, view
|
|
$configure = Module::getPermissionStatic($this->id, 'configure', $employee);
|
|
$view = Module::getPermissionStatic($this->id, 'view', $employee);
|
|
return ($configure || $view);
|
|
}
|
|
|
|
return Module::getPermissionStatic($this->id, $variable, $employee);
|
|
}
|
|
|
|
/**
|
|
* PERMISSION ACCOUNT demo@demo.com
|
|
*/
|
|
public function access($action)
|
|
{
|
|
$employee = null;
|
|
return Module::getPermissionStatic($this->id, $action, $employee);
|
|
}
|
|
}
|