From 22bf9c91c7cd2a58819429b51b19e6066352c6cd Mon Sep 17 00:00:00 2001 From: mDeflotte Date: Mon, 26 Mar 2012 09:29:26 +0000 Subject: [PATCH] [-] MO : #PSFV-717 - Fix some little bugs with blocktopmenu + Normalize the code --- modules/blocktopmenu/blocktopmenu.php | 526 +++++++++++++------------- 1 file changed, 262 insertions(+), 264 deletions(-) diff --git a/modules/blocktopmenu/blocktopmenu.php b/modules/blocktopmenu/blocktopmenu.php index cc1a58f12..5205514f3 100644 --- a/modules/blocktopmenu/blocktopmenu.php +++ b/modules/blocktopmenu/blocktopmenu.php @@ -32,21 +32,21 @@ class Blocktopmenu extends Module private $_menu = ''; private $_html = ''; - /* - * Pattern for matching config values - */ - private $pattern = '/^([A-Z_]*)[0-9]+/'; + /* + * Pattern for matching config values + */ + private $pattern = '/^([A-Z_]*)[0-9]+/'; - /* - * Name of the controller - * Used to set item selected or not in top menu - */ - private $page_name = ''; + /* + * Name of the controller + * Used to set item selected or not in top menu + */ + private $page_name = ''; - /* - * Spaces per depth in BO - */ - private $spacer_size = '5'; + /* + * Spaces per depth in BO + */ + private $spacer_size = '5'; public function __construct() { @@ -111,13 +111,13 @@ class Blocktopmenu extends Module public function getContent() { - $id_lang = (int)Context::getContext()->language->id; - $languages = $this->context->controller->getLanguages(); - $default_language = Configuration::get('PS_LANG_DEFAULT'); + $id_lang = (int)Context::getContext()->language->id; + $languages = $this->context->controller->getLanguages(); + $default_language = Configuration::get('PS_LANG_DEFAULT'); - $labels = Tools::getValue('label') ? array_filter(Tools::getValue('label'), 'strlen') : array(); - $spacer = str_repeat(' ', $this->spacer_size); - $divLangName = 'link_label'; + $labels = Tools::getValue('label') ? array_filter(Tools::getValue('label'), 'strlen') : array(); + $spacer = str_repeat(' ', $this->spacer_size); + $divLangName = 'link_label'; if (Tools::isSubmit('submitBlocktopmenu')) { @@ -130,14 +130,14 @@ class Blocktopmenu extends Module else if (Tools::isSubmit('submitBlocktopmenuLinks')) { - if ((Tools::getValue('link') == '') && (!count($labels))) - ; - else if (Tools::getValue('link') == '') - $this->_html .= $this->displayError($this->l('Please, fill the "Link" field')); - else if (!count($labels)) - $this->_html .= $this->displayError($this->l('Please add a label')); - else if (!isset($labels[$default_language])) - $this->_html .= $this->displayError($this->l('Please add a label for your default language')); + if ((Tools::getValue('link') == '') && (!count($labels))) + ; + else if (Tools::getValue('link') == '') + $this->_html .= $this->displayError($this->l('Please, fill the "Link" field')); + else if (!count($labels)) + $this->_html .= $this->displayError($this->l('Please add a label')); + else if (!isset($labels[$default_language])) + $this->_html .= $this->displayError($this->l('Please add a label for your default language')); else { MenuTopLinks::add(Tools::getValue('link'), Tools::getValue('label'), Tools::getValue('new_window', 0), (int)Shop::getContextShopID()); @@ -182,7 +182,7 @@ class Blocktopmenu extends Module // BEGIN CMS $this->_html .= ''; - $this->getCMSOptions(0, 1, $id_lang); + $this->getCMSOptions(0, 1, $id_lang); $this->_html .= ''; // BEGIN SUPPLIER @@ -213,15 +213,15 @@ class Blocktopmenu extends Module $this->_html .= ''; $links = MenuTopLinks::gets($id_lang, null, (int)Shop::getContextShopID()); foreach ($links as $link) - { - if ($link['label'] == '') - { - $link = MenuTopLinks::get($link['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); - $this->_html .= ''; - } - else - $this->_html .= ''; - } + { + if ($link['label'] == '') + { + $link = MenuTopLinks::get($link['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); + $this->_html .= ''; + } + else + $this->_html .= ''; + } $this->_html .= ''; $this->_html .= '
@@ -243,7 +243,7 @@ class Blocktopmenu extends Module $("#availableItems option:selected").each(function(i){ var val = $(this).val(); var text = $(this).text(); - text = text.replace(/(^\s*)|(\s*$)/gi,""); + text = text.replace(/(^\s*)|(\s*$)/gi,""); if (val == "PRODUCT") { val = prompt("'.$this->l('Set ID product').'"); @@ -315,10 +315,10 @@ class Blocktopmenu extends Module
'; - $links = MenuTopLinks::gets($id_lang, null, Shop::getContextShopID()); + $links = MenuTopLinks::gets($id_lang, null, Shop::getContextShopID()); - if (!count($links)) - return $this->_html; + if (!count($links)) + return $this->_html; $this->_html .= '
@@ -363,193 +363,193 @@ class Blocktopmenu extends Module private function makeMenuOption() { - $menu_item = $this->getMenuItems(); - $id_lang = (int)$this->context->language->id; - $id_shop = (int)Shop::getContextShopID(); + $menu_item = $this->getMenuItems(); + $id_lang = (int)$this->context->language->id; + $id_shop = (int)Shop::getContextShopID(); foreach ($menu_item as $type => $item) - { - if (!$item) - continue; + { + if (!$item) + continue; - preg_match($this->pattern, $item, $values); - $id = (int)substr($item, strlen($values[1]), strlen($item)); + preg_match($this->pattern, $item, $values); + $id = (int)substr($item, strlen($values[1]), strlen($item)); - switch (substr($item, 0, strlen($values[1]))) - { - case 'CAT': - $category = new Category($id, $id_lang); - if (!is_null($category->id)) - $this->_html .= ''.PHP_EOL; - break; + switch (substr($item, 0, strlen($values[1]))) + { + case 'CAT': + $category = new Category($id, $id_lang); + if (!is_null($category->id)) + $this->_html .= ''.PHP_EOL; + break; - case 'PRD': - $product = new Product($id, true, $id_lang); - if (!is_null($product->id)) - $this->_html .= ''.PHP_EOL; - break; + case 'PRD': + $product = new Product($id, true, $id_lang); + if (!is_null($product->id)) + $this->_html .= ''.PHP_EOL; + break; - case 'CMS': - $cms = new CMS($id, $id_lang); - if (count($cms)) - $this->_html .= ''.PHP_EOL; - break; + case 'CMS': + $cms = new CMS($id, $id_lang); + if (count($cms)) + $this->_html .= ''.PHP_EOL; + break; - case 'CMS_CAT': - $category = new CMSCategory($id, $id_lang); - if (count($category)) - $this->_html .= ''.PHP_EOL; - break; + case 'CMS_CAT': + $category = new CMSCategory($id, $id_lang); + if (count($category)) + $this->_html .= ''.PHP_EOL; + break; - case 'MAN': - $manufacturer = new Manufacturer($id, $id_lang); - if (!is_null($manufacturer->id)) - $this->_html .= ''.PHP_EOL; - break; + case 'MAN': + $manufacturer = new Manufacturer($id, $id_lang); + if (!is_null($manufacturer->id)) + $this->_html .= ''.PHP_EOL; + break; - case 'SUP': - $supplier = new Supplier($id, $id_lang); - if (!is_null($supplier->id)) - $this->_html .= ''.PHP_EOL; - break; + case 'SUP': + $supplier = new Supplier($id, $id_lang); + if (!is_null($supplier->id)) + $this->_html .= ''.PHP_EOL; + break; - case 'LNK': - $link = MenuTopLinks::get($id, $id_lang, $id_shop); - if (count($link)) - { - if (!isset($link[0]['label']) || ($link[0]['label'] == '')) - { - $default_language = Configuration::get('PS_LANG_DEFAULT'); - $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); - } - $this->_html .= ''; - } - break; - } - } + case 'LNK': + $link = MenuTopLinks::get($id, $id_lang, $id_shop); + if (count($link)) + { + if (!isset($link[0]['label']) || ($link[0]['label'] == '')) + { + $default_language = Configuration::get('PS_LANG_DEFAULT'); + $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); + } + $this->_html .= ''; + } + break; + } + } } private function makeMenu() { - $this->page_name = Dispatcher::getInstance()->getController(); + $this->page_name = Dispatcher::getInstance()->getController(); - $menu_items = $this->getMenuItems(); - $id_lang = (int)$this->context->language->id; - $id_shop = (int)Shop::getContextShopID(); + $menu_items = $this->getMenuItems(); + $id_lang = (int)$this->context->language->id; + $id_shop = (int)Shop::getContextShopID(); foreach ($menu_items as $type => $item) { - if (!$item) - continue; + if (!$item) + continue; - preg_match($this->pattern, $item, $value); - $id = (int)substr($item, strlen($value[1]), strlen($item)); + preg_match($this->pattern, $item, $value); + $id = (int)substr($item, strlen($value[1]), strlen($item)); - switch (substr($item, 0, strlen($value[1]))) - { - case 'CAT': - $this->getCategory($id); - break; + switch (substr($item, 0, strlen($value[1]))) + { + case 'CAT': + $this->getCategory($id); + break; - case 'PRD': - $selected = ($this->page_name == 'product' && (Tools::getValue('id_product') == $id)) ? ' class="sfHover"' : ''; - $product = new Product($id, true, $id_lang); - if (!is_null($product->id)) - $this->_menu .= ''.$product->name.''.PHP_EOL; - break; + case 'PRD': + $selected = ($this->page_name == 'product' && (Tools::getValue('id_product') == $id)) ? ' class="sfHover"' : ''; + $product = new Product($id, true, $id_lang); + if (!is_null($product->id)) + $this->_menu .= ''.$product->name.''.PHP_EOL; + break; - case 'CMS': - $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; - $cms = CMS::getLinks($id_lang, array($id)); - if (count($cms)) - $this->_menu .= ''.$cms[0]['meta_title'].''.PHP_EOL; - break; + case 'CMS': + $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; + $cms = CMS::getLinks($id_lang, array($id)); + if (count($cms)) + $this->_menu .= ''.$cms[0]['meta_title'].''.PHP_EOL; + break; - case 'CMS_CAT': - $category = new CMSCategory($id, $id_lang); - if (count($category)) - { - $this->_menu .= '
  • '.$category->name.''; - $this->getCMSMenuItems($category->id); - $this->_menu .= '
  • '.PHP_EOL; - } - break; + case 'CMS_CAT': + $category = new CMSCategory($id, $id_lang); + if (count($category)) + { + $this->_menu .= '
  • '.$category->name.''; + $this->getCMSMenuItems($category->id); + $this->_menu .= '
  • '.PHP_EOL; + } + break; - case 'MAN': - $selected = ($this->page_name == 'manufacturer' && (Tools::getValue('id_manufacturer') == $id)) ? ' class="sfHover"' : ''; - $manufacturer = new Manufacturer($id, $id_lang); - if (!is_null($manufacturer->id)) - { - if (intval(Configuration::get('PS_REWRITING_SETTINGS'))) - $manufacturer->link_rewrite = Tools::link_rewrite($manufacturer->name, false); - else - $manufacturer->link_rewrite = 0; - $link = new Link; - $this->_menu .= ''.$manufacturer->name.''.PHP_EOL; - } - break; + case 'MAN': + $selected = ($this->page_name == 'manufacturer' && (Tools::getValue('id_manufacturer') == $id)) ? ' class="sfHover"' : ''; + $manufacturer = new Manufacturer($id, $id_lang); + if (!is_null($manufacturer->id)) + { + if (intval(Configuration::get('PS_REWRITING_SETTINGS'))) + $manufacturer->link_rewrite = Tools::link_rewrite($manufacturer->name, false); + else + $manufacturer->link_rewrite = 0; + $link = new Link; + $this->_menu .= ''.$manufacturer->name.''.PHP_EOL; + } + break; - case 'SUP': - $selected = ($this->page_name == 'supplier' && (Tools::getValue('id_supplier') == $id)) ? ' class="sfHover"' : ''; - $supplier = new Supplier($id, $id_lang); - if (!is_null($supplier->id)) - { - $link = new Link; - $this->_menu .= ''.$supplier->name.''.PHP_EOL; - } - break; + case 'SUP': + $selected = ($this->page_name == 'supplier' && (Tools::getValue('id_supplier') == $id)) ? ' class="sfHover"' : ''; + $supplier = new Supplier($id, $id_lang); + if (!is_null($supplier->id)) + { + $link = new Link; + $this->_menu .= ''.$supplier->name.''.PHP_EOL; + } + break; - case 'LNK': - $link = MenuTopLinks::get($id, $id_lang, $id_shop); - if (count($link)) - { - if (!isset($link[0]['label']) || ($link[0]['label'] == '')) - { - $default_language = Configuration::get('PS_LANG_DEFAULT'); - $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); - } - $this->_menu .= '
  • '.$link[0]['label'].'
  • '.PHP_EOL; - } - break; - } + case 'LNK': + $link = MenuTopLinks::get($id, $id_lang, $id_shop); + if (count($link)) + { + if (!isset($link[0]['label']) || ($link[0]['label'] == '')) + { + $default_language = Configuration::get('PS_LANG_DEFAULT'); + $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); + } + $this->_menu .= '
  • '.$link[0]['label'].'
  • '.PHP_EOL; + } + break; + } } } - private function getCategoryOption($id_category = 1, $id_lang = false, $recursive = true) - { - $id_lang = (int)($id_lang ? $id_lang : Shop::getContextShopID()); - $category = new Category($id_category, $id_lang); + private function getCategoryOption($id_category = 1, $id_lang = false, $recursive = true) + { + $id_lang = (int)($id_lang ? $id_lang : Context::getContext()->language->id); + $category = new Category($id_category, $id_lang); - if (is_null($category->id)) - return; + if (is_null($category->id)) + return; - if ($recursive) - { - $childrens = Category::getChildren((int)$id_category, $id_lang); - $spacer = str_repeat(' ', $this->spacer_size * (int)$category->level_depth); - } + if ($recursive) + { + $childrens = Category::getChildren((int)$id_category, $id_lang); + $spacer = str_repeat(' ', $this->spacer_size * (int)$category->level_depth); + } - $this->_html .= ''; + $this->_html .= ''; - if (isset($childrens) && count($childrens)) - foreach ($childrens as $children) - $this->getCategoryOption((int)$children['id_category'], $id_lang); - } + if (isset($childrens) && count($childrens)) + foreach ($childrens as $children) + $this->getCategoryOption((int)$children['id_category'], $id_lang); + } private function getCategory($id_category, $id_lang = false) { - $id_lang = $id_lang ? $id_lang : Context::getContext()->language->id; - $category = new Category($id_category, $id_lang); + $id_lang = $id_lang ? $id_lang : Context::getContext()->language->id; + $category = new Category($id_category, $id_lang); - if (is_null($category->id)) + if (is_null($category->id)) return; - $childrens = Category::getChildren($id_category, $id_lang); - $selected = ($this->page_name == 'category' && ((int)Tools::getValue('id_category') == $id_category)) ? ' class="sfHoverForce"' : ''; + $childrens = Category::getChildren($id_category, $id_lang); + $selected = ($this->page_name == 'category' && ((int)Tools::getValue('id_category') == $id_category)) ? ' class="sfHoverForce"' : ''; $this->_menu .= '
  • '; - $this->_menu .= ''.$category->name.''; + $this->_menu .= ''.$category->name.''; - if (count($childrens)) + if (count($childrens)) { $this->_menu .= '
      '; @@ -561,71 +561,69 @@ class Blocktopmenu extends Module $this->_menu .= ''; } - private function getCMSMenuItems($parent, $depth = 1, $id_lang = false) - { - $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; + private function getCMSMenuItems($parent, $depth = 1, $id_lang = false) + { + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; - if ($depth > 3) - return; + if ($depth > 3) + return; - $categories = $this->getCMSCategories(false, $parent, $id_lang); - $pages = $this->getCMSPages($parent); + $categories = $this->getCMSCategories(false, $parent, $id_lang); + $pages = $this->getCMSPages($parent); - if (count($categories) || count($pages)) - { - $this->_menu .= '
        '; + if (count($categories) || count($pages)) + { + $this->_menu .= '
          '; - foreach ($categories as $category) - { - $this->_menu .= '
        • '; - $this->_menu .= ''.$category['name'].''; - $this->getCMSMenuItems($category['id_cms_category'], $depth + 1); - $this->_menu .= '
        • '; - } + foreach ($categories as $category) + { + $this->_menu .= '
        • '; + $this->_menu .= ''.$category['name'].''; + $this->getCMSMenuItems($category['id_cms_category'], $depth + 1); + $this->_menu .= '
        • '; + } - foreach ($pages as $page) - { - $cms = new CMS($page['id_cms'], $id_lang); - $links = $cms->getLinks($id_lang, array($cms->id)); + foreach ($pages as $page) + { + $cms = new CMS($page['id_cms'], $id_lang); + $links = $cms->getLinks($id_lang, array($cms->id)); - $selected = ($this->page_name == 'cms' && ((int)Tools::getValue('id_cms') == $page['id_cms'])) ? ' class="sfHoverForce"' : ''; - $this->_menu .= '
        • '; - $this->_menu .= ''.$cms->meta_title.''; - $this->_menu .= '
        • '; - } + $selected = ($this->page_name == 'cms' && ((int)Tools::getValue('id_cms') == $page['id_cms'])) ? ' class="sfHoverForce"' : ''; + $this->_menu .= '
        • '; + $this->_menu .= ''.$cms->meta_title.''; + $this->_menu .= '
        • '; + } - $this->_menu .= '
        '; - } - } + $this->_menu .= '
      '; + } + } - private function getCMSOptions($parent = 0, $depth = 1, $id_lang = false) - { - $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; + private function getCMSOptions($parent = 0, $depth = 1, $id_lang = false) + { + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; - $categories = $this->getCMSCategories(false, $parent, $id_lang); - $pages = $this->getCMSPages($parent, false, $id_lang); + $categories = $this->getCMSCategories(false, $parent, $id_lang); + $pages = $this->getCMSPages($parent, false, $id_lang); - $spacer = str_repeat(' ', $this->spacer_size * (int)$depth); + $spacer = str_repeat(' ', $this->spacer_size * (int)$depth); - foreach ($categories as $category) - { - $this->_html .= ''; - $this->getCMSOptions($category['id_cms_category'], $depth + 1, $id_lang); - } + foreach ($categories as $category) + { + $this->_html .= ''; + $this->getCMSOptions($category['id_cms_category'], $depth + 1, $id_lang); + } - foreach ($pages as $page) - $this->_html .= ''; - } + foreach ($pages as $page) + $this->_html .= ''; + } public function hookTop($param) { - global $smarty; - $this->makeMenu(); - $smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH')); - $smarty->assign('MENU', $this->_menu); - $smarty->assign('this_path', $this->_path); + $this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH')); + $this->smarty->assign('MENU', $this->_menu); + $this->smarty->assign('this_path', $this->_path); $this->context->controller->addJS($this->_path.'js/hoverIntent.js'); $this->context->controller->addJS($this->_path.'js/superfish-modified.js'); @@ -634,50 +632,50 @@ class Blocktopmenu extends Module return $this->display(__FILE__, 'blocktopmenu.tpl'); } - private function getCMSCategories($recursive = false, $parent = 1, $id_lang = false) - { - $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; + private function getCMSCategories($recursive = false, $parent = 1, $id_lang = false) + { + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; - if ($recursive === false) - { - $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` + if ($recursive === false) + { + $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms_category` bcp INNER JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (bcp.`id_cms_category` = cl.`id_cms_category`) WHERE cl.`id_lang` = '.$id_lang.' AND bcp.`id_parent` = '.(int)$parent; - return Db::getInstance()->executeS($sql); - } - else - { - $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` + return Db::getInstance()->executeS($sql); + } + else + { + $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms_category` bcp INNER JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (bcp.`id_cms_category` = cl.`id_cms_category`) WHERE cl.`id_lang` = '.$id_lang.' AND bcp.`id_parent` = '.(int)$parent; - $results = Db::getInstance()->executeS($sql); - foreach ($results as $result) - { - $sub_categories = $this->getCMSCategories(true, $result['id_cms_category'], $id_lang); - if ($sub_categories && count($sub_categories) > 0) - $result['sub_categories'] = $sub_categories; - $categories[] = $result; - } + $results = Db::getInstance()->executeS($sql); + foreach ($results as $result) + { + $sub_categories = $this->getCMSCategories(true, $result['id_cms_category'], $id_lang); + if ($sub_categories && count($sub_categories) > 0) + $result['sub_categories'] = $sub_categories; + $categories[] = $result; + } - return isset($categories) ? $categories : false; - } + return isset($categories) ? $categories : false; + } - } + } - private function getCMSPages($id_cms_category, $id_shop = false, $id_lang = false) - { - $id_shop = ($id_shop !== false) ? $id_shop : (int)Context::getContext()->shop->id; - $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; + private function getCMSPages($id_cms_category, $id_shop = false, $id_lang = false) + { + $id_shop = ($id_shop !== false) ? $id_shop : (int)Context::getContext()->shop->id; + $id_lang = $id_lang ? $id_lang : (int)Context::getContext()->language->id; - $sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite` + $sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms` c INNER JOIN `'._DB_PREFIX_.'cms_shop` cs ON (c.`id_cms` = cs.`id_cms`) @@ -689,6 +687,6 @@ class Blocktopmenu extends Module AND c.`active` = 1 ORDER BY `position`'; - return Db::getInstance()->executeS($sql); - } + return Db::getInstance()->executeS($sql); + } } \ No newline at end of file