name = 'ets_blog'; $this->tab = 'content_management'; $this->version = '1.1.5'; $this->author = 'PrestaHero'; $this->need_instance = 0; $this->bootstrap = true; if (version_compare(_PS_VERSION_, '1.7', '>=')) $this->is17 = true; parent::__construct(); $this->displayName = $this->l('Simple Blog'); $this->description = $this->l('Simple Blog is a free PrestaShop blog module that helps you easily add and manage blog posts on your PrestaShop website'); $this->refs = 'https://prestahero.com/'; $this->module_key = 'bfa72e3bb9b9d83e9375b1f095e41d08'; $this->ps_versions_compliancy = array('min' => '1.7.0', 'max' => _PS_VERSION_); $this->is17 = version_compare(_PS_VERSION_, '1.7', '>=') ? true : false; $this->is8e = version_compare(_PS_VERSION_, '8.0.0', '>=') && Module::isEnabled('ps_edition_basic'); $this->alias = Configuration::get('ETS_BLOG_ALIAS',$this->context->language->id) ? : Configuration::get('ETS_BLOG_ALIAS',Configuration::get('PS_LANG_DEFAULT')); $this->friendly = (int)Configuration::get('ETS_BLOG_FRIENDLY_URL') && (int)Configuration::get('PS_REWRITING_SETTINGS') ? true : false; } public function install() { return parent::install() && $this->registerHooks() && $this->_installTabs() && Ets_blog_defines::getInstance()->installDb() && $this->installDefaultConfig() && $this->refreshCssCustom()&& $this->_copyForderMail(); } public function uninstall() { return parent::uninstall() && $this->unregisterHooks() && $this->_uninstallTabs() && $this->unInstallDefaultConfig()&& Ets_blog_defines::getInstance()->uninstallDb() && $this->rrmdir(_PS_ETS_BLOG_IMG_DIR_); } public function rrmdir($dir) { $dir = rtrim($dir,'/'); if ($dir && is_dir($dir)) { if($objects = scandir($dir)) { foreach ($objects as $object) { if ($object != "." && $object != "..") { if (is_dir($dir."/".$object) && !is_link($dir."/".$object)) $this->rrmdir($dir."/".$object); else @unlink($dir."/".$object); } } } rmdir($dir); } return true; } public function registerHooks() { $ok = true; foreach($this->hooks as $hook) { $this->registerHook($hook); } return $ok; } public function unregisterHooks() { $ok = true; foreach($this->hooks as $hook) { $this->unregisterHook($hook); } return $ok; } public function unInstallDefaultConfig() { $inputs = Ets_blog_defines::getInstance()->getConfigInputs(); if($inputs) { foreach($inputs as $input) { if($input['type']=='html') Continue; Configuration::deleteByName($input['name']); } } return true; } public function installDefaultConfig() { if(!is_dir(_PS_ETS_BLOG_IMG_DIR_)) @mkdir(_PS_ETS_BLOG_IMG_DIR_); if(file_exists(dirname(__FILE__).'/index.php')) Tools::copy(dirname(__FILE__).'/index.php',_PS_ETS_BLOG_IMG_DIR_.'index.php'); if(!is_dir(_PS_ETS_BLOG_IMG_DIR_.'post/')) @mkdir(_PS_ETS_BLOG_IMG_DIR_.'/post'); if(file_exists(dirname(__FILE__).'/index.php')) Tools::copy(dirname(__FILE__).'/index.php',_PS_ETS_BLOG_IMG_DIR_.'post/index.php'); if(!is_dir(_PS_ETS_BLOG_IMG_DIR_.'category/')) @mkdir(_PS_ETS_BLOG_IMG_DIR_.'category/'); if(file_exists(dirname(__FILE__).'/index.php')) Tools::copy(dirname(__FILE__).'/index.php',_PS_ETS_BLOG_IMG_DIR_.'category/index.php'); $inputs = Ets_blog_defines::getInstance()->getConfigInputs(); $languages = Language::getLanguages(false); if($inputs) { foreach($inputs as $input) { if($input['type']=='html') Continue; if(isset($input['default']) && $input['default']) { if(isset($input['lang']) && $input['lang']) { $values = array(); foreach($languages as $language) { if(isset($input['default_is_file']) && $input['default_is_file']) $values[$language['id_lang']] = file_exists(dirname(__FILE__).'/default/'.$input['default_is_file'].'_'.$language['iso_code'].'.txt') ? Tools::file_get_contents(dirname(__FILE__).'/default/'.$input['default_is_file'].'_'.$language['iso_code'].'.txt') : Tools::file_get_contents(dirname(__FILE__).'/default/'.$input['default_is_file'].'_en.txt'); else $values[$language['id_lang']] = isset($input['default_lang']) && $input['default_lang'] ? $this->getTextLang($input['default_lang'],$language,'Ets_blog_defines') : $input['default']; } Configuration::updateGlobalValue($input['name'],$values,isset($input['autoload_rte']) && $input['autoload_rte'] ? true : false); } else Configuration::updateGlobalValue($input['name'],$input['default']); } } } $this->installDefaultCategory(); return true; } public function _installTabs() { $languages = Language::getLanguages(false); if(!($blogTabId = Tab::getIdFromClassName('AdminEtsBlog'))) { $tab = new Tab(); $tab->class_name = 'AdminEtsBlog'; $tab->module = $this->name; $tab->id_parent = 0; foreach($languages as $lang){ $tab->name[$lang['id_lang']] = ($text_lang = $this->getTextLang('Blog',$lang)) ? $text_lang : $this->l('Blog'); } $tab->save(); $blogTabId = $tab->id; } if($blogTabId) { $blog_defines = new Ets_blog_defines(); foreach($blog_defines->getsubTabs() as $tabArg) { if(!Tab::getIdFromClassName($tabArg['class_name'])) { $tab = new Tab(); $tab->class_name = $tabArg['class_name']; $tab->module = $this->name; $tab->id_parent = $blogTabId; $tab->icon=$tabArg['icon']; foreach($languages as $lang){ $tab->name[$lang['id_lang']] = ($text_lang = $this->getTextLang($tabArg['tabname'],$lang,'ets_blog_defines')) ? $text_lang : $tabArg['tab_name']; } $tab->save(); } } } return true; } private function _uninstallTabs() { $blog_defines = new Ets_blog_defines(); foreach($blog_defines->getsubTabs() as $tab) { if($tabId = Tab::getIdFromClassName($tab['class_name'])) { $tab = new Tab($tabId); if($tab) $tab->delete(); } } if($tabId = Tab::getIdFromClassName('AdminEtsBlog')) { $tab = new Tab($tabId); if($tab) $tab->delete(); } return true; } public function _copyForderMail() { $languages = Language::getLanguages(false); $temp_dir_ltr = dirname(__FILE__) . '/mails/en'; if ($languages && is_array($languages)) { if (!@file_exists($temp_dir_ltr)) return true; foreach ($languages as $language) { if(isset($language['iso_code']) && $language['iso_code'] != 'en') { if (($new_dir = dirname(__FILE__) . '/mails/'. $language['iso_code'])) { $this->recurseCopy($temp_dir_ltr, $new_dir); } } } } return true; } public function recurseCopy($src, $dst) { if(!@file_exists($src)) return false; $dir = opendir($src); if (!@is_dir($dst)) @mkdir($dst); while(false !== ($file = readdir($dir))) { if (( $file != '.' ) && ($file != '..' )) { if (is_dir($src . '/' . $file)) { $this->recurseCopy($src . '/' . $file,$dst . '/' . $file); } elseif (!@file_exists($dst . '/' . $file)) { @copy($src . '/' . $file,$dst . '/' . $file); } } } closedir($dir); } public function getTextLang($text, $lang,$file_name='') { if(is_array($lang)) $iso_code = $lang['iso_code']; elseif(is_object($lang)) $iso_code = $lang->iso_code; else { $language = new Language($lang); $iso_code = $language->iso_code; } $modulePath = rtrim(_PS_MODULE_DIR_, '/').'/'.$this->name; $fileTransDir = $modulePath.'/translations/'.$iso_code.'.'.'php'; if(!@file_exists($fileTransDir)){ return $text; } $fileContent = Tools::file_get_contents($fileTransDir); $text_tras = preg_replace("/\\\*'/", "\'", $text); $strMd5 = md5($text_tras); $keyMd5 = '<{' . $this->name . '}prestashop>' . ($file_name ? : $this->name) . '_' . $strMd5; preg_match('/(\$_MODULE\[\'' . preg_quote($keyMd5) . '\'\]\s*=\s*\')(.*)(\';)/', $fileContent, $matches); if($matches && isset($matches[2])){ return $matches[2]; } return $text; } public function getContent() { Tools::redirectAdmin($this->context->link->getAdminLink('AdminEtsBlogPost')); } public function renderSidebar() { $list = array( array( 'label' => $this->l('Posts'), 'url' => $this->context->link->getAdminLink('AdminEtsBlogPost'), 'id' => 'ets_tab_post', 'controller'=>'AdminEtsBlogPost', 'icon' => 'icon-AdminPriceRule' ), array( 'label' => $this->l('Categories'), 'url' => $this->context->link->getAdminLink('AdminEtsBlogCategory'), 'id' => 'ets_tab_category', 'controller'=>'AdminEtsBlogCategory', 'icon' => 'icon-AdminCatalog' ), array( 'label' => $this->l('Comments'), 'url' => $this->context->link->getAdminLink('AdminEtsBlogComment'), 'id' => 'ets_tab_comment', 'controller'=>'AdminEtsBlogComment', 'icon' => 'icon-comments', 'total_result' =>Ets_blog_comment::countCommentsWithFilter(' AND bc.viewed=0'), ), array( 'label' => $this->l('Global settings'), 'url' => $this->context->link->getAdminLink('AdminEtsBlogSetting'), 'id' => 'ets_tab_config', 'icon' => 'icon-AdminAdmin', 'controller'=>'AdminEtsBlogSetting', ), array( 'label' => $this->l('Backup'), 'url' => $this->context->link->getAdminLink('AdminEtsBlogBackup'), 'id' => 'ets_tab_backup', 'icon' => 'icon-backup', 'controller'=>'AdminEtsBlogBackup', ), ); $controller = Tools::getValue('controller'); $this->context->smarty->assign( array( 'link' => $this->context->link, 'list' => $list, 'controller' => Validate::isControllerName($controller) ? $controller:'', ) ); return $this->display(__FILE__, 'sidebar.tpl'); } public function displayText($content=null,$tag=null,$class=null,$id=null,$href=null,$blank=false,$src = null,$name = null,$value = null,$type = null,$data_id_product = null,$rel = null,$attr_datas=null) { $this->smarty->assign( array( 'content' =>$content, 'tag' => $tag, 'tag_class'=> $class, 'tag_id' => $id, 'href' => $href, 'blank' => $blank, 'src' => $src, 'attr_name' => $name, 'value' => $value, 'type' => $type, 'data_id_product' => $data_id_product, 'attr_datas' => $attr_datas, 'rel' => $rel, ) ); return $this->display(__FILE__,'html.tpl'); } public function getUrlExtra($field_list) { $params = ''; $sort = Tools::strtolower(Tools::getValue('sort')); $sort_type = Tools::strtolower(Tools::getValue('sort_type','desc')); if(!in_array($sort_type,array('desc','asc'))) $sort_type = 'desc'; if($sort && isset($field_list[trim($sort)])) { $params .= '&sort='.trim($sort).'&sort_type='.(trim($sort_type) =='asc' ? 'asc' : 'desc'); } if($field_list) { foreach($field_list as $key => $val) { if(($value = Tools::getValue($key))!='' && Validate::isCleanHtml($value)) { $params .= '&'.$key.'='.urlencode($value); } } unset($val); } return $params; } public function getFilterParams($field_list) { $params = ''; if($field_list) { foreach($field_list as $key => $val) { if(($value = Tools::getValue($key))!='' && Validate::isCleanHtml($value)) { $params .= '&'.$key.'='.urlencode($value); } } unset($val); } return $params; } public function renderList($listData) { if(isset($listData['fields_list']) && $listData['fields_list']) { foreach($listData['fields_list'] as $key => &$val) { $value_key = (string)Tools::getValue($key); $value_key_max = (string)Tools::getValue($key.'_max'); $value_key_min = (string)Tools::getValue($key.'_min'); if(isset($val['filter']) && $val['filter'] && ($val['type']=='int' || $val['type']=='date')) { if(Tools::isSubmit('ets_blog_submit_'.$listData['name'])) { $val['active']['max'] = trim($value_key_max); $val['active']['min'] = trim($value_key_min); } else { $val['active']['max']=''; $val['active']['min']=''; } } elseif(!Tools::isSubmit('del') && Tools::isSubmit('ets_blog_submit_'.$listData['name'])) $val['active'] = trim($value_key); else $val['active']=''; } } if(!isset($listData['class'])) $listData['class']=''; $this->smarty->assign($listData); return $this->display(__FILE__, 'list_helper.tpl'); } public function displayBlogCategoryTre($blockCategTree,$selected_categories,$name='',$disabled_categories=array()) { if($id_post = (int)Tools::getValue('id_post')) { $post = new Ets_blog_post($id_post); $id_category_default = (int)Tools::getValue('id_category_default',$post->id_category_default); } else $id_category_default= (int)Tools::getValue('id_category_default'); $this->context->smarty->assign( array( 'blockCategTree'=> $blockCategTree, 'branche_tpl_path_input'=> _PS_MODULE_DIR_.'ets_blog/views/templates/hook/category-tree-blog.tpl', 'selected_categories'=>$selected_categories, 'disabled_categories' => $disabled_categories, 'id_category_default' => (int)Tools::getValue('main_category',$id_category_default) , 'name'=>$name ? $name :'blog_categories', ) ); return $this->display(__FILE__, 'categories_blog.tpl'); } public function hookActionObjectLanguageAddAfter() { Ets_blog_defines::duplicateRowsFromDefaultShopLang(_DB_PREFIX_.'ets_blog_category_lang',$this->context->shop->id,'id_category'); Ets_blog_defines::duplicateRowsFromDefaultShopLang(_DB_PREFIX_.'ets_blog_post_lang',$this->context->shop->id,'id_post'); $this->_copyForderMail(); } public function hookDisplayBackOfficeHeader() { $this->context->controller->addCSS($this->_path.'views/css/admin_all.css'); $controller = Tools::getValue('controller'); if(in_array($controller,array('AdminEtsBlogPost','AdminEtsBlogCategory','AdminEtsBlogSetting','AdminEtsBlogComment','AdminEtsBlogBackup'))) { $this->context->controller->addCSS($this->_path.'views/css/admin.css'); if ($this->is8e) { $this->context->controller->addCSS($this->_path.'views/css/admin8e.css'); } $this->context->controller->addJquery(); $this->context->controller->addJqueryUI('ui.widget'); $this->context->controller->addJqueryPlugin('tagify'); $this->context->controller->addJqueryUI('ui.sortable'); $this->context->controller->addJS($this->_path.'views/js/admin.js'); } $this->context->smarty->assign( array( 'ets_blog_link_ajax_comment' => $this->context->link->getAdminLink('AdminEtsBlogComment'), ) ); return $this->display(__FILE__,'admin_header.tpl'); } public static function validateArray($array,$validate='isCleanHtml') { if($array) { if(!is_array($array)) return false; if(method_exists('Validate',$validate)) { if($array && is_array($array)) { $ok= true; foreach($array as $val) { if(!is_array($val)) { if($val && !Validate::$validate($val)) { $ok= false; break; } } else $ok = self::validateArray($val,$validate); } return $ok; } } } return true; } public function getBlogCategoriesDropdown($blogcategories, &$depth_level = -1,$selected_blog_category=0) { if($blogcategories) { $depth_level++; foreach($blogcategories as $category) { if((!$this->depthLevel || $this->depthLevel && (int)$depth_level <= $this->depthLevel)) { $levelSeparator = ''; if($depth_level >= 1) { for($i = 0; $i <= $depth_level-1; $i++) { $levelSeparator .= $this->prefix; } } if($category['id_category'] >=0) $this->blogCategoryDropDown .= $this->displayBlogOption((int)$selected_blog_category,(int)$category['id_category'],$depth_level,$levelSeparator,$category['title']); if(isset($category['children']) && $category['children']) { $this->getBlogCategoriesDropdown($category['children'], $depth_level,$selected_blog_category); } } } $depth_level--; } } public function displayBlogOption($selected_blog_category,$id_category,$depth_level,$levelSeparator,$title) { $this->context->smarty->assign(array( 'selected_blog_category' => $selected_blog_category, 'id_category' => $id_category, 'depth_level' => $depth_level, 'levelSeparator' => $levelSeparator, 'title' => Tools::strlen($title) > 52 ? Tools::substr($title,0,52).'...':$title, )); return $this->display(__FILE__,'blogoption.tpl'); } public function _postValidation($inputs) { $languages = Language::getLanguages(false); $id_lang_default = Configuration::get('PS_LANG_DEFAULT'); foreach($inputs as $input) { if($input['type']=='html') continue; if(isset($input['lang']) && $input['lang']) { if(isset($input['required']) && $input['required']) { $val_default = Tools::getValue($input['name'].'_'.$id_lang_default); if(!$val_default) { $this->_errors[] = sprintf($this->l('%s is required'),$input['label']); } elseif($val_default && isset($input['validate']) && ($validate = $input['validate']) && method_exists('Validate',$validate) && !Validate::{$validate}($val_default,true)) $this->_errors[] = sprintf($this->l('%s is not valid'),$input['label']); elseif($val_default && !Validate::isCleanHtml($val_default,true)) $this->_errors[] = sprintf($this->l('%s is not valid'),$input['label']); else { foreach($languages as $language) { if(($value = Tools::getValue($input['name'].'_'.$language['id_lang'])) && isset($input['validate']) && ($validate = $input['validate']) && method_exists('Validate',$validate) && !Validate::{$validate}($value,true)) $this->_errors[] = sprintf($this->l('%s is not valid in %s'),$input['label'],$language['iso_code']); elseif($value && !Validate::isCleanHtml($value,true)) $this->_errors[] = sprintf($this->l('%s is not valid in %s'),$input['label'],$language['iso_code']); } } } else { foreach($languages as $language) { if(($value = Tools::getValue($input['name'].'_'.$language['id_lang'])) && isset($input['validate']) && ($validate = $input['validate']) && method_exists('Validate',$validate) && !Validate::{$validate}($value,true)) $this->_errors[] = sprintf($this->l('%s is not valid in %s'),$input['label'],$language['iso_code']); elseif($value && !Validate::isCleanHtml($value,true)) $this->_errors[] = sprintf($this->l('%s is not valid in %s'),$input['label'],$language['iso_code']); } } } else { if($input['type']=='file') { if(isset($input['required']) && $input['required'] && (!isset($_FILES[$input['name']]) || !isset($_FILES[$input['name']]['name']) ||!$_FILES[$input['name']]['name'])) { $this->_errors[] = sprintf($this->l('%s is required'),$input['label']); } elseif(isset($_FILES[$input['name']]) && isset($_FILES[$input['name']]['name']) && $_FILES[$input['name']]['name']) { $file_name = $_FILES[$input['name']]['name']; $file_size = $_FILES[$input['name']]['size']; $max_file_size = Configuration::get('PS_ATTACHMENT_MAXIMUM_SIZE')*1024*1024; $type = Tools::strtolower(Tools::substr(strrchr($file_name, '.'), 1)); if(isset($input['is_image']) && $input['is_image']) $file_types = array('jpg', 'png', 'gif', 'jpeg'); else $file_types = array('jpg', 'png', 'gif', 'jpeg','zip','doc','docx'); if(!in_array($type,$file_types)) $this->_errors[] = sprintf($this->l('The file name "%s" is not in the correct format, accepted formats: %s'),$file_name,'.'.trim(implode(', .',$file_types),', .')); $max_file_size = $max_file_size ? : Configuration::get('PS_ATTACHMENT_MAXIMUM_SIZE')*1024*1024; if($file_size > $max_file_size) $this->_errors[] = sprintf($this->l('The file name "%s" is too large. Limit: %s'),$file_name,Tools::ps_round($max_file_size/1048576,2).'Mb'); } } else { $val = Tools::getValue($input['name']); if($input['type']!='checkbox') { if($val===''&& isset($input['required']) && $input['required']) { $this->_errors[] = sprintf($this->l('%s is required'),$input['label']); } if($val!=='' && isset($input['validate']) && ($validate = $input['validate']) && $validate=='isColor' && !self::isColor($val)) { $this->_errors[] = sprintf($this->l('%s is not valid'),$input['label']); } elseif($val!=='' && isset($input['validate']) && ($validate = $input['validate']) && method_exists('Validate',$validate) && !Validate::{$validate}($val)) { $this->_errors[] = sprintf($this->l('%s is not valid'),$input['label']); } elseif($val!==''&& !Validate::isCleanHtml($val)) $this->_errors[] = sprintf($this->l('%s is not valid'),$input['label']); } else { if(!$val&& isset($input['required']) && $input['required'] ) { $this->_errors[] = sprintf($this->l('%s is required'),$input['label']); } elseif($val && !self::validateArray($val,isset($input['validate']) ? $input['validate']:'')) $this->_errors[] = sprintf($this->l('%s is not valid'),$input['label']); } } } } if($captcha_type = (string)Tools::getValue('ETS_BLOG_CAPTCHA_TYPE')) { if($captcha_type=='google') { $ETS_BLOG_CAPTCHA_SITE_KEY = Tools::getValue('ETS_BLOG_CAPTCHA_SITE_KEY'); if(!$ETS_BLOG_CAPTCHA_SITE_KEY) $this->_errors[] = $this->l('Site key is required'); elseif(!Validate::isCleanHtml($ETS_BLOG_CAPTCHA_SITE_KEY)) $this->_errors[] = $this->l('Site key is not valid'); $ETS_BLOG_CAPTCHA_SECRET_KEY = Tools::getValue('ETS_BLOG_CAPTCHA_SECRET_KEY'); if(!$ETS_BLOG_CAPTCHA_SECRET_KEY) $this->_errors[] = $this->l('Secret key is required'); elseif(!Validate::isCleanHtml($ETS_BLOG_CAPTCHA_SECRET_KEY)) $this->_errors[] = $this->l('Secret key is not valid'); } elseif($captcha_type=='google3') { $ETS_BLOG_CAPTCHA_SITE_KEY = Tools::getValue('ETS_BLOG_CAPTCHA_SITE_KEY3'); if(!$ETS_BLOG_CAPTCHA_SITE_KEY) $this->_errors[] = $this->l('Site key is required'); elseif(!Validate::isCleanHtml($ETS_BLOG_CAPTCHA_SITE_KEY)) $this->_errors[] = $this->l('Site key is not valid'); $ETS_BLOG_CAPTCHA_SECRET_KEY = Tools::getValue('ETS_BLOG_CAPTCHA_SECRET_KEY3'); if(!$ETS_BLOG_CAPTCHA_SECRET_KEY) $this->_errors[] = $this->l('Secret key is required'); elseif(!Validate::isCleanHtml($ETS_BLOG_CAPTCHA_SECRET_KEY)) $this->_errors[] = $this->l('Secret key is not valid'); } } } public function saveSubmit($inputs) { $this->_postValidation($inputs); if (!count($this->_errors)) { $languages = Language::getLanguages(false); $id_lang_default = Configuration::get('PS_LANG_DEFAULT'); if($inputs) { foreach($inputs as $input) { if($input['type']!='html') { if(isset($input['lang']) && $input['lang']) { $values = array(); foreach($languages as $language) { $value_default = Tools::getValue($input['name'].'_'.$id_lang_default); $value = Tools::getValue($input['name'].'_'.$language['id_lang']); $values[$language['id_lang']] = ($value && Validate::isCleanHtml($value,true)) || !isset($input['required']) ? $value : (Validate::isCleanHtml($value_default,true) ? $value_default :''); } Configuration::updateValue($input['name'],$values,isset($input['autoload_rte']) && $input['autoload_rte'] ? true : false); } else { if($input['type']=='checkbox') { $val = Tools::getValue($input['name'],array()); if(is_array($val) && self::validateArray($val)) { Configuration::updateValue($input['name'],implode(',',$val)); } } else { $val = Tools::getValue($input['name']); if(Validate::isCleanHtml($val)) Configuration::updateValue($input['name'],$val); } } } } } if(!$this->_errors) { $this->refreshCssCustom(); return true; } } } public function getLink($controller = 'blog', $params = array(),$id_lang=0) { $context = Context::getContext(); $id_lang = $id_lang ? $id_lang : $context->language->id; $alias = $this->alias; $friendly = $this->friendly; $blogLink = new Ets_blog_link_class(); $subfix = ''; $page = isset($params['page']) && $params['page'] ? $params['page'] : ''; if(trim($page)!='') { $page = $page.'/'; } else $page=''; if($friendly && $alias) { $url = $blogLink->getBaseLinkFriendly(null, null).$blogLink->getLangLinkFriendly($id_lang, null, null).$alias.'/'; if($controller=='category') { $url .= 'categories'.($page ? '/'.rtrim($page,'/') : ''); return $url; } elseif($controller=='comment') { $url .= 'comments'.($page ? '/'.rtrim($page,'/') : ''); return $url; } elseif($controller=='blog') { if(isset($params['edit_comment']) && (int)$params['edit_comment'] && isset($params['id_post']) && $params['id_post'] && $postAlias = $this->getPostAlias((int)$params['id_post'],$id_lang)) { $url .= 'post/'.(int)$params['id_post'].'-'.(int)$params['edit_comment'].'-'.$postAlias.$subfix; } elseif( isset($params['all_comment']) && $params['all_comment'] && isset($params['id_post']) && $postAlias = $this->getPostAlias((int)$params['id_post'],$id_lang)) { $url .= 'post/allcomments/'.(int)$params['id_post'].'-'.$postAlias.$subfix; } elseif(isset($params['id_post']) && $postAlias = $this->getPostAlias((int)$params['id_post'],$id_lang)) { $url .= 'post/'.$params['id_post'].'-'.$postAlias.$subfix; } elseif(isset($params['id_category']) && $categoryAlias = $this->getCategoryAlias((int)$params['id_category'],$id_lang)) { $url .= 'category'.($page ? '/'.rtrim($page) : '/').$params['id_category'].'-'.$categoryAlias.$subfix; } elseif(isset($params['search'])) { $url .= $page.'search/'.(string)$params['search']; } elseif(isset($params['latest'])) { $url .= 'latest'.($page ? '/'.rtrim($page,'/') : ''); } elseif(isset($params['month']) && isset($params['year'])) { $url .= 'month/'.$params['month'].'/'.$params['year'].($page ? '/'.rtrim($page,'/') : ''); } elseif(isset($params['year'])) { $url .= 'year/'.$params['year'].($page ? '/'.rtrim($page,'/') : ''); } else { if($page) $url .= trim($page,'/'); else $url = rtrim($url,'/'); } return $url; } } return $this->context->link->getModuleLink($this->name,$controller,$params,null,$id_lang); } public function hookModuleRoutes() { $subfix = ''; $blogAlias = Configuration::get('ETS_BLOG_ALIAS',$this->context->language->id) ? : Configuration::get('ETS_BLOG_ALIAS',Configuration::get('PS_LANG_DEFAULT')); if(!$blogAlias) return array(); $routes = array( 'etsblogmainpage' => array( 'controller' => 'blog', 'rule' => $blogAlias, 'keywords' => array(), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'ybcblogfeaturedpostspage' => array( 'controller' => 'blog', 'rule' => $blogAlias . '/{page}', 'keywords' => array( 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpost2' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/post/{id_post}-{url_alias}'.$subfix, 'keywords' => array( 'url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'url_alias'), 'id_post' => array('regexp' => '[0-9]+', 'param' => 'id_post'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpost' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/post/{post_url_alias}'.$subfix, 'keywords' => array( 'post_url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'post_url_alias'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogcategorypostpage2' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/category/{page}/{id_category}-{url_alias}'.$subfix, 'keywords' => array( 'id_category' => array('regexp' => '[0-9]+', 'param' => 'id_category'), 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), 'url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'url_alias'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogcategorypostpage' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/category/{page}/{category_url_alias}'.$subfix, 'keywords' => array( 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), 'category_url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'category_url_alias'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogcategorypost2' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/category/{id_category}-{url_alias}'.$subfix, 'keywords' => array( 'id_category' => array('regexp' => '[0-9]+', 'param' => 'id_category'), 'url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'url_alias'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogcategorypost' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/category/{category_url_alias}'.$subfix, 'keywords' => array( 'category_url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'category_url_alias'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogcategorylatestpage' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/latest/{page}', 'keywords' => array( 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', 'latest' => 'true' ), ), 'etsblogcategorylatest' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/latest', 'keywords' => array(), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', 'latest' => 'true' ), ), 'etsblogcategoriespage' => array( 'controller' => 'category', 'rule' => $blogAlias.'/categories/{page}', 'keywords' => array( 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogcategories' => array( 'controller' => 'category', 'rule' => $blogAlias.'/categories', 'keywords' => array(), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogauthorpost' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/author/{id_author}-{author_name}', 'keywords' => array( 'id_author' => array('regexp' => '[0-9]+', 'param' => 'id_author'), 'author_name' => array('regexp' => '(.)+','param' => 'author_name'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogauthorpostpage' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/author/{page}/{id_author}-{author_name}', 'keywords' => array( 'id_author' => array('regexp' => '[0-9]+', 'param' => 'id_author'), 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), 'author_name' => array('regexp' => '(.)+','param' => 'author_name'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpostinyearpage' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/year/{year}/{page}', 'keywords' => array( 'year' => array('regexp' => '[0-9]+','param' => 'year'), 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpostinyear' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/year/{year}', 'keywords' => array( 'year' => array('regexp' => '[0-9]+','param' => 'year'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpostinmonthpage' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/month/{month}/{year}/{page}', 'keywords' => array( 'month' => array('regexp' => '[0-9]+','param' => 'month'), 'year' => array('regexp' => '[0-9]+','param' => 'year'), 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpostinmonth' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/month/{month}/{year}', 'keywords' => array( 'month' => array('regexp' => '[0-9]+','param' => 'month'), 'year' => array('regexp' => '[0-9]+','param' => 'year'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogpostallcomments' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/post/allcomments/{id_post}-{url_alias}'.$subfix, 'keywords' => array( 'id_post' => array('regexp' => '[0-9]+', 'param' => 'id_post'), 'url_alias' => array('regexp' => '[_a-zA-Z0-9-\pL]+','param' => 'url_alias'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', 'all_comment'=>1, ), ), 'etsblogsearchpage' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/{page}/search/{search}', 'keywords' => array( 'search' => array('regexp' => '.+','param' => 'search'), 'page' => array('regexp' => '[0-9]+', 'param' => 'page'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), 'etsblogsearch' => array( 'controller' => 'blog', 'rule' => $blogAlias.'/search/{search}', 'keywords' => array( 'search' => array('regexp' => '.+','param' => 'search'), ), 'params' => array( 'fc' => 'module', 'module' => 'ets_blog', ), ), ); return $routes; } public function hookDisplayCustomerAccount($params) { return $this->display(__FILE__, 'my-account.tpl'); } public function hookDisplayMyAccountBlock($params) { return $this->hookDisplayCustomerAccount($params); } private function getPostAlias($id_post,$id_lang=0) { if(!$id_lang) $id_lang = $this->context->language->id; $post = new Ets_blog_post($id_post,$id_lang); return $post->url_alias; } private function getCategoryAlias($id_category,$id_lang=0) { if(!$id_lang) $id_lang = $this->context->language->id; $category = new Ets_blog_category($id_category,$id_lang); return $category->url_alias; } public function hookDisplayHeader() { $controller = Tools::getValue('controller'); $module = Tools::getValue('module'); $this->context->controller->addJS($this->_path.'views/js/owl.carousel.js'); $this->context->controller->addCSS($this->_path.'views/css/owl.carousel.css'); $this->context->controller->addCSS($this->_path.'views/css/owl.theme.css'); $this->context->controller->addCSS($this->_path.'views/css/owl.transitions.css'); if($controller=='category' || $controller=='myaccount' || $module== $this->name){ $this->context->controller->addJS($this->_path.'views/js/blog.js'); $this->context->controller->addCSS($this->_path.'views/css/blog.css'); } if(!file_exists(dirname(__FILE__).'/views/css/custom.css')) $this->refreshCssCustom(); $this->context->controller->addCSS($this->_path.'views/css/custom.css'); $this->context->controller->addJS($this->_path.'views/js/home_blog.js'); $this->context->controller->addCSS($this->_path.'views/css/blog_home.css'); if(($id_post = (int)Tools::getValue('id_post')) && $module==$this->name && $controller=='blog') { $post = Ets_blog_post::getPostById($id_post); if($post) { $post['img_name'] = isset($post['image']) ? $post['image'] : ''; if($post['image']) $post['image'] = $this->context->link->getMediaLink(_PS_ETS_BLOG_IMG_.'post/'.$post['image']); if($post['thumb']) $post['thumb'] = $this->context->link->getMediaLink(_PS_ETS_BLOG_IMG_.'post/thumb/'.$post['thumb']); $post['link'] = $this->getLink('blog',array('id_post'=>$post['id_post'])); $this->context->smarty->assign( array( 'ets_blog_post_header'=>$post, ) ); } return $this->display(__FILE__,'head.tpl'); } } public function hookDisplayHome() { if(Configuration::get('ETS_BLOG_DISPLAY_HOME_PAGE')) { return $this->displayBlogNewsBlock(array('page'=>'home')); } } public function hookDisplayLeftColumn() { $html = $this->displayBlogNewsBlock(); $html .= $this->displayBlogCategoriesBlock(); $html .= $this->displayBlogSearchBlock(); $html .= $this->displayblogArchivesBlock(); return $html; } public function displayBlogNewsBlock($params = array()) { $posts = Ets_blog_post::getPostsWithFilter(' AND p.enabled=1','p.date_add DESC,',0,10); if($posts) { foreach($posts as $key => &$post) { $post['link'] = $this->getLink('blog',array('id_post' => $post['id_post'])); if($post['thumb']) $post['thumb'] = $this->context->link->getMediaLink(_PS_ETS_BLOG_IMG_.'post/'.$post['thumb']); $post['comments_num'] =0; } unset($key); } if(isset($this->context->language->is_rtl) && $this->context->language->is_rtl) $rtl = true; else $rtl = false; $this->smarty->assign( array( 'posts' => $posts, 'ETS_BLOG_RTL_CLASS' => $rtl ? 'ets_blog_rtl_mode' : 'ets_blog_ltr_mode', 'ets_blog_text_Readmore'=> Configuration::get('ETS_BLOG_TEXT_READMORE',$this->context->language->id), 'latest_link' => $this->getLink('blog',array('latest' => 'true')), 'allowComments' => true, 'show_views' => false, 'allow_like' => false, 'sidebar_post_type' => 'carousel', 'date_format' => $this->context->language->date_format_lite, 'hook' => 'homeblog', 'page' => isset($params['page']) && $params['page'] ? $params['page'] : false, ) ); return $this->display(__FILE__, 'latest_posts_block.tpl'); } public function displayBlogCategoriesBlock() { if(isset($this->context->language->is_rtl) && $this->context->language->is_rtl) $rtl = true; else $rtl = false; $this->smarty->assign( array( 'active' => 0, 'link_view_all'=> $this->getLink('category'), 'ETS_BLOG_RTL_CLASS' => $rtl ? 'ets_blog_rtl_mode' : 'ets_blog_ltr_mode', ) ); $blockCategTree = Ets_blog_category::getInstance()->getBlogCategoriesTree(0); $this->context->smarty->assign('blockCategTree', $blockCategTree); $this->smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'ets_blog/views/templates/hook/category-tree-branch.tpl'); return $this->display(__FILE__, 'categories_block.tpl'); } public function displayBlogSearchBlock() { $search = trim(Tools::getValue('search')); $this->smarty->assign( array( 'action' => $this->getLink('blog'), 'ETS_BLOG_RTL_CLASS' => isset($this->context->language->is_rtl) && $this->context->language->is_rtl ? 'ets_blog_rtl_mode' : 'ets_blog_ltr_mode', 'search' => Validate::isCleanHtml($search) ? urldecode($search):'', 'id_lang' => $this->context->language->id ) ); return $this->display(__FILE__, 'search_block.tpl'); } public function getMonthName($month) { switch ($month) { case 1: return $this->l('January'); case 2: return $this->l('February'); case 3: return $this->l('March'); case 4: return $this->l('April'); case 5: return $this->l('May'); case 6: return $this->l('June'); case 7: return $this->l('July'); case 8: return $this->l('August'); case 9: return $this->l('September'); case 10: return $this->l('October'); case 11: return $this->l('November'); case 12: return $this->l('December'); } } public function displayblogArchivesBlock() { $years = Ets_blog_post::getYearsHasBlogPost(); if($years) { foreach($years as &$year) { $year['months'] = Ets_blog_post::getMonthsHasBlogPost($year['year_add']); $year['link'] = $this->getLink('blog',array('year'=>$year['year_add'])); if($year['months']) { foreach($year['months'] as &$month) { $month['link'] = $this->getLink('blog',array('month'=>$month['month_add'],'year'=>$year['year_add'])); $month['month_add'] = $this->getMonthName($month['month_add']); } } } } $this->context->smarty->assign( array( 'years'=>$years, 'ETS_BLOG_RTL_CLASS' => isset($this->context->language->is_rtl) && $this->context->language->is_rtl ? 'ets_blog_rtl_mode' : 'ets_blog_ltr_mode', ) ); return $this->display(__FILE__,'block_archives.tpl'); } public function assignConfig() { $assign = array(); $defines = Ets_blog_defines::getInstance()->getConfigInputs(); foreach($defines as $val) { $key = $val['name']; $assign[$key] = isset($val['lang']) && $val['lang'] ? Configuration::get($key, $this->context->language->id) : ($val['type']=='checkbox' || $val['type']=='blog_categories' ? explode(',',Configuration::get($key)) : Configuration::get($key)); } $assign['ETS_BLOG_RTL_CLASS'] = $this->context->language->is_rtl ? 'ets_blog_rtl_mode' : 'ets_blog_ltr_mode'; $assign['ETS_BLOG_SHOP_URI'] = _PS_BASE_URL_.__PS_BASE_URI__; $this->context->smarty->assign( array('ets_blog_config' => $assign) ); } public function getBreadCrumb() { $id_post = (int)Tools::getValue('id_post'); $id_category = (int)Tools::getValue('id_category'); $controller = Tools::getValue('controller'); $nodes[] = array( 'title' => $this->l('Home'), 'url' => $this->context->link->getPageLink('index', true), ); $nodes[] = array( 'title' => $this->l('Blog'), 'url' => $this->getLink('blog') ); if($controller=='category') { $nodes[] = array( 'title' => $this->l('All categories'), 'url' => $this->getLink('category') ); } if($controller=='comment') { $nodes[] = array( 'title' => $this->l('All Comments'), 'url' => $this->getLink('comment') ); } if($id_category && $category = Ets_blog_category::getCategoryById($id_category)) { $nodes[] = array( 'title' => $category['title'], 'url' => $this->getLink('blog',array('id_category' => $id_category)), ); } if($id_post && ($post = new Ets_blog_post($id_post,$this->context->language->id)) && Validate::isLoadedObject($post)) { if (($id_category_default = $post->id_category_default) && ($category = new Ets_blog_category($id_category, $this->context->language->id)) && Validate::isLoadedObject($category)) { $nodes[] = array( 'title' => $category->title, 'url' => $this->getLink('blog',array('id_category' => $category->id)), ); } $nodes[] = array( 'title' => $post->title, 'url' => $this->getLink('blog',array('id_post' => $id_post)), ); } if($controller == 'blog' && ($latest = Tools::getValue('latest')) && Validate::isCleanHtml($latest)) { $nodes[] = array( 'title' => $this->l('Latest posts'), 'url' => $this->getLink('blog',array('latest' => true)), ); } return array('links' => $nodes,'count' => count($nodes)); } public function displayConfirmation($ets_blog_string,$view_text='') { $this->context->smarty->assign( array( 'ets_blog_string' => $ets_blog_string, 'link_view' => $this->context->cookie->link_view ? : false, 'view_text' => $view_text, ) ); $this->context->cookie->link_view = ''; $this->context->cookie->write(); return $this->display(__FILE__,'confirmation.tpl'); } public function refreshCssCustom() { $color = Configuration::get('ETS_BLOG_CUSTOM_COLOR'); if(!$color) $color = '#FF4C65'; $color_hover= Configuration::get('ETS_BLOG_CUSTOM_COLOR_HOVER'); if(!$color_hover) $color_hover='#FF4C65'; $css = file_exists(dirname(__FILE__).'/views/css/dynamic_style.css') ? Tools::file_get_contents(dirname(__FILE__).'/views/css/dynamic_style.css') : ''; if($css) $css = str_replace(array('[color]','[color_hover]'),array($color,$color_hover),$css); file_put_contents(dirname(__FILE__).'/views/css/custom.css',$css); return true; } public function sendMailRepyCustomer($id_comment,$replier,$comment_reply=''){ if(Configuration::get('ETS_BLOG_ENABLE_MAIL_REPLY_CUSTOMER')) { $comment = new Ets_blog_comment($id_comment); if($comment->email && ($id_customer = Customer::customerExists($comment->email,true)) && ($customer = new Customer($id_customer)) && $customer->id_lang) $id_lang = $customer->id_lang; else $id_lang = $this->context->language->id; $post = new Ets_blog_post($comment->id_post,$id_lang); $reply_comwent_text = Tools::getValue('reply_comwent_text'); $template_reply_comment=array( '{customer_name}' => $comment->name, '{customer_email}' => $comment->email, '{comment}' =>$comment->comment, '{comment_reply}' => $comment_reply ? $comment_reply : (Validate::isCleanHtml($reply_comwent_text) ? $reply_comwent_text :''), '{post_link}' => $this->getLink('blog',array('id_post'=>$comment->id_post)), '{post_title}'=>$post->title, '{replier}' => $replier, '{color_main}'=>Configuration::get('ETS_BLOG_CUSTOM_COLOR'), '{color_hover}'=>Configuration::get('ETS_BLOG_CUSTOM_COLOR_HOVER') ); Mail::Send( $id_lang, 'admin_reply_comment_to_customer', $id_lang == $this->context->language->id ? $this->l('New reply to your comment') : $this->getTextLang('New reply to your comment',$id_lang), $template_reply_comment, $comment->email, $comment->name, null, null, null, null, dirname(__FILE__).'/mails/' ); } } public function setMetas() { $meta = array(); $module = Tools::getValue('module'); if($module!= $this->name) return; $id_lang = $this->context->language->id; $id_category = (int)Tools::getValue('id_category'); $id_post = (int)Tools::getValue('id_post'); $controller = Tools::getValue('controller'); if(!$id_post && ($post_url_alias = Tools::getValue('post_url_alias')) && Validate::isLinkRewrite($post_url_alias)) { $id_post = Ets_blog_post::getIdByUrlAlias($post_url_alias,$id_lang); } if(!$id_category && ($category_url_alias = Tools::getValue('category_url_alias')) && Validate::isLinkRewrite($category_url_alias)) { $id_category = Ets_blog_category::getIDCategoryByUrlAlias($category_url_alias); } if($id_category) { if(($category = new Ets_blog_category($id_category,$id_lang)) && Validate::isLoadedObject($category)) { $meta['meta_title'] = $category->meta_title ? : $category->title; $meta['meta_description'] = $category->meta_description ? : Tools::substr(strip_tags($category->description),0,300); $meta['meta_keywords'] = $category->meta_keywords; } else $meta['meta_title'] = $this->l('Page not found'); } elseif($id_post) { if(($post = new Ets_blog_post($id_post,$id_lang)) && Validate::isLoadedObject($post)) { $meta['meta_title'] = $post->meta_title ? :$post->title; $meta['meta_description'] = $post->meta_description ? : Tools::substr(strip_tags($post->short_description),0,300); $meta['meta_keywords'] = $post->meta_keywords; } else $meta['meta_title'] = $this->l('Page not found'); } elseif(($tag = Tools::getValue('tag')) && Validate::isCleanHtml($tag)) { $meta['meta_title'] = $this->l('Tag: ').' "'.$tag.'"'; } elseif(($latest = Tools::getValue('latest')) && Validate::isCleanHtml($latest)) { $meta['meta_title'] = $this->l('Latest posts'); } elseif(($search = Tools::getValue('search')) && Validate::isCleanHtml($search)) { $meta['meta_title'] = $this->l('Search:').' "'.str_replace('+',' ',$search).'"'; } elseif(($year = (int)Tools::getValue('year')) && ($month = (int)Tools::getValue('month'))) $meta['meta_title'] = $this->l('Posted in :').' "'.$year.' - '.$this->getMonthName($month).'"'; elseif($year) $meta['meta_title'] = $this->l('Posted in :').' "'.$year.'"'; elseif($id_author = (int)Tools::getValue('id_author')) { $employee = new Employee($id_author); if($employee && Validate::isLoadedObject($employee)) { $meta['meta_title'] = $this->l('Author: ').$employee->firstname.' '.$employee->lastname; } else $meta['meta_title'] = $this->l('Page not found'); } elseif($controller=='category') { $meta['meta_title'] = $this->l('All categories'); } elseif($controller=='blog') { $meta['meta_title'] = Configuration::get('ETS_BLOG_META_TITLE',$id_lang); $meta['meta_description'] = Configuration::get('ETS_BLOG_META_DESCRIPTION',$id_lang); $meta['meta_keywords'] = Configuration::get('ETS_BLOG_META_KEYWORDS',$id_lang); } if(!isset($meta['meta_title'])) $meta['meta_title']=''; if(!isset($meta['meta_description'])) $meta['meta_description']=''; if(!isset($meta['meta_keywords'])) $meta['meta_keywords']=''; $body_classes = array( 'lang-'.$this->context->language->iso_code => true, 'lang-rtl' => (bool) $this->context->language->is_rtl, 'country-'.$this->context->country->iso_code => true, ); $page = array( 'title' => '', 'canonical' => '', 'meta' => array( 'title' => $meta['meta_title'], 'description' => $meta['meta_description'], 'keywords' => $meta['meta_keywords'], 'robots' => 'index', ), 'page_name' => 'ets_blog_page', 'body_classes' => $body_classes, 'admin_notifications' => array(), ); $this->context->smarty->assign(array('page' => $page)); } public function installDefaultCategory() { $category = new Ets_blog_category(); $category->id_parent=0; $category->enabled = 1; $category->id_shop = $this->context->shop->id; $category->added_by = $this->context->employee->id; $languages = Language::getLanguages(); foreach($languages as $lang) { $category->title[$lang['id_lang']] = $lang['id_lang']== $this->context->language->id ? $this->l('Default category') : $this->getTextLang('Default category',$lang['id_lang']); $category->url_alias[$lang['id_lang']] = $lang['id_lang']== $this->context->language->id ? $this->l('default-category') : $this->getTextLang('default-category',$lang['id_lang']); } return $category->add(); } public function displayIframe() { switch($this->context->language->iso_code) { case 'en': $url = 'https://cdn.prestahero.com/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe'; break; case 'it': $url = 'https://cdn.prestahero.com/it/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe'; break; case 'fr': $url = 'https://cdn.prestahero.com/fr/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe'; break; case 'es': $url = 'https://cdn.prestahero.com/es/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe'; break; default: $url = 'https://cdn.prestahero.com/prestahero-product-feed?utm_source=feed_'.$this->name.'&utm_medium=iframe'; } $this->smarty->assign( array( 'url_iframe' => $url ) ); return $this->display(__FILE__,'iframe.tpl'); } }