dolibarr  19.0.0-dev
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 $dirmod = array();
138 $i = 0; // is a sequencer of modules found
139 $j = 0; // j is module number. Automatically affected if module number not defined.
140 
141 foreach ($modulesdir as $dir) {
142  // Charge tableaux modules, nom, numero, orders depuis repertoire dir
143  $handle = @opendir($dir);
144  if (is_resource($handle)) {
145  while (($file = readdir($handle)) !== false) {
146  //print "$i ".$file."\n<br>";
147  if (is_readable($dir.$file) && substr($file, 0, 3) == 'mod' && substr($file, dol_strlen($file) - 10) == '.class.php') {
148  $modName = substr($file, 0, dol_strlen($file) - 10);
149 
150  if ($modName) {
151  try {
152  include_once $dir.$file;
153  $objMod = new $modName($db);
154 
155  if ($objMod->numero > 0) {
156  $j = $objMod->numero;
157  } else {
158  $j = 1000 + $i;
159  }
160 
161  $modulequalified = 1;
162 
163  // We discard modules according to features level (PS: if module is activated we always show it)
164  $const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod)));
165  if ($objMod->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) {
166  $modulequalified = 0;
167  }
168  if ($objMod->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) {
169  $modulequalified = 0;
170  }
171 
172  if ($modulequalified) {
173  $modules[$i] = $objMod;
174  $filename[$i] = $modName;
175  $orders[$i] = $objMod->family."_".$j; // Tri par famille puis numero module
176  //print "x".$modName." ".$orders[$i]."\n<br>";
177  $dirmod[$i] = $dirroot;
178  $j++;
179  $i++;
180  }
181  } catch (Exception $e) {
182  dol_syslog("Failed to load ".$dir.$file." ".$e->getMessage(), LOG_ERR);
183  }
184  }
185  }
186  }
187  }
188 }
189 
190 asort($orders);
191 //var_dump($orders);
192 
193 
194 /*
195  * Actions
196  */
197 
198 if (GETPOST('action', 'aZ09') == 'gotodemo') { // Action run when we click on "Start" after selection modules
199  //print 'ee'.GETPOST("demochoice");
200  $disablestring = '';
201  // If we disable modules using a profile choice
202  if (GETPOST("demochoice")) {
203  foreach ($demoprofiles as $profilearray) {
204  if ($profilearray['key'] == GETPOST("demochoice")) {
205  $disablestring = $profilearray['disablemodules'];
206  break;
207  }
208  }
209  }
210  // If we disable modules using personalized list
211  foreach ($modules as $val) {
212  $modulekeyname = strtolower($val->name);
213  if (!GETPOST($modulekeyname) && empty($val->always_enabled) && !in_array($modulekeyname, $alwayscheckedmodules)) {
214  $disablestring .= $modulekeyname.',';
215  if ($modulekeyname == 'propale') {
216  $disablestring .= 'propal,';
217  }
218  }
219  }
220 
221  // Do redirect to login page
222  if ($disablestring) {
223  if (GETPOST('urlfrom')) {
224  $url .= (preg_match('/\?/', $url) ? '&amp;' : '?').'urlfrom='.urlencode(GETPOST('urlfrom', 'alpha'));
225  }
226  $url .= (preg_match('/\?/', $url) ? '&amp;' : '?').'disablemodules='.$disablestring;
227  //var_dump($url);exit;
228  header("Location: ".$url);
229  exit;
230  }
231 }
232 
233 
234 /*
235  * View
236  */
237 
238 $head = '';
239 $head .= '<meta name="keywords" content="demo,online,demonstration,example,test,erp,crm,demos,web">'."\n";
240 $head .= '<meta name="description" content="Dolibarr ERP and CRM demo. You can test here several profiles for Dolibarr ERP and CRM demonstration.">'."\n";
241 
242 $head .= '
243 <script type="text/javascript">
244 var openedId="";
245 jQuery(document).ready(function () {
246  jQuery("tr.moduleline").hide();
247  // Enable this to allow personalized setup
248  jQuery(".modulelineshow").attr("href","#a1profdemoall");
249  jQuery(".cursorpointer").css("cursor","pointer");
250  jQuery(".modulelineshow").click(function() {
251  console.log("We select the custom demo");
252  var idstring=$(this).attr("id");
253  if (typeof idstring != "undefined")
254  {
255  var currentId = idstring.substring(2);
256  jQuery("tr.moduleline").hide();
257  if (currentId != openedId)
258  {
259  openedId=currentId;
260  jQuery("#tr1"+currentId).show();
261  jQuery("#tr2"+currentId).show();
262  }
263  else openedId = "";
264  }
265  });
266 });
267 </script>';
268 
269 llxHeaderVierge($langs->trans("DolibarrDemo"), $head);
270 
271 
272 print "\n";
273 
274 print '<div class="demoban demobackground">';
275 print '<div class="right" style="padding-right: 30px; padding-top: 30px;">';
276 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>';
277 print '</div>';
278 print '</div>';
279 
280 print '<div class="demobantext" style="max-width: 1024px;">';
281 print '<div style="font-size: 20px; padding: 40px;">';
282 print '<div class="hideonsmartphone" style="text-align: justify;">'.$langs->trans("DemoDesc").'</div><br>';
283 print '<div class="titre"><span style="font-size: 20px">'.$langs->trans("ChooseYourDemoProfil").'</span></div>';
284 print '</div>';
285 print '</div>';
286 
287 
288 print '<div class="clearboth"></div>';
289 print '<div class="demobanbox">';
290 
291 $i = 0;
292 foreach ($demoprofiles as $profilearray) {
293  if ($profilearray['default'] >= 0) {
294  //print $profilearray['lang'];
295  if (!empty($profilearray['lang'])) {
296  $langs->load($profilearray['lang']);
297  }
298 
299  $url = $_SERVER["PHP_SELF"].'?action=gotodemo';
300  $urlwithmod = $url.'&amp;demochoice='.$profilearray['key'];
301  // Should work with DOL_URL_ROOT='' or DOL_URL_ROOT='/dolibarr'
302  //print "xx".$_SERVER["PHP_SELF"].' '.DOL_URL_ROOT.'<br>';
303 
304  $urlfrom = preg_replace('/^'.preg_quote(DOL_URL_ROOT, '/').'/i', '', $_SERVER["PHP_SELF"]);
305  //print $urlfrom;
306 
307  if (!empty($profilearray['url'])) {
308  $urlwithmod = $profilearray['url'];
309  $urlwithmod = $urlwithmod.(preg_match('/\?/', $urlwithmod) ? '&amp;' : '?').'urlfrom='.urlencode($urlfrom);
310  if (!empty($profilearray['disablemodules'])) {
311  $urlwithmod = $urlwithmod.(preg_match('/\?/', $urlwithmod) ? '&amp;' : '?').'disablemodules='.$profilearray['disablemodules'];
312  }
313  }
314 
315  if (empty($profilearray['url'])) {
316  print '<div class="clearboth"></div>';
317  }
318 
319  print '<form method="POST" class="valigntop inline-block" name="form'.$profilearray['key'].'" id="form'.$profilearray['key'].'" action="'.$_SERVER["PHP_SELF"].'#a1'.$profilearray['key'].'">'."\n";
320  print '<input type="hidden" name="action" value="gotodemo">'."\n";
321  print '<input type="hidden" name="urlfrom" value="'.dol_escape_htmltag($urlfrom).'">'."\n";
322  print '<input type="hidden" name="token" value="'.newToken().'">'."\n";
323  print '<input type="hidden" name="username" value="demo">'."\n";
324  print '<input type="hidden" name="dol_hide_topmenu" value="'.$conf->dol_hide_topmenu.'">'."\n";
325  print '<input type="hidden" name="dol_hide_leftmenu" value="'.$conf->dol_hide_leftmenu.'">'."\n";
326  print '<input type="hidden" name="dol_optimize_smallscreen" value="'.$conf->dol_optimize_smallscreen.'">'."\n";
327  print '<input type="hidden" name="dol_no_mouse_hover" value="'.$conf->dol_no_mouse_hover.'">'."\n";
328  print '<input type="hidden" name="dol_use_jmobile" value="'.$conf->dol_use_jmobile.'">'."\n";
329 
330  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";
331 
332 
333  print '<div id="a1'.$profilearray['key'].'" class="demobox '.(empty($profilearray['url']) ? 'modulelineshow cursorpointer' : 'nomodulelines').'">';
334 
335  print '<a href="'.$urlwithmod.'" class="'.(empty($profilearray['url']) ? 'modulelineshow' : 'nomodulelines').'">';
336  print '<div style="padding: 10px;">';
337 
338  print '<img class="demothumb" src="'.$profilearray['icon'].'" alt="Demo '.$profilearray['label'].'">';
339 
340  print '<div class="clearboth"></div>';
341 
342  print '<div class="demothumbtext">';
343  print $langs->trans($profilearray['label']);
344  print '</div>';
345 
346  print '</div>';
347  print '</a>';
348 
349 
350  // Modules (a profile you must choose modules)
351  if (empty($profilearray['url'])) {
352  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">';
353 
354  print '<span class="opacitymedium">'.$langs->trans("ThisIsListOfModules").'</span><br><br>';
355 
356  print '<div class="csscolumns">';
357 
358  $listofdisabledmodules = explode(',', $profilearray['disablemodules']);
359  $j = 0;
360  //$nbcolsmod = empty($conf->dol_optimize_smallscreen) ? 4 : 3;
361  //var_dump($modules);
362  foreach ($orders as $index => $key) { // Loop on qualified (enabled) modules
363  //print $index.' '.$key;
364  $val = $modules[$index];
365  $modulekeyname = strtolower($val->name);
366 
367  $modulequalified = 1;
368  if (!empty($val->always_enabled) || in_array($modulekeyname, $alwayshiddenuncheckedmodules)) {
369  $modulequalified = 0;
370  }
371  if ($val->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2 && empty($conf->global->$const_name)) {
372  $modulequalified = 0;
373  }
374  if ($val->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1 && empty($conf->global->$const_name)) {
375  $modulequalified = 0;
376  }
377  if (!$modulequalified) {
378  continue;
379  }
380 
381  if (in_array($modulekeyname, $alwayshiddencheckedmodules)) {
382  print "\n".'<!-- Module '.$modulekeyname.' hidden and always checked -->';
383  print '<input type="hidden" name="'.$modulekeyname.'" value="1">';
384  } else {
385  //$modulo = ($j % $nbcolsmod);
386  //if ($modulo == 0) print '<tr>';
387  print '<!-- id='.$val->numero.' -->';
388  print '<div class="nowrap">';
389  print '<input type="checkbox" class="checkbox valignmiddle paddingright" id="id'.$modulekeyname.'" name="'.$modulekeyname.'" value="1" title="'.dol_escape_htmltag($val->getName()).'"';
390  $disabled = '';
391  if (in_array($modulekeyname, $alwaysuncheckedmodules)) {
392  $disabled = 'disabled';
393  print ' '.$disabled;
394  }
395  if (!in_array($modulekeyname, $alwaysuncheckedmodules) && (!in_array($modulekeyname, $listofdisabledmodules) || in_array($modulekeyname, $alwayscheckedmodules))) {
396  print ' checked';
397  }
398  print '>';
399  /*
400  $s = img_picto('', $modulekeyname, 'class="pictofixedwidth paddingleft"');
401  if ($s) {
402  print $s;
403  } else {
404  print img_picto('', 'generic', 'class="pictofixedwidth paddingleft"');
405  }*/
406  print '<label for="id'.$modulekeyname.'" class="inline-block demomaxoveflow valignmiddle paddingleft'.($disabled ? ' opacitymedium' : '').'" title="'.dol_escape_htmltag($val->getName()).'">'.$val->getName().'</label><br>';
407  print '</div>';
408  //if ($modulo == ($nbcolsmod - 1)) print '</tr>';
409  $j++;
410  }
411  }
412 
413  print '</div>';
414 
415  print '<br><div class="center">';
416  print '<input type="submit" value=" &nbsp; &nbsp; '.$langs->trans("Start").' &nbsp; &nbsp; " class="button">';
417  print '<br><br>';
418  print '</div>';
419 
420  print '</div>';
421  }
422 
423  print '</div></div>';
424  print '</form>'."\n";
425 
426  $i++;
427  }
428 }
429 
430 print '</div>';
431 
432 print '<br>';
433 
434 
435 // TODO Replace this with a hook
436 // Google Adsense (need Google module)
437 if (isModEnabled('google') && !empty($conf->global->MAIN_GOOGLE_AD_CLIENT) && !empty($conf->global->MAIN_GOOGLE_AD_SLOT)) {
438  if (empty($conf->dol_use_jmobile)) {
439  print '<div align="center">'."\n";
440  print '<script><!--'."\n";
441  print 'google_ad_client = "'.$conf->global->MAIN_GOOGLE_AD_CLIENT.'";'."\n";
442  print 'google_ad_slot = "'.$conf->global->MAIN_GOOGLE_AD_SLOT.'";'."\n";
443  print 'google_ad_width = '.$conf->global->MAIN_GOOGLE_AD_WIDTH.';'."\n";
444  print 'google_ad_height = '.$conf->global->MAIN_GOOGLE_AD_HEIGHT.';'."\n";
445  print '//-->'."\n";
446  print '</script>'."\n";
447  print '<script src="//pagead2.googlesyndication.com/pagead/show_ads.js"></script>'."\n";
448  print '</div>'."\n";
449  } else {
450  print '<!-- google js advert tag disabled with jmobile -->'."\n";
451  }
452 }
453 
455 
456 $db->close();
457 
458 
466 function llxHeaderVierge($title, $head = "")
467 {
468  top_httphead();
469 
470  top_htmlhead($head, $title, 0, 0, array(), array('public/demo/demo.css'), 0, 1);
471 
472  print '<body class="demobody"><div class="demobackgrounddiv">'."\n";
473 }
474 
480 function llxFooterVierge()
481 {
482  printCommonFooter('public');
483 
484  print "\n";
485  print "</div></body>\n";
486  print "</html>\n";
487 }
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:1494
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:1625
llxFooterVierge()
Show footer for demo.
Definition: index.php:480
llxHeaderVierge($title, $head="")
Show header for demo.
Definition: index.php:466
httponly_accessforbidden($message=1, $http_response_code=403, $stringalreadysanitized=0)
Show a message to say access is forbidden and stop program.