dolibarr  13.0.2
eldy.lib.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2010-2014 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com>
4  * Copyright (C) 2012-2015 Juanjo Menent <jmenent@2byte.es>
5  * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
6  * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
7  * Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
8  * Copyright (C) 2018-2019 Frédéric France <frederic.france@netlogic.fr>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <https://www.gnu.org/licenses/>.
22  * or see https://www.gnu.org/
23  */
24 
29 require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php';
30 
31 
44 function print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout = 0, $mode = '')
45 {
46  global $user, $conf, $langs, $mysoc;
47  global $dolibarr_main_db_name;
48 
49  $mainmenu = (empty($_SESSION["mainmenu"]) ? '' : $_SESSION["mainmenu"]);
50  $leftmenu = (empty($_SESSION["leftmenu"]) ? '' : $_SESSION["leftmenu"]);
51 
52  $id = 'mainmenu';
53  $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL);
54 
55  $substitarray = getCommonSubstitutionArray($langs, 0, null, null);
56 
57  if (empty($noout)) {
59  }
60 
61  $usemenuhider = 1;
62 
63  // Show/Hide vertical menu. The hamburger icon for .menuhider action.
64  if ($mode != 'jmobile' && $mode != 'topnb' && $usemenuhider && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
65  $showmode = 1;
66  $classname = 'class="tmenu menuhider"';
67  $idsel = 'menu';
68 
69  $menu->add('#', (!empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE) ? '<span class="fa fa-bars"></span>' : ''), 0, $showmode, $atarget, "xxx", '', 0, $id, $idsel, $classname);
70  }
71 
72  $menu_arr = array();
73 
74  // Home
75  $menu_arr[] = array(
76  'name' => 'Home',
77  'link' => '/index.php?mainmenu=home&amp;leftmenu=home',
78  'title' => (!empty($conf->global->THEME_TOPMENU_DISABLE_IMAGE) ? '<span class="fa fa-home"></span>' : "Home"),
79  'level' => 0,
80  'enabled' => $showmode = 1,
81  'target' => $atarget,
82  'mainmenu' => "home",
83  'leftmenu' => '',
84  'position' => 10,
85  'id' => $id,
86  'idsel' => 'home',
87  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "home") ? 'class="tmenusel"' : 'class="tmenu"',
88  'prefix' => '',
89  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "home") ? 0 : 1),
90  'loadLangs' => array(),
91  'submenus' => array(),
92  );
93 
94  // Members
95  $tmpentry = array(
96  'enabled' => (!empty($conf->adherent->enabled)),
97  'perms' => (!empty($user->rights->adherent->lire)),
98  'module' => 'adherent'
99  );
100  $menu_arr[] = array(
101  'name' => 'Members',
102  'link' => '/adherents/index.php?mainmenu=members&amp;leftmenu=',
103  'title' => "MenuMembers",
104  'level' => 0,
105  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
106  'target' => $atarget,
107  'mainmenu' => "members",
108  'leftmenu' => '',
109  'position' => 18,
110  'id' => $id,
111  'idsel' => 'members',
112  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "members") ? 'class="tmenusel"' : 'class="tmenu"',
113  'prefix' => '',
114  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "members") ? 0 : 1),
115  'loadLangs' => array(),
116  'submenus' => array(),
117  );
118 
119  // Third parties
120  $tmpentry = array(
121  'enabled'=> ((!empty($conf->societe->enabled) &&
122  (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))
123  )
124  || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))
125  ),
126  'perms'=> (!empty($user->rights->societe->lire) || !empty($user->rights->fournisseur->lire)),
127  'module'=>'societe|fournisseur'
128  );
129  $menu_arr[] = array(
130  'name' => 'Companies',
131  'link' => '/societe/index.php?mainmenu=companies&amp;leftmenu=',
132  'title' => "ThirdParties",
133  'level' => 0,
134  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
135  'target' => $atarget,
136  'mainmenu' => "companies",
137  'leftmenu' => '',
138  'position' => 20,
139  'id' => $id,
140  'idsel' => 'companies',
141  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "companies") ? 'class="tmenusel"' : 'class="tmenu"',
142  'prefix' => '',
143  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "companies") ? 0 : 1),
144  'loadLangs' => array("companies", "suppliers"),
145  'submenus' => array(),
146  );
147 
148  // Products-Services
149  $tmpentry = array(
150  'enabled'=> (!empty($conf->product->enabled) || !empty($conf->service->enabled) || !empty($conf->expedition->enabled)),
151  'perms'=> (!empty($user->rights->produit->lire) || !empty($user->rights->service->lire) || !empty($user->rights->expedition->lire)),
152  'module'=>'product|service'
153  );
154  $menu_arr[] = array(
155  'name' => 'Products',
156  'link' => '/product/index.php?mainmenu=products&amp;leftmenu=',
157  'title' => (!empty($conf->product->enabled) && !empty($conf->service->enabled))
158  ? (array("TMenuProducts", " | ", "TMenuServices"))
159  : (!empty($conf->product->enabled) ? "TMenuProducts" : "TMenuServices"),
160  'level' => 0,
161  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
162  'target' => $atarget,
163  'mainmenu' => "products",
164  'leftmenu' => '',
165  'position' => 30,
166  'id' => $id,
167  'idsel' => 'products',
168  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "products") ? 'class="tmenusel"' : 'class="tmenu"',
169  'prefix' => '',
170  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "products") ? 0 : 1),
171  'loadLangs' => array("products"),
172  'submenus' => array(),
173  );
174 
175  // MRP - GPAO
176  $tmpentry = array(
177  'enabled'=>(!empty($conf->bom->enabled) || !empty($conf->mrp->enabled)),
178  'perms'=>(!empty($user->rights->bom->read) || !empty($user->rights->mrp->read)),
179  'module'=>'bom|mrp'
180  );
181  $menu_arr[] = array(
182  'name' => 'TMenuMRP',
183  'link' => '/mrp/index.php?mainmenu=mrp&amp;leftmenu=',
184  'title' => "TMenuMRP",
185  'level' => 0,
186  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
187  'target' => $atarget,
188  'mainmenu' => "mrp",
189  'leftmenu' => '',
190  'position' => 31,
191  'id' => $id,
192  'idsel' => 'mrp',
193  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "mrp") ? 'class="tmenusel"' : 'class="tmenu"',
194  'prefix' => '',
195  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "mrp") ? 0 : 1),
196  'loadLangs' => array("mrp"),
197  'submenus' => array(),
198  );
199 
200  // Projects
201  $tmpentry = array(
202  'enabled'=> (!empty($conf->projet->enabled) ? 1 : 0),
203  'perms'=> (!empty($user->rights->projet->lire) ? 1 : 0),
204  'module'=>'projet'
205  );
206  $menu_arr[] = array(
207  'name' => 'Projet',
208  'link' => '/projet/index.php?mainmenu=project&amp;leftmenu=',
209  'title' => (empty($conf->global->PROJECT_USE_OPPORTUNITIES) || $conf->global->PROJECT_USE_OPPORTUNITIES == 2)
210  ? (($conf->global->PROJECT_USE_OPPORTUNITIES == 2) ? "Leads" : "Projects")
211  : "Projects",
212  'level' => 0,
213  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
214  'target' => $atarget,
215  'mainmenu' => "project",
216  'leftmenu' => '',
217  'position' => 35,
218  'id' => $id,
219  'idsel' => 'project',
220  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "project") ? 'class="tmenusel"' : 'class="tmenu"',
221  'prefix' => '',
222  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "project") ? 0 : 1),
223  'loadLangs' => array("projects"),
224  'submenus' => array(),
225  );
226 
227  // Commercial (propal, commande, supplier_proposal, supplier_order, contrat, ficheinter)
228  $tmpentry = array(
229  'enabled'=>(!empty($conf->propal->enabled)
230  || !empty($conf->commande->enabled)
231  || !empty($conf->supplier_proposal->enabled)
232  || !empty($conf->supplier_order->enabled)
233  || !empty($conf->contrat->enabled)
234  || !empty($conf->ficheinter->enabled)
235  ) ? 1 : 0,
236  'perms'=>(!empty($user->rights->propal->lire)
237  || !empty($user->rights->commande->lire)
238  || !empty($user->rights->supplier_proposal->lire)
239  || !empty($user->rights->supplier_order->lire)
240  || !empty($user->rights->contrat->lire)
241  || !empty($user->rights->ficheinter->lire)
242  ),
243  'module'=>'propal|commande|supplier_proposal|supplier_order|contrat|ficheinter'
244  );
245 
246  $onlysupplierorder = !empty($user->rights->fournisseur->commande->lire) &&
247  empty($user->rights->propal->lire) &&
248  empty($user->rights->commande->lire) &&
249  empty($user->rights->supplier_order->lire) &&
250  empty($user->rights->supplier_proposal->lire) &&
251  empty($user->rights->contrat->lire) &&
252  empty($user->rights->ficheinter->lire);
253 
254  $menu_arr[] = array(
255  'name' => 'Commercial',
256  'link' => ($onlysupplierorder ? '/fourn/commande/index.php?mainmenu=commercial&amp;leftmenu=' : '/comm/index.php?mainmenu=commercial&amp;leftmenu='),
257  'title' => "Commercial",
258  'level' => 0,
259  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
260  'target' => $atarget,
261  'mainmenu' => "commercial",
262  'leftmenu' => '',
263  'position' => 40,
264  'id' => $id,
265  'idsel' => 'commercial',
266  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "commercial") ? 'class="tmenusel"' : 'class="tmenu"',
267  'prefix' => '',
268  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "commercial") ? 0 : 1),
269  'loadLangs' => array("commercial"),
270  'submenus' => array(),
271  );
272 
273  // Billing - Financial
274  $tmpentry = array(
275  'enabled'=>(!empty($conf->facture->enabled) ||
276  !empty($conf->don->enabled) ||
277  !empty($conf->tax->enabled) ||
278  !empty($conf->salaries->enabled) ||
279  !empty($conf->supplier_invoice->enabled) ||
280  !empty($conf->loan->enabled) ||
281  !empty($conf->margins->enabled)
282  ) ? 1 : 0,
283  'perms'=>(!empty($user->rights->facture->lire) || !empty($user->rights->don->contact->lire)
284  || !empty($user->rights->tax->charges->lire) || !empty($user->rights->salaries->read)
285  || !empty($user->rights->fournisseur->facture->lire) || !empty($user->rights->loan->read) || !empty($user->rights->margins->liretous)),
286  'module'=>'facture|supplier_invoice|don|tax|salaries|loan'
287  );
288  $menu_arr[] = array(
289  'name' => 'Compta',
290  'link' => '/compta/index.php?mainmenu=billing&amp;leftmenu=',
291  'title' => "MenuFinancial",
292  'level' => 0,
293  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
294  'target' => $atarget,
295  'mainmenu' => "billing",
296  'leftmenu' => '',
297  'position' => 50,
298  'id' => $id,
299  'idsel' => 'billing',
300  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "billing") ? 'class="tmenusel"' : 'class="tmenu"',
301  'prefix' => '',
302  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "billing") ? 0 : 1),
303  'loadLangs' => array("compta"),
304  'submenus' => array(),
305  );
306 
307  // Bank
308  $tmpentry = array(
309  'enabled'=>(!empty($conf->banque->enabled) || !empty($conf->prelevement->enabled)),
310  'perms'=>(!empty($user->rights->banque->lire) || !empty($user->rights->prelevement->lire) || !empty($user->rights->paymentbybanktransfer->read)),
311  'module'=>'banque|prelevement|paymentbybanktransfer'
312  );
313  $menu_arr[] = array(
314  'name' => 'Bank',
315  'link' => '/compta/bank/list.php?mainmenu=bank&amp;leftmenu=',
316  'title' => "MenuBankCash",
317  'level' => 0,
318  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
319  'target' => $atarget,
320  'mainmenu' => "bank",
321  'leftmenu' => '',
322  'position' => 52,
323  'id' => $id,
324  'idsel' => 'bank',
325  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "bank") ? 'class="tmenusel"' : 'class="tmenu"',
326  'prefix' => '',
327 
328  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "bank") ? 0 : 1),
329 
330  'loadLangs' => array("compta", "banks"),
331  'submenus' => array(),
332  );
333 
334  // Accounting
335  $tmpentry = array(
336  'enabled'=>(!empty($conf->comptabilite->enabled) || !empty($conf->accounting->enabled) || !empty($conf->asset->enabled) || !empty($conf->intracommreport->enabled)),
337  'perms'=>(!empty($user->rights->compta->resultat->lire) || !empty($user->rights->accounting->mouvements->lire) || !empty($user->rights->asset->read) || !empty($user->rights->intracommreport->read)),
338  'module'=>'comptabilite|accounting|asset|intracommreport'
339  );
340  $menu_arr[] = array(
341  'name' => 'Accounting',
342  'link' => '/accountancy/index.php?mainmenu=accountancy&amp;leftmenu=',
343  'title' => "MenuAccountancy",
344  'level' => 0,
345  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
346  'target' => $atarget,
347  'mainmenu' => "accountancy",
348  'leftmenu' => '',
349  'position' => 54,
350  'id' => $id,
351  'idsel' => 'accountancy',
352  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "accountancy") ? 'class="tmenusel"' : 'class="tmenu"',
353  'prefix' => '',
354 
355  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "accountancy") ? 0 : 1),
356 
357  'loadLangs' => array("compta", "accountancy", "assets", "intracommreport"),
358  'submenus' => array(),
359  );
360 
361  // HRM
362  $tmpentry = array(
363  'enabled'=>(!empty($conf->hrm->enabled) || (!empty($conf->holiday->enabled)) || !empty($conf->deplacement->enabled) || !empty($conf->expensereport->enabled) || !empty($conf->recruitment->enabled)),
364  'perms'=>(!empty($user->rights->hrm->employee->read) || !empty($user->rights->holiday->write) || !empty($user->rights->deplacement->lire) || !empty($user->rights->expensereport->lire) || !empty($user->rights->recruitment->recruitmentjobposition->read)),
365  'module'=>'hrm|holiday|deplacement|expensereport|recruitment'
366  );
367 
368  $menu_arr[] = array(
369  'name' => 'HRM',
370  'link' => '/hrm/index.php?mainmenu=hrm&amp;leftmenu=',
371  'title' => "HRM",
372  'level' => 0,
373  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
374  'target' => $atarget,
375  'mainmenu' => "hrm",
376  'leftmenu' => '',
377  'position' => 80,
378  'id' => $id,
379  'idsel' => 'hrm',
380  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "hrm") ? 'class="tmenusel"' : 'class="tmenu"',
381  'prefix' => '',
382 
383  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "hrm") ? 0 : 1),
384 
385  'loadLangs' => array("holiday"),
386  'submenus' => array(),
387  );
388 
389  // Tools
390  $tmpentry = array(
391  'enabled'=>1,
392  'perms'=>1,
393  'module'=>''
394  );
395  $menu_arr[] = array(
396  'name' => 'Tools',
397  'link' => '/core/tools.php?mainmenu=tools&amp;leftmenu=',
398  'title' => "Tools",
399  'level' => 0,
400  'enabled' => $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal),
401  'target' => $atarget,
402  'mainmenu' => "tools",
403  'leftmenu' => '',
404  'position' => 90,
405  'id' => $id,
406  'idsel' => 'tools',
407  'classname' => $classname = ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "tools") ? 'class="tmenusel"' : 'class="tmenu"',
408  'prefix' => '',
409 
410  'session' => (($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "tools") ? 0 : 1),
411 
412  'loadLangs' => array("other"),
413  'submenus' => array(),
414  );
415 
416  // Add menus
417  foreach ($menu_arr as $key => $smenu) {
418  $smenu = (object) $smenu;
419 
420  if ($smenu->enabled) {
421  if ($smenu->session) {
422  $_SESSION['idmenu'] = '';
423  }
424 
425  // Load Langue
426  if (!empty($smenu->loadLangs)) {
427  $langs->loadLangs($smenu->loadLangs);
428  }
429 
430  // Trans title
431  $mtitle = '';
432  if (is_array($smenu->title)) {
433  foreach ($smenu->title as $item) {
434  $mtitle .= $langs->trans($item);
435  }
436  } else {
437  $mtitle = $langs->trans($smenu->title);
438  }
439  // Add item
440  $menu->add($smenu->link, $mtitle, $smenu->level, $smenu->enabled, $smenu->target, $smenu->mainmenu, $smenu->leftmenu, $smenu->position, $smenu->id, $smenu->idsel, $smenu->classname, $smenu->prefix);
441  }
442  }
443 
444  // Show personalized menus
445  $menuArbo = new Menubase($db, 'eldy');
446 
447  $newTabMenu = $menuArbo->menuTopCharger('', '', $type_user, 'eldy', $tabMenu); // Return tabMenu with only top entries
448 
449  $num = count($newTabMenu);
450  for ($i = 0; $i < $num; $i++) {
451  //var_dump($type_user.' '.$newTabMenu[$i]['url'].' '.$showmode.' '.$newTabMenu[$i]['perms']);
452  $idsel = (empty($newTabMenu[$i]['mainmenu']) ? 'none' : $newTabMenu[$i]['mainmenu']);
453 
454  $newTabMenu[$i]['url'] = make_substitutions($newTabMenu[$i]['url'], $substitarray);
455 
456  // url = url from host, shorturl = relative path into dolibarr sources
457  $url = $shorturl = $newTabMenu[$i]['url'];
458  if (!preg_match("/^(http:\/\/|https:\/\/)/i", $newTabMenu[$i]['url'])) { // Do not change url content for external links
459  $tmp = explode('?', $newTabMenu[$i]['url'], 2);
460  $url = $shorturl = $tmp[0];
461  $param = (isset($tmp[1]) ? $tmp[1] : '');
462 
463  if (!preg_match('/mainmenu/i', $param) || !preg_match('/leftmenu/i', $param)) {
464  $param .= ($param ? '&' : '').'mainmenu='.$newTabMenu[$i]['mainmenu'].'&amp;leftmenu=';
465  }
466  //$url.="idmenu=".$newTabMenu[$i]['rowid']; // Already done by menuLoad
467  $url = dol_buildpath($url, 1).($param ? '?'.$param : '');
468  //$shorturl = $shorturl.($param?'?'.$param:'');
469  $shorturl = $url;
470  if (DOL_URL_ROOT) {
471  $shorturl = preg_replace('/^'.preg_quote(DOL_URL_ROOT, '/').'/', '', $shorturl);
472  }
473  }
474 
475  $showmode = isVisibleToUserType($type_user, $newTabMenu[$i], $listofmodulesforexternal);
476  if ($showmode == 1) {
477  // Define the class (top menu selected or not)
478  if (!empty($_SESSION['idmenu']) && $newTabMenu[$i]['rowid'] == $_SESSION['idmenu']) {
479  $classname = 'class="tmenusel"';
480  } elseif (!empty($_SESSION["mainmenu"]) && $newTabMenu[$i]['mainmenu'] == $_SESSION["mainmenu"]) {
481  $classname = 'class="tmenusel"';
482  } else {
483  $classname = 'class="tmenu"';
484  }
485  } elseif ($showmode == 2) {
486  $classname = 'class="tmenu"';
487  }
488 
489  $menu->add(
490  $shorturl,
491  $newTabMenu[$i]['titre'],
492  0,
493  $showmode,
494  ($newTabMenu[$i]['target'] ? $newTabMenu[$i]['target'] : $atarget),
495  ($newTabMenu[$i]['mainmenu'] ? $newTabMenu[$i]['mainmenu'] : $newTabMenu[$i]['rowid']),
496  ($newTabMenu[$i]['leftmenu'] ? $newTabMenu[$i]['leftmenu'] : ''),
497  $newTabMenu[$i]['position'],
498  $id,
499  $idsel,
500  $classname
501  );
502  }
503 
504  // Sort on position
505  $menu->liste = dol_sort_array($menu->liste, 'position');
506 
507  // Output menu entries
508  // Show logo company
509  if (empty($conf->global->MAIN_MENU_INVERT) && empty($noout) && !empty($conf->global->MAIN_SHOW_LOGO) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
510  //$mysoc->logo_mini=(empty($conf->global->MAIN_INFO_SOCIETE_LOGO_MINI)?'':$conf->global->MAIN_INFO_SOCIETE_LOGO_MINI);
511  $mysoc->logo_squarred_mini = (empty($conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI) ? '' : $conf->global->MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI);
512 
513  $logoContainerAdditionalClass = 'backgroundforcompanylogo';
514  if (!empty($conf->global->MAIN_INFO_SOCIETE_LOGO_NO_BACKGROUND)) {
515  $logoContainerAdditionalClass = '';
516  }
517 
518  if (!empty($mysoc->logo_squarred_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_squarred_mini)) {
519  $urllogo = DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_squarred_mini);
520  }
521  /*elseif (! empty($mysoc->logo_mini) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_mini))
522  {
523  $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&amp;modulepart=mycompany&amp;file='.urlencode('logos/thumbs/'.$mysoc->logo_mini);
524  }*/
525  else {
526  $urllogo = DOL_URL_ROOT.'/theme/dolibarr_512x512_white.png';
527  $logoContainerAdditionalClass = '';
528  }
529  $title = $langs->trans("GoIntoSetupToChangeLogo");
530 
531  print "\n".'<!-- Show logo on menu -->'."\n";
532  print_start_menu_entry('companylogo', 'class="tmenu tmenucompanylogo nohover"', 1);
533 
534  print '<div class="center '.$logoContainerAdditionalClass.' menulogocontainer"><img class="mycompany" title="'.dol_escape_htmltag($title).'" alt="" src="'.$urllogo.'" style="max-width: 100px"></div>'."\n";
535 
537  }
538 
539  if (empty($noout)) {
540  foreach ($menu->liste as $menuval) {
541  print_start_menu_entry($menuval['idsel'], $menuval['classname'], $menuval['enabled']);
542  print_text_menu_entry($menuval['titre'], $menuval['enabled'], (($menuval['url'] != '#' && !preg_match('/^(http:\/\/|https:\/\/)/i', $menuval['url'])) ? DOL_URL_ROOT:'').$menuval['url'], $menuval['id'], $menuval['idsel'], $menuval['classname'], ($menuval['target'] ? $menuval['target'] : $atarget));
543  print_end_menu_entry($menuval['enabled']);
544  }
545  }
546 
547  $showmode = 1;
548  if (empty($noout)) {
549  print_start_menu_entry('', 'class="tmenuend"', $showmode);
550  print_end_menu_entry($showmode);
552  }
553 
554  return 0;
555 }
556 
557 
564 {
565  global $conf;
566 
567  print '<div class="tmenudiv">';
568  print '<ul role="navigation" class="tmenu"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' title="Top menu"').'>';
569 }
570 
579 function print_start_menu_entry($idsel, $classname, $showmode)
580 {
581  if ($showmode) {
582  print '<li '.$classname.' id="mainmenutd_'.$idsel.'">';
583  //print '<div class="tmenuleft tmenusep"></div>';
584  print '<div class="tmenucenter">';
585  }
586 }
587 
600 function print_text_menu_entry($text, $showmode, $url, $id, $idsel, $classname, $atarget)
601 {
602  global $langs;
603 
604  if ($showmode == 1) {
605  print '<a class="tmenuimage" tabindex="-1" href="'.$url.'"'.($atarget ? ' target="'.$atarget.'"' : '').' title="'.dol_escape_htmltag($text).'">';
606  print '<div class="'.$id.' '.$idsel.' topmenuimage"><span class="'.$id.' tmenuimage" id="mainmenuspan_'.$idsel.'"></span></div>';
607  print '</a>';
608  print '<a '.$classname.' id="mainmenua_'.$idsel.'" href="'.$url.'"'.($atarget ? ' target="'.$atarget.'"' : '').' title="'.dol_escape_htmltag($text).'">';
609  print '<span class="mainmenuaspan">';
610  print $text;
611  print '</span>';
612  print '</a>';
613  } elseif ($showmode == 2) {
614  print '<div class="'.$id.' '.$idsel.' topmenuimage tmenudisabled"><span class="'.$id.'" id="mainmenuspan_'.$idsel.'"></span></div>';
615  print '<a class="tmenudisabled" id="mainmenua_'.$idsel.'" href="#" title="'.dol_escape_htmltag($langs->trans("NotAllowed")).'">';
616  print '<span class="mainmenuaspan">';
617  print $text;
618  print '</span>';
619  print '</a>';
620  }
621 }
622 
629 function print_end_menu_entry($showmode)
630 {
631  if ($showmode) {
632  print '</div></li>';
633  }
634  print "\n";
635 }
636 
643 {
644  print '</ul>';
645  print '</div>';
646  print "\n";
647 }
648 
649 
650 
667 function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabMenu, &$menu, $noout = 0, $forcemainmenu = '', $forceleftmenu = '', $moredata = null, $type_user = 0)
668 {
669  global $user, $conf, $langs, $dolibarr_main_db_name, $mysoc;
670 
671  //var_dump($tabMenu);
672 
673  $newmenu = $menu;
674 
675  $mainmenu = ($forcemainmenu ? $forcemainmenu : $_SESSION["mainmenu"]);
676  $leftmenu = ($forceleftmenu ? '' : (empty($_SESSION["leftmenu"]) ? 'none' : $_SESSION["leftmenu"]));
677 
678  $usemenuhider = 0;
679 
680  if (is_array($moredata) && !empty($moredata['searchform'])) { // searchform can contains select2 code or link to show old search form or link to switch on search page
681  print "\n";
682  print "<!-- Begin SearchForm -->\n";
683  print '<div id="blockvmenusearch" class="blockvmenusearch">'."\n";
684  print $moredata['searchform'];
685  print '</div>'."\n";
686  print "<!-- End SearchForm -->\n";
687  }
688 
689  if (is_array($moredata) && !empty($moredata['bookmarks'])) {
690  print "\n";
691  print "<!-- Begin Bookmarks -->\n";
692  print '<div id="blockvmenubookmarks" class="blockvmenubookmarks">'."\n";
693  print $moredata['bookmarks'];
694  print '</div>'."\n";
695  print "<!-- End Bookmarks -->\n";
696  }
697 
698  $substitarray = getCommonSubstitutionArray($langs, 0, null, null);
699 
704  if ($mainmenu) { // If this is empty, loading hard coded menu and loading personalised menu will fail
705  /*
706  * Menu HOME
707  */
708  if ($mainmenu == 'home') {
709  $langs->load("users");
710 
711  // Home - dashboard
712  $newmenu->add("/index.php?mainmenu=home&amp;leftmenu=home", $langs->trans("MyDashboard"), 0, 1, '', $mainmenu, 'home', 0, '', '', '', '<i class="fa fa-bar-chart fa-fw paddingright"></i>');
713 
714  // Setup
715  $newmenu->add("/admin/index.php?mainmenu=home&amp;leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup', 0, '', '', '', '<i class="fa fa-wrench fa-fw paddingright"></i>');
716 
717  if ($usemenuhider || empty($leftmenu) || $leftmenu == "setup") {
718  // Load translation files required by the page
719  $langs->loadLangs(array("admin", "help"));
720 
721  $warnpicto = '';
722  if (empty($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_INFO_SOCIETE_COUNTRY)) {
723  $langs->load("errors");
724  $warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete"));
725  }
726  $newmenu->add("/admin/company.php?mainmenu=home", $langs->trans("MenuCompanySetup").$warnpicto, 1);
727 
728  $warnpicto = '';
729  if (count($conf->modules) <= (empty($conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING) ? 1 : $conf->global->MAIN_MIN_NB_ENABLED_MODULE_FOR_WARNING)) { // If only user module enabled
730  $langs->load("errors");
731  $warnpicto = img_warning($langs->trans("WarningMandatorySetupNotComplete"));
732  }
733  $newmenu->add("/admin/modules.php?mainmenu=home", $langs->trans("Modules").$warnpicto, 1);
734  $newmenu->add("/admin/ihm.php?mainmenu=home", $langs->trans("GUISetup"), 1);
735  $newmenu->add("/admin/menus.php?mainmenu=home", $langs->trans("Menus"), 1);
736 
737  $newmenu->add("/admin/translation.php?mainmenu=home", $langs->trans("Translation"), 1);
738  $newmenu->add("/admin/defaultvalues.php?mainmenu=home", $langs->trans("DefaultValues"), 1);
739  $newmenu->add("/admin/boxes.php?mainmenu=home", $langs->trans("Boxes"), 1);
740  $newmenu->add("/admin/delais.php?mainmenu=home", $langs->trans("MenuWarnings"), 1);
741  $newmenu->add("/admin/security_other.php?mainmenu=home", $langs->trans("Security"), 1);
742  $newmenu->add("/admin/limits.php?mainmenu=home", $langs->trans("MenuLimits"), 1);
743  $newmenu->add("/admin/pdf.php?mainmenu=home", $langs->trans("PDF"), 1);
744 
745  $warnpicto = '';
746  if ($conf->global->MAIN_MAIL_SENDMODE == 'mail' && empty($conf->global->MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP)) {
747  $langs->load("errors");
748  $warnpicto = img_warning($langs->trans("WarningPHPMailD"));
749  }
750  if (in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmail')) && empty($conf->global->MAIN_MAIL_SMTP_SERVER)) {
751  $langs->load("errors");
752  $warnpicto = img_warning($langs->trans("ErrorSetupOfEmailsNotComplete"));
753  }
754 
755  $newmenu->add("/admin/mails.php?mainmenu=home", $langs->trans("Emails").$warnpicto, 1);
756  $newmenu->add("/admin/sms.php?mainmenu=home", $langs->trans("SMS"), 1);
757  $newmenu->add("/admin/dict.php?mainmenu=home", $langs->trans("Dictionary"), 1);
758  $newmenu->add("/admin/const.php?mainmenu=home", $langs->trans("OtherSetup"), 1);
759  }
760 
761  // System tools
762  $newmenu->add("/admin/tools/index.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("AdminTools"), 0, $user->admin, '', $mainmenu, 'admintools', 0, '', '', '', '<i class="fa fa-server fa-fw paddingright"></i>');
763  if ($usemenuhider || empty($leftmenu) || preg_match('/^admintools/', $leftmenu)) {
764  // Load translation files required by the page
765  $langs->loadLangs(array('admin', 'help'));
766 
767  $newmenu->add('/admin/system/dolibarr.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1);
768  if ($usemenuhider || empty($leftmenu) || $leftmenu == 'admintools_info') {
769  $newmenu->add('/admin/system/modules.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Modules'), 2);
770  $newmenu->add('/admin/triggers.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Triggers'), 2);
771  $newmenu->add('/admin/system/filecheck.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('FileCheck'), 2);
772  }
773  $newmenu->add('/admin/system/browser.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoBrowser'), 1);
774  $newmenu->add('/admin/system/os.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoOS'), 1);
775  $newmenu->add('/admin/system/web.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoWebServer'), 1);
776  $newmenu->add('/admin/system/phpinfo.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoPHP'), 1);
777  $newmenu->add('/admin/system/database.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoDatabase'), 1);
778  if (!empty($conf->global->MAIN_FEATURES_LEVEL)) {
779  $newmenu->add("/admin/system/perf.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("InfoPerf"), 1);
780  $newmenu->add("/admin/system/security.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("InfoSecurity"), 1);
781  }
782  $newmenu->add("/admin/tools/dolibarr_export.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Backup"), 1);
783  $newmenu->add("/admin/tools/dolibarr_import.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Restore"), 1);
784  $newmenu->add("/admin/tools/update.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("MenuUpgrade"), 1);
785  $newmenu->add("/admin/tools/purge.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Purge"), 1);
786  $newmenu->add("/admin/tools/listevents.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Audit"), 1);
787  $newmenu->add("/admin/tools/listsessions.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Sessions"), 1);
788  $newmenu->add('/admin/system/about.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('ExternalResources'), 1);
789 
790  if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) {
791  $langs->load("products");
792  $newmenu->add("/product/admin/product_tools.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("ProductVatMassChange"), 1, $user->admin);
793  }
794  }
795 
796  $newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, $user->rights->user->user->lire, '', $mainmenu, 'users', 0, '', '', '', '<i class="fa fa-users fa-fw paddingright"></i>');
797  if ($user->rights->user->user->lire) {
798  if ($usemenuhider || empty($leftmenu) || $leftmenu == "users") {
799  $newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin);
800  $newmenu->add("/user/card.php?leftmenu=users&action=create", $langs->trans("NewUser"), 2, ($user->rights->user->user->creer || $user->admin) && !(!empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE), '', 'home');
801  $newmenu->add("/user/list.php?leftmenu=users", $langs->trans("ListOfUsers"), 2, $user->rights->user->user->lire || $user->admin);
802  $newmenu->add("/user/hierarchy.php?leftmenu=users", $langs->trans("HierarchicView"), 2, $user->rights->user->user->lire || $user->admin);
803  if (!empty($conf->categorie->enabled)) {
804  $langs->load("categories");
805  $newmenu->add("/categories/index.php?leftmenu=users&type=7", $langs->trans("UsersCategoriesShort"), 2, $user->rights->categorie->lire, '', $mainmenu, 'cat');
806  }
807  $newmenu->add("", $langs->trans("Groups"), 1, ($user->rights->user->user->lire || $user->admin) && !(!empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE));
808  $newmenu->add("/user/group/card.php?leftmenu=users&action=create", $langs->trans("NewGroup"), 2, (($conf->global->MAIN_USE_ADVANCED_PERMS ? $user->rights->user->group_advance->write : $user->rights->user->user->creer) || $user->admin) && !(!empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE));
809  $newmenu->add("/user/group/list.php?leftmenu=users", $langs->trans("ListOfGroups"), 2, (($conf->global->MAIN_USE_ADVANCED_PERMS ? $user->rights->user->group_advance->read : $user->rights->user->user->lire) || $user->admin) && !(!empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE));
810  }
811  }
812  }
813 
814 
815  /*
816  * Menu THIRDPARTIES
817  */
818  if ($mainmenu == 'companies') {
819  // Societes
820  if (!empty($conf->societe->enabled)) {
821  $langs->load("companies");
822  $newmenu->add("/societe/index.php?leftmenu=thirdparties", $langs->trans("ThirdParty"), 0, $user->rights->societe->lire, '', $mainmenu, 'thirdparties');
823 
824  if ($user->rights->societe->creer) {
825  $newmenu->add("/societe/card.php?action=create", $langs->trans("MenuNewThirdParty"), 1);
826  if (!$conf->use_javascript_ajax) {
827  $newmenu->add("/societe/card.php?action=create&amp;private=1", $langs->trans("MenuNewPrivateIndividual"), 1);
828  }
829  }
830  }
831 
832  $newmenu->add("/societe/list.php?leftmenu=thirdparties", $langs->trans("List"), 1);
833 
834  // Prospects
835  if (!empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) {
836  $langs->load("commercial");
837  $newmenu->add("/societe/list.php?type=p&amp;leftmenu=prospects", $langs->trans("ListProspectsShort"), 2, $user->rights->societe->lire, '', $mainmenu, 'prospects');
838  /* no more required, there is a filter that can do more
839  if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire);
840  if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire);
841  if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire);
842  if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire);
843  if ($usemenuhider || empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/societe/list.php?type=p&amp;sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire);
844  */
845  $newmenu->add("/societe/card.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 3, $user->rights->societe->creer);
846  }
847 
848  // Customers/Prospects
849  if (!empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) {
850  $langs->load("commercial");
851  $newmenu->add("/societe/list.php?type=c&amp;leftmenu=customers", $langs->trans("ListCustomersShort"), 2, $user->rights->societe->lire, '', $mainmenu, 'customers');
852 
853  $newmenu->add("/societe/card.php?leftmenu=customers&amp;action=create&amp;type=c", $langs->trans("MenuNewCustomer"), 3, $user->rights->societe->creer);
854  }
855 
856  // Suppliers
857  if (!empty($conf->societe->enabled) && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) || !empty($conf->supplier_proposal->enabled))) {
858  $langs->load("suppliers");
859  $newmenu->add("/societe/list.php?type=f&amp;leftmenu=suppliers", $langs->trans("ListSuppliersShort"), 2, ($user->rights->fournisseur->lire), '', $mainmenu, 'suppliers');
860  $newmenu->add("/societe/card.php?leftmenu=suppliers&amp;action=create&amp;type=f", $langs->trans("MenuNewSupplier"), 3, $user->rights->societe->creer && ($user->rights->fournisseur->lire));
861  }
862 
863  // Categories
864  if (!empty($conf->categorie->enabled)) {
865  $langs->load("categories");
866  if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) {
867  // Categories prospects/customers
868  $menutoshow = $langs->trans("CustomersProspectsCategoriesShort");
869  if (!empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) {
870  $menutoshow = $langs->trans("CustomersCategoriesShort");
871  }
872  if (!empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) {
873  $menutoshow = $langs->trans("ProspectsCategoriesShort");
874  }
875  $newmenu->add("/categories/index.php?leftmenu=cat&amp;type=2", $menutoshow, 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
876  }
877  // Categories suppliers
878  if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) {
879  $newmenu->add("/categories/index.php?leftmenu=catfournish&amp;type=1", $langs->trans("SuppliersCategoriesShort"), 1, $user->rights->categorie->lire);
880  }
881  }
882 
883  // Contacts
884  $newmenu->add("/societe/index.php?leftmenu=thirdparties", (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")), 0, $user->rights->societe->contact->lire, '', $mainmenu, 'contacts');
885  $newmenu->add("/contact/card.php?leftmenu=contacts&amp;action=create", (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("NewContact") : $langs->trans("NewContactAddress")), 1, $user->rights->societe->contact->creer);
886  $newmenu->add("/contact/list.php?leftmenu=contacts", $langs->trans("List"), 1, $user->rights->societe->contact->lire);
887  if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) {
888  $newmenu->add("/contact/list.php?leftmenu=contacts&type=p", $langs->trans("Prospects"), 2, $user->rights->societe->contact->lire);
889  }
890  if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) {
891  $newmenu->add("/contact/list.php?leftmenu=contacts&type=c", $langs->trans("Customers"), 2, $user->rights->societe->contact->lire);
892  }
893  if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) {
894  $newmenu->add("/contact/list.php?leftmenu=contacts&type=f", $langs->trans("Suppliers"), 2, $user->rights->societe->contact->lire);
895  }
896  $newmenu->add("/contact/list.php?leftmenu=contacts&type=o", $langs->trans("ContactOthers"), 2, $user->rights->societe->contact->lire);
897  //$newmenu->add("/contact/list.php?userid=$user->id", $langs->trans("MyContacts"), 1, $user->rights->societe->contact->lire);
898 
899  // Categories
900  if (!empty($conf->categorie->enabled)) {
901  $langs->load("categories");
902  // Categories Contact
903  $newmenu->add("/categories/index.php?leftmenu=catcontact&amp;type=4", $langs->trans("ContactCategoriesShort"), 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
904  }
905  }
906 
907  /*
908  * Menu COMMERCIAL (propal, commande, supplier_proposal, supplier_order, contrat, ficheinter)
909  */
910  if ($mainmenu == 'commercial') {
911  $langs->load("companies");
912 
913  // Customer proposal
914  if (!empty($conf->propal->enabled)) {
915  $langs->load("propal");
916  $newmenu->add("/comm/propal/index.php?leftmenu=propals", $langs->trans("Proposals"), 0, $user->rights->propale->lire, '', $mainmenu, 'propals', 100);
917  $newmenu->add("/comm/propal/card.php?action=create&amp;leftmenu=propals", $langs->trans("NewPropal"), 1, $user->rights->propale->creer);
918  $newmenu->add("/comm/propal/list.php?leftmenu=propals", $langs->trans("List"), 1, $user->rights->propale->lire);
919  if ($usemenuhider || empty($leftmenu) || $leftmenu == "propals") {
920  $newmenu->add("/comm/propal/list.php?leftmenu=propals&search_status=0", $langs->trans("PropalsDraft"), 2, $user->rights->propale->lire);
921  $newmenu->add("/comm/propal/list.php?leftmenu=propals&search_status=1", $langs->trans("PropalsOpened"), 2, $user->rights->propale->lire);
922  $newmenu->add("/comm/propal/list.php?leftmenu=propals&search_status=2", $langs->trans("PropalStatusSigned"), 2, $user->rights->propale->lire);
923  $newmenu->add("/comm/propal/list.php?leftmenu=propals&search_status=3", $langs->trans("PropalStatusNotSigned"), 2, $user->rights->propale->lire);
924  $newmenu->add("/comm/propal/list.php?leftmenu=propals&search_status=4", $langs->trans("PropalStatusBilled"), 2, $user->rights->propale->lire);
925  //$newmenu->add("/comm/propal/list.php?leftmenu=propals&search_status=2,3,4", $langs->trans("PropalStatusClosedShort"), 2, $user->rights->propale->lire);
926  }
927  $newmenu->add("/comm/propal/stats/index.php?leftmenu=propals", $langs->trans("Statistics"), 1, $user->rights->propale->lire);
928  }
929 
930  // Customers orders
931  if (!empty($conf->commande->enabled)) {
932  $langs->load("orders");
933  $newmenu->add("/commande/index.php?leftmenu=orders", $langs->trans("CustomersOrders"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders', 200);
934  $newmenu->add("/commande/card.php?action=create&amp;leftmenu=orders", $langs->trans("NewOrder"), 1, $user->rights->commande->creer);
935  $newmenu->add("/commande/list.php?leftmenu=orders", $langs->trans("List"), 1, $user->rights->commande->lire);
936  if ($usemenuhider || empty($leftmenu) || $leftmenu == "orders") {
937  $newmenu->add("/commande/list.php?leftmenu=orders&search_status=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->commande->lire);
938  $newmenu->add("/commande/list.php?leftmenu=orders&search_status=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->commande->lire);
939  if (!empty($conf->expedition->enabled)) {
940  $newmenu->add("/commande/list.php?leftmenu=orders&search_status=2", $langs->trans("StatusOrderSentShort"), 2, $user->rights->commande->lire);
941  }
942  $newmenu->add("/commande/list.php?leftmenu=orders&search_status=3", $langs->trans("StatusOrderDelivered"), 2, $user->rights->commande->lire);
943  //$newmenu->add("/commande/list.php?leftmenu=orders&search_status=4", $langs->trans("StatusOrderProcessed"), 2, $user->rights->commande->lire);
944  $newmenu->add("/commande/list.php?leftmenu=orders&search_status=-1", $langs->trans("StatusOrderCanceledShort"), 2, $user->rights->commande->lire);
945  }
946  $newmenu->add("/commande/stats/index.php?leftmenu=orders", $langs->trans("Statistics"), 1, $user->rights->commande->lire);
947  }
948 
949  // Supplier proposal
950  if (!empty($conf->supplier_proposal->enabled)) {
951  $langs->load("supplier_proposal");
952  $newmenu->add("/supplier_proposal/index.php?leftmenu=propals_supplier", $langs->trans("SupplierProposalsShort"), 0, $user->rights->supplier_proposal->lire, '', $mainmenu, 'propals_supplier', 300);
953  $newmenu->add("/supplier_proposal/card.php?action=create&amp;leftmenu=supplier_proposals", $langs->trans("SupplierProposalNew"), 1, $user->rights->supplier_proposal->creer);
954  $newmenu->add("/supplier_proposal/list.php?leftmenu=supplier_proposals", $langs->trans("List"), 1, $user->rights->supplier_proposal->lire);
955  $newmenu->add("/comm/propal/stats/index.php?leftmenu=supplier_proposals&amp;mode=supplier", $langs->trans("Statistics"), 1, $user->rights->supplier_proposal->lire);
956  }
957 
958  // Suppliers orders
959  if (!empty($conf->supplier_order->enabled)) {
960  $langs->load("orders");
961  $newmenu->add("/fourn/commande/index.php?leftmenu=orders_suppliers", $langs->trans("SuppliersOrders"), 0, $user->rights->fournisseur->commande->lire, '', $mainmenu, 'orders_suppliers', 400);
962  $newmenu->add("/fourn/commande/card.php?action=create&amp;leftmenu=orders_suppliers", $langs->trans("NewOrder"), 1, $user->rights->fournisseur->commande->creer);
963  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
964 
965  if ($usemenuhider || empty($leftmenu) || $leftmenu == "orders_suppliers") {
966  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusSupplierOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire);
967  if (empty($conf->global->SUPPLIER_ORDER_HIDE_VALIDATED)) {
968  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusSupplierOrderValidated"), 2, $user->rights->fournisseur->commande->lire);
969  }
970  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusSupplierOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire);
971  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusSupplierOrderOnProcessShort"), 2, $user->rights->fournisseur->commande->lire);
972  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusSupplierOrderReceivedPartiallyShort"), 2, $user->rights->fournisseur->commande->lire);
973  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=5", $langs->trans("StatusSupplierOrderReceivedAll"), 2, $user->rights->fournisseur->commande->lire);
974  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=6,7", $langs->trans("StatusSupplierOrderCanceled"), 2, $user->rights->fournisseur->commande->lire);
975  $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=9", $langs->trans("StatusSupplierOrderRefused"), 2, $user->rights->fournisseur->commande->lire);
976  }
977  // Billed is another field. We should add instead a dedicated filter on list. if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&billed=1", $langs->trans("Billed"), 2, $user->rights->fournisseur->commande->lire);
978 
979 
980  $newmenu->add("/commande/stats/index.php?leftmenu=orders_suppliers&amp;mode=supplier", $langs->trans("Statistics"), 1, $user->rights->fournisseur->commande->lire);
981  }
982 
983  // Contrat
984  if (!empty($conf->contrat->enabled)) {
985  $langs->load("contracts");
986  $newmenu->add("/contrat/index.php?leftmenu=contracts", $langs->trans("ContractsSubscriptions"), 0, $user->rights->contrat->lire, '', $mainmenu, 'contracts', 2000);
987  $newmenu->add("/contrat/card.php?action=create&amp;leftmenu=contracts", $langs->trans("NewContractSubscription"), 1, $user->rights->contrat->creer);
988  $newmenu->add("/contrat/list.php?leftmenu=contracts", $langs->trans("List"), 1, $user->rights->contrat->lire);
989  $newmenu->add("/contrat/services_list.php?leftmenu=contracts", $langs->trans("MenuServices"), 1, $user->rights->contrat->lire);
990  if ($usemenuhider || empty($leftmenu) || $leftmenu == "contracts") {
991  $newmenu->add("/contrat/services_list.php?leftmenu=contracts&amp;mode=0", $langs->trans("MenuInactiveServices"), 2, $user->rights->contrat->lire);
992  $newmenu->add("/contrat/services_list.php?leftmenu=contracts&amp;mode=4", $langs->trans("MenuRunningServices"), 2, $user->rights->contrat->lire);
993  $newmenu->add("/contrat/services_list.php?leftmenu=contracts&amp;mode=4&amp;filter=expired", $langs->trans("MenuExpiredServices"), 2, $user->rights->contrat->lire);
994  $newmenu->add("/contrat/services_list.php?leftmenu=contracts&amp;mode=5", $langs->trans("MenuClosedServices"), 2, $user->rights->contrat->lire);
995  }
996  }
997 
998  // Interventions
999  if (!empty($conf->ficheinter->enabled)) {
1000  $langs->load("interventions");
1001  $newmenu->add("/fichinter/index.php?leftmenu=ficheinter", $langs->trans("Interventions"), 0, $user->rights->ficheinter->lire, '', $mainmenu, 'ficheinter', 2200);
1002  $newmenu->add("/fichinter/card.php?action=create&amp;leftmenu=ficheinter", $langs->trans("NewIntervention"), 1, $user->rights->ficheinter->creer, '', '', '', 201);
1003  $newmenu->add("/fichinter/list.php?leftmenu=ficheinter", $langs->trans("List"), 1, $user->rights->ficheinter->lire, '', '', '', 202);
1004  if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
1005  $newmenu->add("/fichinter/card-rec.php?leftmenu=ficheinter", $langs->trans("ListOfTemplates"), 1, $user->rights->ficheinter->lire, '', '', '', 203);
1006  }
1007  $newmenu->add("/fichinter/stats/index.php?leftmenu=ficheinter", $langs->trans("Statistics"), 1, $user->rights->ficheinter->lire);
1008  }
1009  }
1010 
1011 
1012  /*
1013  * Menu COMPTA-FINANCIAL
1014  */
1015  if ($mainmenu == 'billing') {
1016  $langs->load("companies");
1017 
1018  // Customers invoices
1019  if (!empty($conf->facture->enabled)) {
1020  $langs->load("bills");
1021  $newmenu->add("/compta/facture/index.php?leftmenu=customers_bills", $langs->trans("BillsCustomers"), 0, $user->rights->facture->lire, '', $mainmenu, 'customers_bills');
1022  $newmenu->add("/compta/facture/card.php?action=create", $langs->trans("NewBill"), 1, $user->rights->facture->creer);
1023  $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills", $langs->trans("List"), 1, $user->rights->facture->lire, '', $mainmenu, 'customers_bills_list');
1024 
1025  if ($usemenuhider || empty($leftmenu) || preg_match('/customers_bills(|_draft|_notpaid|_paid|_canceled)$/', $leftmenu)) {
1026  $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills_draft&amp;search_status=0", $langs->trans("BillShortStatusDraft"), 2, $user->rights->facture->lire);
1027  $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills_notpaid&amp;search_status=1", $langs->trans("BillShortStatusNotPaid"), 2, $user->rights->facture->lire);
1028  $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills_paid&amp;search_status=2", $langs->trans("BillShortStatusPaid"), 2, $user->rights->facture->lire);
1029  $newmenu->add("/compta/facture/list.php?leftmenu=customers_bills_canceled&amp;search_status=3", $langs->trans("BillShortStatusCanceled"), 2, $user->rights->facture->lire);
1030  }
1031  $newmenu->add("/compta/facture/invoicetemplate_list.php?leftmenu=customers_bills_templates", $langs->trans("ListOfTemplates"), 1, $user->rights->facture->creer, '', $mainmenu, 'customers_bills_templates'); // No need to see recurring invoices, if user has no permission to create invoice.
1032 
1033  $newmenu->add("/compta/paiement/list.php?leftmenu=customers_bills_payment", $langs->trans("Payments"), 1, $user->rights->facture->lire, '', $mainmenu, 'customers_bills_payment');
1034 
1035  if (!empty($conf->global->BILL_ADD_PAYMENT_VALIDATION)) {
1036  $newmenu->add("/compta/paiement/tovalidate.php?leftmenu=customers_bills_tovalid", $langs->trans("MenuToValid"), 2, $user->rights->facture->lire, '', $mainmenu, 'customer_bills_tovalid');
1037  }
1038  $newmenu->add("/compta/paiement/rapport.php?leftmenu=customers_bills_reports", $langs->trans("Reportings"), 2, $user->rights->facture->lire, '', $mainmenu, 'customers_bills_reports');
1039 
1040  $newmenu->add("/compta/facture/stats/index.php?leftmenu=customers_bills_stats", $langs->trans("Statistics"), 1, $user->rights->facture->lire, '', $mainmenu, 'customers_bills_stats');
1041  }
1042 
1043  // Suppliers invoices
1044  if (!empty($conf->societe->enabled) && !empty($conf->supplier_invoice->enabled)) {
1045  $langs->load("bills");
1046  $newmenu->add("/fourn/facture/index.php?leftmenu=suppliers_bills", $langs->trans("BillsSuppliers"), 0, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills');
1047  $newmenu->add("/fourn/facture/card.php?leftmenu=suppliers_bills&amp;action=create", $langs->trans("NewBill"), 1, $user->rights->fournisseur->facture->creer, '', $mainmenu, 'suppliers_bills_create');
1048  $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills", $langs->trans("List"), 1, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_list');
1049 
1050  if ($usemenuhider || empty($leftmenu) || preg_match('/suppliers_bills/', $leftmenu)) {
1051  $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_draft&amp;search_status=0", $langs->trans("BillShortStatusDraft"), 2, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_draft');
1052  $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_notpaid&amp;search_status=1", $langs->trans("BillShortStatusNotPaid"), 2, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_notpaid');
1053  $newmenu->add("/fourn/facture/list.php?leftmenu=suppliers_bills_paid&amp;search_status=2", $langs->trans("BillShortStatusPaid"), 2, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_paid');
1054  }
1055 
1056  $newmenu->add("/fourn/paiement/list.php?leftmenu=suppliers_bills_payment", $langs->trans("Payments"), 1, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_payment');
1057 
1058  $newmenu->add("/fourn/facture/rapport.php?leftmenu=suppliers_bills_report", $langs->trans("Reportings"), 2, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_report');
1059 
1060  $newmenu->add("/compta/facture/stats/index.php?mode=supplier&amp;leftmenu=suppliers_bills_stats", $langs->trans("Statistics"), 1, $user->rights->fournisseur->facture->lire, '', $mainmenu, 'suppliers_bills_stats');
1061  }
1062 
1063  // Orders
1064  if (!empty($conf->commande->enabled)) {
1065  $langs->load("orders");
1066  if (!empty($conf->facture->enabled)) {
1067  $newmenu->add("/commande/list.php?leftmenu=orders&amp;search_status=-3&amp;billed=0&amp;contextpage=billableorders", $langs->trans("MenuOrdersToBill2"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders');
1068  }
1069  //if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire);
1070  }
1071 
1072  // Supplier Orders to bill
1073  if (!empty($conf->supplier_invoice->enabled)) {
1074  if (!empty($conf->global->SUPPLIER_MENU_ORDER_RECEIVED_INTO_INVOICE)) {
1075  $langs->load("supplier");
1076  $newmenu->add("/fourn/commande/list.php?leftmenu=orders&amp;search_status=5&amp;billed=0", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders');
1077  //if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire);
1078  }
1079  }
1080 
1081 
1082  // Donations
1083  if (!empty($conf->don->enabled)) {
1084  $langs->load("donations");
1085  $newmenu->add("/don/index.php?leftmenu=donations&amp;mainmenu=billing", $langs->trans("Donations"), 0, $user->rights->don->lire, '', $mainmenu, 'donations');
1086  if ($usemenuhider || empty($leftmenu) || $leftmenu == "donations") {
1087  $newmenu->add("/don/card.php?leftmenu=donations&amp;action=create", $langs->trans("NewDonation"), 1, $user->rights->don->creer);
1088  $newmenu->add("/don/list.php?leftmenu=donations", $langs->trans("List"), 1, $user->rights->don->lire);
1089  }
1090  // if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->rights->don->lire);
1091  }
1092 
1093  // Taxes and social contributions
1094  if (!empty($conf->tax->enabled)) {
1095  $newmenu->add("/compta/charges/index.php?leftmenu=tax&amp;mainmenu=billing", $langs->trans("MenuTaxesAndSpecialExpenses"), 0, $user->rights->tax->charges->lire, '', $mainmenu, 'tax');
1096 
1097  $newmenu->add("/compta/sociales/list.php?leftmenu=tax_social", $langs->trans("MenuSocialContributions"), 1, $user->rights->tax->charges->lire);
1098  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_social/i', $leftmenu)) {
1099  $newmenu->add("/compta/sociales/card.php?leftmenu=tax_social&action=create", $langs->trans("MenuNewSocialContribution"), 2, $user->rights->tax->charges->creer);
1100  $newmenu->add("/compta/sociales/list.php?leftmenu=tax_social", $langs->trans("List"), 2, $user->rights->tax->charges->lire);
1101  $newmenu->add("/compta/sociales/payments.php?leftmenu=tax_social&amp;mainmenu=billing", $langs->trans("Payments"), 2, $user->rights->tax->charges->lire);
1102  }
1103  // VAT
1104  if (empty($conf->global->TAX_DISABLE_VAT_MENUS)) {
1105  global $mysoc;
1106 
1107  $newmenu->add("/compta/tva/list.php?leftmenu=tax_vat&amp;mainmenu=billing", $langs->transcountry("VAT", $mysoc->country_code), 1, $user->rights->tax->charges->lire, '', $mainmenu, 'tax_vat');
1108  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_vat/i', $leftmenu)) {
1109  $newmenu->add("/compta/tva/card.php?leftmenu=tax_vat&action=create", $langs->trans("New"), 2, $user->rights->tax->charges->creer);
1110  $newmenu->add("/compta/tva/list.php?leftmenu=tax_vat", $langs->trans("List"), 2, $user->rights->tax->charges->lire);
1111  $newmenu->add("/compta/tva/index.php?leftmenu=tax_vat", $langs->trans("ReportByMonth"), 2, $user->rights->tax->charges->lire);
1112  $newmenu->add("/compta/tva/clients.php?leftmenu=tax_vat", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
1113  $newmenu->add("/compta/tva/quadri_detail.php?leftmenu=tax_vat", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
1114  }
1115 
1116  //Local Taxes 1
1117  if ($mysoc->useLocalTax(1) && (isset($mysoc->localtax1_assuj) && $mysoc->localtax1_assuj == "1")) {
1118  $newmenu->add("/compta/localtax/list.php?leftmenu=tax_1_vat&amp;mainmenu=billing&amp;localTaxType=1", $langs->transcountry("LT1", $mysoc->country_code), 1, $user->rights->tax->charges->lire);
1119  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_1_vat/i', $leftmenu)) {
1120  $newmenu->add("/compta/localtax/card.php?leftmenu=tax_1_vat&action=create&amp;localTaxType=1", $langs->trans("New"), 2, $user->rights->tax->charges->creer);
1121  $newmenu->add("/compta/localtax/list.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("List"), 2, $user->rights->tax->charges->lire);
1122  $newmenu->add("/compta/localtax/index.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByMonth"), 2, $user->rights->tax->charges->lire);
1123  $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
1124  $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_1_vat&amp;localTaxType=1", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
1125  }
1126  }
1127  //Local Taxes 2
1128  if ($mysoc->useLocalTax(2) && (isset($mysoc->localtax2_assuj) && $mysoc->localtax2_assuj == "1")) {
1129  $newmenu->add("/compta/localtax/list.php?leftmenu=tax_2_vat&amp;mainmenu=billing&amp;localTaxType=2", $langs->transcountry("LT2", $mysoc->country_code), 1, $user->rights->tax->charges->lire);
1130  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_2_vat/i', $leftmenu)) {
1131  $newmenu->add("/compta/localtax/card.php?leftmenu=tax_2_vat&action=create&amp;localTaxType=2", $langs->trans("New"), 2, $user->rights->tax->charges->creer);
1132  $newmenu->add("/compta/localtax/list.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("List"), 2, $user->rights->tax->charges->lire);
1133  $newmenu->add("/compta/localtax/index.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByMonth"), 2, $user->rights->tax->charges->lire);
1134  $newmenu->add("/compta/localtax/clients.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByCustomers"), 2, $user->rights->tax->charges->lire);
1135  $newmenu->add("/compta/localtax/quadri_detail.php?leftmenu=tax_2_vat&amp;localTaxType=2", $langs->trans("ReportByQuarter"), 2, $user->rights->tax->charges->lire);
1136  }
1137  }
1138  }
1139  }
1140 
1141  // Salaries
1142  if (!empty($conf->salaries->enabled)) {
1143  $langs->load("salaries");
1144  $newmenu->add("/salaries/list.php?leftmenu=tax_salary&amp;mainmenu=billing", $langs->trans("Salaries"), 0, $user->rights->salaries->read, '', $mainmenu, 'tax_salary');
1145  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_salary/i', $leftmenu)) {
1146  $newmenu->add("/salaries/card.php?leftmenu=tax_salary&action=create", $langs->trans("NewPayment"), 1, $user->rights->salaries->write);
1147  $newmenu->add("/salaries/list.php?leftmenu=tax_salary", $langs->trans("Payments"), 1, $user->rights->salaries->read);
1148  $newmenu->add("/salaries/stats/index.php?leftmenu=tax_salary", $langs->trans("Statistics"), 1, $user->rights->salaries->read);
1149  }
1150  }
1151 
1152  // Loan
1153  if (!empty($conf->loan->enabled)) {
1154  $langs->load("loan");
1155  $newmenu->add("/loan/list.php?leftmenu=tax_loan&amp;mainmenu=billing", $langs->trans("Loans"), 0, $user->rights->loan->read, '', $mainmenu, 'tax_loan');
1156  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i', $leftmenu)) {
1157  $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create", $langs->trans("NewLoan"), 1, $user->rights->loan->write);
1158  //$newmenu->add("/loan/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read);
1159  }
1160  }
1161 
1162  // Various payment
1163  if (!empty($conf->banque->enabled) && empty($conf->global->BANK_USE_OLD_VARIOUS_PAYMENT)) {
1164  $langs->load("banks");
1165  $newmenu->add("/compta/bank/various_payment/list.php?leftmenu=tax_various&amp;mainmenu=billing", $langs->trans("MenuVariousPayment"), 0, $user->rights->banque->lire, '', $mainmenu, 'tax_various');
1166  if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_various/i', $leftmenu)) {
1167  $newmenu->add("/compta/bank/various_payment/card.php?leftmenu=tax_various&action=create", $langs->trans("New"), 1, $user->rights->banque->modifier);
1168  $newmenu->add("/compta/bank/various_payment/list.php?leftmenu=tax_various", $langs->trans("List"), 1, $user->rights->banque->lire);
1169  }
1170  }
1171  }
1172 
1173  /*
1174  * Menu COMPTA-FINANCIAL
1175  */
1176  if ($mainmenu == 'accountancy') {
1177  $langs->load("companies");
1178 
1179  // Accounting (Double entries)
1180  if (!empty($conf->accounting->enabled)) {
1181  $permtoshowmenu = (!empty($conf->accounting->enabled) || $user->rights->accounting->bind->write || $user->rights->compta->resultat->lire);
1182  //$newmenu->add("/accountancy/index.php?leftmenu=accountancy", $langs->trans("MenuAccountancy"), 0, $permtoshowmenu, '', $mainmenu, 'accountancy');
1183 
1184  // Configuration
1185  $newmenu->add("/accountancy/index.php?leftmenu=accountancy_admin", $langs->trans("Setup"), 0, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin', 1);
1186  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_admin/', $leftmenu)) {
1187  $newmenu->add("/accountancy/admin/index.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("General"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_general', 10);
1188 
1189  // Fiscal year - Not really yet used. In a future will lock some periods.
1190  if ($conf->global->MAIN_FEATURES_LEVEL > 1) {
1191  $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("FiscalPeriod"), 1, $user->rights->accounting->fiscalyear->write, '', $mainmenu, 'fiscalyear', 20);
1192  }
1193 
1194  $newmenu->add("/accountancy/admin/journals_list.php?id=35&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("AccountingJournals"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_journal', 30);
1195  $newmenu->add("/accountancy/admin/accountmodel.php?id=31&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Pcg_version"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chartmodel', 40);
1196  $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Chartofaccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 41);
1197  $newmenu->add("/accountancy/admin/subaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("ChartOfSubaccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 41);
1198  $newmenu->add("/accountancy/admin/categories_list.php?id=32&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("AccountingCategory"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 50);
1199  $newmenu->add("/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDefaultAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 60);
1200  if (!empty($conf->banque->enabled)) {
1201  $newmenu->add("/compta/bank/list.php?mainmenu=accountancy&leftmenu=accountancy_admin&search_status=-1", $langs->trans("MenuBankAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_bank', 70);
1202  }
1203  if (!empty($conf->facture->enabled) || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled))) {
1204  $newmenu->add("/admin/dict.php?id=10&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuVatAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 80);
1205  }
1206  if (!empty($conf->tax->enabled)) {
1207  $newmenu->add("/admin/dict.php?id=7&from=accountancy&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuTaxAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 90);
1208  }
1209  if (!empty($conf->expensereport->enabled)) {
1210  $newmenu->add("/admin/dict.php?id=17&from=accountancy&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuExpenseReportAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 100);
1211  }
1212  $newmenu->add("/accountancy/admin/productaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuProductsAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_product', 110);
1213  if ($conf->global->MAIN_FEATURES_LEVEL > 1) {
1214  $newmenu->add("/accountancy/admin/closure.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuClosureAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_closure', 120);
1215  }
1216  $newmenu->add("/accountancy/admin/export.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("ExportOptions"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_export', 130);
1217  }
1218 
1219  // Transfer in accounting
1220  $newmenu->add("/accountancy/index.php?leftmenu=accountancy_transfer", $langs->trans("TransferInAccounting"), 0, $user->rights->accounting->bind->write, '', $mainmenu, 'transfer', 1);
1221 
1222  // Binding
1223  // $newmenu->add("", $langs->trans("Binding"), 0, $user->rights->accounting->bind->write, '', $mainmenu, 'dispatch');
1224  if (!empty($conf->facture->enabled) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_SALES)) {
1225  $newmenu->add("/accountancy/customer/index.php?leftmenu=accountancy_dispatch_customer&amp;mainmenu=accountancy", $langs->trans("CustomersVentilation"), 1, $user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_customer');
1226  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_customer/', $leftmenu)) {
1227  $newmenu->add("/accountancy/customer/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_customer", $langs->trans("ToBind"), 2, $user->rights->accounting->bind->write);
1228  $newmenu->add("/accountancy/customer/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_customer", $langs->trans("Binded"), 2, $user->rights->accounting->bind->write);
1229  }
1230  }
1231  if (!empty($conf->supplier_invoice->enabled) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES)) {
1232  $newmenu->add("/accountancy/supplier/index.php?leftmenu=accountancy_dispatch_supplier&amp;mainmenu=accountancy", $langs->trans("SuppliersVentilation"), 1, $user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_supplier');
1233  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_supplier/', $leftmenu)) {
1234  $newmenu->add("/accountancy/supplier/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_supplier", $langs->trans("ToBind"), 2, $user->rights->accounting->bind->write);
1235  $newmenu->add("/accountancy/supplier/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_supplier", $langs->trans("Binded"), 2, $user->rights->accounting->bind->write);
1236  }
1237  }
1238  if (!empty($conf->expensereport->enabled) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS)) {
1239  $newmenu->add("/accountancy/expensereport/index.php?leftmenu=accountancy_dispatch_expensereport&amp;mainmenu=accountancy", $langs->trans("ExpenseReportsVentilation"), 1, $user->rights->accounting->bind->write, '', $mainmenu, 'dispatch_expensereport');
1240  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_dispatch_expensereport/', $leftmenu)) {
1241  $newmenu->add("/accountancy/expensereport/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_expensereport", $langs->trans("ToBind"), 2, $user->rights->accounting->bind->write);
1242  $newmenu->add("/accountancy/expensereport/lines.php?mainmenu=accountancy&amp;leftmenu=accountancy_dispatch_expensereport", $langs->trans("Binded"), 2, $user->rights->accounting->bind->write);
1243  }
1244  }
1245 
1246  // Journals
1247  if (!empty($conf->accounting->enabled) && !empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') {
1248  $newmenu->add('', $langs->trans("RegistrationInAccounting"), 1, $user->rights->accounting->comptarapport->lire, '', '', '');
1249 
1250  // Multi journal
1251  $sql = "SELECT rowid, code, label, nature";
1252  $sql .= " FROM ".MAIN_DB_PREFIX."accounting_journal";
1253  $sql .= " WHERE entity = ".$conf->entity;
1254  $sql .= " AND active = 1";
1255  $sql .= " ORDER BY nature ASC, label DESC";
1256 
1257  $resql = $db->query($sql);
1258  if ($resql) {
1259  $numr = $db->num_rows($resql);
1260  $i = 0;
1261 
1262  if ($numr > 0) {
1263  while ($i < $numr) {
1264  $objp = $db->fetch_object($resql);
1265 
1266  $nature = '';
1267 
1268  // Must match array $sourceList defined into journals_list.php
1269  if ($objp->nature == 2 && !empty($conf->facture->enabled) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_SALES)) {
1270  $nature = "sells";
1271  }
1272  if ($objp->nature == 3
1273  && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled))
1274  && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES)) {
1275  $nature = "purchases";
1276  }
1277  if ($objp->nature == 4 && !empty($conf->banque->enabled)) {
1278  $nature = "bank";
1279  }
1280  if ($objp->nature == 5 && !empty($conf->expensereport->enabled) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS)) {
1281  $nature = "expensereports";
1282  }
1283  if ($objp->nature == 1) {
1284  $nature = "various";
1285  }
1286  if ($objp->nature == 8) {
1287  $nature = "inventory";
1288  }
1289  if ($objp->nature == 9) {
1290  $nature = "hasnew";
1291  }
1292 
1293  // To enable when page exists
1294  if (empty($conf->global->ACCOUNTANCY_SHOW_DEVELOP_JOURNAL)) {
1295  if ($nature == 'various' || $nature == 'hasnew' || $nature == 'inventory') {
1296  $nature = '';
1297  }
1298  }
1299 
1300  if ($nature) {
1301  $langs->load('accountancy');
1302  $journallabel = $langs->transnoentities($objp->label); // Labels in this table are set by loading llx_accounting_abc.sql. Label can be 'ACCOUNTING_SELL_JOURNAL', 'InventoryJournal', ...
1303  $newmenu->add('/accountancy/journal/'.$nature.'journal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal='.$objp->rowid, $journallabel, 2, $user->rights->accounting->comptarapport->lire);
1304  }
1305  $i++;
1306  }
1307  } else {
1308  // Should not happend. Entries are added
1309  $newmenu->add('', $langs->trans("NoJournalDefined"), 2, $user->rights->accounting->comptarapport->lire);
1310  }
1311  } else {
1312  dol_print_error($db);
1313  }
1314  $db->free($resql);
1315  }
1316 
1317  // Accounting
1318  $newmenu->add("/accountancy/index.php?leftmenu=accountancy_accountancy", $langs->trans("MenuAccountancy"), 0, $user->rights->accounting->mouvements->lire, '', $mainmenu, 'accountancy', 1);
1319 
1320  // Balance
1321  $newmenu->add("/accountancy/bookkeeping/balance.php?mainmenu=accountancy&amp;leftmenu=accountancy_accountancy", $langs->trans("AccountBalance"), 1, $user->rights->accounting->mouvements->lire);
1322 
1323  // General Ledger
1324  $newmenu->add("/accountancy/bookkeeping/listbyaccount.php?mainmenu=accountancy&amp;leftmenu=accountancy_accountancy", $langs->trans("Bookkeeping"), 1, $user->rights->accounting->mouvements->lire);
1325 
1326  // Journals
1327  $newmenu->add("/accountancy/bookkeeping/list.php?mainmenu=accountancy&amp;leftmenu=accountancy_accountancy", $langs->trans("Journals"), 1, $user->rights->accounting->mouvements->lire);
1328 
1329  // Files
1330  if (empty($conf->global->ACCOUNTANCY_HIDE_EXPORT_FILES_MENU)) {
1331  $newmenu->add("/compta/accounting-files.php?mainmenu=accountancy&amp;leftmenu=accountancy_files", $langs->trans("AccountantFiles"), 1, $user->rights->accounting->mouvements->lire);
1332  }
1333 
1334  // Closure
1335  if (!empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 2) {
1336  $newmenu->add("/accountancy/closure/index.php?mainmenu=accountancy&amp;leftmenu=accountancy_closure", $langs->trans("MenuAccountancyClosure"), 1, $user->rights->accounting->fiscalyear->write, '', $mainmenu, 'closure');
1337  }
1338 
1339  // Reports
1340  $newmenu->add("/accountancy/index.php?leftmenu=accountancy_report", $langs->trans("Reportings"), 1, $user->rights->accounting->comptarapport->lire, '', $mainmenu, 'ca');
1341 
1342  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) {
1343  $newmenu->add("/compta/resultat/index.php?leftmenu=accountancy_report", $langs->trans("MenuReportInOut"), 2, $user->rights->accounting->comptarapport->lire);
1344  $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=accountancy_report", $langs->trans("ByPredefinedAccountGroups"), 3, $user->rights->accounting->comptarapport->lire);
1345  $newmenu->add("/compta/resultat/result.php?leftmenu=accountancy_report", $langs->trans("ByPersonalizedAccountGroups"), 3, $user->rights->accounting->comptarapport->lire);
1346  }
1347 
1348  $modecompta = 'CREANCES-DETTES';
1349  if (!empty($conf->accounting->enabled) && !empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') {
1350  $modecompta = 'BOOKKEEPING'; // Not yet implemented. Should be BOOKKEEPINGCOLLECTED
1351  }
1352  if ($modecompta) {
1353  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) {
1354  $newmenu->add("/compta/stats/index.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ReportTurnover"), 2, $user->rights->accounting->comptarapport->lire);
1355  $newmenu->add("/compta/stats/casoc.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByCompanies"), 3, $user->rights->accounting->comptarapport->lire);
1356  $newmenu->add("/compta/stats/cabyuser.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByUsers"), 3, $user->rights->accounting->comptarapport->lire);
1357  $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByProductsAndServices"), 3, $user->rights->accounting->comptarapport->lire);
1358  $newmenu->add("/compta/stats/byratecountry.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByVatRate"), 3, $user->rights->accounting->comptarapport->lire);
1359  }
1360  }
1361 
1362  $modecompta = 'RECETTES-DEPENSES';
1363  //if (! empty($conf->accounting->enabled) && ! empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') $modecompta=''; // Not yet implemented. Should be BOOKKEEPINGCOLLECTED
1364  if ($modecompta) {
1365  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) {
1366  $newmenu->add("/compta/stats/index.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ReportTurnoverCollected"), 2, $user->rights->accounting->comptarapport->lire);
1367  $newmenu->add("/compta/stats/casoc.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByCompanies"), 3, $user->rights->accounting->comptarapport->lire);
1368  $newmenu->add("/compta/stats/cabyuser.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByUsers"), 3, $user->rights->accounting->comptarapport->lire);
1369  //$newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByProductsAndServices"),3,$user->rights->accounting->comptarapport->lire);
1370  //$newmenu->add("/compta/stats/byratecountry.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByVatRate"),3,$user->rights->accounting->comptarapport->lire);
1371  }
1372  }
1373 
1374  $modecompta = 'CREANCES-DETTES';
1375  if (!empty($conf->accounting->enabled) && !empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') {
1376  $modecompta = 'BOOKKEEPING'; // Not yet implemented. Should be BOOKKEEPINGCOLLECTED
1377  }
1378  if ($modecompta && $conf->fournisseur->enabled) {
1379  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) {
1380  $newmenu->add("/compta/stats/supplier_turnover.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ReportPurchaseTurnover"), 2, $user->rights->accounting->comptarapport->lire);
1381  $newmenu->add("/compta/stats/supplier_turnover_by_thirdparty.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByCompanies"), 3, $user->rights->accounting->comptarapport->lire);
1382  $newmenu->add("/compta/stats/supplier_turnover_by_prodserv.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByProductsAndServices"), 3, $user->rights->accounting->comptarapport->lire);
1383  }
1384  }
1385 
1386  $modecompta = 'RECETTES-DEPENSES';
1387  //if (! empty($conf->accounting->enabled) && ! empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') $modecompta=''; // Not yet implemented. Should be BOOKKEEPINGCOLLECTED
1388  if ($modecompta && $conf->fournisseur->enabled) {
1389  if ($usemenuhider || empty($leftmenu) || preg_match('/accountancy_report/', $leftmenu)) {
1390  $newmenu->add("/compta/stats/supplier_turnover.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ReportPurchaseTurnoverCollected"), 2, $user->rights->accounting->comptarapport->lire);
1391  $newmenu->add("/compta/stats/supplier_turnover_by_thirdparty.php?leftmenu=accountancy_report&modecompta=".$modecompta, $langs->trans("ByCompanies"), 3, $user->rights->accounting->comptarapport->lire);
1392  }
1393  }
1394  }
1395 
1396  // Accountancy (simple)
1397  if (!empty($conf->comptabilite->enabled)) {
1398  // Files
1399  if (empty($conf->global->ACCOUNTANCY_HIDE_EXPORT_FILES_MENU)) {
1400  $newmenu->add("/compta/accounting-files.php?mainmenu=accountancy&amp;leftmenu=accountancy_files", $langs->trans("AccountantFiles"), 0, $user->rights->compta->resultat->lire, '', $mainmenu, 'files');
1401  }
1402 
1403  // Bilan, resultats
1404  $newmenu->add("/compta/resultat/index.php?leftmenu=report&amp;mainmenu=accountancy", $langs->trans("Reportings"), 0, $user->rights->compta->resultat->lire, '', $mainmenu, 'ca');
1405 
1406  if ($usemenuhider || empty($leftmenu) || preg_match('/report/', $leftmenu)) {
1407  $newmenu->add("/compta/resultat/index.php?leftmenu=report", $langs->trans("MenuReportInOut"), 1, $user->rights->compta->resultat->lire);
1408  $newmenu->add("/compta/resultat/clientfourn.php?leftmenu=report", $langs->trans("ByCompanies"), 2, $user->rights->compta->resultat->lire);
1409  /* On verra ca avec module compabilite expert
1410  $newmenu->add("/compta/resultat/compteres.php?leftmenu=report","Compte de resultat",2,$user->rights->compta->resultat->lire);
1411  $newmenu->add("/compta/resultat/bilan.php?leftmenu=report","Bilan",2,$user->rights->compta->resultat->lire);
1412  */
1413  $newmenu->add("/compta/stats/index.php?leftmenu=report", $langs->trans("ReportTurnover"), 1, $user->rights->compta->resultat->lire);
1414 
1415  /*
1416  $newmenu->add("/compta/stats/cumul.php?leftmenu=report","Cumule",2,$user->rights->compta->resultat->lire);
1417  if (! empty($conf->propal->enabled)) {
1418  $newmenu->add("/compta/stats/prev.php?leftmenu=report","Previsionnel",2,$user->rights->compta->resultat->lire);
1419  $newmenu->add("/compta/stats/comp.php?leftmenu=report","Transforme",2,$user->rights->compta->resultat->lire);
1420  }
1421  */
1422  $newmenu->add("/compta/stats/casoc.php?leftmenu=report", $langs->trans("ByCompanies"), 2, $user->rights->compta->resultat->lire);
1423  $newmenu->add("/compta/stats/cabyuser.php?leftmenu=report", $langs->trans("ByUsers"), 2, $user->rights->compta->resultat->lire);
1424  $newmenu->add("/compta/stats/cabyprodserv.php?leftmenu=report", $langs->trans("ByProductsAndServices"), 2, $user->rights->compta->resultat->lire);
1425  $newmenu->add("/compta/stats/byratecountry.php?leftmenu=report", $langs->trans("ByVatRate"), 2, $user->rights->compta->resultat->lire);
1426  //Achats
1427  $newmenu->add("/compta/stats/supplier_turnover.php?leftmenu=accountancy_report", $langs->trans("ReportPurchaseTurnover"), 1, $user->rights->compta->resultat->lire);
1428  $newmenu->add("/compta/stats/supplier_turnover_by_thirdparty.php?leftmenu=accountancy_report", $langs->trans("ByCompanies"), 2, $user->rights->compta->resultat->lire);
1429  $newmenu->add("/compta/stats/supplier_turnover_by_prodserv.php?leftmenu=accountancy_report", $langs->trans("ByProductsAndServices"), 2, $user->rights->compta->resultat->lire);
1430  // Journals
1431  $newmenu->add("/compta/journal/sellsjournal.php?leftmenu=report", $langs->trans("SellsJournal"), 1, $user->rights->compta->resultat->lire, '', '', '', 50);
1432  $newmenu->add("/compta/journal/purchasesjournal.php?leftmenu=report", $langs->trans("PurchasesJournal"), 1, $user->rights->compta->resultat->lire, '', '', '', 51);
1433  }
1434  //if ($leftmenu=="ca") $newmenu->add("/compta/journaux/index.php?leftmenu=ca",$langs->trans("Journals"),1,$user->rights->compta->resultat->lire||$user->rights->accounting->comptarapport->lire);
1435  }
1436 
1437  // Intracomm report
1438  if (!empty($conf->intracommreport->enabled)) {
1439  $newmenu->add("/intracommreport/list.php?leftmenu=intracommreport", $langs->trans("MenuIntracommReport"), 0, $user->rights->intracommreport->read, '', $mainmenu, 'intracommreport', 1);
1440  if ($usemenuhider || empty($leftmenu) || preg_match('/intracommreport/', $leftmenu)) {
1441  // DEB / DES
1442  $newmenu->add("/intracommreport/card.php?action=create&leftmenu=intracommreport", $langs->trans("MenuIntracommReportNew"), 1, $user->rights->intracommreport->write, '', $mainmenu, 'intracommreport', 1);
1443  $newmenu->add("/intracommreport/list.php?leftmenu=intracommreport", $langs->trans("MenuIntracommReportList"), 1, $user->rights->intracommreport->read, '', $mainmenu, 'intracommreport', 1);
1444  }
1445  }
1446 
1447  // Assets
1448  if (!empty($conf->asset->enabled)) {
1449  $newmenu->add("/asset/list.php?leftmenu=asset&amp;mainmenu=accountancy", $langs->trans("MenuAssets"), 0, $user->rights->asset->read, '', $mainmenu, 'asset');
1450  $newmenu->add("/asset/card.php?leftmenu=asset&amp;action=create", $langs->trans("MenuNewAsset"), 1, $user->rights->asset->write);
1451  $newmenu->add("/asset/list.php?leftmenu=asset&amp;mainmenu=accountancy", $langs->trans("MenuListAssets"), 1, $user->rights->asset->read);
1452  $newmenu->add("/asset/type.php?leftmenu=asset_type", $langs->trans("MenuTypeAssets"), 1, $user->rights->asset->read, '', $mainmenu, 'asset_type');
1453  if ($usemenuhider || empty($leftmenu) || preg_match('/asset_type/', $leftmenu)) {
1454  $newmenu->add("/asset/type.php?leftmenu=asset_type&amp;action=create", $langs->trans("MenuNewTypeAssets"), 2, $user->rights->asset->setup_advance);
1455  $newmenu->add("/asset/type.php?leftmenu=asset_type", $langs->trans("MenuListTypeAssets"), 2, $user->rights->asset->read);
1456  }
1457  }
1458  }
1459 
1460 
1461  /*
1462  * Menu BANK
1463  */
1464  if ($mainmenu == 'bank') {
1465  // Load translation files required by the page
1466  $langs->loadLangs(array("withdrawals", "banks", "bills", "categories"));
1467 
1468  // Bank-Cash account
1469  if (!empty($conf->banque->enabled)) {
1470  $newmenu->add("/compta/bank/list.php?leftmenu=bank&amp;mainmenu=bank", $langs->trans("MenuBankCash"), 0, $user->rights->banque->lire, '', $mainmenu, 'bank');
1471 
1472  $newmenu->add("/compta/bank/card.php?action=create", $langs->trans("MenuNewFinancialAccount"), 1, $user->rights->banque->configurer);
1473  $newmenu->add("/compta/bank/list.php?leftmenu=bank&amp;mainmenu=bank", $langs->trans("List"), 1, $user->rights->banque->lire, '', $mainmenu, 'bank');
1474  $newmenu->add("/compta/bank/bankentries_list.php", $langs->trans("ListTransactions"), 1, $user->rights->banque->lire);
1475  $newmenu->add("/compta/bank/budget.php", $langs->trans("ListTransactionsByCategory"), 1, $user->rights->banque->lire);
1476 
1477  $newmenu->add("/compta/bank/transfer.php", $langs->trans("MenuBankInternalTransfer"), 1, $user->rights->banque->transfer);
1478  }
1479 
1480  if (!empty($conf->categorie->enabled)) {
1481  $langs->load("categories");
1482  $newmenu->add("/categories/index.php?type=5", $langs->trans("Rubriques"), 1, $user->rights->categorie->creer, '', $mainmenu, 'tags');
1483  $newmenu->add("/compta/bank/categ.php", $langs->trans("RubriquesTransactions"), 1, $user->rights->banque->configurer, '', $mainmenu, 'tags');
1484  }
1485 
1486  // Direct debit order
1487  if (!empty($conf->prelevement->enabled)) {
1488  $newmenu->add("/compta/prelevement/index.php?leftmenu=withdraw&amp;mainmenu=bank", $langs->trans("PaymentByDirectDebit"), 0, $user->rights->prelevement->bons->lire, '', $mainmenu, 'withdraw');
1489 
1490  if ($usemenuhider || empty($leftmenu) || $leftmenu == "withdraw") {
1491  $newmenu->add("/compta/prelevement/create.php?mainmenu=bank", $langs->trans("NewStandingOrder"), 1, $user->rights->prelevement->bons->creer);
1492 
1493  $newmenu->add("/compta/prelevement/orders_list.php?mainmenu=bank", $langs->trans("WithdrawalsReceipts"), 1, $user->rights->prelevement->bons->lire);
1494  $newmenu->add("/compta/prelevement/list.php?mainmenu=bank", $langs->trans("WithdrawalsLines"), 1, $user->rights->prelevement->bons->lire);
1495  $newmenu->add("/compta/prelevement/rejets.php?mainmenu=bank", $langs->trans("Rejects"), 1, $user->rights->prelevement->bons->lire);
1496  $newmenu->add("/compta/prelevement/stats.php?mainmenu=bank", $langs->trans("Statistics"), 1, $user->rights->prelevement->bons->lire);
1497  }
1498  }
1499 
1500  // Bank transfer order
1501  if (!empty($conf->paymentbybanktransfer->enabled)) {
1502  $newmenu->add("/compta/paymentbybanktransfer/index.php?leftmenu=banktransfer&amp;mainmenu=bank", $langs->trans("PaymentByBankTransfer"), 0, $user->rights->paymentbybanktransfer->read, '', $mainmenu, 'banktransfer');
1503 
1504  if ($usemenuhider || empty($leftmenu) || $leftmenu == "banktransfer") {
1505  $newmenu->add("/compta/prelevement/create.php?type=bank-transfer&mainmenu=bank", $langs->trans("NewPaymentByBankTransfer"), 1, $user->rights->paymentbybanktransfer->create);
1506 
1507  $newmenu->add("/compta/prelevement/orders_list.php?type=bank-transfer&mainmenu=bank", $langs->trans("PaymentByBankTransferReceipts"), 1, $user->rights->paymentbybanktransfer->read);
1508  $newmenu->add("/compta/prelevement/list.php?type=bank-transfer&mainmenu=bank", $langs->trans("PaymentByBankTransferLines"), 1, $user->rights->paymentbybanktransfer->read);
1509  $newmenu->add("/compta/prelevement/rejets.php?type=bank-transfer&mainmenu=bank", $langs->trans("Rejects"), 1, $user->rights->paymentbybanktransfer->read);
1510  $newmenu->add("/compta/prelevement/stats.php?type=bank-transfer&mainmenu=bank", $langs->trans("Statistics"), 1, $user->rights->paymentbybanktransfer->read);
1511  }
1512  }
1513 
1514  // Management of checks
1515  if (empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && !empty($conf->banque->enabled) && (!empty($conf->facture->enabled) || !empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))) {
1516  $newmenu->add("/compta/paiement/cheque/index.php?leftmenu=checks&amp;mainmenu=bank", $langs->trans("MenuChequeDeposits"), 0, $user->rights->banque->cheque, '', $mainmenu, 'checks');
1517  if (preg_match('/checks/', $leftmenu)) {
1518  $newmenu->add("/compta/paiement/cheque/card.php?leftmenu=checks_bis&amp;action=new&amp;mainmenu=bank", $langs->trans("NewChequeDeposit"), 1, $user->rights->banque->cheque);
1519  $newmenu->add("/compta/paiement/cheque/list.php?leftmenu=checks_bis&amp;mainmenu=bank", $langs->trans("List"), 1, $user->rights->banque->cheque);
1520  }
1521  }
1522 
1523  // Cash Control
1524  if (!empty($conf->takepos->enabled) || !empty($conf->cashdesk->enabled)) {
1525  $permtomakecashfence = ($user->rights->cashdesk->run || $user->rights->takepos->run);
1526  $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list", $langs->trans("POS"), 0, $permtomakecashfence, '', $mainmenu, 'cashcontrol');
1527  $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create", $langs->trans("NewCashFence"), 1, $permtomakecashfence);
1528  $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list", $langs->trans("List"), 1, $permtomakecashfence);
1529  }
1530  }
1531 
1532  /*
1533  * Menu PRODUCTS-SERVICES
1534  */
1535  if ($mainmenu == 'products') {
1536  // Products
1537  if (!empty($conf->product->enabled)) {
1538  $newmenu->add("/product/index.php?leftmenu=product&amp;type=0", $langs->trans("Products"), 0, $user->rights->produit->lire, '', $mainmenu, 'product');
1539  $newmenu->add("/product/card.php?leftmenu=product&amp;action=create&amp;type=0", $langs->trans("NewProduct"), 1, $user->rights->produit->creer);
1540  $newmenu->add("/product/list.php?leftmenu=product&amp;type=0", $langs->trans("List"), 1, $user->rights->produit->lire);
1541  if (!empty($conf->stock->enabled)) {
1542  $newmenu->add("/product/reassort.php?type=0", $langs->trans("MenuStocks"), 1, $user->rights->produit->lire && $user->rights->stock->lire);
1543  }
1544  if (!empty($conf->productbatch->enabled)) {
1545  $langs->load("stocks");
1546  $newmenu->add("/product/reassortlot.php?type=0", $langs->trans("StocksByLotSerial"), 1, $user->rights->produit->lire && $user->rights->stock->lire);
1547  $newmenu->add("/product/stock/productlot_list.php", $langs->trans("LotSerial"), 1, $user->rights->produit->lire && $user->rights->stock->lire);
1548  }
1549  if (!empty($conf->variants->enabled)) {
1550  $newmenu->add("/variants/list.php", $langs->trans("VariantAttributes"), 1, $user->rights->produit->lire);
1551  }
1552  if (!empty($conf->propal->enabled) || !empty($conf->commande->enabled) || !empty($conf->facture->enabled) || !empty($conf->fournisseur->enabled) || !empty($conf->supplier_proposal->enabled)) {
1553  $newmenu->add("/product/stats/card.php?id=all&leftmenu=stats&type=0", $langs->trans("Statistics"), 1, $user->rights->produit->lire && $user->rights->propale->lire);
1554  }
1555 
1556  // Categories
1557  if (!empty($conf->categorie->enabled)) {
1558  $langs->load("categories");
1559  $newmenu->add("/categories/index.php?leftmenu=cat&amp;type=0", $langs->trans("Categories"), 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
1560  //if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
1561  }
1562  }
1563 
1564  // Services
1565  if (!empty($conf->service->enabled)) {
1566  $newmenu->add("/product/index.php?leftmenu=service&amp;type=1", $langs->trans("Services"), 0, $user->rights->service->lire, '', $mainmenu, 'service');
1567  $newmenu->add("/product/card.php?leftmenu=service&amp;action=create&amp;type=1", $langs->trans("NewService"), 1, $user->rights->service->creer);
1568  $newmenu->add("/product/list.php?leftmenu=service&amp;type=1", $langs->trans("List"), 1, $user->rights->service->lire);
1569  if (!empty($conf->propal->enabled) || !empty($conf->commande->enabled) || !empty($conf->facture->enabled) || !empty($conf->fournisseur->enabled) || !empty($conf->supplier_proposal->enabled)) {
1570  $newmenu->add("/product/stats/card.php?id=all&leftmenu=stats&type=1", $langs->trans("Statistics"), 1, $user->rights->service->lire && $user->rights->propale->lire);
1571  }
1572  // Categories
1573  if (!empty($conf->categorie->enabled)) {
1574  $langs->load("categories");
1575  $newmenu->add("/categories/index.php?leftmenu=cat&amp;type=0", $langs->trans("Categories"), 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
1576  //if ($usemenuhider || empty($leftmenu) || $leftmenu=="cat") $newmenu->add("/categories/list.php", $langs->trans("List"), 1, $user->rights->categorie->lire);
1577  }
1578  }
1579 
1580  // Warehouse
1581  if (!empty($conf->stock->enabled)) {
1582  $langs->load("stocks");
1583  $newmenu->add("/product/stock/index.php?leftmenu=stock", $langs->trans("Warehouses"), 0, $user->rights->stock->lire, '', $mainmenu, 'stock');
1584  $newmenu->add("/product/stock/card.php?action=create", $langs->trans("MenuNewWarehouse"), 1, $user->rights->stock->creer);
1585  $newmenu->add("/product/stock/list.php", $langs->trans("List"), 1, $user->rights->stock->lire);
1586  $newmenu->add("/product/stock/movement_list.php", $langs->trans("Movements"), 1, $user->rights->stock->mouvement->lire);
1587 
1588  $newmenu->add("/product/stock/massstockmove.php", $langs->trans("MassStockTransferShort"), 1, $user->rights->stock->mouvement->creer);
1589  if ($conf->supplier_order->enabled) {
1590  $newmenu->add("/product/stock/replenish.php", $langs->trans("Replenishment"), 1, $user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire);
1591  }
1592  $newmenu->add("/product/stock/stockatdate.php", $langs->trans("StockAtDate"), 1, $user->rights->produit->lire && $user->rights->stock->lire);
1593 
1594  // Categories for warehouses
1595  if (!empty($conf->categorie->enabled)) {
1596  $newmenu->add("/categories/index.php?leftmenu=stock&amp;type=9", $langs->trans("Categories"), 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
1597  }
1598  }
1599 
1600  // Inventory
1601  if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
1602  if (!empty($conf->stock->enabled)) {
1603  $langs->load("stocks");
1604  if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) {
1605  $newmenu->add("/product/inventory/list.php?leftmenu=stock_inventories", $langs->trans("Inventories"), 0, $user->rights->stock->lire, '', $mainmenu, 'stock');
1606  if ($usemenuhider || empty($leftmenu) || $leftmenu == "stock_inventories") {
1607  $newmenu->add("/product/inventory/card.php?action=create&leftmenu=stock_inventories", $langs->trans("NewInventory"), 1, $user->rights->stock->creer);
1608  $newmenu->add("/product/inventory/list.php?leftmenu=stock_inventories", $langs->trans("List"), 1, $user->rights->stock->lire);
1609  }
1610  } else {
1611  $newmenu->add("/product/inventory/list.php?leftmenu=stock_inventories", $langs->trans("Inventories"), 0, $user->rights->stock->inventory_advance->read, '', $mainmenu, 'stock');
1612  if ($usemenuhider || empty($leftmenu) || $leftmenu == "stock_inventories") {
1613  $newmenu->add("/product/inventory/card.php?action=create&leftmenu=stock_inventories", $langs->trans("NewInventory"), 1, $user->rights->stock->inventory_advance->write);
1614  $newmenu->add("/product/inventory/list.php?leftmenu=stock_inventories", $langs->trans("List"), 1, $user->rights->stock->inventory_advance->read);
1615  }
1616  }
1617  }
1618  }
1619 
1620  // Shipments
1621  if (!empty($conf->expedition->enabled)) {
1622  $langs->load("sendings");
1623  $newmenu->add("/expedition/index.php?leftmenu=sendings", $langs->trans("Shipments"), 0, $user->rights->expedition->lire, '', $mainmenu, 'sendings');
1624  $newmenu->add("/expedition/card.php?action=create2&amp;leftmenu=sendings", $langs->trans("NewSending"), 1, $user->rights->expedition->creer);
1625  $newmenu->add("/expedition/list.php?leftmenu=sendings", $langs->trans("List"), 1, $user->rights->expedition->lire);
1626  if ($usemenuhider || empty($leftmenu) || $leftmenu == "sendings") {
1627  $newmenu->add("/expedition/list.php?leftmenu=sendings&search_status=0", $langs->trans("StatusSendingDraftShort"), 2, $user->rights->expedition->lire);
1628  $newmenu->add("/expedition/list.php?leftmenu=sendings&search_status=1", $langs->trans("StatusSendingValidatedShort"), 2, $user->rights->expedition->lire);
1629  $newmenu->add("/expedition/list.php?leftmenu=sendings&search_status=2", $langs->trans("StatusSendingProcessedShort"), 2, $user->rights->expedition->lire);
1630  }
1631  $newmenu->add("/expedition/stats/index.php?leftmenu=sendings", $langs->trans("Statistics"), 1, $user->rights->expedition->lire);
1632  }
1633 
1634  // Receptions
1635  if (!empty($conf->reception->enabled)) {
1636  $langs->load("receptions");
1637  $newmenu->add("/reception/index.php?leftmenu=receptions", $langs->trans("Receptions"), 0, $user->rights->reception->lire, '', $mainmenu, 'receptions');
1638  $newmenu->add("/reception/card.php?action=create2&amp;leftmenu=receptions", $langs->trans("NewReception"), 1, $user->rights->reception->creer);
1639  $newmenu->add("/reception/list.php?leftmenu=receptions", $langs->trans("List"), 1, $user->rights->reception->lire);
1640  if ($usemenuhider || empty($leftmenu) || $leftmenu == "receptions") {
1641  $newmenu->add("/reception/list.php?leftmenu=receptions&search_status=0", $langs->trans("StatusReceptionDraftShort"), 2, $user->rights->reception->lire);
1642  }
1643  if ($usemenuhider || empty($leftmenu) || $leftmenu == "receptions") {
1644  $newmenu->add("/reception/list.php?leftmenu=receptions&search_status=1", $langs->trans("StatusReceptionValidatedShort"), 2, $user->rights->reception->lire);
1645  }
1646  if ($usemenuhider || empty($leftmenu) || $leftmenu == "receptions") {
1647  $newmenu->add("/reception/list.php?leftmenu=receptions&search_status=2", $langs->trans("StatusReceptionProcessedShort"), 2, $user->rights->reception->lire);
1648  }
1649  $newmenu->add("/reception/stats/index.php?leftmenu=receptions", $langs->trans("Statistics"), 1, $user->rights->reception->lire);
1650  }
1651  }
1652 
1653  /*
1654  * Menu PRODUCTS-SERVICES MRP - GPAO
1655  */
1656  if ($mainmenu == 'mrp') {
1657  // BOM
1658  if (!empty($conf->bom->enabled) || !empty($conf->mrp->enabled)) {
1659  $langs->load("mrp");
1660 
1661  $newmenu->add("", $langs->trans("MenuBOM"), 0, $user->rights->bom->read, '', $mainmenu, 'bom');
1662  $newmenu->add("/bom/bom_card.php?leftmenu=bom&amp;action=create", $langs->trans("NewBOM"), 1, $user->rights->bom->write, '', $mainmenu, 'bom');
1663  $newmenu->add("/bom/bom_list.php?leftmenu=bom", $langs->trans("List"), 1, $user->rights->bom->read, '', $mainmenu, 'bom');
1664  }
1665 
1666  if (!empty($conf->mrp->enabled)) {
1667  $langs->load("mrp");
1668 
1669  $newmenu->add("", $langs->trans("MenuMRP"), 0, $user->rights->mrp->read, '', $mainmenu, 'mo');
1670  $newmenu->add("/mrp/mo_card.php?leftmenu=mo&amp;action=create", $langs->trans("NewMO"), 1, $user->rights->mrp->write, '', $mainmenu, 'mo');
1671  $newmenu->add("/mrp/mo_list.php?leftmenu=mo", $langs->trans("List"), 1, $user->rights->mrp->read, '', $mainmenu, 'mo');
1672  }
1673  }
1674 
1675  /*
1676  * Menu PROJECTS
1677  */
1678  if ($mainmenu == 'project') {
1679  if (!empty($conf->projet->enabled)) {
1680  $langs->load("projects");
1681 
1682  $search_project_user = GETPOST('search_project_user', 'int');
1683 
1684  $tmpentry = array(
1685  'enabled'=>(!empty($conf->projet->enabled)),
1686  'perms'=>(!empty($user->rights->projet->lire)),
1687  'module'=>'projet'
1688  );
1689  $showmode = isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal);
1690 
1691  $titleboth = $langs->trans("LeadsOrProjects");
1692  $titlenew = $langs->trans("NewLeadOrProject"); // Leads and opportunities by default
1693  if ($conf->global->PROJECT_USE_OPPORTUNITIES == 0) {
1694  $titleboth = $langs->trans("Projects");
1695  $titlenew = $langs->trans("NewProject");
1696  }
1697  if ($conf->global->PROJECT_USE_OPPORTUNITIES == 2) { // 2 = leads only
1698  $titleboth = $langs->trans("Leads");
1699  $titlenew = $langs->trans("NewLead");
1700  }
1701 
1702  // Project assigned to user
1703  $newmenu->add("/projet/index.php?leftmenu=projects".($search_project_user ? '&search_project_user='.$search_project_user : ''), $titleboth, 0, $user->rights->projet->lire, '', $mainmenu, 'projects');
1704  $newmenu->add("/projet/card.php?leftmenu=projects&action=create".($search_project_user ? '&search_project_user='.$search_project_user : ''), $titlenew, 1, $user->rights->projet->creer);
1705 
1706  if ($conf->global->PROJECT_USE_OPPORTUNITIES == 0) {
1707  $newmenu->add("/projet/list.php?leftmenu=projets".($search_project_user ? '&search_project_user='.$search_project_user : '').'&search_status=99', $langs->trans("List"), 1, $showmode, '', 'project', 'list');
1708  } elseif ($conf->global->PROJECT_USE_OPPORTUNITIES == 1) {
1709  $newmenu->add("/projet/list.php?leftmenu=projets".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("List"), 1, $showmode, '', 'project', 'list');
1710  $newmenu->add('/projet/list.php?mainmenu=project&amp;leftmenu=list&search_usage_opportunity=1&search_status=99&search_opp_status=openedopp&contextpage=lead', $langs->trans("ListOpenLeads"), 2, $showmode);
1711  $newmenu->add('/projet/list.php?mainmenu=project&amp;leftmenu=list&search_opp_status=notopenedopp&search_status=99&contextpage=project', $langs->trans("ListOpenProjects"), 2, $showmode);
1712  } elseif ($conf->global->PROJECT_USE_OPPORTUNITIES == 2) { // 2 = leads only
1713  $newmenu->add('/projet/list.php?mainmenu=project&amp;leftmenu=list&search_usage_opportunity=1&search_status=99', $langs->trans("List"), 2, $showmode);
1714  }
1715 
1716  $newmenu->add("/projet/stats/index.php?leftmenu=projects", $langs->trans("Statistics"), 1, $user->rights->projet->lire);
1717 
1718  // Categories
1719  if (!empty($conf->categorie->enabled)) {
1720  $langs->load("categories");
1721  $newmenu->add("/categories/index.php?leftmenu=cat&amp;type=6", $langs->trans("Categories"), 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
1722  }
1723 
1724  if (empty($conf->global->PROJECT_HIDE_TASKS)) {
1725  // Project affected to user
1726  $newmenu->add("/projet/activity/index.php?leftmenu=tasks".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("Activities"), 0, $user->rights->projet->lire, '', 'project', 'tasks');
1727  $newmenu->add("/projet/tasks.php?leftmenu=tasks&action=create", $langs->trans("NewTask"), 1, $user->rights->projet->creer);
1728  $newmenu->add("/projet/tasks/list.php?leftmenu=tasks".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("List"), 1, $user->rights->projet->lire);
1729  $newmenu->add("/projet/tasks/stats/index.php?leftmenu=projects", $langs->trans("Statistics"), 1, $user->rights->projet->lire);
1730 
1731  $newmenu->add("/projet/activity/perweek.php?leftmenu=tasks".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("NewTimeSpent"), 0, $user->rights->projet->lire);
1732  }
1733  }
1734  }
1735 
1736  /*
1737  * Menu HRM
1738  */
1739  if ($mainmenu == 'hrm') {
1740  // HRM module
1741  if (!empty($conf->hrm->enabled)) {
1742  $langs->load("hrm");
1743 
1744  $newmenu->add("/user/list.php?mainmenu=hrm&leftmenu=hrm&mode=employee", $langs->trans("Employees"), 0, $user->rights->hrm->employee->read, '', $mainmenu, 'hrm');
1745  $newmenu->add("/user/card.php?mainmenu=hrm&leftmenu=hrm&action=create&employee=1", $langs->trans("NewEmployee"), 1, $user->rights->hrm->employee->write);
1746  $newmenu->add("/user/list.php?mainmenu=hrm&leftmenu=hrm&mode=employee&contextpage=employeelist", $langs->trans("List"), 1, $user->rights->hrm->employee->read);
1747  }
1748 
1749  // Leave/Holiday/Vacation module
1750  if (!empty($conf->holiday->enabled)) {
1751  // Load translation files required by the page
1752  $langs->loadLangs(array("holiday", "trips"));
1753 
1754  $newmenu->add("/holiday/list.php?mainmenu=hrm&leftmenu=hrm", $langs->trans("CPTitreMenu"), 0, $user->rights->holiday->read, '', $mainmenu, 'hrm');
1755  $newmenu->add("/holiday/card.php?mainmenu=hrm&leftmenu=holiday&action=create", $langs->trans("New"), 1, $user->rights->holiday->write);
1756  $newmenu->add("/holiday/list.php?mainmenu=hrm&leftmenu=hrm", $langs->trans("List"), 1, $user->rights->holiday->read);
1757  if ($usemenuhider || empty($leftmenu) || $leftmenu == "hrm") {
1758  $newmenu->add("/holiday/list.php?search_statut=1&mainmenu=hrm&leftmenu=hrm", $langs->trans("DraftCP"), 2, $user->rights->holiday->read);
1759  $newmenu->add("/holiday/list.php?search_statut=2&mainmenu=hrm&leftmenu=hrm", $langs->trans("ToReviewCP"), 2, $user->rights->holiday->read);
1760  $newmenu->add("/holiday/list.php?search_statut=3&mainmenu=hrm&leftmenu=hrm", $langs->trans("ApprovedCP"), 2, $user->rights->holiday->read);
1761  $newmenu->add("/holiday/list.php?search_statut=4&mainmenu=hrm&leftmenu=hrm", $langs->trans("CancelCP"), 2, $user->rights->holiday->read);
1762  $newmenu->add("/holiday/list.php?search_statut=5&mainmenu=hrm&leftmenu=hrm", $langs->trans("RefuseCP"), 2, $user->rights->holiday->read);
1763  }
1764  $newmenu->add("/holiday/define_holiday.php?mainmenu=hrm&action=request", $langs->trans("MenuConfCP"), 1, $user->rights->holiday->read);
1765  $newmenu->add("/holiday/month_report.php?mainmenu=hrm&leftmenu=holiday", $langs->trans("MenuReportMonth"), 1, $user->rights->holiday->readall);
1766  $newmenu->add("/holiday/view_log.php?mainmenu=hrm&leftmenu=holiday&action=request", $langs->trans("MenuLogCP"), 1, $user->rights->holiday->define_holiday);
1767  }
1768 
1769  // Trips and expenses (old module)
1770  if (!empty($conf->deplacement->enabled)) {
1771  $langs->load("trips");
1772  $newmenu->add("/compta/deplacement/index.php?leftmenu=tripsandexpenses&amp;mainmenu=hrm", $langs->trans("TripsAndExpenses"), 0, $user->rights->deplacement->lire, '', $mainmenu, 'tripsandexpenses');
1773  $newmenu->add("/compta/deplacement/card.php?action=create&amp;leftmenu=tripsandexpenses&amp;mainmenu=hrm", $langs->trans("New"), 1, $user->rights->deplacement->creer);
1774  $newmenu->add("/compta/deplacement/list.php?leftmenu=tripsandexpenses&amp;mainmenu=hrm", $langs->trans("List"), 1, $user->rights->deplacement->lire);
1775  $newmenu->add("/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses&amp;mainmenu=hrm", $langs->trans("Statistics"), 1, $user->rights->deplacement->lire);
1776  }
1777 
1778  // Expense report
1779  if (!empty($conf->expensereport->enabled)) {
1780  $langs->load("trips");
1781  $newmenu->add("/expensereport/index.php?leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("TripsAndExpenses"), 0, $user->rights->expensereport->lire, '', $mainmenu, 'expensereport');
1782  $newmenu->add("/expensereport/card.php?action=create&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("New"), 1, $user->rights->expensereport->creer);
1783  $newmenu->add("/expensereport/list.php?leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("List"), 1, $user->rights->expensereport->lire);
1784  if ($usemenuhider || empty($leftmenu) || $leftmenu == "expensereport") {
1785  $newmenu->add("/expensereport/list.php?search_status=0&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Draft"), 2, $user->rights->expensereport->lire);
1786  $newmenu->add("/expensereport/list.php?search_status=2&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Validated"), 2, $user->rights->expensereport->lire);
1787  $newmenu->add("/expensereport/list.php?search_status=5&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Approved"), 2, $user->rights->expensereport->lire);
1788  $newmenu->add("/expensereport/list.php?search_status=6&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Paid"), 2, $user->rights->expensereport->lire);
1789  $newmenu->add("/expensereport/list.php?search_status=4&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Canceled"), 2, $user->rights->expensereport->lire);
1790  $newmenu->add("/expensereport/list.php?search_status=99&amp;leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Refused"), 2, $user->rights->expensereport->lire);
1791  }
1792  $newmenu->add("/expensereport/stats/index.php?leftmenu=expensereport&amp;mainmenu=hrm", $langs->trans("Statistics"), 1, $user->rights->expensereport->lire);
1793  }
1794 
1795  if (!empty($conf->projet->enabled)) {
1796  if (empty($conf->global->PROJECT_HIDE_TASKS)) {
1797  $langs->load("projects");
1798 
1799  $search_project_user = GETPOST('search_project_user', 'int');
1800 
1801  $newmenu->add("/projet/activity/perweek.php?leftmenu=tasks".($search_project_user ? '&search_project_user='.$search_project_user : ''), $langs->trans("NewTimeSpent"), 0, $user->rights->projet->lire);
1802  }
1803  }
1804  }
1805 
1806 
1807  /*
1808  * Menu TOOLS
1809  */
1810  if ($mainmenu == 'tools') {
1811  if (empty($user->socid)) { // limit to internal users
1812  $langs->load("mails");
1813  $newmenu->add("/admin/mails_templates.php?leftmenu=email_templates", $langs->trans("EMailTemplates"), 0, 1, '', $mainmenu, 'email_templates');
1814  }
1815 
1816  if (!empty($conf->mailing->enabled)) {
1817  $newmenu->add("/comm/mailing/index.php?leftmenu=mailing", $langs->trans("EMailings"), 0, $user->rights->mailing->lire, '', $mainmenu, 'mailing');
1818  $newmenu->add("/comm/mailing/card.php?leftmenu=mailing&amp;action=create", $langs->trans("NewMailing"), 1, $user->rights->mailing->creer);
1819  $newmenu->add("/comm/mailing/list.php?leftmenu=mailing", $langs->trans("List"), 1, $user->rights->mailing->lire);
1820  }
1821 
1822  if (!empty($conf->export->enabled)) {
1823  $langs->load("exports");
1824  $newmenu->add("/exports/index.php?leftmenu=export", $langs->trans("FormatedExport"), 0, $user->rights->export->lire, '', $mainmenu, 'export');
1825  $newmenu->add("/exports/export.php?leftmenu=export", $langs->trans("NewExport"), 1, $user->rights->export->creer);
1826  //$newmenu->add("/exports/export.php?leftmenu=export",$langs->trans("List"),1, $user->rights->export->lire);
1827  }
1828 
1829  if (!empty($conf->import->enabled)) {
1830  $langs->load("exports");
1831  $newmenu->add("/imports/index.php?leftmenu=import", $langs->trans("FormatedImport"), 0, $user->rights->import->run, '', $mainmenu, 'import');
1832  $newmenu->add("/imports/import.php?leftmenu=import", $langs->trans("NewImport"), 1, $user->rights->import->run);
1833  }
1834  }
1835 
1836  /*
1837  * Menu MEMBERS
1838  */
1839  if ($mainmenu == 'members') {
1840  if (!empty($conf->adherent->enabled)) {
1841  // Load translation files required by the page
1842  $langs->loadLangs(array("members", "compta"));
1843 
1844  $newmenu->add("/adherents/index.php?leftmenu=members&amp;mainmenu=members", $langs->trans("Members"), 0, $user->rights->adherent->lire, '', $mainmenu, 'members');
1845  $newmenu->add("/adherents/card.php?leftmenu=members&amp;action=create", $langs->trans("NewMember"), 1, $user->rights->adherent->creer);
1846  $newmenu->add("/adherents/list.php?leftmenu=members", $langs->trans("List"), 1, $user->rights->adherent->lire);
1847  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=-1", $langs->trans("MenuMembersToValidate"), 2, $user->rights->adherent->lire);
1848  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=1", $langs->trans("MenuMembersValidated"), 2, $user->rights->adherent->lire);
1849  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=1&amp;filter=withoutsubscription", $langs->trans("WithoutSubscription"), 3, $user->rights->adherent->lire);
1850  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=1&amp;filter=uptodate", $langs->trans("UpToDate"), 3, $user->rights->adherent->lire);
1851  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=1&amp;filter=outofdate", $langs->trans("OutOfDate"), 3, $user->rights->adherent->lire);
1852  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=0", $langs->trans("MenuMembersResiliated"), 2, $user->rights->adherent->lire);
1853  $newmenu->add("/adherents/stats/index.php?leftmenu=members", $langs->trans("MenuMembersStats"), 1, $user->rights->adherent->lire);
1854 
1855  $newmenu->add("/adherents/cartes/carte.php?leftmenu=export", $langs->trans("MembersCards"), 1, $user->rights->adherent->export);
1856  if (!empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && ($usemenuhider || empty($leftmenu) || $leftmenu == 'none' || $leftmenu == "members" || $leftmenu == "export")) {
1857  $newmenu->add("/adherents/htpasswd.php?leftmenu=export", $langs->trans("Filehtpasswd"), 1, $user->rights->adherent->export);
1858  }
1859 
1860  if (!empty($conf->categorie->enabled)) {
1861  $langs->load("categories");
1862  $newmenu->add("/categories/index.php?leftmenu=cat&amp;type=3", $langs->trans("Categories"), 1, $user->rights->categorie->lire, '', $mainmenu, 'cat');
1863  }
1864 
1865  $newmenu->add("/adherents/index.php?leftmenu=members&amp;mainmenu=members", $langs->trans("Subscriptions"), 0, $user->rights->adherent->cotisation->lire);
1866  $newmenu->add("/adherents/list.php?leftmenu=members&amp;statut=-1,1&amp;mainmenu=members", $langs->trans("NewSubscription"), 1, $user->rights->adherent->cotisation->creer);
1867  $newmenu->add("/adherents/subscription/list.php?leftmenu=members", $langs->trans("List"), 1, $user->rights->adherent->cotisation->lire);
1868  $newmenu->add("/adherents/stats/index.php?leftmenu=members", $langs->trans("MenuMembersStats"), 1, $user->rights->adherent->lire);
1869 
1870  //$newmenu->add("/adherents/index.php?leftmenu=export&amp;mainmenu=members",$langs->trans("Tools"),0,$user->rights->adherent->export, '', $mainmenu, 'export');
1871  //if (! empty($conf->export->enabled) && ($usemenuhider || empty($leftmenu) || $leftmenu=="export")) $newmenu->add("/exports/index.php?leftmenu=export",$langs->trans("Datas"),1,$user->rights->adherent->export);
1872 
1873  // Type
1874  $newmenu->add("/adherents/type.php?leftmenu=setup&amp;mainmenu=members", $langs->trans("MembersTypes"), 0, $user->rights->adherent->configurer, '', $mainmenu, 'setup');
1875  $newmenu->add("/adherents/type.php?leftmenu=setup&amp;mainmenu=members&amp;action=create", $langs->trans("New"), 1, $user->rights->adherent->configurer);
1876  $newmenu->add("/adherents/type.php?leftmenu=setup&amp;mainmenu=members", $langs->trans("List"), 1, $user->rights->adherent->configurer);
1877  }
1878  }
1879 
1880  // Add personalized menus and modules menus
1881  //var_dump($newmenu->liste); //
1882  $menuArbo = new Menubase($db, 'eldy');
1883  $newmenu = $menuArbo->menuLeftCharger($newmenu, $mainmenu, $leftmenu, (empty($user->socid) ? 0 : 1), 'eldy', $tabMenu);
1884  //var_dump($newmenu->liste); //
1885 
1886  if (!empty($conf->ftp->enabled) && $mainmenu == 'ftp') { // Entry for FTP
1887  $MAXFTP = 20;
1888  $i = 1;
1889  while ($i <= $MAXFTP) {
1890  $paramkey = 'FTP_NAME_'.$i;
1891  //print $paramkey;
1892  if (!empty($conf->global->$paramkey)) {
1893  $link = "/ftp/index.php?idmenu=".$_SESSION["idmenu"]."&numero_ftp=".$i;
1894 
1895  $newmenu->add($link, dol_trunc($conf->global->$paramkey, 24));
1896  }
1897  $i++;
1898  }
1899  }
1900  }
1901 
1902  //var_dump($tabMenu); //
1903  //var_dump($newmenu->liste);
1904 
1905  // Build final $menu_array = $menu_array_before +$newmenu->liste + $menu_array_after
1906  //var_dump($menu_array_before);exit;
1907  //var_dump($menu_array_after);exit;
1908  $menu_array = $newmenu->liste;
1909  if (is_array($menu_array_before)) {
1910  $menu_array = array_merge($menu_array_before, $menu_array);
1911  }
1912  if (is_array($menu_array_after)) {
1913  $menu_array = array_merge($menu_array, $menu_array_after);
1914  }
1915  //var_dump($menu_array);exit;
1916  if (!is_array($menu_array)) {
1917  return 0;
1918  }
1919 
1920  // TODO Use the position property in menu_array to reorder the $menu_array
1921  //var_dump($menu_array);
1922  /*$new_menu_array = array();
1923  $level=0; $cusor=0; $position=0;
1924  $nbentry = count($menu_array);
1925  while (findNextEntryForLevel($menu_array, $cursor, $position, $level))
1926  {
1927 
1928  $cursor++;
1929  }*/
1930 
1931  // Show menu
1932  $invert = empty($conf->global->MAIN_MENU_INVERT) ? "" : "invert";
1933  if (empty($noout)) {
1934  $altok = 0; $blockvmenuopened = false; $lastlevel0 = '';
1935  $num = count($menu_array);
1936  for ($i = 0; $i < $num; $i++) { // Loop on each menu entry
1937  $showmenu = true;
1938  if (!empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED) && empty($menu_array[$i]['enabled'])) {
1939  $showmenu = false;
1940  }
1941 
1942  // Begin of new left menu block
1943  if (empty($menu_array[$i]['level']) && $showmenu) {
1944  $altok++;
1945  $blockvmenuopened = true;
1946  $lastopened = true;
1947  for ($j = ($i + 1); $j < $num; $j++) {
1948  if (empty($menu_array[$j]['level'])) {
1949  $lastopened = false;
1950  }
1951  }
1952  if ($altok % 2 == 0) {
1953  print '<div class="blockvmenu blockvmenuimpair'.$invert.($lastopened ? ' blockvmenulast' : '').($altok == 1 ? ' blockvmenufirst' : '').'">'."\n";
1954  } else {
1955  print '<div class="blockvmenu blockvmenupair'.$invert.($lastopened ? ' blockvmenulast' : '').($altok == 1 ? ' blockvmenufirst' : '').'">'."\n";
1956  }
1957  }
1958 
1959  // Add tabulation
1960  $tabstring = '';
1961  $tabul = ($menu_array[$i]['level'] - 1);
1962  if ($tabul > 0) {
1963  for ($j = 0; $j < $tabul; $j++) {
1964  $tabstring .= '&nbsp;&nbsp;&nbsp;';
1965  }
1966  }
1967 
1968  // $menu_array[$i]['url'] can be a relative url, a full external url. We try substitution
1969 
1970  $menu_array[$i]['url'] = make_substitutions($menu_array[$i]['url'], $substitarray);
1971 
1972  $url = $shorturl = $shorturlwithoutparam = $menu_array[$i]['url'];
1973  if (!preg_match("/^(http:\/\/|https:\/\/)/i", $menu_array[$i]['url'])) {
1974  $tmp = explode('?', $menu_array[$i]['url'], 2);
1975  $url = $shorturl = $tmp[0];
1976  $param = (isset($tmp[1]) ? $tmp[1] : ''); // params in url of the menu link
1977 
1978  // Complete param to force leftmenu to '' to close open menu when we click on a link with no leftmenu defined.
1979  if ((!preg_match('/mainmenu/i', $param)) && (!preg_match('/leftmenu/i', $param)) && !empty($menu_array[$i]['mainmenu'])) {
1980  $param .= ($param ? '&' : '').'mainmenu='.$menu_array[$i]['mainmenu'].'&leftmenu=';
1981  }
1982  if ((!preg_match('/mainmenu/i', $param)) && (!preg_match('/leftmenu/i', $param)) && empty($menu_array[$i]['mainmenu'])) {
1983  $param .= ($param ? '&' : '').'leftmenu=';
1984  }
1985  //$url.="idmenu=".$menu_array[$i]['rowid']; // Already done by menuLoad
1986  $url = dol_buildpath($url, 1).($param ? '?'.$param : '');
1987  $shorturlwithoutparam = $shorturl;
1988  $shorturl = $shorturl.($param ? '?'.$param : '');
1989  }
1990 
1991 
1992  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'].' -->'."\n";
1993 
1994  // Menu level 0
1995  if ($menu_array[$i]['level'] == 0) {
1996  if ($menu_array[$i]['enabled']) { // Enabled so visible
1997  print '<div class="menu_titre">'.$tabstring;
1998  if ($shorturlwithoutparam) {
1999  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'].'"' : '').'>';
2000  } else {
2001  print '<span class="vmenu">';
2002  }
2003  print ($menu_array[$i]['prefix'] ? $menu_array[$i]['prefix'] : '').$menu_array[$i]['titre'];
2004  if ($shorturlwithoutparam) {
2005  print '</a>';
2006  } else {
2007  print '</span>';
2008  }
2009  print '</div>'."\n";
2010  $lastlevel0 = 'enabled';
2011  } elseif ($showmenu) { // Not enabled but visible (so greyed)
2012  print '<div class="menu_titre">'.$tabstring.'<font class="vmenudisabled">'.$menu_array[$i]['titre'].'</font></div>'."\n";
2013  $lastlevel0 = 'greyed';
2014  } else {
2015  $lastlevel0 = 'hidden';
2016  }
2017  if ($showmenu) {
2018  print '<div class="menu_top"></div>'."\n";
2019  }
2020  }
2021 
2022  // Menu level > 0
2023  if ($menu_array[$i]['level'] > 0) {
2024  $cssmenu = '';
2025  if ($menu_array[$i]['url']) {
2026  $cssmenu = ' menu_contenu'.dol_string_nospecial(preg_replace('/\.php.*$/', '', $menu_array[$i]['url']));
2027  }
2028 
2029  if ($menu_array[$i]['enabled'] && $lastlevel0 == 'enabled') { // Enabled so visible, except if parent was not enabled.
2030  print '<div class="menu_contenu'.$cssmenu.'">'.$tabstring;
2031  if ($shorturlwithoutparam) {
2032  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'].'"' : '').'>';
2033  } else {
2034  print '<span class="vsmenu" title="'.dol_escape_htmltag($menu_array[$i]['titre']).'">';
2035  }
2036  print $menu_array[$i]['titre'];
2037  if ($shorturlwithoutparam) {
2038  print '</a>';
2039  } else {
2040  print '</span>';
2041  }
2042  // If title is not pure text and contains a table, no carriage return added
2043  if (!strstr($menu_array[$i]['titre'], '<table')) {
2044  print '<br>';
2045  }
2046  print '</div>'."\n";
2047  } elseif ($showmenu && $lastlevel0 == 'enabled') { // Not enabled but visible (so greyed), except if parent was not enabled.
2048  print '<div class="menu_contenu'.$cssmenu.'">'.$tabstring.'<font class="vsmenudisabled vsmenudisabledmargin">'.$menu_array[$i]['titre'].'</font><br></div>'."\n";
2049  }
2050  }
2051 
2052  // If next is a new block or if there is nothing after
2053  if (empty($menu_array[$i + 1]['level'])) { // End menu block
2054  if ($showmenu) {
2055  print '<div class="menu_end"></div>'."\n";
2056  }
2057  if ($blockvmenuopened) {
2058  print '</div>'."\n"; $blockvmenuopened = false;
2059  }
2060  }
2061  }
2062 
2063  if ($altok) {
2064  print '<div class="blockvmenuend"></div>'; // End menu block
2065  }
2066  }
2067 
2068  return count($menu_array);
2069 }
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
print_start_menu_entry($idsel, $classname, $showmode)
Output start menu entry.
Definition: eldy.lib.php:579
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto= 'UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
print_text_menu_entry($text, $showmode, $url, $id, $idsel, $classname, $atarget)
Output menu entry.
Definition: eldy.lib.php:600
Class to manage menu entries.
print_start_menu_array()
Output start menu array.
Definition: eldy.lib.php:563
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
img_warning($titlealt= 'default', $moreatt= '', $morecss= 'pictowarning')
Show warning logo.
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null)
Return array of possible common substitutions.
print_end_menu_array()
Output menu array.
Definition: eldy.lib.php:642
isVisibleToUserType($type_user, &$menuentry, &$listofmodulesforexternal)
Function to test if an entry is enabled or not.
print_end_menu_entry($showmode)
Output end menu entry.
Definition: eldy.lib.php:629
dol_sort_array(&$array, $index, $order= 'asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by second index function, which produces ascending (default) or descending output...
print
Draft customers invoices.
Definition: index.php:89
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->lire) if(!empty($conf->tax->enabled)&&$user->rights->tax->charges->lire) if(!empty($conf->facture->enabled)&&!empty($conf->commande->enabled)&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
Definition: index.php:1232
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc= 'right', $stringencoding= 'UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding &#39;...&#39; if string larger than length.
make_substitutions($text, $substitutionarray, $outputlangs=null)
Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=&gt;newva...
print_eldy_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout=0, $mode= '')
Core function to output top menu eldy.
Definition: eldy.lib.php:44
print_left_eldy_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 eldy Fill &amp;$menu (example with $forcemainmenu=&#39;home&#39; $forceleftmenu...
Definition: eldy.lib.php:667
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $keepmoretags= '', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...