dolibarr  18.0.6
index.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com>
5  * Copyright (C) 2015 RaphaĆ«l Doursenaud <rdoursenaud@gpcsolutions.fr>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19  */
20 
27 if (!defined('NOLOGIN')) {
28  define('NOLOGIN', '1');
29 }
30 if (!defined('NOBROWSERNOTIF')) {
31  define('NOBROWSERNOTIF', 1);
32 }
33 if (!defined('NOIPCHECK')) {
34  define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
35 }
36 
37 // Load Dolibarr environment
38 require '../../main.inc.php';
39 require_once '../../core/lib/functions2.lib.php';
40 
41 $langs->loadLangs(array("main", "install", "other"));
42 
43 $conf->dol_hide_topmenu = GETPOST('dol_hide_topmenu', 'int');
44 $conf->dol_hide_leftmenu = GETPOST('dol_hide_leftmenu', 'int');
45 $conf->dol_optimize_smallscreen = GETPOST('dol_optimize_smallscreen', 'int');
46 $conf->dol_no_mouse_hover = GETPOST('dol_no_mouse_hover', 'int');
47 $conf->dol_use_jmobile = GETPOST('dol_use_jmobile', 'int');
48 
49 // Security check
50 global $dolibarr_main_demo;
51 if (empty($dolibarr_main_demo)) {
52  httponly_accessforbidden('Parameter dolibarr_main_demo must be defined in conf file with value "default login,default pass" to enable the demo entry page');
53 }
54 
55 // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
56 $res = $hookmanager->initHooks(array('demo'));
57 
58 $demoprofiles = array();
59 $alwayscheckedmodules = array();
60 $alwaysuncheckedmodules = array();
61 $alwayshiddencheckedmodules = array();
62 $alwayshiddenuncheckedmodules = array();
63 
64 $url = '';
65 $url .= ($url ? '&' : '').($conf->dol_hide_topmenu ? 'dol_hide_topmenu='.$conf->dol_hide_topmenu : '');
66 $url .= ($url ? '&' : '').($conf->dol_hide_leftmenu ? 'dol_hide_leftmenu='.$conf->dol_hide_leftmenu : '');
67 $url .= ($url ? '&' : '').($conf->dol_optimize_smallscreen ? 'dol_optimize_smallscreen='.$conf->dol_optimize_smallscreen : '');
68 $url .= ($url ? '&' : '').($conf->dol_no_mouse_hover ? 'dol_no_mouse_hover='.$conf->dol_no_mouse_hover : '');
69 $url .= ($url ? '&' : '').($conf->dol_use_jmobile ? 'dol_use_jmobile='.$conf->dol_use_jmobile : '');
70 $url = DOL_URL_ROOT.'/index.php'.($url ? '?'.$url : '');
71 
72 $tmpaction = 'view';
73 $parameters = array();
74 $object = new stdClass();
75 $reshook = $hookmanager->executeHooks('addDemoProfile', $parameters, $object, $tmpaction); // Note that $action and $object may have been modified by some hooks
76 $error = $hookmanager->error; $errors = $hookmanager->errors;
77 if (empty($reshook)) {
78  $demoprofiles = array(
79  array('default'=>'1', 'key'=>'profdemoservonly', 'label'=>'DemoCompanyServiceOnly',
80  'disablemodules'=>'adherent,barcode,bom,cashdesk,don,expedition,externalsite,ftp,incoterm,mailmanspip,margin,mrp,prelevement,product,productbatch,stock,takepos',
81  //'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot8.png',
82  'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-service.jpg',
83  'url'=>$url
84  ),
85  array('default'=>'0', 'key'=>'profmanufacture', 'label'=>'DemoCompanyManufacturing',
86  'disablemodules'=>'adherent,contrat,don,externalsite,ficheinter,ftp,mailmanspip,prelevement,service',
87  'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-manufacturing.jpg',
88  'url'=>$url
89  ),
90  array('default'=>'0', 'key'=>'profdemoprodstock', 'label'=>'DemoCompanyProductAndStocks',
91  'disablemodules'=>'adherent,bom,contrat,don,externalsite,ficheinter,ftp,mailmanspip,mrp,prelevement,service',
92  //'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot2.png',
93  'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-product.jpg',
94  'url'=>$url
95  ),
96  array('default'=>'0', 'key'=>'profdemofun2', 'label'=>'DemoFundation2',
97  'disablemodules'=>'barcode,cashdesk,bom,commande,commercial,compta,comptabilite,contrat,expedition,externalsite,ficheinter,ftp,incoterm,mailmanspip,margin,mrp,prelevement,product,productbatch,projet,propal,propale,service,societe,stock,tax,takepos',
98  //'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot6.png',
99  'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-foundation.jpg',
100  'url'=>$url
101  ),
102  // All demo profile
103  array('default'=>'0', 'key'=>'profdemoall', 'label'=>'ChooseYourDemoProfilMore',
104  'disablemodules'=>'adherent,cashdesk,don,externalsite,mailmanspip',
105  //'icon'=>DOL_URL_ROOT.'/public/demo/dolibarr_screenshot9.png'
106  'icon'=>DOL_URL_ROOT.'/public/demo/demo-profile-all.jpg'
107  )
108  );
109 
110 
111  // Visible
112  $alwayscheckedmodules = array('barcode', 'bookmark', 'categorie', 'externalrss', 'fckeditor', 'geoipmaxmind', 'gravatar', 'memcached', 'syslog', 'user', 'webservices'); // Technical module we always want
113  $alwaysuncheckedmodules = array('dav', 'dynamicprices', 'incoterm', 'loan', 'multicurrency', 'paybox', 'paypal', 'stripe', 'google', 'printing', 'scanner', 'skype', 'website'); // Module we dont want by default
114  // Not visible
115  $alwayshiddencheckedmodules = array('accounting', 'api', 'barcode', 'blockedlog', 'bookmark', 'clicktodial', 'comptabilite', 'cron', 'document', 'domain', 'externalrss', 'externalsite', 'fckeditor', 'geoipmaxmind', 'gravatar', 'label', 'ldap',
116  'mailmanspip', 'notification', 'oauth', 'syslog', 'user', 'webservices', 'workflow',
117  // Extended modules
118  'memcached', 'numberwords', 'zipautofillfr');
119  $alwayshiddenuncheckedmodules = array('cashdesk', 'collab', 'dav', 'debugbar', 'emailcollector', 'ftp', 'hrm', 'modulebuilder', 'printing', 'webservicesclient', 'zappier',
120  // Extended modules
121  'awstats', 'bittorrent', 'bootstrap', 'cabinetmed', 'cmcic', 'concatpdf', 'customfield', 'datapolicy', 'deplacement', 'dolicloud', 'filemanager', 'lightbox', 'mantis', 'monitoring', 'moretemplates', 'multicompany', 'nltechno', 'numberingpack', 'openstreetmap',
122  'ovh', 'phenix', 'phpsysinfo', 'pibarcode', 'postnuke', 'dynamicprices', 'receiptprinter', 'selectbank', 'skincoloreditor', 'submiteverywhere', 'survey', 'thomsonphonebook', 'topten', 'tvacerfa', 'voyage', 'webcalendar', 'webmail');
123 }
124 
125 // Search modules
126 $dirlist = $conf->file->dol_document_root;
127 
128 
129 // Search modules dirs
130 $modulesdir = dolGetModulesDirs();
131 
132 
133 $filename = array();
134 $modules = array();
135 $orders = array();
136 $categ = array();
137 $i = 0; // is a sequencer of modules found
138 $j = 0; // j is module number. Automatically affected if module number not defined.
139 
140 foreach ($modulesdir as $dir) {
141  // Charge tableaux modules, nom, numero, orders depuis repertoire dir
142  $handle = @opendir($dir);
143  if (is_resource($handle)) {
144  while (($file = readdir($handle)) !== false) {
145  //print "$i ".$file."\n<br>";
146  if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') {
147  $modName = substr($file, 0, dol_strlen($file) - 10);
148 
149  if ($modName) {
150  try {
151  include_once $dir.$file;
152  $objMod = new $modName($db);
153 
154  if ($objMod->numero > 0) {
155  $j = $objMod->numero;
156  } else {
157  $j = 1000 + $i;
158  }
159 
160  $modulequalified = 1;
161 
162  // We discard modules according to features level (PS: if module is activated we always show it)
163  $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod)));
164  if ($objMod->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) {
165  $modulequalified = 0;
166  }
167  if ($objMod->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) {
168  $modulequalified = 0;
169  }
170 
171  if ($modulequalified) {
172  $modules[$i] = $objMod;
173  $filename[$i] = $modName;
174  $orders[$i] = $objMod->family."_".$j; // Tri par famille puis numero module
175  //print "x".$modName." ".$orders[$i]."\n<br>";
176  $j++;
177  $i++;
178  }
179  } catch (Exception $e) {
180  dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
181  }
182  }
183  }
184  }
185  }
186 }
187 
188 asort($orders);
189 //var_dump($orders);
190 
191 
192 /*
193  * Actions
194  */
195 
196 if (GETPOST('action', 'aZ09') == 'gotodemo') { // Action run when we click on "Start" after selection modules
197  //print 'ee'.GETPOST("demochoice");
198  $disablestring = '';
199  // If we disable modules using a profile choice
200  if (GETPOST("demochoice")) {
201  foreach ($demoprofiles as $profilearray) {
202  if ($profilearray['key'] == GETPOST("demochoice")) {
203  $disablestring = $profilearray['disablemodules'];
204  break;
205  }
206  }
207  }
208  // If we disable modules using personalized list
209  foreach ($modules as $val) {
210  $modulekeyname = strtolower($val->name);
211  if (!GETPOST($modulekeyname) && empty($val->always_enabled) && !in_array($modulekeyname, $alwayscheckedmodules)) {
212  $disablestring .= $modulekeyname.',';
213  if ($modulekeyname == 'propale') {
214  $disablestring .= 'propal,';
215  }
216  }
217  }
218 
219  // Do redirect to login page
220  if ($disablestring) {
221  if (GETPOST('urlfrom')) {
222  $url .= (preg_match('/\?/', $url) ? '&amp;' : '?').'urlfrom='.urlencode(GETPOST('urlfrom', 'alpha'));
223  }
224  $url .= (preg_match('/\?/', $url) ? '&amp;' : '?').'disablemodules='.$disablestring;
225  //var_dump($url);exit;
226  header("Location: ".$url);
227  exit;
228  }
229 }
230 
231 
232 /*
233  * View
234  */
235 
236 $head = '';
237 $head .= '<meta name="keywords" content="demo,online,demonstration,example,test,erp,crm,demos,web">'."\n";
238 $head .= '<meta name="description" content="Dolibarr ERP and CRM demo. You can test here several profiles for Dolibarr ERP and CRM demonstration.">'."\n";
239 
240 $head .= '
241 <script type="text/javascript">
242 var openedId="";
243 jQuery(document).ready(function () {
244  jQuery("tr.moduleline").hide();
245  // Enable this to allow personalized setup
246  jQuery(".modulelineshow").attr("href","#a1profdemoall");
247  jQuery(".cursorpointer").css("cursor","pointer");
248  jQuery(".modulelineshow").click(function() {
249  console.log("We select the custom demo");
250  var idstring=$(this).attr("id");
251  if (typeof idstring != "undefined")
252  {
253  var currentId = idstring.substring(2);
254  jQuery("tr.moduleline").hide();
255  if (currentId != openedId)
256  {
257  openedId=currentId;
258  jQuery("#tr1"+currentId).show();
259  jQuery("#tr2"+currentId).show();
260  }
261  else openedId = "";
262  }
263  });
264 });
265 </script>';
266 
267 llxHeaderVierge($langs->trans("DolibarrDemo"), $head);
268 
269 
270 print "\n";
271 
272 print '<div class="demoban demobackground">';
273 print '<div class="right" style="padding-right: 30px; padding-top: 30px;">';
274 print '<a alt="Official portal of your ERP CRM application" targe="_blank" href="https://www.dolibarr.org?utm_medium=website&utm_source=demo"><img class="demologo" src="'.DOL_URL_ROOT.'/theme/dolibarr_logo.svg" alt="Dolibarr logo"></a>';
275 print '</div>';
276 print '</div>';
277 
278 print '<div class="demobantext" style="max-width: 1024px;">';
279 print '<div style="font-size: 20px; padding: 40px;">';
280 print '<div class="hideonsmartphone" style="text-align: justify;">'.$langs->trans("DemoDesc").'</div><br>';
281 print '<div class="titre"><span style="font-size: 20px">'.$langs->trans("ChooseYourDemoProfil").'</span></div>';
282 print '</div>';
283 print '</div>';
284 
285 
286 print '<div class="clearboth"></div>';
287 print '<div class="demobanbox">';
288 
289 $i = 0;
290 foreach ($demoprofiles as $profilearray) {
291  if ($profilearray['default'] >= 0) {
292  //print $profilearray['lang'];
293  if (!empty($profilearray['lang'])) {
294  $langs->load($profilearray['lang']);
295  }
296 
297  $url = $_SERVER["PHP_SELF"].'?action=gotodemo';
298  $urlwithmod = $url.'&amp;demochoice='.$profilearray['key'];
299  // Should work with DOL_URL_ROOT='' or DOL_URL_ROOT='/dolibarr'
300  //print "xx".$_SERVER["PHP_SELF"].' '.DOL_URL_ROOT.'<br>';
301 
302  $urlfrom = preg_replace('/^'.preg_quote(DOL_URL_ROOT, '/').'/i', '', $_SERVER["PHP_SELF"]);
303  //print $urlfrom;
304 
305  if (!empty($profilearray['url'])) {
306  $urlwithmod = $profilearray['url'];
307  $urlwithmod = $urlwithmod.(preg_match('/\?/', $urlwithmod) ? '&amp;' : '?').'urlfrom='.urlencode($urlfrom);
308  if (!empty($profilearray['disablemodules'])) {
309  $urlwithmod = $urlwithmod.(preg_match('/\?/', $urlwithmod) ? '&amp;' : '?').'disablemodules='.$profilearray['disablemodules'];
310  }
311  }
312 
313  if (empty($profilearray['url'])) {
314  print '<div class="clearboth"></div>';
315  }
316 
317  print '<form method="POST" class="valigntop inline-block" name="form'.$profilearray['key'].'" id="form'.$profilearray['key'].'" action="'.$_SERVER["PHP_SELF"].'#a1'.$profilearray['key'].'">'."\n";
318  print '<input type="hidden" name="action" value="gotodemo">'."\n";
319  print '<input type="hidden" name="urlfrom" value="'.dol_escape_htmltag($urlfrom).'">'."\n";
320  print '<input type="hidden" name="token" value="'.newToken().'">'."\n";
321  print '<input type="hidden" name="username" value="demo">'."\n";
322  print '<input type="hidden" name="dol_hide_topmenu" value="'.$conf->dol_hide_topmenu.'">'."\n";
323  print '<input type="hidden" name="dol_hide_leftmenu" value="'.$conf->dol_hide_leftmenu.'">'."\n";
324  print '<input type="hidden" name="dol_optimize_smallscreen" value="'.$conf->dol_optimize_smallscreen.'">'."\n";
325  print '<input type="hidden" name="dol_no_mouse_hover" value="'.$conf->dol_no_mouse_hover.'">'."\n";
326  print '<input type="hidden" name="dol_use_jmobile" value="'.$conf->dol_use_jmobile.'">'."\n";
327 
328  print '<div id="div'.$profilearray['key'].'" summary="Dolibarr online demonstration for profile '.$profilearray['label'].'" class="center inline-block CTable CTableRow'.($i % 2 == 0 ? '1' : '0').'">'."\n";
329 
330 
331  print '<div id="a1'.$profilearray['key'].'" class="demobox '.(empty($profilearray['url']) ? 'modulelineshow cursorpointer' : 'nomodulelines').'">';
332 
333  print '<a href="'.$urlwithmod.'" class="'.(empty($profilearray['url']) ? 'modulelineshow' : 'nomodulelines').'">';
334  print '<div style="padding: 10px;">';
335 
336  print '<img class="demothumb" src="'.$profilearray['icon'].'" alt="Demo '.$profilearray['label'].'">';
337 
338  print '<div class="clearboth"></div>';
339 
340  print '<div class="demothumbtext">';
341  print $langs->trans($profilearray['label']);
342  print '</div>';
343 
344  print '</div>';
345  print '</a>';
346 
347 
348  // Modules (a profile you must choose modules)
349  if (empty($profilearray['url'])) {
350  print '<div id="tr1'.$profilearray['key'].'" class="moduleline hidden" style="margin-left: 8px; margin-right: 8px; text-align: justify; font-size:0.75em; line-height: 130%; padding-bottom: 8px">';
351 
352  print '<span class="opacitymedium">'.$langs->trans("ThisIsListOfModules").'</span><br><br>';
353 
354  print '<div class="csscolumns">';
355 
356  $listofdisabledmodules = explode(',', $profilearray['disablemodules']);
357  $j = 0;
358  //$nbcolsmod = empty($conf->dol_optimize_smallscreen) ? 4 : 3;
359  //var_dump($modules);
360  foreach ($orders as $index => $key) { // Loop on qualified (enabled) modules
361  //print $index.' '.$key;
362  $val = $modules[$index];
363  $modulekeyname = strtolower($val->name);
364 
365  $modulequalified = 1;
366  if (!empty($val->always_enabled) || in_array($modulekeyname, $alwayshiddenuncheckedmodules)) {
367  $modulequalified = 0;
368  }
369  if ($val->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) {
370  $modulequalified = 0;
371  }
372  if ($val->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) {
373  $modulequalified = 0;
374  }
375  if (!$modulequalified) {
376  continue;
377  }
378 
379  if (in_array($modulekeyname, $alwayshiddencheckedmodules)) {
380  print "\n".'<!-- Module '.$modulekeyname.' hidden and always checked -->';
381  print '<input type="hidden" name="'.$modulekeyname.'" value="1">';
382  } else {
383  //$modulo = ($j % $nbcolsmod);
384  //if ($modulo == 0) print '<tr>';
385  print '<!-- id='.$val->numero.' -->';
386  print '<div class="nowrap">';
387  print '<input type="checkbox" class="checkbox valignmiddle paddingright" id="id'.$modulekeyname.'" name="'.$modulekeyname.'" value="1" title="'.dol_escape_htmltag($val->getName()).'"';
388  $disabled = '';
389  if (in_array($modulekeyname, $alwaysuncheckedmodules)) {
390  $disabled = 'disabled';
391  print ' '.$disabled;
392  }
393  if (!in_array($modulekeyname, $alwaysuncheckedmodules) && (!in_array($modulekeyname, $listofdisabledmodules) || in_array($modulekeyname, $alwayscheckedmodules))) {
394  print ' checked';
395  }
396  print '>';
397  /*
398  $s = img_picto('', $modulekeyname, 'class="pictofixedwidth paddingleft"');
399  if ($s) {
400  print $s;
401  } else {
402  print img_picto('', 'generic', 'class="pictofixedwidth paddingleft"');
403  }*/
404  print '<label for="id'.$modulekeyname.'" class="inline-block demomaxoveflow valignmiddle paddingleft'.($disabled ? ' opacitymedium' : '').'" title="'.dol_escape_htmltag($val->getName()).'">'.$val->getName().'</label><br>';
405  print '</div>';
406  //if ($modulo == ($nbcolsmod - 1)) print '</tr>';
407  $j++;
408  }
409  }
410 
411  print '</div>';
412 
413  print '<br><div class="center">';
414  print '<input type="submit" value=" &nbsp; &nbsp; '.$langs->trans("Start").' &nbsp; &nbsp; " class="button">';
415  print '<br><br>';
416  print '</div>';
417 
418  print '</div>';
419  }
420 
421  print '</div></div>';
422  print '</form>'."\n";
423 
424  $i++;
425  }
426 }
427 
428 print '</div>';
429 
430 print '<br>';
431 
432 
433 // TODO Replace this with a hook
434 // Google Adsense (need Google module)
435 if (isModEnabled('google') && !empty($conf->global->MAIN_GOOGLE_AD_CLIENT) && !empty($conf->global->MAIN_GOOGLE_AD_SLOT)) {
436  if (empty($conf->dol_use_jmobile)) {
437  print '<div align="center">'."\n";
438  print '<script><!--'."\n";
439  print 'google_ad_client = "'.$conf->global->MAIN_GOOGLE_AD_CLIENT.'";'."\n";
440  print 'google_ad_slot = "'.$conf->global->MAIN_GOOGLE_AD_SLOT.'";'."\n";
441  print 'google_ad_width = '.$conf->global->MAIN_GOOGLE_AD_WIDTH.';'."\n";
442  print 'google_ad_height = '.$conf->global->MAIN_GOOGLE_AD_HEIGHT.';'."\n";
443  print '//-->'."\n";
444  print '</script>'."\n";
445  print '<script src="//pagead2.googlesyndication.com/pagead/show_ads.js"></script>'."\n";
446  print '</div>'."\n";
447  } else {
448  print '<!-- google js advert tag disabled with jmobile -->'."\n";
449  }
450 }
451 
453 
454 $db->close();
455 
456 
464 function llxHeaderVierge($title, $head = "")
465 {
466  top_httphead();
467 
468  top_htmlhead($head, $title, 0, 0, array(), array('public/demo/demo.css'), 0, 1);
469 
470  print '<body class="demobody"><div class="demobackgrounddiv">'."\n";
471 }
472 
478 function llxFooterVierge()
479 {
480  printCommonFooter('public');
481 
482  print "\n";
483  print "</div></body>\n";
484  print "</html>\n";
485 }
dolGetModulesDirs($subdir='')
Return list of modules directories.
printCommonFooter($zone='private')
Print common footer : conf->global->MAIN_HTML_FOOTER js for switch of menu hider js for conf->global-...
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
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...
if(!defined('NOREQUIREMENU')) if(!empty(GETPOST('seteventmessages', 'alpha'))) if(!function_exists("llxHeader")) top_httphead($contenttype='text/html', $forcenocache=0)
Show HTTP header.
Definition: main.inc.php:1510
top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $disableforlogin=0, $disablenofollow=0, $disablenoindex=0)
Ouput html header of a page.
Definition: main.inc.php:1641
llxFooterVierge()
Show footer for demo.
Definition: index.php:478
llxHeaderVierge($title, $head="")
Show header for demo.
Definition: index.php:464
httponly_accessforbidden($message=1, $http_response_code=403, $stringalreadysanitized=0)
Show a message to say access is forbidden and stop program.