Files
kalsport.pl/modules/leoblog/leoblog.php
2024-11-05 12:22:50 +01:00

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);
}
}