dolibarr  20.0.0-alpha
usergroups.lib.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2006-2012 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2010-2017 Regis Houssin <regis.houssin@inodbox.com>
4  * Copyright (C) 2015 Alexandre Spangaro <aspangaro@open-dsi.fr>
5  * Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
6  * Copyright (C) 2021-2023 Anthony Berton <anthony.berton@bb2a.fr>
7  * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
8  * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
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 
25 
38 {
39  global $langs, $conf, $user, $db;
40 
41  $langs->load("users");
42 
43  $canreadperms = true;
44  if (getDolGlobalString('MAIN_USE_ADVANCED_PERMS')) {
45  $canreadperms = ($user->admin || ($user->id != $object->id && $user->hasRight('user', 'user_advance', 'readperms')) || ($user->id == $object->id && $user->hasRight('user', 'self_advance', 'readperms')));
46  }
47 
48  $h = 0;
49  $head = array();
50 
51  $head[$h][0] = DOL_URL_ROOT.'/user/card.php?id='.$object->id;
52  $head[$h][1] = $langs->trans("User");
53  $head[$h][2] = 'user';
54  $h++;
55 
56  if ((!empty($conf->ldap->enabled) && getDolGlobalString('LDAP_SYNCHRO_ACTIVE'))
57  && (!getDolGlobalString('MAIN_DISABLE_LDAP_TAB') || !empty($user->admin))) {
58  $langs->load("ldap");
59  $head[$h][0] = DOL_URL_ROOT.'/user/ldap.php?id='.$object->id;
60  $head[$h][1] = $langs->trans("LDAPCard");
61  $head[$h][2] = 'ldap';
62  $h++;
63  }
64 
65  if ($canreadperms) {
66  $head[$h][0] = DOL_URL_ROOT.'/user/perms.php?id='.$object->id;
67  $head[$h][1] = $langs->trans("Rights").(!getDolGlobalString('MAIN_OPTIMIZEFORTEXTBROWSER') ? '<span class="badge marginleftonlyshort">'.($object->nb_rights).'</span>' : '');
68  $head[$h][2] = 'rights';
69  $h++;
70  }
71 
72  $head[$h][0] = DOL_URL_ROOT.'/user/param_ihm.php?id='.$object->id;
73  $head[$h][1] = $langs->trans("UserGUISetup");
74  $head[$h][2] = 'guisetup';
75  $h++;
76 
77  if (isModEnabled('agenda')) {
78  if (!getDolGlobalString('AGENDA_EXT_NB')) {
79  $conf->global->AGENDA_EXT_NB = 5;
80  }
81  $MAXAGENDA = getDolGlobalString('AGENDA_EXT_NB');
82 
83  $i = 1;
84  $nbagenda = 0;
85  while ($i <= $MAXAGENDA) {
86  $key = $i;
87  $name = 'AGENDA_EXT_NAME_'.$object->id.'_'.$key;
88  $src = 'AGENDA_EXT_SRC_'.$object->id.'_'.$key;
89  $offsettz = 'AGENDA_EXT_OFFSETTZ_'.$object->id.'_'.$key;
90  $color = 'AGENDA_EXT_COLOR_'.$object->id.'_'.$key;
91  $i++;
92 
93  if (!empty($object->conf->$name)) {
94  $nbagenda++;
95  }
96  }
97 
98  $head[$h][0] = DOL_URL_ROOT.'/user/agenda_extsites.php?id='.$object->id;
99  $head[$h][1] = $langs->trans("ExtSites").($nbagenda ? '<span class="badge marginleftonlyshort">'.$nbagenda.'</span>' : '');
100  $head[$h][2] = 'extsites';
101  $h++;
102  }
103 
104  if (isModEnabled('clicktodial')) {
105  $head[$h][0] = DOL_URL_ROOT.'/user/clicktodial.php?id='.$object->id;
106  $head[$h][1] = $langs->trans("ClickToDial");
107  $head[$h][2] = 'clicktodial';
108  $h++;
109  }
110 
111  // Notifications
112  if ($user->socid == 0 && isModEnabled('notification')) {
113  $nbNote = 0;
114  $sql = "SELECT COUNT(n.rowid) as nb";
115  $sql .= " FROM ".MAIN_DB_PREFIX."notify_def as n";
116  $sql .= " WHERE fk_user = ".((int) $object->id);
117  $resql = $db->query($sql);
118  if ($resql) {
119  $num = $db->num_rows($resql);
120  $i = 0;
121  while ($i < $num) {
122  $obj = $db->fetch_object($resql);
123  $nbNote = $obj->nb;
124  $i++;
125  }
126  } else {
127  dol_print_error($db);
128  }
129 
130  $langs->load("mails");
131  $head[$h][0] = DOL_URL_ROOT.'/user/notify/card.php?id='.$object->id;
132  $head[$h][1] = $langs->trans("NotificationsAuto");
133  if ($nbNote > 0) {
134  $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbNote.'</span>';
135  }
136  $head[$h][2] = 'notify';
137  $h++;
138  }
139 
140  // Show more tabs from modules
141  // Entries must be declared in modules descriptor with line
142  // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
143  // $this->tabs = array('entity:-tabname); to remove a tab
144  complete_head_from_modules($conf, $langs, $object, $head, $h, 'user');
145 
146  if ((isModEnabled('salaries') && $user->hasRight('salaries', 'read'))
147  || (isModEnabled('hrm') && $user->hasRight('hrm', 'employee', 'read'))
148  || (isModEnabled('expensereport') && $user->hasRight('expensereport', 'lire') && ($user->id == $object->id || $user->hasRight('expensereport', 'readall')))
149  || (isModEnabled('holiday') && $user->hasRight('holiday', 'read') && ($user->id == $object->id || $user->hasRight('holiday', 'readall')))
150  ) {
151  // Bank
152  $head[$h][0] = DOL_URL_ROOT.'/user/bank.php?id='.$object->id;
153  $head[$h][1] = $langs->trans("HRAndBank");
154  $head[$h][2] = 'bank';
155  $h++;
156  }
157 
158  // Such info on users is visible only by internal user
159  if (empty($user->socid)) {
160  // Notes
161  $nbNote = 0;
162  if (!empty($object->note_public)) {
163  $nbNote++;
164  }
165  if (!empty($object->note_private)) {
166  $nbNote++;
167  }
168  $head[$h][0] = DOL_URL_ROOT.'/user/note.php?id='.$object->id;
169  $head[$h][1] = $langs->trans("Note");
170  if ($nbNote > 0) {
171  $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbNote.'</span>';
172  }
173  $head[$h][2] = 'note';
174  $h++;
175 
176  // Attached files
177  require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
178  require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
179  $upload_dir = $conf->user->dir_output."/".$object->id;
180  $nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
181  $nbLinks = Link::count($db, $object->element, $object->id);
182  $head[$h][0] = DOL_URL_ROOT.'/user/document.php?userid='.$object->id;
183  $head[$h][1] = $langs->trans("Documents");
184  if (($nbFiles + $nbLinks) > 0) {
185  $head[$h][1] .= '<span class="badge marginleftonlyshort">'.($nbFiles + $nbLinks).'</span>';
186  }
187  $head[$h][2] = 'document';
188  $h++;
189 
190  $head[$h][0] = DOL_URL_ROOT.'/user/agenda.php?id='.$object->id;
191  $head[$h][1] = $langs->trans("Events");
192  if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
193  $nbEvent = 0;
194  // Enable caching of thirdparty count actioncomm
195  require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
196  $cachekey = 'count_events_user_'.$object->id;
197  $dataretrieved = dol_getcache($cachekey);
198  if (!is_null($dataretrieved)) {
199  $nbEvent = $dataretrieved;
200  } else {
201  $sql = "SELECT COUNT(ac.id) as nb";
202  $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as ac";
203  $sql .= " WHERE ac.fk_user_action = ".((int) $object->id);
204  $sql .= " AND ac.entity IN (".getEntity('agenda').")";
205  $resql = $db->query($sql);
206  if ($resql) {
207  $obj = $db->fetch_object($resql);
208  $nbEvent = $obj->nb;
209  } else {
210  dol_syslog('Failed to count actioncomm '.$db->lasterror(), LOG_ERR);
211  }
212  dol_setcache($cachekey, $nbEvent, 120); // If setting cache fails, this is not a problem, so we do not test result.
213  }
214 
215  $head[$h][1] .= '/';
216  $head[$h][1] .= $langs->trans("Agenda");
217  if ($nbEvent > 0) {
218  $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbEvent.'</span>';
219  }
220  }
221  $head[$h][2] = 'info';
222  $h++;
223  }
224 
225  complete_head_from_modules($conf, $langs, $object, $head, $h, 'user', 'remove');
226 
227  return $head;
228 }
229 
237 {
238  global $langs, $conf, $user;
239 
240  $canreadperms = true;
241  if (getDolGlobalString('MAIN_USE_ADVANCED_PERMS')) {
242  $canreadperms = ($user->admin || $user->hasRight('user', 'group_advance', 'readperms'));
243  }
244 
245  $h = 0;
246  $head = array();
247 
248  $head[$h][0] = DOL_URL_ROOT.'/user/group/card.php?id='.$object->id;
249  $head[$h][1] = $langs->trans("Card");
250  $head[$h][2] = 'group';
251  $h++;
252 
253  if ((!empty($conf->ldap->enabled) && getDolGlobalString('LDAP_SYNCHRO_ACTIVE'))
254  && (!getDolGlobalString('MAIN_DISABLE_LDAP_TAB') || !empty($user->admin))) {
255  $langs->load("ldap");
256  $head[$h][0] = DOL_URL_ROOT.'/user/group/ldap.php?id='.$object->id;
257  $head[$h][1] = $langs->trans("LDAPCard");
258  $head[$h][2] = 'ldap';
259  $h++;
260  }
261 
262  if ($canreadperms) {
263  $head[$h][0] = DOL_URL_ROOT.'/user/group/perms.php?id='.$object->id;
264  $head[$h][1] = $langs->trans("GroupRights").'<span class="badge marginleftonlyshort">'.($object->nb_rights).'</span>';
265  $head[$h][2] = 'rights';
266  $h++;
267  }
268 
269  // Show more tabs from modules
270  // Entries must be declared in modules descriptor with line
271  // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
272  // $this->tabs = array('entity:-tabname); to remove a tab
273  complete_head_from_modules($conf, $langs, $object, $head, $h, 'group');
274 
275  complete_head_from_modules($conf, $langs, $object, $head, $h, 'group', 'remove');
276 
277  return $head;
278 }
279 
286 {
287  global $langs, $conf, $user, $db;
288 
289  $extrafields = new ExtraFields($db);
290  $extrafields->fetch_name_optionals_label('user');
291  $extrafields->fetch_name_optionals_label('usergroup');
292 
293  $langs->load("users");
294  $h = 0;
295  $head = array();
296 
297  $head[$h][0] = DOL_URL_ROOT.'/admin/user.php';
298  $head[$h][1] = $langs->trans("Parameters");
299  $head[$h][2] = 'card';
300  $h++;
301 
302  $head[$h][0] = DOL_URL_ROOT.'/admin/usergroup.php';
303  $head[$h][1] = $langs->trans("Group");
304  $head[$h][2] = 'usergroupcard';
305  $h++;
306 
307  $head[$h][0] = DOL_URL_ROOT.'/user/admin/user_extrafields.php';
308  $head[$h][1] = $langs->trans("ExtraFields")." (".$langs->trans("Users").")";
309  $nbExtrafields = $extrafields->attributes['user']['count'];
310  if ($nbExtrafields > 0) {
311  $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbExtrafields.'</span>';
312  }
313  $head[$h][2] = 'attributes';
314  $h++;
315 
316  $head[$h][0] = DOL_URL_ROOT.'/user/admin/group_extrafields.php';
317  $head[$h][1] = $langs->trans("ExtraFields")." (".$langs->trans("Groups").")";
318  $nbExtrafields = $extrafields->attributes['usergroup']['count'];
319  if ($nbExtrafields > 0) {
320  $head[$h][1] .= '<span class="badge marginleftonlyshort">'.$nbExtrafields.'</span>';
321  }
322  $head[$h][2] = 'attributes_group';
323  $h++;
324 
325  // Show more tabs from modules
326  // Entries must be declared in modules descriptor with line
327  // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
328  // $this->tabs = array('entity:-tabname); to remove a tab
329  complete_head_from_modules($conf, $langs, null, $head, $h, 'useradmin');
330 
331  complete_head_from_modules($conf, $langs, null, $head, $h, 'useradmin', 'remove');
332 
333  return $head;
334 }
335 
344 function showSkins($fuser, $edit = 0, $foruserprofile = false)
345 {
346  global $conf, $langs, $db, $form;
347 
348  require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
349 
350  $formother = new FormOther($db);
351 
352  $dirthemes = array('/theme');
353  if (!empty($conf->modules_parts['theme'])) { // Using this feature slow down application
354  foreach ($conf->modules_parts['theme'] as $reldir) {
355  $dirthemes = array_merge($dirthemes, (array) ($reldir.'theme'));
356  }
357  }
358  $dirthemes = array_unique($dirthemes);
359  // Now dir_themes=array('/themes') or dir_themes=array('/theme','/mymodule/theme')
360 
361  $selected_theme = '';
362  if (empty($foruserprofile)) {
363  $selected_theme = getDolGlobalString('MAIN_THEME');
364  } else {
365  $selected_theme = ((is_object($fuser) && !empty($fuser->conf->MAIN_THEME)) ? $fuser->conf->MAIN_THEME : '');
366  }
367 
368  $hoverdisabled = '';
369  if (empty($foruserprofile)) {
370  $hoverdisabled = (getDolGlobalString('THEME_ELDY_USE_HOVER') == '0');
371  } else {
372  $hoverdisabled = (is_object($fuser) ? (empty($fuser->conf->THEME_ELDY_USE_HOVER) || $fuser->conf->THEME_ELDY_USE_HOVER == '0') : '');
373  }
374 
375  $checkeddisabled = '';
376  if (empty($foruserprofile)) {
377  $checkeddisabled = (getDolGlobalString('THEME_ELDY_USE_CHECKED') == '0');
378  } else {
379  $checkeddisabled = (is_object($fuser) ? (empty($fuser->conf->THEME_ELDY_USE_CHECKED) || $fuser->conf->THEME_ELDY_USE_CHECKED == '0') : '');
380  }
381 
382  $colspan = 2;
383  if ($foruserprofile) {
384  $colspan = 4;
385  }
386 
387  $thumbsbyrow = 6;
388  print '<div class="div-table-responsive-no-min">';
389  print '<table class="noborder centpercent'.($edit ? ' editmodeforshowskin' : '').'">';
390 
391  // Title
392  if ($foruserprofile) {
393  print '<tr class="liste_titre"><th class="titlefieldmiddle">'.$langs->trans("Parameter").'</th><th>'.$langs->trans("DefaultValue").'</th>';
394  print '<th colspan="2">&nbsp;</th>';
395  print '</tr>';
396 
397  print '<tr>';
398  print '<td>'.$langs->trans("DefaultSkin").'</td>';
399  print '<td>' . getDolGlobalString('MAIN_THEME').'</td>';
400  print '<td class="nowrap left"><input id="check_MAIN_THEME" name="check_MAIN_THEME"'.($edit ? '' : ' disabled').' type="checkbox" '.($selected_theme ? " checked" : "").'> <label for="check_MAIN_THEME">'.$langs->trans("UsePersonalValue").'</label></td>';
401  print '<td>&nbsp;</td>';
402  print '</tr>';
403  } else {
404  $dirthemestring = '';
405  foreach ($dirthemes as $dirtheme) {
406  $dirthemestring .= '"'.$dirtheme.'" ';
407  }
408 
409  print '<tr class="liste_titre"><th class="titlefieldmiddle">';
410  print $form->textwithpicto($langs->trans("DefaultSkin"), $langs->trans("ThemeDir").' : '.$dirthemestring);
411  print '</th>';
412  print '<th class="right">';
413  $url = 'https://www.dolistore.com/9-skins';
414  print '<a href="'.$url.'" target="_blank" rel="noopener noreferrer external">';
415  print $langs->trans('DownloadMoreSkins');
416  print img_picto('', 'globe', 'class="paddingleft"');
417  print '</a>';
418  print '</th></tr>';
419  }
420 
421  print '<tr><td colspan="'.$colspan.'" class="center">';
422 
423  if (getDolGlobalString('MAIN_FORCETHEME')) {
424  $langs->load("errors");
425  print $langs->trans("WarningThemeForcedTo", getDolGlobalString('MAIN_FORCETHEME'));
426  }
427 
428  print '<table class="nobordernopadding centpercent"><tr><td><div class="center">';
429 
430  $i = 0;
431  foreach ($dirthemes as $dir) {
432  //print $dirroot.$dir;exit;
433  $dirtheme = dol_buildpath($dir, 0); // This include loop on $conf->file->dol_document_root
434  $urltheme = dol_buildpath($dir, 1);
435 
436  if (is_dir($dirtheme)) {
437  $handle = opendir($dirtheme);
438  if (is_resource($handle)) {
439  while (($subdir = readdir($handle)) !== false) {
440  if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) != '.'
441  && substr($subdir, 0, 3) != 'CVS' && !preg_match('/common|phones/i', $subdir)) {
442  // Disable not stable themes (dir ends with _exp or _dev)
443  if (getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2 && preg_match('/_dev$/i', $subdir)) {
444  continue;
445  }
446  if (getDolGlobalInt('MAIN_FEATURES_LEVEL') < 1 && preg_match('/_exp$/i', $subdir)) {
447  continue;
448  }
449 
450  print '<div class="inline-block" style="margin-top: 10px; margin-bottom: 10px; margin-right: 20px; margin-left: 20px;">';
451  $file = $dirtheme."/".$subdir."/thumb.png";
452  $url = $urltheme."/".$subdir."/thumb.png";
453  if (!file_exists($file)) {
454  $url = DOL_URL_ROOT.'/public/theme/common/nophoto.png';
455  }
456  print '<a href="'.$_SERVER["PHP_SELF"].($edit ? '?action=edit&token='.newToken().'&mode=template&theme=' : '?theme=').$subdir.(GETPOST('optioncss', 'alpha', 1) ? '&optioncss='.GETPOST('optioncss', 'alpha', 1) : '').($fuser ? '&id='.$fuser->id : '').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">';
457  if ($subdir == $conf->global->MAIN_THEME) {
458  $title = $langs->trans("ThemeCurrentlyActive");
459  } else {
460  $title = $langs->trans("ShowPreview");
461  }
462  print '<img class="img-skinthumb shadow" src="'.$url.'" alt="'.dol_escape_htmltag($title).'" title="'.dol_escape_htmltag($title).'" style="border: none; margin-bottom: 5px;">';
463  print '</a><br>';
464  if ($subdir == $selected_theme) {
465  print '<input '.($edit ? '' : 'disabled').' type="radio" class="themethumbs" style="border: 0px;" id="main_theme'.$subdir.'" checked name="main_theme" value="'.$subdir.'"><label for="main_theme'.$subdir.'"> <b>'.$subdir.'</b></label>';
466  } else {
467  print '<input '.($edit ? '' : 'disabled').' type="radio" class="themethumbs" style="border: 0px;" id="main_theme'.$subdir.'" name="main_theme" value="'.$subdir.'"><label for="main_theme'.$subdir.'"> '.$subdir.'</label>';
468  }
469  print '</div>';
470 
471  $i++;
472  }
473  }
474  }
475  }
476  }
477 
478  print '</div></td></tr></table>';
479 
480  print '</td></tr>';
481 
482  // Set variables of theme
483  $colorbackhmenu1 = '';
484  $colorbackvmenu1 = '';
485  $colortexttitlenotab = '';
486  $colortexttitlelink = '';
487  $colorbacktitle1 = '';
488  $colortexttitle = '';
489  $colorbacklineimpair1 = '';
490  $colorbacklineimpair2 = '';
491  $colorbacklinepair1 = '';
492  $colorbacklinepair2 = '';
493  $colortextlink = '';
494  $colorbacklinepairhover = '';
495  $colorbacklinepairchecked = '';
496  $butactionbg = '';
497  $textbutaction = '';
498  // Set the variables with the default value
499  if (file_exists(DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php')) {
500  include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
501  }
502 
503  // Dark mode
504  if ($foruserprofile) {
505  //Nothing
506  } else {
507  $listofdarkmodes = array(
508  $langs->trans("AlwaysDisabled"),
509  $langs->trans("AccordingToBrowser"),
510  $langs->trans("AlwaysEnabled")
511  );
512  print '<tr class="oddeven">';
513  print '<td>'.$langs->trans("DarkThemeMode").'</td>';
514  print '<td colspan="'.($colspan - 1).'">';
515  if ($edit) {
516  print $form->selectarray('THEME_DARKMODEENABLED', $listofdarkmodes, getDolGlobalInt('THEME_DARKMODEENABLED'));
517  } else {
518  print $listofdarkmodes[getDolGlobalInt('THEME_DARKMODEENABLED')];
519  }
520  print $form->textwithpicto('', $langs->trans("DoesNotWorkWithAllThemes"));
521  print '</tr>';
522  }
523 
524 
525  // TopMenuDisableImages
526  if ($foruserprofile) {
527  /*
528  print '<tr class="oddeven">';
529  print '<td>'.$langs->trans("TopMenuDisableImages").'</td>';
530  print '<td>'.(getDolGlobalString('THEME_TOPMENU_DISABLE_IMAGE',$langs->trans("Default")).'</td>';
531  print '<td class="left" class="nowrap" width="20%"><input name="check_THEME_TOPMENU_DISABLE_IMAGE" id="check_THEME_TOPMENU_DISABLE_IMAGE" type="checkbox" '.(!empty($object->conf->THEME_ELDY_TEXTLINK)?" checked":"");
532  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
533  print '> '.$langs->trans("UsePersonalValue").'</td>';
534  print '<td>';
535  if ($edit)
536  {
537  print $formother->selectColor(colorArrayToHex(colorStringToArray(getDolGlobalString('THEME_TOPMENU_DISABLE_IMAGE'),array()),''),'THEME_TOPMENU_DISABLE_IMAGE','',1).' ';
538  }
539  else
540  {
541  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_TOPMENU_DISABLE_IMAGE,array()),'');
542  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
543  else print '';
544  }
545  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
546  print '</td>';*/
547  } else {
548  $listoftopmenumodes = array(
549  $langs->transnoentitiesnoconv("IconAndText"),
550  $langs->transnoentitiesnoconv("TextOnly"),
551  $langs->transnoentitiesnoconv("IconOnlyAllTextsOnHover"),
552  $langs->transnoentitiesnoconv("IconOnlyTextOnHover"),
553  $langs->transnoentitiesnoconv("IconOnly"),
554  );
555  print '<tr class="oddeven">';
556  print '<td>'.$langs->trans("TopMenuDisableImages").'</td>';
557  print '<td colspan="'.($colspan - 1).'">';
558  if ($edit) {
559  //print ajax_constantonoff('THEME_TOPMENU_DISABLE_IMAGE', array(), null, 0, 0, 1);
560  print $form->selectarray('THEME_TOPMENU_DISABLE_IMAGE', $listoftopmenumodes, isset($conf->global->THEME_TOPMENU_DISABLE_IMAGE) ? $conf->global->THEME_TOPMENU_DISABLE_IMAGE : 0, 0, 0, 0, '', 0, 0, 0, '', 'widthcentpercentminusx maxwidth500');
561  } else {
562  print $listoftopmenumodes[getDolGlobalInt('THEME_TOPMENU_DISABLE_IMAGE')];
563  //print yn($conf->global->THEME_TOPMENU_DISABLE_IMAGE);
564  }
565  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"));
566  print '</td>';
567  print '</tr>';
568  }
569 
570  // Show logo
571  if ($foruserprofile) {
572  // Nothing
573  } else {
574  // Show logo
575  print '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("EnableShowLogo").'</td>';
576  print '<td colspan="'.($colspan - 1).'" class="valignmiddle">';
577  if ($edit) {
578  print ajax_constantonoff('MAIN_SHOW_LOGO', array(), null, 0, 0, 1);
579  //print $form->selectyesno('MAIN_SHOW_LOGO', $conf->global->MAIN_SHOW_LOGO, 1);
580  } else {
581  print yn(getDolGlobalString('MAIN_SHOW_LOGO'));
582  }
583  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"), 1, 'help', 'inline-block');
584  print '</td>';
585  print '</tr>';
586  /*
587  print '<tr class="oddeven"><td>'.$langs->trans("EnableShowLogo").'</td><td>' . yn($conf->global->MAIN_SHOW_LOGO) . '</td>';
588  print "</tr>";*/
589  }
590 
591  // Main menu color logo
592  if ($foruserprofile) {
593  // Nothing
594  } else {
595  // Show logo
596  print '<tr class="oddeven"><td class="titlefieldmiddle">'.$langs->trans("THEME_MENU_COLORLOGO").'</td>';
597  print '<td colspan="'.($colspan - 1).'" class="valignmiddle">';
598  if ($edit) {
599  print ajax_constantonoff('THEME_MENU_COLORLOGO', array(), null, 0, 0, 1);
600  } else {
601  print yn(getDolGlobalString('THEME_MENU_COLORLOGO'));
602  }
603  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"), 1, 'help', 'inline-block');
604  print '</td>';
605  print '</tr>';
606  }
607 
608  // BorderTableActive
609  if ($foruserprofile) {
610  } else {
611  print '<tr class="oddeven">';
612  print '<td>'.$langs->trans("UseBorderOnTable").'</td>';
613  print '<td colspan="'.($colspan - 1).'" class="valignmiddle">';
614  if ($edit) {
615  print ajax_constantonoff('THEME_ELDY_USEBORDERONTABLE', array(), null, 0, 0, 1);
616  //print $form->selectyesno('THEME_ELDY_USEBORDERONTABLE', $conf->global->THEME_ELDY_USEBORDERONTABLE, 1);
617  } else {
618  print yn(getDolGlobalString('THEME_ELDY_USEBORDERONTABLE'));
619  }
620  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"), 1, 'help', 'inline-block');
621  print '</td>';
622  print '</tr>';
623  }
624 
625  // Table line height
626  /* removed. height of column must use padding of td and not lineheight that has bad side effect
627  if ($foruserprofile) {
628  } else {
629  $listoftopmenumodes = array(
630  '0' => $langs->transnoentitiesnoconv("Normal"),
631  '1' => $langs->transnoentitiesnoconv("LargeModern"),
632  );
633  print '<tr class="oddeven">';
634  print '<td>'.$langs->trans("TableLineHeight").'</td>';
635  print '<td colspan="'.($colspan - 1).'" class="valignmiddle">';
636  if ($edit) {
637  //print ajax_constantonoff('THEME_ELDY_USECOMOACTROW', array(), null, 0, 0, 1);
638  print $form->selectarray('THEME_ELDY_USECOMOACTROW', $listoftopmenumodes, getDolGlobalString('THEME_ELDY_USECOMOACTROW'), 0, 0, 0, '', 0, 0, 0, '', 'widthcentpercentminusx maxwidth300');
639  } else {
640  print $listoftopmenumodes[getDolGlobalString('THEME_ELDY_USECOMOACTROW')];
641  }
642  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes"), 1, 'help', 'inline-block');
643  print '</td>';
644  print '</tr>';
645  }
646  */
647 
648  // Background color THEME_ELDY_BACKBODY
649  if ($foruserprofile) {
650  /*
651  print '<tr class="oddeven">';
652  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
653  print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
654  print '<td class="nowrap left" width="20%"><input name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(!empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
655  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
656  print '> '.$langs->trans("UsePersonalValue").'</td>';
657  print '<td>';
658  if ($edit) {
659  print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','',1).' ';
660  } else {
661  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
662  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
663  else print '';
664  }
665  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
666  print '</td>';*/
667  } else {
668  $default = 'ffffff';
669  print '<tr class="oddeven">';
670  print '<td>'.$langs->trans("BackgroundColor").'</td>';
671  print '<td colspan="'.($colspan - 1).'">';
672  //var_dump($conf->global->THEME_ELDY_BACKBODY);
673  if ($edit) {
674  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_BACKBODY') ? $conf->global->THEME_ELDY_BACKBODY : ''), array()), ''), 'THEME_ELDY_BACKBODY', '', 1, '', '', 'colorbackbody', $default).' ';
675  } else {
676  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BACKBODY, array()), '');
677  if ($color) {
678  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
679  } else {
680  print $langs->trans("Default");
681  }
682  }
683  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
684  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
685  print '</td>';
686  print '</tr>';
687  }
688 
689  // TopMenuBackgroundColor
690  if ($foruserprofile) {
691  /*
692  print '<tr class="oddeven">';
693  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
694  print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TOPMENU_BACK1:$langs->trans("Default")).'</td>';
695  print '<td class="nowrap left" width="20%"><input name="check_THEME_ELDY_TOPMENU_BACK1" id="check_THEME_ELDY_TOPMENU_BACK1" type="checkbox" '.(!empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
696  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
697  print '> '.$langs->trans("UsePersonalValue").'</td>';
698  print '<td>';
699  if ($edit)
700  {
701  print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),''),'THEME_ELDY_TOPMENU_BACK1','',1).' ';
702  }
703  else
704  {
705  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1,array()),'');
706  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
707  else print '';
708  }
709  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
710  print '</td>';*/
711  } else {
712  $default = (empty($colorbackhmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackhmenu1)));
713 
714  print '<tr class="oddeven">';
715  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
716  print '<td colspan="'.($colspan - 1).'">';
717  if ($edit) {
718  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_TOPMENU_BACK1') ? $conf->global->THEME_ELDY_TOPMENU_BACK1 : ''), array()), ''), 'THEME_ELDY_TOPMENU_BACK1', '', 1, '', '', 'colorbackhmenu1', $default).' ';
719  } else {
720  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TOPMENU_BACK1, array()), '');
721  if ($color) {
722  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
723  } else {
724  print $langs->trans("Default");
725  }
726  }
727  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
728  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
729  print '</td>';
730  print '</tr>';
731  }
732 
733  // LeftMenuBackgroundColor
734  if ($foruserprofile) {
735  /*
736  print '<tr class="oddeven">';
737  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
738  print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_VERMENU_BACK1:$langs->trans("Default")).'</td>';
739  print '<td class="nowrap left" width="20%"><input name="check_THEME_ELDY_VERMENU_BACK1" id="check_THEME_ELDY_VERMENU_BACK1" type="checkbox" '.(!empty($object->conf->THEME_ELDY_TOPMENU_BACK1)?" checked":"");
740  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
741  print '> '.$langs->trans("UsePersonalValue").'</td>';
742  print '<td>';
743  if ($edit)
744  {
745  print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_VERMENU_BACK1,array()),''),'THEME_ELDY_VERMENU_BACK1','',1).' ';
746  }
747  else
748  {
749  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_VERMENU_BACK1,array()),'');
750  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
751  else print '';
752  }
753  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
754  print '</td>';*/
755  } else {
756  $default = (empty($colorbackvmenu1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbackvmenu1)));
757 
758  print '<tr class="oddeven">';
759  print '<td>'.$langs->trans("LeftMenuBackgroundColor").'</td>';
760  print '<td colspan="'.($colspan - 1).'">';
761  if ($edit) {
762  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_VERMENU_BACK1') ? $conf->global->THEME_ELDY_VERMENU_BACK1 : ''), array()), ''), 'THEME_ELDY_VERMENU_BACK1', '', 1, '', '', 'colorbackvmenu1', $default).' ';
763  } else {
764  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_VERMENU_BACK1, array()), '');
765  if ($color) {
766  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
767  } else {
768  print $langs->trans("Default");
769  }
770  }
771  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
772  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
773  print '</td>';
774  print '</tr>';
775  }
776 
777  // TextTitleColor for title of Pages
778  if ($foruserprofile) {
779  } else {
780  $default = (empty($colortexttitlenotab) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlenotab)));
781 
782  print '<tr class="oddeven">';
783  print '<td>'.$langs->trans("TextTitleColor").'</td>';
784  print '<td colspan="'.($colspan - 1).'">';
785  if ($edit) {
786  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_TEXTTITLENOTAB') ? $conf->global->THEME_ELDY_TEXTTITLENOTAB : ''), array()), ''), 'THEME_ELDY_TEXTTITLENOTAB', '', 1, '', '', 'colortexttitlenotab', $default).' ';
787  } else {
788  print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLENOTAB, $langs->trans("Default"));
789  }
790  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> ';
791  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
792  print '</td>';
793 
794  print '</tr>';
795  }
796 
797  // BackgroundTableTitleColor
798  if ($foruserprofile) {
799  } else {
800  $default = (empty($colorbacktitle1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacktitle1)));
801 
802  print '<tr class="oddeven">';
803  print '<td>'.$langs->trans("BackgroundTableTitleColor").'</td>';
804  print '<td colspan="'.($colspan - 1).'">';
805  if ($edit) {
806  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_BACKTITLE1') ? $conf->global->THEME_ELDY_BACKTITLE1 : ''), array()), ''), 'THEME_ELDY_BACKTITLE1', '', 1, '', '', 'colorbacktitle1', $default).' ';
807  } else {
808  print $formother->showColor($conf->global->THEME_ELDY_BACKTITLE1, $langs->trans("Default"));
809  }
810  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> '; // $colorbacktitle1 in CSS
811  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
812  print '</td>';
813 
814  print '</tr>';
815  }
816 
817  // TextTitleColor
818  if ($foruserprofile) {
819  } else {
820  $default = (empty($colortexttitle) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitle)));
821 
822  print '<tr class="oddeven">';
823  print '<td>'.$langs->trans("BackgroundTableTitleTextColor").'</td>';
824  print '<td colspan="'.($colspan - 1).'">';
825  if ($edit) {
826  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_TEXTTITLE') ? $conf->global->THEME_ELDY_TEXTTITLE : ''), array()), ''), 'THEME_ELDY_TEXTTITLE', '', 1, '', '', 'colortexttitle', $default).' ';
827  } else {
828  print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLE, $langs->trans("Default"));
829  }
830  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> ';
831  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
832  print '</td>';
833 
834  print '</tr>';
835  }
836 
837  // TextTitleLinkColor
838  if ($foruserprofile) {
839  } else {
840  $default = (empty($colortexttitlelink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortexttitlelink)));
841 
842  print '<tr class="oddeven">';
843  print '<td>'.$langs->trans("BackgroundTableTitleTextlinkColor").'</td>';
844  print '<td colspan="'.($colspan - 1).'">';
845  if ($edit) {
846  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_TEXTTITLELINK') ? $conf->global->THEME_ELDY_TEXTTITLELINK : ''), array()), ''), 'THEME_ELDY_TEXTTITLELINK', '', 1, '', '', 'colortexttitlelink', $default).' ';
847  } else {
848  print $formother->showColor($conf->global->THEME_ELDY_TEXTTITLELINK, $langs->trans("Default"));
849  }
850  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> ';
851  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
852  print '</span>';
853  print '</td>';
854 
855  print '</tr>';
856  }
857 
858  // BackgroundTableLineOddColor
859  if ($foruserprofile) {
860  } else {
861  $default = (empty($colorbacklineimpair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklineimpair1)));
862 
863  print '<tr class="oddeven">';
864  print '<td>'.$langs->trans("BackgroundTableLineOddColor").'</td>';
865  print '<td colspan="'.($colspan - 1).'">';
866  if ($edit) {
867  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_LINEIMPAIR1') ? $conf->global->THEME_ELDY_LINEIMPAIR1 : ''), array()), ''), 'THEME_ELDY_LINEIMPAIR1', '', 1, '', '', 'colorbacklineimpair2', $default).' ';
868  } else {
869  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEIMPAIR1, array()), '');
870  if ($color) {
871  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
872  } else {
873  print $langs->trans("Default");
874  }
875  }
876  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
877  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
878  print '</td>';
879  print '</tr>';
880  }
881 
882  // BackgroundTableLineEvenColor
883  if ($foruserprofile) {
884  } else {
885  $default = (empty($colorbacklinepair1) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepair1)));
886 
887  print '<tr class="oddeven">';
888  print '<td>'.$langs->trans("BackgroundTableLineEvenColor").'</td>';
889  print '<td colspan="'.($colspan - 1).'">';
890  if ($edit) {
891  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_LINEPAIR1') ? $conf->global->THEME_ELDY_LINEPAIR1 : ''), array()), ''), 'THEME_ELDY_LINEPAIR1', '', 1, '', '', 'colorbacklinepair2', $default).' ';
892  } else {
893  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_LINEPAIR1, array()), '');
894  if ($color) {
895  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
896  } else {
897  print $langs->trans("Default");
898  }
899  }
900  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
901  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
902  print '</td>';
903  print '</tr>';
904  }
905 
906  // Text LinkColor
907  if ($foruserprofile) {
908  /*
909  print '<tr class="oddeven">';
910  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
911  print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TEXTLINK:$langs->trans("Default")).'</td>';
912  print '<td class="nowrap left" width="20%"><input name="check_THEME_ELDY_TEXTLINK" id="check_THEME_ELDY_TEXTLINK" type="checkbox" '.(!empty($object->conf->THEME_ELDY_TEXTLINK)?" checked":"");
913  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
914  print '> '.$langs->trans("UsePersonalValue").'</td>';
915  print '<td>';
916  if ($edit)
917  {
918  print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),''),'THEME_ELDY_TEXTLINK','',1).' ';
919  }
920  else
921  {
922  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK,array()),'');
923  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
924  else print '';
925  }
926  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
927  print '</td>';*/
928  } else {
929  $default = (empty($colortextlink) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colortextlink)));
930 
931  print '<tr class="oddeven">';
932  print '<td>'.$langs->trans("LinkColor").'</td>';
933  print '<td colspan="'.($colspan - 1).'">';
934  if ($edit) {
935  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_TEXTLINK') ? $conf->global->THEME_ELDY_TEXTLINK : ''), array()), ''), 'THEME_ELDY_TEXTLINK', '', 1, '', '', 'colortextlink', $default).' ';
936  } else {
937  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTLINK, array()), '');
938  if ($color) {
939  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
940  } else {
941  //print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$defaultcolor.'" value="'.$langs->trans("Default").'">';
942  //print '<span style="color: #000078">'.$langs->trans("Default").'</span>';
943  print $langs->trans("Default");
944  }
945  }
946  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> ';
947  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
948  print '</td>';
949  print '</tr>';
950  }
951 
952  // Use Hover
953  if ($foruserprofile) {
954  /* Must first change option to choose color of highlight instead of yes or no.
955  print '<tr class="oddeven">';
956  print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
957  print '<td><input name="check_THEME_ELDY_USE_HOVER" disabled="disabled" type="checkbox" '.($conf->global->THEME_ELDY_USE_HOVER?" checked":"").'></td>';
958  print '<td class="nowrap left" width="20%"><input name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($selected_theme?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>';
959  print '<td><input name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled="disabled"').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
960  print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
961  print '</td>';
962  print '</tr>';
963  */
964  } else {
965  $default = (empty($colorbacklinepairhover) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairhover)));
966 
967  print '<tr class="oddeven">';
968  print '<td>'.$langs->trans("HighlightLinesColor").'</td>';
969  print '<td colspan="'.($colspan - 1).'">';
970  //print '<input name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
971  //print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
972  if ($edit) {
973  if (getDolGlobalString('THEME_ELDY_USE_HOVER') == '1') {
974  $color = colorArrayToHex(colorStringToArray($colorbacklinepairhover));
975  } else {
976  $color = colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_USE_HOVER') ? $conf->global->THEME_ELDY_USE_HOVER : ''), array()), '');
977  }
978  print $formother->selectColor($color, 'THEME_ELDY_USE_HOVER', '', 1, '', '', 'colorbacklinepairhover', $default).' ';
979  } else {
980  if (getDolGlobalString('THEME_ELDY_USE_HOVER') == '1') {
981  $color = colorArrayToHex(colorStringToArray($colorbacklinepairhover));
982  } else {
983  $color = colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_USE_HOVER') ? $conf->global->THEME_ELDY_USE_HOVER : ''), array()), '');
984  }
985  if ($color) {
986  if ($color != colorArrayToHex(colorStringToArray($colorbacklinepairhover))) {
987  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
988  } else {
989  print $langs->trans("Default");
990  }
991  } else {
992  print $langs->trans("Default");
993  }
994  }
995  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
996  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
997  print '</td>';
998  }
999 
1000  // Use Checked
1001  if ($foruserprofile) {
1002  /* Must first change option to choose color of highlight instead of yes or no.
1003  print '<tr class="oddeven">';
1004  print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
1005  print '<td><input name="check_THEME_ELDY_USE_HOVER" disabled="disabled" type="checkbox" '.($conf->global->THEME_ELDY_USE_HOVER?" checked":"").'></td>';
1006  print '<td class="nowrap left" width="20%"><input name="check_MAIN_THEME"'.($edit?'':' disabled').' type="checkbox" '.($selected_theme?" checked":"").'> '.$langs->trans("UsePersonalValue").'</td>';
1007  print '<td><input name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled="disabled"').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
1008  print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
1009  print '</td>';
1010  print '</tr>';
1011  */
1012  } else {
1013  $default = (empty($colorbacklinepairchecked) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($colorbacklinepairchecked)));
1014 
1015  print '<tr class="oddeven">';
1016  print '<td>'.$langs->trans("HighlightLinesChecked").'</td>';
1017  print '<td colspan="'.($colspan - 1).'">';
1018  //print '<input name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
1019  //print ' &nbsp; ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
1020  if ($edit) {
1021  if (getDolGlobalString('THEME_ELDY_USE_CHECKED') == '1') {
1022  $color = 'e6edf0';
1023  } else {
1024  $color = colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_USE_CHECKED') ? $conf->global->THEME_ELDY_USE_CHECKED : ''), array()), '');
1025  }
1026  print $formother->selectColor($color, 'THEME_ELDY_USE_CHECKED', '', 1, '', '', 'colorbacklinepairchecked', $default).' ';
1027  } else {
1028  if (getDolGlobalString('THEME_ELDY_USE_CHECKED') == '1') {
1029  $color = 'e6edf0';
1030  } else {
1031  $color = colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_USE_CHECKED') ? $conf->global->THEME_ELDY_USE_CHECKED : ''), array()), '');
1032  }
1033  if ($color) {
1034  if ($color != 'e6edf0') {
1035  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
1036  } else {
1037  print $langs->trans("Default");
1038  }
1039  } else {
1040  print $langs->trans("Default");
1041  }
1042  }
1043  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
1044  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
1045  print '</td>';
1046  print '</tr>';
1047  }
1048 
1049  // Btn action
1050  if ($foruserprofile) {
1051  /*
1052  print '<tr class="oddeven">';
1053  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
1054  print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_BTNACTION:$langs->trans("Default")).'</td>';
1055  print '<td class="nowrap left" width="20%"><input name="check_THEME_ELDY_BTNACTION" id="check_THEME_ELDY_BTNACTION" type="checkbox" '.(!empty($object->conf->THEME_ELDY_BTNACTION)?" checked":"");
1056  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
1057  print '> '.$langs->trans("UsePersonalValue").'</td>';
1058  print '<td>';
1059  if ($edit)
1060  {
1061  print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BTNACTION,array()),''),'THEME_ELDY_BTNACTION','',1).' ';
1062  }
1063  else
1064  {
1065  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BTNACTION,array()),'');
1066  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
1067  else print '';
1068  }
1069  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
1070  print '</td>';*/
1071  } else {
1072  $default = (empty($butactionbg) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($butactionbg)));
1073 
1074  print '<tr class="oddeven">';
1075  print '<td>'.$langs->trans("BtnActionColor").'</td>';
1076  print '<td colspan="'.($colspan - 1).'">';
1077  if ($edit) {
1078  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_BTNACTION') ? $conf->global->THEME_ELDY_BTNACTION : ''), array()), ''), 'THEME_ELDY_BTNACTION', '', 1, '', '', 'butactionbg', $default).' ';
1079  } else {
1080  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BTNACTION, array()), '');
1081  if ($color) {
1082  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
1083  } else {
1084  //print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$defaultcolor.'" value="'.$langs->trans("Default").'">';
1085  //print '<span style="color: #000078">'.$langs->trans("Default").'</span>';
1086  print $langs->trans("Default");
1087  }
1088  }
1089  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #'.$default.'">'.$default.'</span></strong> ';
1090  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
1091  print '</td>';
1092  print '</tr>';
1093  }
1094 
1095  // Text btn action
1096  if ($foruserprofile) {
1097  /*
1098  print '<tr class="oddeven">';
1099  print '<td>'.$langs->trans("TopMenuBackgroundColor").'</td>';
1100  print '<td>'.($conf->global->THEME_ELDY_TOPMENU_BACK1?$conf->global->THEME_ELDY_TEXTBTNACTION:$langs->trans("Default")).'</td>';
1101  print '<td class="nowrap left" width="20%"><input name="check_THEME_ELDY_TEXTBTNACTION" id="check_THEME_ELDY_TEXTBTNACTION" type="checkbox" '.(!empty($object->conf->THEME_ELDY_TEXTBTNACTION)?" checked":"");
1102  print (empty($dolibarr_main_demo) && $edit)?'':' disabled="disabled"'; // Disabled for demo
1103  print '> '.$langs->trans("UsePersonalValue").'</td>';
1104  print '<td>';
1105  if ($edit)
1106  {
1107  print $formother->selectColor(colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTBTNACTION,array()),''),'THEME_ELDY_TEXTBTNACTION','',1).' ';
1108  }
1109  else
1110  {
1111  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_BTNACTION,array()),'');
1112  if ($color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
1113  else print '';
1114  }
1115  if ($edit) print '<br>('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
1116  print '</td>';*/
1117  } else {
1118  $default = (empty($textbutaction) ? $langs->trans("Unknown") : colorArrayToHex(colorStringToArray($textbutaction)));
1119 
1120  print '<tr class="oddeven">';
1121  print '<td>'.$langs->trans("TextBtnActionColor").'</td>';
1122  print '<td colspan="'.($colspan - 1).'">';
1123  if ($edit) {
1124  print $formother->selectColor(colorArrayToHex(colorStringToArray((getDolGlobalString('THEME_ELDY_TEXTBTNACTION') ? $conf->global->THEME_ELDY_TEXTBTNACTION : ''), array()), ''), 'THEME_ELDY_TEXTBTNACTION', '', 1, '', '', 'textbutaction', $default).' ';
1125  } else {
1126  $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_TEXTBTNACTION, array()), '');
1127  if ($color) {
1128  print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$color.'" value="'.$color.'">';
1129  } else {
1130  //print '<input type="text" class="colorthumb" disabled="disabled" style="padding: 1px; margin-top: 0; margin-bottom: 0; background-color: #'.$defaultcolor.'" value="'.$langs->trans("Default").'">';
1131  //print '<span style="color: #000078">'.$langs->trans("Default").'</span>';
1132  print $langs->trans("Default");
1133  }
1134  }
1135  print ' &nbsp; <span class="nowraponall opacitymedium">'.$langs->trans("Default").'</span>: <strong><span style="color: #000">'.$default.'</span></strong> ';
1136  print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis"));
1137  print '</td>';
1138  print '</tr>';
1139  }
1140 
1141  // Use MAIN_OPTIMIZEFORTEXTBROWSER
1142  if ($foruserprofile) {
1143  //$default=yn($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER);
1144  $default = $langs->trans('No');
1145  print '<tr class="oddeven">';
1146  print '<td>'.$langs->trans("MAIN_OPTIMIZEFORTEXTBROWSER").'</td>';
1147  print '<td colspan="'.($colspan - 1).'">';
1148  //print ajax_constantonoff("MAIN_OPTIMIZEFORTEXTBROWSER", array(), null, 0, 0, 1, 0);
1149  if ($edit) {
1150  print $form->selectyesno('MAIN_OPTIMIZEFORTEXTBROWSER', (isset($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER) ? $fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER : 0), 1);
1151  } else {
1152  if (!getDolGlobalString('MAIN_OPTIMIZEFORTEXTBROWSER')) {
1153  print yn(isset($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER) ? $fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER : 0);
1154  } else {
1155  print yn(1);
1156  if (empty($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER)) {
1157  print ' ('.$langs->trans("ForcedByGlobalSetup").')';
1158  }
1159  }
1160  }
1161  print ' &nbsp; <span class="opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
1162  print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORTEXTBROWSERDesc"));
1163  print '</td>';
1164  print '</tr>';
1165  } else {
1166  //var_dump($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER);
1167  /*
1168  $default=$langs->trans('No');
1169  print '<tr class="oddeven">';
1170  print '<td>'.$langs->trans("MAIN_OPTIMIZEFORTEXTBROWSER").'</td>';
1171  print '<td colspan="'.($colspan-1).'">';
1172  if ($edit) {
1173  print $form->selectyesno('MAIN_OPTIMIZEFORTEXTBROWSER', $conf->global->MAIN_OPTIMIZEFORTEXTBROWSER, 1);
1174  } else {
1175  print yn($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER);
1176  }
1177  print ' &nbsp; wspan class="opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
1178  print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORTEXTBROWSERDesc"));
1179  print '</span>';
1180  print '</td>';
1181  print '</tr>';
1182  */
1183  }
1184 
1185 
1186  // Use MAIN_OPTIMIZEFORCOLORBLIND
1187  if ($foruserprofile) {
1188  //$default=yn($conf->global->MAIN_OPTIMIZEFORCOLORBLIND);
1189  $default = $langs->trans('No');
1190  print '<tr class="oddeven">';
1191  print '<td>'.$langs->trans("MAIN_OPTIMIZEFORCOLORBLIND").'</td>';
1192  print '<td colspan="'.($colspan - 1).'">';
1193 
1194  $colorBlindOptions = array(
1195  0 => $langs->trans('No'),
1196  'flashy' => $langs->trans('Flashy'),
1197  'protanopia' => $langs->trans('Protanopia'),
1198  'deuteranopes' => $langs->trans('Deuteranopes'),
1199  'tritanopes' => $langs->trans('Tritanopes'),
1200  );
1201 
1202  if ($edit) {
1203  print $form->selectArray('MAIN_OPTIMIZEFORCOLORBLIND', $colorBlindOptions, (isset($fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND) ? $fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND : 0), 0);
1204  } else {
1205  if (!empty($fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND) && isset($colorBlindOptions[$fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND])) {
1206  print $colorBlindOptions[$fuser->conf->MAIN_OPTIMIZEFORCOLORBLIND];
1207  } else {
1208  print yn(0);
1209  }
1210  }
1211  print ' &nbsp; <span class="opacitymedium">'.$langs->trans("Default").'</span>: <strong>'.$default.'</strong> ';
1212  print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORCOLORBLINDDesc"));
1213  print '</td>';
1214  print '</tr>';
1215  } else {
1216  }
1217  print '</table>';
1218  print '</div>';
1219 }
if($user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition: card.php:58
ajax_constantonoff($code, $input=array(), $entity=null, $revertonoff=0, $strict=0, $forcereload=0, $marginleftonlyshort=2, $forcenoajax=0, $setzeroinsteadofdel=0, $suffix='', $mode='', $morecss='inline-block')
On/off button for constant.
Definition: ajax.lib.php:646
Class to manage standard extra fields.
Class permettant la generation de composants html autre Only common components are here.
Class to manage Dolibarr users.
Definition: user.class.php:50
if(isModEnabled('invoice') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&!getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') && $user->hasRight('tax', 'charges', 'lire')) if(isModEnabled('invoice') &&isModEnabled('order') && $user->hasRight("commande", "lire") &&!getDolGlobalString('WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER')) $sql
Social contributions to pay.
Definition: index.php:744
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_dir_list($utf8_path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0, $nbsecondsold=0)
Scan a directory and return a list of files/directories.
Definition: files.lib.php:63
colorArrayToHex($arraycolor, $colorifnotfound='888888')
Convert an array with RGB value into hex RGB value.
colorStringToArray($stringcolor, $colorifnotfound=array(88, 88, 88))
Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,...
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type, $mode='add', $filterorigmodule='')
Complete or removed entries into a head array (used to build tabs).
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
dol_setcache($memoryid, $data, $expire=0)
Save data into a memory area shared by all users, all sessions on server.
Definition: memory.lib.php:69
dol_getcache($memoryid)
Read a memory area shared by all users, all sessions on server.
Definition: memory.lib.php:141
user_prepare_head(User $object)
Prepare array with list of tabs.
user_admin_prepare_head()
Prepare array with list of tabs.
showSkins($fuser, $edit=0, $foruserprofile=false)
Show list of themes.
group_prepare_head($object)
Prepare array with list of tabs.