diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php
index 90b6affe75e..8b4cff108fa 100644
--- a/htdocs/core/class/menubase.class.php
+++ b/htdocs/core/class/menubase.class.php
@@ -431,116 +431,45 @@ class Menubase
* @param type_user 0=Internal,1=External,2=All
* @param mainmenu Value for mainmenu that defined top menu
* @param menu_handler Name of menu_handler used (auguria, eldy...)
+ * @param tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty)
* @return array Return array with menu entries for top menu
- * TODO Mutualize menuTopCharger and menuLeftCharger
*/
- function menuTopCharger($mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=array())
+ function menuTopCharger($mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=null)
{
global $langs, $user, $conf;
global $leftmenu,$rights; // To export to dol_eval function
-
+ $leftmenu=$myleftmenu; // To export to dol_eval function
+
// Load datas into tabMenu
- /*if (sizeof($tabMenu) == 0)
+ if (sizeof($tabMenu) == 0)
{
- $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu);
- //var_dump($tabMenu);
+ $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu);
}
- else
+
+ $newTabMenu=array();
+ $i=0;
+ foreach($tabMenu as $val)
{
- // TODO Just try to find menutopid from tabMenu and mainmenu
- $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu);
- }*/
+ if ($val[9]=='top')
+ {
+
+ $newTabMenu[$i]['rowid']=$val[0];
+ $newTabMenu[$i]['fk_menu']=$val[1];
+ $newTabMenu[$i]['url']=$val[2];
+ $newTabMenu[$i]['titre']=$val[3];
+ $newTabMenu[$i]['right']=$val[4];
+ $newTabMenu[$i]['atarget']=$val[5];
+ $newTabMenu[$i]['leftmenu']=$val[6];
+ $newTabMenu[$i]['enabled']=$val[7];
+ $newTabMenu[$i]['mainmenu']=$val[8];
+ $newTabMenu[$i]['type']=$val[9];
+ $newTabMenu[$i]['lang']=$val[10];
+ $i++;
+ }
+ }
-
- $tabMenu=array();
-
- $sql = "SELECT m.rowid, m.mainmenu, m.titre, m.url, m.langs, m.perms, m.enabled, m.target";
- $sql.= " FROM ".MAIN_DB_PREFIX."menu as m";
- $sql.= " WHERE m.entity = ".$conf->entity;
- $sql.= " AND m.menu_handler in('".$menu_handler."','all')";
- if ($type_user == 0) $sql.= " AND m.usertype in (0,2)";
- if ($type_user == 1) $sql.= " AND m.usertype in (1,2)";
- // If type_user == 2, no test requires
- $sql.= " AND m.type = 'top'";
- $sql.= " ORDER BY m.position";
-
- dol_syslog("Menubase::menuTopCharger sql=".$sql);
- $resql = $this->db->query($sql);
- if ($resql)
- {
- $numa = $this->db->num_rows($resql);
-
- $a = 0;
- $b = 0;
- $oldrowid=0;
- while ($a < $numa)
- {
- $objm = $this->db->fetch_object($resql);
-
- // Define $chaine
- $chaine="";
- $title=$langs->trans($objm->titre);
- if ($title == $objm->titre) // Translation not found
- {
- if (! empty($objm->langs)) // If there is a dedicated translation file
- {
- $langs->load($objm->langs);
- }
-
- if (preg_match("/\//",$objm->titre)) // To manage translation when title is string1/string2
- {
- $tab_titre = explode("/",$objm->titre);
- $chaine = $langs->trans($tab_titre[0])."/".$langs->trans($tab_titre[1]);
- }
- else
- {
- $chaine = $langs->trans($objm->titre);
- }
- }
- else
- {
- $chaine=$title;
- }
- //print "x".$objm->titre."-".$chaine;
-
- // Define $right
- $perms = true;
- if ($objm->perms)
- {
- $perms = verifCond($objm->perms);
- }
-
- // Define $enabled
- $enabled = true;
- if ($objm->enabled)
- {
- $enabled = verifCond($objm->enabled);
- }
-
- $tabMenu[$b]['rowid'] = $objm->rowid;
- $tabMenu[$b]['mainmenu'] = $objm->mainmenu;
- $tabMenu[$b]['titre'] = $chaine; // Title
- $tabMenu[$b]['url'] = $objm->url;
- $tabMenu[$b]['atarget'] = $objm->target;
- if (! isset($tabMenu[$b]['right'])) $tabMenu[$b]['right'] = $perms;
- else $tabMenu[$b]['right'] = ($tabMenu[$b]['right'] && $perms);
- if (! isset($tabMenu[$b]['enabled'])) $tabMenu[$b]['enabled'] = $enabled;
- else $tabMenu[$b]['enabled'] = ($tabMenu[$b]['enabled'] && $enabled);
- $tabMenu[$b]['lang'] = $objm->langs;
-
- //var_dump($tabMenu);
- $b++;
- $a++;
- }
- $this->db->free($resql);
- }
- else
- {
- dol_print_error($this->db);
- }
-
- return $tabMenu;
+ return $newTabMenu;
}
/**
@@ -553,7 +482,7 @@ class Menubase
* @param $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty)
* @return array Menu array for particular mainmenu value or full tabArray
*/
- function menuLeftCharger($newmenu, $mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=array())
+ function menuLeftCharger($newmenu, $mainmenu, $myleftmenu, $type_user, $menu_handler, &$tabMenu=null)
{
global $langs, $user, $conf; // To export to dol_eval function
global $leftmenu,$rights; // To export to dol_eval function
@@ -566,14 +495,9 @@ class Menubase
if (sizeof($tabMenu) == 0)
{
$this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu);
- //var_dump($tabMenu);
}
- else
- {
- // TODO Just try to find menutopid from tabMenu and mainmenu
- $this->menuLoad($leftmenu, $type_user, $menu_handler, $tabMenu);
- }
-
+ //var_dump($tabMenu);
+
// Define menutopid
$menutopid='';
foreach($tabMenu as $val)
@@ -691,7 +615,8 @@ class Menubase
else $tabMenu[$b][7] = ($tabMenu[$b][7] && $enabled);
$tabMenu[$b][8] = $menu['mainmenu'];
$tabMenu[$b][9] = $menu['type'];
-
+ $tabMenu[$b][10] = $menu['langs'];
+
$b++;
$a++;
}
diff --git a/htdocs/includes/menus/smartphone/smartphone.lib.php b/htdocs/includes/menus/smartphone/smartphone.lib.php
index eca3201552d..66746f7bbfc 100755
--- a/htdocs/includes/menus/smartphone/smartphone.lib.php
+++ b/htdocs/includes/menus/smartphone/smartphone.lib.php
@@ -43,46 +43,40 @@ function print_smartphone_menu($db,$atarget,$type_user,$limitmenuto)
$menutop = new Menubase($db,'smartphone','top');
$menuleft = new Menubase($db,'smartphone','left');
- $tabMenu = $menutop->menuTopCharger('', '', $type_user, 'smartphone');
- $numTabMenu = count($tabMenu);
-
- /*$newmenu = new Menu();
- $leftmenu = $menuleft->menuLeftCharger($newmenu,'','',($user->societe_id?1:0),'smartphone');
- $menus = $leftmenu->liste;
- var_dump($menus);
- */
+ $newTabMenu = $menutop->menuTopCharger('', '', $type_user, 'smartphone');
+ $numTabMenu = count($newTabMenu);
print_start_menu_array();
for($i=0; $i<$numTabMenu; $i++)
{
- if ($tabMenu[$i]['enabled'] == true)
+ if ($newTabMenu[$i]['enabled'] == true)
{
- if ($tabMenu[$i]['right'] == true) // Is allowed
+ if ($newTabMenu[$i]['right'] == true) // Is allowed
{
// Define url
- if (preg_match("/^(http:\/\/|https:\/\/)/i",$tabMenu[$i]['url']))
+ if (preg_match("/^(http:\/\/|https:\/\/)/i",$newTabMenu[$i]['url']))
{
- $url = dol_buildpath($tabMenu[$i]['url'],1);
+ $url = dol_buildpath($newTabMenu[$i]['url'],1);
$url=preg_replace('/&.*/i','',$url);
}
else
{
$menus='';
- if ($limitmenuto != 'top')
+ if ($limitmenuto > 0)
{
$newmenu = new Menu();
- $leftmenu = $menuleft->menuLeftCharger($newmenu,$tabMenu[$i]['mainmenu'],'',($user->societe_id?1:0),'smartphone');
+ $leftmenu = $menuleft->menuLeftCharger($newmenu,$newTabMenu[$i]['mainmenu'],'',($user->societe_id?1:0),'smartphone');
$menus = $leftmenu->liste;
//var_dump($menus);
}
print_start_menu_entry();
- if (is_array($menus) && !empty($menus))
+ if (is_array($menus) && !empty($menus) && $limitmenuto > 0)
{
- $title=$tabMenu[$i]['titre'];
- // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($tabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&')));
+ $title=$newTabMenu[$i]['titre'];
+ // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($newTabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&')));
print_text_menu_entry($title);
$num = count($menus);
@@ -127,12 +121,12 @@ function print_smartphone_menu($db,$atarget,$type_user,$limitmenuto)
}
else
{
- $url=dol_buildpath($tabMenu[$i]['url'],1);
+ $url=dol_buildpath($newTabMenu[$i]['url'],1);
$url=preg_replace('/&.*/i','',$url);
- print '';
- $title=$tabMenu[$i]['titre'];
- // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($tabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&')));
+ print '';
+ $title=$newTabMenu[$i]['titre'];
+ // To remove & and special chars: $title=dol_string_unaccent(dol_string_nospecial(dol_html_entity_decode($newTabMenu[$i]['titre'],ENT_QUOTES,'UTF-8'),'',array('&')));
print_text_menu_entry($title);
print '';
}
diff --git a/htdocs/includes/menus/standard/auguria.lib.php b/htdocs/includes/menus/standard/auguria.lib.php
index c4ab59270f1..80b3f63163c 100644
--- a/htdocs/includes/menus/standard/auguria.lib.php
+++ b/htdocs/includes/menus/standard/auguria.lib.php
@@ -45,43 +45,43 @@ function print_auguria_menu($db,$atarget,$type_user)
$_SESSION["leftmenuopened"]="";
$menuArbo = new Menubase($db,'auguria','top');
- $tabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'], '', $type_user, 'auguria');
+ $newTabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'], '', $type_user, 'auguria');
print_start_menu_array_auguria();
- for($i=0; $i';
- print '';
- print_text_menu_entry_auguria($tabMenu[$i]['titre']);
+ print '';
+ print_text_menu_entry_auguria($newTabMenu[$i]['titre']);
print '';
print_end_menu_entry_auguria();
}
@@ -92,7 +92,7 @@ function print_auguria_menu($db,$atarget,$type_user)
print_start_menu_entry_auguria($idsel);
print '
';
print '';
- print_text_menu_entry_auguria($tabMenu[$i]['titre']);
+ print_text_menu_entry_auguria($newTabMenu[$i]['titre']);
print '';
print_end_menu_entry_auguria();
}
diff --git a/htdocs/includes/menus/standard/eldy.lib.php b/htdocs/includes/menus/standard/eldy.lib.php
index 3a449149234..b48345f8d82 100644
--- a/htdocs/includes/menus/standard/eldy.lib.php
+++ b/htdocs/includes/menus/standard/eldy.lib.php
@@ -436,44 +436,44 @@ function print_eldy_menu($db,$atarget,$type_user)
$menuArbo = new Menubase($db,'eldy','top');
- $tabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'],'',$type_user,'eldy');
+ $newTabMenu = $menuArbo->menuTopCharger($_SESSION['mainmenu'],'',$type_user,'eldy');
- for($i=0; $i';
+ print '';
- print '';
- print_text_menu_entry($tabMenu[$i]['titre']);
+ print '';
+ print_text_menu_entry($newTabMenu[$i]['titre']);
print '';
print_end_menu_entry();
}
@@ -484,7 +484,7 @@ function print_eldy_menu($db,$atarget,$type_user)
print_start_menu_entry($idsel);
print '
';
print '';
- print_text_menu_entry($tabMenu[$i]['titre']);
+ print_text_menu_entry($newTabMenu[$i]['titre']);
print '';
print_end_menu_entry();
}
diff --git a/htdocs/index.php b/htdocs/index.php
index 1b3495dbb7a..e2b4032e41c 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -57,8 +57,8 @@ if (!isset($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_IN
// If smartphone mode, we do no show main page, we show only menu
if (preg_match('/^smartphone/',$conf->smart_menu) && isset($conf->browser->phone))
{
- $limitmenu=GETPOST('limitmenuto')?GETPOST('limitmenuto'):'top';
- $limitmenu=''; // A virer
+ $limitmenuto=GETPOST('limitmenuto')?GETPOST('limitmenuto'):0;
+ $limitmenuto=1; // A virer
// Load the smartphone menu manager
$result=@include_once(DOL_DOCUMENT_ROOT ."/includes/menus/smartphone/".$conf->smart_menu);