46 global $dolibarr_main_db_name;
48 $mainmenu = (empty($_SESSION[
"mainmenu"]) ?
'' : $_SESSION[
"mainmenu"]);
49 $leftmenu = (empty($_SESSION[
"leftmenu"]) ?
'' : $_SESSION[
"leftmenu"]);
52 $listofmodulesforexternal = explode(
',',
getDolGlobalString(
'MAIN_MODULES_FOR_EXTERNAL'));
56 $newTabMenu = $menuArbo->menuTopCharger(
'',
'', $type_user,
'auguria', $tabMenu);
58 $substitarray = getCommonSubstitutionArray($langs, 0,
null,
null, array(
'system',
'mycompany',
'date',
'user'));
64 if ($mode !=
'jmobile' && $mode !=
'topnb' && $usemenuhider && !
getDolGlobalString(
'MAIN_OPTIMIZEFORTEXTBROWSER')) {
66 $classname =
'class="tmenu menuhider nohover"';
69 $menu->add(
'#', (
getDolGlobalInt(
'THEME_TOPMENU_DISABLE_IMAGE') == 1 ?
'<span class="fa fa-bars"></span>' :
''), 0, $showmode, $atarget,
"xxx",
'', 0,
$id, $idsel, $classname,
'<span class="fas fa-bars size12x"></span>');
72 $num = count($newTabMenu);
73 for ($i = 0; $i < $num; $i++) {
75 $idsel = (empty($newTabMenu[$i][
'mainmenu']) ?
'none' : $newTabMenu[$i][
'mainmenu']);
84 '@phan-var-force array<array{rowid:string,fk_menu:string,langs:string,enabled:int<0,2>,type:string,fk_mainmenu:string,fk_leftmenu:string,url:string,titre:string,perms:string,target:string,mainmenu:string,leftmenu:string,position:int,positionfull:int|string,showtopmenuinframe:int,level?:int,prefix:string}> $newTabMenu';
87 $url = $shorturl = $newTabMenu[$i][
'url'];
89 if (!preg_match(
"/^(http:\/\/|https:\/\/)/i", $newTabMenu[$i][
'url'])) {
90 $tmp = explode(
'?', $newTabMenu[$i][
'url'], 2);
91 $url = $shorturl = $tmp[0];
92 $param = (isset($tmp[1]) ? $tmp[1] :
'');
95 if ((!preg_match(
'/mainmenu/i', $param)) && (!preg_match(
'/leftmenu/i', $param)) && !empty($newTabMenu[$i][
'url'])) {
97 $param .= ($param ?
'&' :
'').
'mainmenu='.$newTabMenu[$i][
'mainmenu'].
'&leftmenu=';
99 if ((!preg_match(
'/mainmenu/i', $param)) && (!preg_match(
'/leftmenu/i', $param)) && empty($newTabMenu[$i][
'url'])) {
100 $param .= ($param ?
'&' :
'').
'leftmenu=';
108 $shorturl = preg_replace(
'/^'.preg_quote(DOL_URL_ROOT,
'/').
'/',
'', $shorturl);
113 '@phan-var-force array<array{rowid:string,fk_menu:string,langs:string,enabled:int<0,2>,type:string,fk_mainmenu:string,fk_leftmenu:string,url:string,titre:string,perms:string,target:string,mainmenu:string,leftmenu:string,position:int,positionfull:int|string,showtopmenuinframe:int,level?:int,prefix:string}> $newTabMenu';
115 if ($newTabMenu[$i][
'showtopmenuinframe']) {
116 if (preg_match(
"/^(http:\/\/|https:\/\/)/i", $newTabMenu[$i][
'url'])) {
117 $url =
'/core/frames.php?idmenu='.$newTabMenu[$i][
'rowid'];
123 if (preg_match(
'/search_project_user=__search_project_user__/', $shorturl)) {
124 $search_project_user =
GETPOSTINT(
'search_project_user');
125 if ($search_project_user) {
126 $shorturl = preg_replace(
'/search_project_user=__search_project_user__/',
'search_project_user='.$search_project_user, $shorturl);
128 $shorturl = preg_replace(
'/search_project_user=__search_project_user__/',
'', $shorturl);
133 if (!empty($_SESSION[
'idmenu']) && $newTabMenu[$i][
'rowid'] == $_SESSION[
'idmenu']) {
134 $classname =
'class="tmenusel"';
135 } elseif (!empty($_SESSION[
"mainmenu"]) && $newTabMenu[$i][
'mainmenu'] == $_SESSION[
"mainmenu"]) {
136 $classname =
'class="tmenusel"';
138 $classname =
'class="tmenu"';
140 } elseif ($showmode == 2) {
141 $classname =
'class="tmenu"';
146 $menu->add($shorturl, $newTabMenu[$i][
'titre'], 0, $showmode, ($newTabMenu[$i][
'target'] ? $newTabMenu[$i][
'target'] : $atarget), ($newTabMenu[$i][
'mainmenu'] ? $newTabMenu[$i][
'mainmenu'] : $newTabMenu[$i][
'rowid']), ($newTabMenu[$i][
'leftmenu'] ? $newTabMenu[$i][
'leftmenu'] :
''), $newTabMenu[$i][
'position'],
$id, $idsel, $classname, $newTabMenu[$i][
'prefix']);
164 $mysoc->logo_squarred_mini = (!
getDolGlobalString(
'MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI') ?
'' :
$conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI);
166 $logoContainerAdditionalClass =
'backgroundforcompanylogo';
168 $logoContainerAdditionalClass =
'';
171 if (!empty(
$mysoc->logo_squarred_mini) && is_readable(
$conf->mycompany->dir_output.
'/logos/thumbs/'.
$mysoc->logo_squarred_mini)) {
172 $urllogo = DOL_URL_ROOT.
'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode(
'logos/thumbs/'.
$mysoc->logo_squarred_mini);
178 $urllogo = DOL_URL_ROOT.
'/theme/dolibarr_512x512_white.png';
179 $logoContainerAdditionalClass =
'';
182 $title = $langs->trans(
"GoIntoSetupToChangeLogo");
184 print
"\n".
'<!-- Show logo on menu -->'.
"\n";
187 print
'<div class="center '.$logoContainerAdditionalClass.
' menulogocontainer"><img class="mycompany" title="'.
dol_escape_htmltag($title).
'" alt="" src="'.$urllogo.
'" style="max-width: 100px"></div>'.
"\n";
192 foreach ($menu->liste as $menuval) {
195 print_text_menu_entry_auguria($menuval[
'titre'], $menuval[
'enabled'], ($menuval[
'url'] !=
'#' ? DOL_URL_ROOT :
'').$menuval[
'url'], $menuval[
'id'], $menuval[
'idsel'], $menuval[
'classname'], ($menuval[
'target'] ? $menuval[
'target'] : $atarget), $menuval);
342function print_left_auguria_menu(
$db, $menu_array_before, $menu_array_after, &$tabMenu, &$menu, $noout = 0, $forcemainmenu =
'', $forceleftmenu =
'', $moredata =
null, $type_user = 0)
344 global $user,
$conf, $langs, $hookmanager;
345 global $dolibarr_main_db_name,
$mysoc;
349 $mainmenu = ($forcemainmenu ? $forcemainmenu : $_SESSION[
"mainmenu"]);
350 $leftmenu = ($forceleftmenu ?
'' : (empty($_SESSION[
"leftmenu"]) ?
'none' : $_SESSION[
"leftmenu"]));
352 global $usemenuhider;
355 if (is_array($moredata) && !empty($moredata[
'searchform'])) {
357 print
"<!-- Begin SearchForm -->\n";
358 print
'<div id="blockvmenusearch" class="blockvmenusearch">'.
"\n";
359 print $moredata[
'searchform'];
361 print
"<!-- End SearchForm -->\n";
364 if (is_array($moredata) && !empty($moredata[
'bookmarks'])) {
366 print
"<!-- Begin Bookmarks -->\n";
367 print
'<div id="blockvmenubookmarks" class="blockvmenubookmarks">'.
"\n";
368 print $moredata[
'bookmarks'];
370 print
"<!-- End Bookmarks -->\n";
373 $substitarray = getCommonSubstitutionArray($langs, 0,
null,
null, array(
'system',
'mycompany',
'date',
'user'));
377 $newmenu = $menuArbo->menuLeftCharger($newmenu, $mainmenu, $leftmenu, ($user->socid ? 1 : 0),
'auguria', $tabMenu);
380 if (
isModEnabled(
'bank') && $user->hasRight(
'banque',
'lire') && $mainmenu ==
'bank') {
381 include_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
383 $sql =
"SELECT rowid, label, courant, rappro, courant";
384 $sql .=
" FROM ".MAIN_DB_PREFIX.
"bank_account";
385 $sql .=
" WHERE entity = ".$conf->entity;
386 $sql .=
" AND clos = 0";
387 $sql .=
" ORDER BY label";
389 $resql =
$db->query($sql);
391 $numr =
$db->num_rows($resql);
395 $newmenu->add(
'/compta/bank/list.php?search_status=opened', $langs->trans(
"BankAccounts"), 0, $user->hasRight(
'banque',
'lire'));
399 $objp =
$db->fetch_object($resql);
400 $newmenu->add(
'/compta/bank/card.php?id='.$objp->rowid, $objp->label, 1, $user->hasRight(
'banque',
'lire'));
402 $newmenu->add(
'/compta/bank/bankentries_list.php?id='.$objp->rowid, $langs->trans(
"Conciliate"), 2, $user->hasRight(
'banque',
'consolidate'));
412 if (
isModEnabled(
'accounting') && $user->hasRight(
'accounting',
'comptarapport',
'lire') && $mainmenu ==
'accountancy') {
413 $newmenu->add(
'', $langs->trans(
"RegistrationInAccounting"), 1, $user->hasRight(
'accounting',
'comptarapport',
'lire'),
'',
'accountancy',
'accountancy_journal', 10);
416 $sql =
"SELECT rowid, code, label, nature";
417 $sql .=
" FROM ".MAIN_DB_PREFIX.
"accounting_journal";
418 $sql .=
" WHERE entity = ".$conf->entity;
420 $sql .=
" AND nature = 4";
422 $sql .=
" AND active = 1";
423 $sql .=
" ORDER BY nature ASC, label DESC";
425 $resql =
$db->query($sql);
427 $numr =
$db->num_rows($resql);
432 $objp =
$db->fetch_object($resql);
440 if ($objp->nature == 3
443 $nature =
"purchases";
449 $nature =
"expensereports";
454 if ($objp->nature == 8) {
455 $nature =
"inventory";
457 if ($objp->nature == 9) {
463 if ($nature ==
'hasnew' || $nature ==
'inventory') {
469 $langs->load(
'accountancy');
470 $journallabel = $langs->transnoentities($objp->label);
473 $journalNaturePrefixUrl =
'treasury';
475 $journalNaturePrefixUrl = $nature;
477 $newmenu->add(
'/accountancy/journal/'.$journalNaturePrefixUrl.
'journal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal='.$objp->rowid, $journallabel, 2, $user->hasRight(
'accounting',
'comptarapport',
'lire'));
483 $newmenu->add(
'', $langs->trans(
"NoJournalDefined"), 2, $user->hasRight(
'accounting',
'comptarapport',
'lire'));
494 while ($i <= $MAXFTP) {
495 $paramkey =
'FTP_NAME_'.$i;
498 $link =
"/ftp/index.php?idmenu=".$_SESSION[
"idmenu"].
"&numero_ftp=".$i;
510 $menu_array = $newmenu->liste;
511 if (is_array($menu_array_before)) {
512 $menu_array = array_merge($menu_array_before, $menu_array);
514 if (is_array($menu_array_after)) {
515 $menu_array = array_merge($menu_array, $menu_array_after);
518 if (!is_array($menu_array)) {
524 'mainmenu' => $mainmenu,
526 $hook_items = $menu_array;
527 $reshook = $hookmanager->executeHooks(
'menuLeftMenuItems', $parameters, $hook_items);
529 if (is_numeric($reshook)) {
530 if ($reshook == 0 && !empty($hookmanager->resArray)) {
531 $menu_array[] = $hookmanager->resArray;
532 } elseif ($reshook == 1) {
533 $menu_array = $hookmanager->resArray;
547 '@phan-var-force array<array{rowid:string,fk_menu:string,langs:string,enabled:int<0,2>,type:string,fk_mainmenu:string,fk_leftmenu:string,url:string,titre:string,perms:string,target:string,mainmenu:string,leftmenu:string,position:int,showtopmenuinframe:int,prefix:string,level:int}> $menu_array';
553 $blockvmenuopened =
false;
555 $num = count($menu_array);
556 foreach (array_keys($menu_array) as $i) {
558 if (
getDolGlobalString(
'MAIN_MENU_HIDE_UNAUTHORIZED') && empty($menu_array[$i][
'enabled'])) {
563 if (empty($menu_array[$i][
'level']) && $showmenu) {
565 $blockvmenuopened =
true;
567 for ($j = ($i + 1); $j < $num; $j++) {
568 if (empty($menu_array[$j][
'level'])) {
572 if ($altok % 2 == 0) {
573 print
'<div class="blockvmenu blockvmenuimpair'.$invert.($lastopened ?
' blockvmenulast' :
'').($altok == 1 ?
' blockvmenufirst' :
'').
'">'.
"\n";
575 print
'<div class="blockvmenu blockvmenupair'.$invert.($lastopened ?
' blockvmenulast' :
'').($altok == 1 ?
' blockvmenufirst' :
'').
'">'.
"\n";
581 $tabul = ($menu_array[$i][
'level'] - 1);
583 for ($j = 0; $j < $tabul; $j++) {
584 $tabstring .=
' ';
592 $url = $shorturl = $shorturlwithoutparam = $menu_array[$i][
'url'];
593 if (!preg_match(
"/^(http:\/\/|https:\/\/)/i", $menu_array[$i][
'url'])) {
594 $tmp = explode(
'?', $menu_array[$i][
'url'], 2);
595 $url = $shorturl = $tmp[0];
596 $param = (isset($tmp[1]) ? $tmp[1] :
'');
599 if ((!preg_match(
'/mainmenu/i', $param)) && (!preg_match(
'/leftmenu/i', $param)) && !empty($menu_array[$i][
'mainmenu'])) {
600 $param .= ($param ?
'&' :
'').
'mainmenu='.$menu_array[$i][
'mainmenu'].
'&leftmenu=';
602 if ((!preg_match(
'/mainmenu/i', $param)) && (!preg_match(
'/leftmenu/i', $param)) && empty($menu_array[$i][
'mainmenu'])) {
603 $param .= ($param ?
'&' :
'').
'leftmenu=';
607 $shorturlwithoutparam = $shorturl;
608 $shorturl .= ($param ?
'?'.$param :
'');
612 print
'<!-- Process menu entry with mainmenu='.$menu_array[$i][
'mainmenu'].
', leftmenu='.$menu_array[$i][
'leftmenu'].
', level='.$menu_array[$i][
'level'].
' enabled='.$menu_array[$i][
'enabled'].
', position='.$menu_array[$i][
'position'].
' prefix='.$menu_array[$i][
'prefix'].
' -->'.
"\n";
615 if ($menu_array[$i][
'level'] == 0) {
616 if ($menu_array[$i][
'enabled']) {
617 print
'<div class="menu_titre">'.$tabstring;
618 if ($shorturlwithoutparam) {
619 print
'<a class="vmenu" title="'.dol_escape_htmltag(
dol_string_nohtmltag($menu_array[$i][
'titre'])).
'" href="'.$url.
'"'.($menu_array[$i][
'target'] ?
' target="'.$menu_array[$i][
'target'].
'"' :
'').
'>';
621 print
'<span class="vmenu">';
623 if (!empty($menu_array[$i][
'prefix'])) {
625 if (preg_match(
'/^(fa[rsb]? )?fa-/', $menu_array[$i][
'prefix'], $reg)) {
626 print
'<span class="'.(empty($reg[1]) ?
'fa ' :
'').$menu_array[$i][
'prefix'].
' paddingright pictofixedwidth"></span>';
628 print $menu_array[$i][
'prefix'];
633 print ucfirst($menu_array[$i][
'titre']);
634 if ($shorturlwithoutparam) {
640 $lastlevel0 =
'enabled';
641 } elseif ($showmenu) {
642 print
'<div class="menu_titre">'.$tabstring;
643 print
'<span class="vmenudisabled">';
644 if (!empty($menu_array[$i][
'prefix'])) {
645 print $menu_array[$i][
'prefix'];
647 print ucfirst($menu_array[$i][
'titre']);
650 $lastlevel0 =
'greyed';
652 $lastlevel0 =
'hidden';
655 print
'<div class="menu_top"></div>'.
"\n";
660 if ($menu_array[$i][
'level'] > 0) {
662 if ($menu_array[$i][
'url']) {
663 $cssmenu =
' menu_contenu'.dol_string_nospecial(preg_replace(
'/\.php.*$/',
'', $menu_array[$i][
'url']));
666 if ($menu_array[$i][
'enabled'] && $lastlevel0 ==
'enabled') {
668 print
'<div class="menu_contenu'.$cssmenu.
'">';
670 if ($shorturlwithoutparam) {
671 print
'<a class="vsmenu" title="'.dol_escape_htmltag(
dol_string_nohtmltag($menu_array[$i][
'titre'])).
'" href="'.$url.
'"'.($menu_array[$i][
'target'] ?
' target="'.$menu_array[$i][
'target'].
'"' :
'').
'>';
673 print
'<span class="vsmenu" title="'.dol_escape_htmltag($menu_array[$i][
'titre']).
'">';
675 print ucfirst($menu_array[$i][
'titre']);
676 if ($shorturlwithoutparam) {
682 if (!strstr($menu_array[$i][
'titre'],
'<table')) {
686 } elseif ($showmenu && $lastlevel0 ==
'enabled') {
688 print
'<div class="menu_contenu'.$cssmenu.
'">';
690 print
'<span class="spanlilevel0 vsmenudisabled vsmenudisabledmargin">'.ucfirst($menu_array[$i][
'titre']).
'</span><br>';
696 if (empty($menu_array[$i + 1][
'level'])) {
698 print
'<div class="menu_end"></div>'.
"\n";
700 if ($blockvmenuopened) {
702 $blockvmenuopened =
false;
708 print
'<div class="blockvmenuend"></div>';
712 return count($menu_array);
print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$tabMenu, &$menu, $noout=0, $forcemainmenu='', $forceleftmenu='', $moredata=null, $type_user=0)
Core function to output left menu auguria Fill &$menu (example with $forcemainmenu='home' $forceleftm...