@@ -83,10 +83,10 @@ discard block |
||
| 83 | 83 | |
| 84 | 84 | if (!empty($_SERVER["CONTEXT_PREFIX"])) { // CONTEXT_PREFIX and CONTEXT_DOCUMENT_ROOT are not defined on all apache versions |
| 85 | 85 | $path = $_SERVER["CONTEXT_PREFIX"]; // example '/dolibarr/' when using an apache alias. |
| 86 | - if (!preg_match('/\/$/', $path)) |
|
| 87 | - $path .= '/'; |
|
| 88 | - } |
|
| 89 | - else if (preg_match('/index\.php/', $_SERVER['PHP_SELF'])) { |
|
| 86 | + if (!preg_match('/\/$/', $path)) { |
|
| 87 | + $path .= '/'; |
|
| 88 | + } |
|
| 89 | + } else if (preg_match('/index\.php/', $_SERVER['PHP_SELF'])) { |
|
| 90 | 90 | // When we ask index.php, we MUST BE SURE that $path is '' at the end. This is required to make install process |
| 91 | 91 | // when using apache alias like '/dolibarr/' that point to htdocs. |
| 92 | 92 | // Note: If calling page was an index.php not into htdocs (ie comm/index.php, ...), then this redirect will fails, |
@@ -100,12 +100,15 @@ discard block |
||
| 100 | 100 | $path = ''; |
| 101 | 101 | $i = count($TDir); |
| 102 | 102 | while ($i--) { |
| 103 | - if (empty($TDir[$i]) || $TDir[$i] == 'htdocs') |
|
| 104 | - break; |
|
| 105 | - if ($TDir[$i] == 'dolibarr') |
|
| 106 | - break; |
|
| 107 | - if (substr($TDir[$i], -4, 4) == '.php') |
|
| 108 | - continue; |
|
| 103 | + if (empty($TDir[$i]) || $TDir[$i] == 'htdocs') { |
|
| 104 | + break; |
|
| 105 | + } |
|
| 106 | + if ($TDir[$i] == 'dolibarr') { |
|
| 107 | + break; |
|
| 108 | + } |
|
| 109 | + if (substr($TDir[$i], -4, 4) == '.php') { |
|
| 110 | + continue; |
|
| 111 | + } |
|
| 109 | 112 | |
| 110 | 113 | $path .= '../'; |
| 111 | 114 | } |
@@ -186,8 +189,9 @@ discard block |
||
| 186 | 189 | } else { |
| 187 | 190 | $tmpa = parse_url($_SERVER['HTTP_HOST']); |
| 188 | 191 | $tmpb = parse_url($_SERVER['HTTP_REFERER']); |
| 189 | - if ((empty($tmpa['host']) ? $tmpa['path'] : $tmpa['host']) != (empty($tmpb['host']) ? $tmpb['path'] : $tmpb['host'])) |
|
| 190 | - $csrfattack = true; |
|
| 192 | + if ((empty($tmpa['host']) ? $tmpa['path'] : $tmpa['host']) != (empty($tmpb['host']) ? $tmpb['path'] : $tmpb['host'])) { |
|
| 193 | + $csrfattack = true; |
|
| 194 | + } |
|
| 191 | 195 | } |
| 192 | 196 | if ($csrfattack) { |
| 193 | 197 | //print 'NOCSRFCHECK='.defined('NOCSRFCHECK').' REQUEST_METHOD='.$_SERVER['REQUEST_METHOD'].' HTTP_HOST='.$_SERVER['HTTP_HOST'].' HTTP_REFERER='.$_SERVER['HTTP_REFERER']; |
@@ -138,8 +138,9 @@ discard block |
||
| 138 | 138 | */ |
| 139 | 139 | function executeHooks($method, $parameters = array(), &$object = '', &$action = '') |
| 140 | 140 | { |
| 141 | - if (!is_array($this->hooks) || empty($this->hooks)) |
|
| 142 | - return ''; |
|
| 141 | + if (!is_array($this->hooks) || empty($this->hooks)) { |
|
| 142 | + return ''; |
|
| 143 | + } |
|
| 143 | 144 | |
| 144 | 145 | $parameters['context'] = join(':', $this->contextarray); |
| 145 | 146 | //dol_syslog(get_class($this).'::executeHooks method='.$method." action=".$action." context=".$parameters['context']); |
@@ -199,8 +200,9 @@ discard block |
||
| 199 | 200 | 'setContentSecurityPolicy', |
| 200 | 201 | 'setHtmlTitle' |
| 201 | 202 | ) |
| 202 | - )) |
|
| 203 | - $hooktype = 'addreplace'; |
|
| 203 | + )) { |
|
| 204 | + $hooktype = 'addreplace'; |
|
| 205 | + } |
|
| 204 | 206 | |
| 205 | 207 | if ($method == 'insertExtraFields') { |
| 206 | 208 | $hooktype = 'returnvalue'; // @deprecated. TODO Remove all code with "executeHooks('insertExtraFields'" as soon as there is a trigger available. |
@@ -222,12 +224,14 @@ discard block |
||
| 222 | 224 | foreach ($modules as $module => $actionclassinstance) { |
| 223 | 225 | //print "Before hook ".get_class($actionclassinstance)." method=".$method." hooktype=".$hooktype." results=".count($actionclassinstance->results)." resprints=".count($actionclassinstance->resprints)." resaction=".$resaction." result=".$result."<br>\n"; |
| 224 | 226 | // test to avoid running twice a hook, when a module implements several active contexts |
| 225 | - if (in_array($module, $modulealreadyexecuted)) |
|
| 226 | - continue; |
|
| 227 | + if (in_array($module, $modulealreadyexecuted)) { |
|
| 228 | + continue; |
|
| 229 | + } |
|
| 227 | 230 | |
| 228 | 231 | // jump to next module/class if method does not exist |
| 229 | - if (!method_exists($actionclassinstance, $method)) |
|
| 230 | - continue; |
|
| 232 | + if (!method_exists($actionclassinstance, $method)) { |
|
| 233 | + continue; |
|
| 234 | + } |
|
| 231 | 235 | |
| 232 | 236 | $this->resNbOfHooks++; |
| 233 | 237 | |
@@ -250,24 +254,29 @@ discard block |
||
| 250 | 254 | dol_syslog("Error on hook module=" . $module . ", method " . $method . ", class " . get_class($actionclassinstance) . ", hooktype=" . $hooktype . (empty($this->error) ? '' : " " . $this->error) . (empty($this->errors) ? '' : " " . join(",", $this->errors)), LOG_ERR); |
| 251 | 255 | } |
| 252 | 256 | |
| 253 | - if (isset($actionclassinstance->results) && is_array($actionclassinstance->results)) |
|
| 254 | - $this->resArray = array_merge($this->resArray, $actionclassinstance->results); |
|
| 255 | - if (!empty($actionclassinstance->resprints)) |
|
| 256 | - $this->resPrint .= $actionclassinstance->resprints; |
|
| 257 | + if (isset($actionclassinstance->results) && is_array($actionclassinstance->results)) { |
|
| 258 | + $this->resArray = array_merge($this->resArray, $actionclassinstance->results); |
|
| 259 | + } |
|
| 260 | + if (!empty($actionclassinstance->resprints)) { |
|
| 261 | + $this->resPrint .= $actionclassinstance->resprints; |
|
| 262 | + } |
|
| 257 | 263 | } |
| 258 | 264 | // Generic hooks that return a string or array (printLeftBlock, formAddObjectLine, formBuilddocOptions, ...) |
| 259 | 265 | else { |
| 260 | 266 | // TODO. this test should be done into the method of hook by returning nothing |
| 261 | - if (is_array($parameters) && !empty($parameters['special_code']) && $parameters['special_code'] > 3 && $parameters['special_code'] != $actionclassinstance->module_number) |
|
| 262 | - continue; |
|
| 267 | + if (is_array($parameters) && !empty($parameters['special_code']) && $parameters['special_code'] > 3 && $parameters['special_code'] != $actionclassinstance->module_number) { |
|
| 268 | + continue; |
|
| 269 | + } |
|
| 263 | 270 | |
| 264 | 271 | //dol_syslog("Call method ".$method." of class ".get_class($actionclassinstance).", module=".$module.", hooktype=".$hooktype, LOG_DEBUG); |
| 265 | 272 | $resaction = $actionclassinstance->$method($parameters, $object, $action, $this); // $object and $action can be changed by method ($object->id during creation for example or $action to go back to other action for example) |
| 266 | 273 | |
| 267 | - if (!empty($actionclassinstance->results) && is_array($actionclassinstance->results)) |
|
| 268 | - $this->resArray = array_merge($this->resArray, $actionclassinstance->results); |
|
| 269 | - if (!empty($actionclassinstance->resprints)) |
|
| 270 | - $this->resPrint .= $actionclassinstance->resprints; |
|
| 274 | + if (!empty($actionclassinstance->results) && is_array($actionclassinstance->results)) { |
|
| 275 | + $this->resArray = array_merge($this->resArray, $actionclassinstance->results); |
|
| 276 | + } |
|
| 277 | + if (!empty($actionclassinstance->resprints)) { |
|
| 278 | + $this->resPrint .= $actionclassinstance->resprints; |
|
| 279 | + } |
|
| 271 | 280 | // TODO dead code to remove (do not enable this, but fix hook instead): result must not be a string but an int. you must use $actionclassinstance->resprints to return a string |
| 272 | 281 | if (!is_array($resaction) && !is_numeric($resaction)) { |
| 273 | 282 | dol_syslog('Error: Bug into hook ' . $method . ' of module class ' . get_class($actionclassinstance) . '. Method must not return a string but an int (0=OK, 1=Replace, -1=KO) and set string into ->resprints', LOG_ERR); |
@@ -213,16 +213,18 @@ discard block |
||
| 213 | 213 | foreach ($tmplist as $tmpkey) { |
| 214 | 214 | $postkey = $tmpautoset[0] . '_' . $tmpkey; |
| 215 | 215 | //var_dump('tmpkey='.$tmpkey.' postkey='.$postkey.' value='.$_POST[$postkey]); |
| 216 | - if (!empty($_POST[$postkey])) |
|
| 217 | - $cookiearrayvalue[$tmpkey] = $_POST[$postkey]; |
|
| 216 | + if (!empty($_POST[$postkey])) { |
|
| 217 | + $cookiearrayvalue[$tmpkey] = $_POST[$postkey]; |
|
| 218 | + } |
|
| 218 | 219 | } |
| 219 | 220 | $cookiename = $tmpautoset[0]; |
| 220 | 221 | $cookievalue = json_encode($cookiearrayvalue); |
| 221 | 222 | //var_dump('setcookie cookiename='.$cookiename.' cookievalue='.$cookievalue); |
| 222 | 223 | setcookie($cookiename, empty($cookievalue) ? '' : $cookievalue, empty($cookievalue) ? 0 : (time() + (86400 * 354)), '/', null, false, true); // keep cookie 1 year and add tag httponly |
| 223 | - if (empty($cookievalue)) |
|
| 224 | - unset($_COOKIE[$cookiename]); |
|
| 225 | -} |
|
| 224 | + if (empty($cookievalue)) { |
|
| 225 | + unset($_COOKIE[$cookiename]); |
|
| 226 | + } |
|
| 227 | + } |
|
| 226 | 228 | |
| 227 | 229 | |
| 228 | 230 | // Init session. Name of session is specific to Dolibarr instance. |
@@ -231,8 +233,9 @@ discard block |
||
| 231 | 233 | |
| 232 | 234 | $sessionname = 'DOLSESSID_' . $prefix; |
| 233 | 235 | $sessiontimeout = 'DOLSESSTIMEOUT_' . $prefix; |
| 234 | -if (!empty($_COOKIE[$sessiontimeout])) |
|
| 236 | +if (!empty($_COOKIE[$sessiontimeout])) { |
|
| 235 | 237 | ini_set('session.gc_maxlifetime', $_COOKIE[$sessiontimeout]); |
| 238 | +} |
|
| 236 | 239 | session_name($sessionname); |
| 237 | 240 | session_set_cookie_params(0, '/', null, false, true); // Add tag httponly on session cookie (same as setting session.cookie_httponly into php.ini). Must be called before the session_start. |
| 238 | 241 | // This create lock, released when session_write_close() or end of page. |
@@ -263,11 +266,13 @@ discard block |
||
| 263 | 266 | $conf->browser->layout = $tmp['layout']; // 'classic', 'phone', 'tablet' |
| 264 | 267 | //var_dump($conf->browser); |
| 265 | 268 | |
| 266 | - if ($conf->browser->layout == 'phone') |
|
| 267 | - $conf->dol_no_mouse_hover = 1; |
|
| 268 | - if ($conf->browser->layout == 'phone') |
|
| 269 | - $conf->global->MAIN_TESTMENUHIDER = 1; |
|
| 270 | -} |
|
| 269 | + if ($conf->browser->layout == 'phone') { |
|
| 270 | + $conf->dol_no_mouse_hover = 1; |
|
| 271 | + } |
|
| 272 | + if ($conf->browser->layout == 'phone') { |
|
| 273 | + $conf->global->MAIN_TESTMENUHIDER = 1; |
|
| 274 | + } |
|
| 275 | + } |
|
| 271 | 276 | |
| 272 | 277 | // Force HTTPS if required ($conf->file->main_force_https is 0/1 or https dolibarr root url) |
| 273 | 278 | // $_SERVER["HTTPS"] is 'on' when link is https, otherwise $_SERVER["HTTPS"] is empty or 'off' |
@@ -312,10 +317,14 @@ discard block |
||
| 312 | 317 | } |
| 313 | 318 | |
| 314 | 319 | // Loading of additional presentation includes |
| 315 | -if (!defined('NOREQUIREHTML')) |
|
| 316 | - require_once DOL_BASE_PATH . '/core/class/html.form.class.php'; // Need 660ko memory (800ko in 2.2) |
|
| 317 | -if (!defined('NOREQUIREAJAX') && $conf->use_javascript_ajax) |
|
| 318 | - require_once DOL_BASE_PATH . '/core/lib/ajax.lib.php'; // Need 22ko memory |
|
| 320 | +if (!defined('NOREQUIREHTML')) { |
|
| 321 | + require_once DOL_BASE_PATH . '/core/class/html.form.class.php'; |
|
| 322 | +} |
|
| 323 | +// Need 660ko memory (800ko in 2.2) |
|
| 324 | +if (!defined('NOREQUIREAJAX') && $conf->use_javascript_ajax) { |
|
| 325 | + require_once DOL_BASE_PATH . '/core/lib/ajax.lib.php'; |
|
| 326 | +} |
|
| 327 | +// Need 22ko memory |
|
| 319 | 328 | |
| 320 | 329 | |
| 321 | 330 | |
@@ -344,8 +353,9 @@ discard block |
||
| 344 | 353 | // Creation of a token against CSRF vulnerabilities |
| 345 | 354 | if (!defined('NOTOKENRENEWAL')) { |
| 346 | 355 | // roulement des jetons car cree a chaque appel |
| 347 | - if (isset($_SESSION['newtoken'])) |
|
| 348 | - $_SESSION['token'] = $_SESSION['newtoken']; |
|
| 356 | + if (isset($_SESSION['newtoken'])) { |
|
| 357 | + $_SESSION['token'] = $_SESSION['newtoken']; |
|
| 358 | + } |
|
| 349 | 359 | |
| 350 | 360 | // Save in $_SESSION['newtoken'] what will be next token. Into forms, we will add param token = $_SESSION['newtoken'] |
| 351 | 361 | $token = dol_hash(uniqid(mt_rand(), true)); // Generates a hash of a random number |
@@ -367,14 +377,16 @@ discard block |
||
| 367 | 377 | } |
| 368 | 378 | |
| 369 | 379 | // Disable modules (this must be after session_start and after conf has been loaded) |
| 370 | -if (GETPOST('disablemodules', 'alpha')) |
|
| 380 | +if (GETPOST('disablemodules', 'alpha')) { |
|
| 371 | 381 | $_SESSION["disablemodules"] = GETPOST('disablemodules', 'alpha'); |
| 382 | +} |
|
| 372 | 383 | if (!empty($_SESSION["disablemodules"])) { |
| 373 | 384 | $disabled_modules = explode(',', $_SESSION["disablemodules"]); |
| 374 | 385 | foreach ($disabled_modules as $module) { |
| 375 | 386 | if ($module) { |
| 376 | - if (empty($conf->$module)) |
|
| 377 | - $conf->$module = new stdClass(); |
|
| 387 | + if (empty($conf->$module)) { |
|
| 388 | + $conf->$module = new stdClass(); |
|
| 389 | + } |
|
| 378 | 390 | $conf->$module->enabled = false; |
| 379 | 391 | if ($module == 'fournisseur') { // Special case |
| 380 | 392 | $conf->supplier_order->enabled = 0; |
@@ -396,11 +408,13 @@ discard block |
||
| 396 | 408 | $dolibarr_main_authentication = constant('MAIN_AUTHENTICATION_MODE'); |
| 397 | 409 | } else { |
| 398 | 410 | // Authentication mode |
| 399 | - if (empty($dolibarr_main_authentication)) |
|
| 400 | - $dolibarr_main_authentication = 'http,dolibarr'; |
|
| 411 | + if (empty($dolibarr_main_authentication)) { |
|
| 412 | + $dolibarr_main_authentication = 'http,dolibarr'; |
|
| 413 | + } |
|
| 401 | 414 | // Authentication mode: forceuser |
| 402 | - if ($dolibarr_main_authentication == 'forceuser' && empty($dolibarr_auto_user)) |
|
| 403 | - $dolibarr_auto_user = 'auto'; |
|
| 415 | + if ($dolibarr_main_authentication == 'forceuser' && empty($dolibarr_auto_user)) { |
|
| 416 | + $dolibarr_auto_user = 'auto'; |
|
| 417 | + } |
|
| 404 | 418 | } |
| 405 | 419 | // Set authmode |
| 406 | 420 | $authmode = explode(',', $dolibarr_main_authentication); |
@@ -477,35 +491,41 @@ discard block |
||
| 477 | 491 | $hookmanager->initHooks(array('login')); |
| 478 | 492 | $parameters = array('dol_authmode' => $dol_authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]); |
| 479 | 493 | $reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks |
| 480 | - if ($reshook < 0) |
|
| 481 | - $error++; |
|
| 494 | + if ($reshook < 0) { |
|
| 495 | + $error++; |
|
| 496 | + } |
|
| 482 | 497 | |
| 483 | 498 | // Note: exit is done later |
| 484 | 499 | } |
| 485 | 500 | } |
| 486 | 501 | |
| 487 | 502 | $allowedmethodtopostusername = 2; |
| 488 | - if (defined('MAIN_AUTHENTICATION_POST_METHOD')) |
|
| 489 | - $allowedmethodtopostusername = constant('MAIN_AUTHENTICATION_POST_METHOD'); |
|
| 503 | + if (defined('MAIN_AUTHENTICATION_POST_METHOD')) { |
|
| 504 | + $allowedmethodtopostusername = constant('MAIN_AUTHENTICATION_POST_METHOD'); |
|
| 505 | + } |
|
| 490 | 506 | $usertotest = (!empty($_COOKIE['login_dolibarr']) ? $_COOKIE['login_dolibarr'] : GETPOST("username", "alpha", $allowedmethodtopostusername)); |
| 491 | 507 | $passwordtotest = GETPOST('password', 'none', $allowedmethodtopostusername); |
| 492 | 508 | $entitytotest = (GETPOST('entity', 'int') ? GETPOST('entity', 'int') : (!empty($conf->entity) ? $conf->entity : 1)); |
| 493 | 509 | |
| 494 | 510 | // Define if we received data to test the login. |
| 495 | 511 | $goontestloop = false; |
| 496 | - if (isset($_SERVER["REMOTE_USER"]) && in_array('http', $authmode)) |
|
| 497 | - $goontestloop = true; |
|
| 498 | - if ($dolibarr_main_authentication == 'forceuser' && !empty($dolibarr_auto_user)) |
|
| 499 | - $goontestloop = true; |
|
| 500 | - if (GETPOST("username", "alpha", $allowedmethodtopostusername) || !empty($_COOKIE['login_dolibarr']) || GETPOST('openid_mode', 'alpha', 1)) |
|
| 501 | - $goontestloop = true; |
|
| 512 | + if (isset($_SERVER["REMOTE_USER"]) && in_array('http', $authmode)) { |
|
| 513 | + $goontestloop = true; |
|
| 514 | + } |
|
| 515 | + if ($dolibarr_main_authentication == 'forceuser' && !empty($dolibarr_auto_user)) { |
|
| 516 | + $goontestloop = true; |
|
| 517 | + } |
|
| 518 | + if (GETPOST("username", "alpha", $allowedmethodtopostusername) || !empty($_COOKIE['login_dolibarr']) || GETPOST('openid_mode', 'alpha', 1)) { |
|
| 519 | + $goontestloop = true; |
|
| 520 | + } |
|
| 502 | 521 | |
| 503 | 522 | if (!is_object($langs)) { // This can occurs when calling page with NOREQUIRETRAN defined, however we need langs for error messages. |
| 504 | 523 | include_once DOL_BASE_PATH . '/core/class/translate.class.php'; |
| 505 | 524 | $langs = new Translate("", $conf); |
| 506 | 525 | $langcode = (GETPOST('lang', 'aZ09', 1) ? GETPOST('lang', 'aZ09', 1) : (empty($conf->global->MAIN_LANG_DEFAULT) ? 'auto' : $conf->global->MAIN_LANG_DEFAULT)); |
| 507 | - if (defined('MAIN_LANG_DEFAULT')) |
|
| 508 | - $langcode = constant('MAIN_LANG_DEFAULT'); |
|
| 526 | + if (defined('MAIN_LANG_DEFAULT')) { |
|
| 527 | + $langcode = constant('MAIN_LANG_DEFAULT'); |
|
| 528 | + } |
|
| 509 | 529 | $langs->setDefaultLang($langcode); |
| 510 | 530 | } |
| 511 | 531 | |
@@ -527,8 +547,9 @@ discard block |
||
| 527 | 547 | $datenow = dol_now(); |
| 528 | 548 | $datefirst = dol_stringtotime($_POST["dst_first"]); |
| 529 | 549 | $datesecond = dol_stringtotime($_POST["dst_second"]); |
| 530 | - if ($datenow >= $datefirst && $datenow < $datesecond) |
|
| 531 | - $dol_dst = 1; |
|
| 550 | + if ($datenow >= $datefirst && $datenow < $datesecond) { |
|
| 551 | + $dol_dst = 1; |
|
| 552 | + } |
|
| 532 | 553 | } |
| 533 | 554 | //print $datefirst.'-'.$datesecond.'-'.$datenow.'-'.$dol_tz.'-'.$dol_tzstring.'-'.$dol_dst; exit; |
| 534 | 555 | } |
@@ -540,8 +561,9 @@ discard block |
||
| 540 | 561 | |
| 541 | 562 | // Bad password. No authmode has found a good password. |
| 542 | 563 | // We set a generic message if not defined inside function checkLoginPassEntity or subfunctions |
| 543 | - if (empty($_SESSION["dol_loginmesg"])) |
|
| 544 | - $_SESSION["dol_loginmesg"] = $langs->trans("ErrorBadLoginPassword"); |
|
| 564 | + if (empty($_SESSION["dol_loginmesg"])) { |
|
| 565 | + $_SESSION["dol_loginmesg"] = $langs->trans("ErrorBadLoginPassword"); |
|
| 566 | + } |
|
| 545 | 567 | |
| 546 | 568 | // Call trigger for the "security events" log |
| 547 | 569 | $user->trigger_mesg = $langs->trans("ErrorBadLoginPassword") . ' - login=' . GETPOST("username", "alpha", 2); |
@@ -558,8 +580,9 @@ discard block |
||
| 558 | 580 | $hookmanager->initHooks(array('login')); |
| 559 | 581 | $parameters = array('dol_authmode' => $dol_authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]); |
| 560 | 582 | $reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks |
| 561 | - if ($reshook < 0) |
|
| 562 | - $error++; |
|
| 583 | + if ($reshook < 0) { |
|
| 584 | + $error++; |
|
| 585 | + } |
|
| 563 | 586 | |
| 564 | 587 | // Note: exit is done in next chapter |
| 565 | 588 | } |
@@ -569,10 +592,11 @@ discard block |
||
| 569 | 592 | if (!$login || (in_array('ldap', $authmode) && empty($passwordtotest))) { // With LDAP we refused empty password because some LDAP are "opened" for anonymous access so connexion is a success. |
| 570 | 593 | // No data to test login, so we show the login page |
| 571 | 594 | dol_syslog("--- Access to " . $_SERVER["PHP_SELF"] . " showing the login form and exit"); |
| 572 | - if (defined('NOREDIRECTBYMAINTOLOGIN')) |
|
| 573 | - return 'ERROR_NOT_LOGGED'; |
|
| 574 | - else |
|
| 575 | - dol_loginfunction($langs, $conf, (!empty($mysoc) ? $mysoc : '')); |
|
| 595 | + if (defined('NOREDIRECTBYMAINTOLOGIN')) { |
|
| 596 | + return 'ERROR_NOT_LOGGED'; |
|
| 597 | + } else { |
|
| 598 | + dol_loginfunction($langs, $conf, (!empty($mysoc) ? $mysoc : '')); |
|
| 599 | + } |
|
| 576 | 600 | exit; |
| 577 | 601 | } |
| 578 | 602 | |
@@ -611,21 +635,24 @@ discard block |
||
| 611 | 635 | $hookmanager->initHooks(array('login')); |
| 612 | 636 | $parameters = array('dol_authmode' => $dol_authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]); |
| 613 | 637 | $reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks |
| 614 | - if ($reshook < 0) |
|
| 615 | - $error++; |
|
| 638 | + if ($reshook < 0) { |
|
| 639 | + $error++; |
|
| 640 | + } |
|
| 616 | 641 | |
| 617 | 642 | $paramsurl = array(); |
| 618 | - if (GETPOST('textbrowser', 'int')) |
|
| 619 | - $paramsurl[] = 'textbrowser=' . GETPOST('textbrowser', 'int'); |
|
| 620 | - if (GETPOST('nojs', 'int')) |
|
| 621 | - $paramsurl[] = 'nojs=' . GETPOST('nojs', 'int'); |
|
| 622 | - if (GETPOST('lang', 'aZ09')) |
|
| 623 | - $paramsurl[] = 'lang=' . GETPOST('lang', 'aZ09'); |
|
| 643 | + if (GETPOST('textbrowser', 'int')) { |
|
| 644 | + $paramsurl[] = 'textbrowser=' . GETPOST('textbrowser', 'int'); |
|
| 645 | + } |
|
| 646 | + if (GETPOST('nojs', 'int')) { |
|
| 647 | + $paramsurl[] = 'nojs=' . GETPOST('nojs', 'int'); |
|
| 648 | + } |
|
| 649 | + if (GETPOST('lang', 'aZ09')) { |
|
| 650 | + $paramsurl[] = 'lang=' . GETPOST('lang', 'aZ09'); |
|
| 651 | + } |
|
| 624 | 652 | header('Location: ' . DOL_BASE_URI . '/index.php' . (count($paramsurl) ? '?' . implode('&', $paramsurl) : '')); |
| 625 | 653 | exit; |
| 626 | 654 | } |
| 627 | - } |
|
| 628 | - else { |
|
| 655 | + } else { |
|
| 629 | 656 | // We are already into an authenticated session |
| 630 | 657 | $login = $_SESSION["dol_login"]; |
| 631 | 658 | $entity = $_SESSION["dol_entity"]; |
@@ -667,20 +694,23 @@ discard block |
||
| 667 | 694 | $hookmanager->initHooks(array('login')); |
| 668 | 695 | $parameters = array('dol_authmode' => $dol_authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]); |
| 669 | 696 | $reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks |
| 670 | - if ($reshook < 0) |
|
| 671 | - $error++; |
|
| 697 | + if ($reshook < 0) { |
|
| 698 | + $error++; |
|
| 699 | + } |
|
| 672 | 700 | |
| 673 | 701 | $paramsurl = array(); |
| 674 | - if (GETPOST('textbrowser', 'int')) |
|
| 675 | - $paramsurl[] = 'textbrowser=' . GETPOST('textbrowser', 'int'); |
|
| 676 | - if (GETPOST('nojs', 'int')) |
|
| 677 | - $paramsurl[] = 'nojs=' . GETPOST('nojs', 'int'); |
|
| 678 | - if (GETPOST('lang', 'aZ09')) |
|
| 679 | - $paramsurl[] = 'lang=' . GETPOST('lang', 'aZ09'); |
|
| 702 | + if (GETPOST('textbrowser', 'int')) { |
|
| 703 | + $paramsurl[] = 'textbrowser=' . GETPOST('textbrowser', 'int'); |
|
| 704 | + } |
|
| 705 | + if (GETPOST('nojs', 'int')) { |
|
| 706 | + $paramsurl[] = 'nojs=' . GETPOST('nojs', 'int'); |
|
| 707 | + } |
|
| 708 | + if (GETPOST('lang', 'aZ09')) { |
|
| 709 | + $paramsurl[] = 'lang=' . GETPOST('lang', 'aZ09'); |
|
| 710 | + } |
|
| 680 | 711 | header('Location: ' . DOL_BASE_URI . '/index.php' . (count($paramsurl) ? '?' . implode('&', $paramsurl) : '')); |
| 681 | 712 | exit; |
| 682 | - } |
|
| 683 | - else { |
|
| 713 | + } else { |
|
| 684 | 714 | // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context |
| 685 | 715 | $hookmanager->initHooks(array('main')); |
| 686 | 716 | |
@@ -689,8 +719,9 @@ discard block |
||
| 689 | 719 | $relativepathstring = preg_replace('/\?.*$/', '', $_SERVER["HTTP_REFERER"]); |
| 690 | 720 | $relativepathstring = preg_replace('/^https?:\/\/[^\/]*/', '', $relativepathstring); // Get full path except host server |
| 691 | 721 | // Clean $relativepathstring |
| 692 | - if (constant('DOL_BASE_URI')) |
|
| 693 | - $relativepathstring = preg_replace('/^' . preg_quote(constant('DOL_BASE_URI'), '/') . '/', '', $relativepathstring); |
|
| 722 | + if (constant('DOL_BASE_URI')) { |
|
| 723 | + $relativepathstring = preg_replace('/^' . preg_quote(constant('DOL_BASE_URI'), '/') . '/', '', $relativepathstring); |
|
| 724 | + } |
|
| 694 | 725 | $relativepathstring = preg_replace('/^\//', '', $relativepathstring); |
| 695 | 726 | $relativepathstring = preg_replace('/^custom\//', '', $relativepathstring); |
| 696 | 727 | //var_dump($relativepathstring); |
@@ -741,16 +772,21 @@ discard block |
||
| 741 | 772 | $_SESSION["dol_company"] = $conf->global->MAIN_INFO_SOCIETE_NOM; |
| 742 | 773 | $_SESSION["dol_entity"] = $conf->entity; |
| 743 | 774 | // Store value into session (values stored only if defined) |
| 744 | - if (!empty($dol_hide_topmenu)) |
|
| 745 | - $_SESSION['dol_hide_topmenu'] = $dol_hide_topmenu; |
|
| 746 | - if (!empty($dol_hide_leftmenu)) |
|
| 747 | - $_SESSION['dol_hide_leftmenu'] = $dol_hide_leftmenu; |
|
| 748 | - if (!empty($dol_optimize_smallscreen)) |
|
| 749 | - $_SESSION['dol_optimize_smallscreen'] = $dol_optimize_smallscreen; |
|
| 750 | - if (!empty($dol_no_mouse_hover)) |
|
| 751 | - $_SESSION['dol_no_mouse_hover'] = $dol_no_mouse_hover; |
|
| 752 | - if (!empty($dol_use_jmobile)) |
|
| 753 | - $_SESSION['dol_use_jmobile'] = $dol_use_jmobile; |
|
| 775 | + if (!empty($dol_hide_topmenu)) { |
|
| 776 | + $_SESSION['dol_hide_topmenu'] = $dol_hide_topmenu; |
|
| 777 | + } |
|
| 778 | + if (!empty($dol_hide_leftmenu)) { |
|
| 779 | + $_SESSION['dol_hide_leftmenu'] = $dol_hide_leftmenu; |
|
| 780 | + } |
|
| 781 | + if (!empty($dol_optimize_smallscreen)) { |
|
| 782 | + $_SESSION['dol_optimize_smallscreen'] = $dol_optimize_smallscreen; |
|
| 783 | + } |
|
| 784 | + if (!empty($dol_no_mouse_hover)) { |
|
| 785 | + $_SESSION['dol_no_mouse_hover'] = $dol_no_mouse_hover; |
|
| 786 | + } |
|
| 787 | + if (!empty($dol_use_jmobile)) { |
|
| 788 | + $_SESSION['dol_use_jmobile'] = $dol_use_jmobile; |
|
| 789 | + } |
|
| 754 | 790 | |
| 755 | 791 | dol_syslog("This is a new started user session. _SESSION['dol_login']=" . $_SESSION["dol_login"] . " Session id=" . session_id()); |
| 756 | 792 | |
@@ -775,8 +811,9 @@ discard block |
||
| 775 | 811 | $hookmanager->initHooks(array('login')); |
| 776 | 812 | $parameters = array('dol_authmode' => $dol_authmode, 'dol_loginfo' => $loginfo); |
| 777 | 813 | $reshook = $hookmanager->executeHooks('afterLogin', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks |
| 778 | - if ($reshook < 0) |
|
| 779 | - $error++; |
|
| 814 | + if ($reshook < 0) { |
|
| 815 | + $error++; |
|
| 816 | + } |
|
| 780 | 817 | |
| 781 | 818 | if ($error) { |
| 782 | 819 | $db->rollback(); |
@@ -814,10 +851,14 @@ discard block |
||
| 814 | 851 | */ |
| 815 | 852 | |
| 816 | 853 | // Set liste_limit |
| 817 | - if (isset($user->conf->MAIN_SIZE_LISTE_LIMIT)) |
|
| 818 | - $conf->liste_limit = $user->conf->MAIN_SIZE_LISTE_LIMIT; // Can be 0 |
|
| 819 | - if (isset($user->conf->PRODUIT_LIMIT_SIZE)) |
|
| 820 | - $conf->product->limit_size = $user->conf->PRODUIT_LIMIT_SIZE; // Can be 0 |
|
| 854 | + if (isset($user->conf->MAIN_SIZE_LISTE_LIMIT)) { |
|
| 855 | + $conf->liste_limit = $user->conf->MAIN_SIZE_LISTE_LIMIT; |
|
| 856 | + } |
|
| 857 | + // Can be 0 |
|
| 858 | + if (isset($user->conf->PRODUIT_LIMIT_SIZE)) { |
|
| 859 | + $conf->product->limit_size = $user->conf->PRODUIT_LIMIT_SIZE; |
|
| 860 | + } |
|
| 861 | + // Can be 0 |
|
| 821 | 862 | |
| 822 | 863 | |
| 823 | 864 | |
@@ -844,8 +885,9 @@ discard block |
||
| 844 | 885 | if (!empty($user->conf->MAIN_DISABLE_JAVASCRIPT)) { |
| 845 | 886 | $conf->use_javascript_ajax = !$user->conf->MAIN_DISABLE_JAVASCRIPT; |
| 846 | 887 | } |
| 847 | -} else |
|
| 888 | +} else { |
|
| 848 | 889 | $conf->use_javascript_ajax = 0; |
| 890 | +} |
|
| 849 | 891 | // Set MAIN_OPTIMIZEFORTEXTBROWSER |
| 850 | 892 | if (GETPOST('textbrowser', 'int') || (!empty($conf->browser->name) && $conf->browser->name == 'lynxlinks') || !empty($user->conf->MAIN_OPTIMIZEFORTEXTBROWSER)) { // If we must enable text browser |
| 851 | 893 | $conf->global->MAIN_OPTIMIZEFORTEXTBROWSER = 1; |
@@ -854,25 +896,32 @@ discard block |
||
| 854 | 896 | } |
| 855 | 897 | |
| 856 | 898 | // Set terminal output option according to conf->browser. |
| 857 | -if (GETPOST('dol_hide_leftmenu', 'int') || !empty($_SESSION['dol_hide_leftmenu'])) |
|
| 899 | +if (GETPOST('dol_hide_leftmenu', 'int') || !empty($_SESSION['dol_hide_leftmenu'])) { |
|
| 858 | 900 | $conf->dol_hide_leftmenu = 1; |
| 859 | -if (GETPOST('dol_hide_topmenu', 'int') || !empty($_SESSION['dol_hide_topmenu'])) |
|
| 901 | +} |
|
| 902 | +if (GETPOST('dol_hide_topmenu', 'int') || !empty($_SESSION['dol_hide_topmenu'])) { |
|
| 860 | 903 | $conf->dol_hide_topmenu = 1; |
| 861 | -if (GETPOST('dol_optimize_smallscreen', 'int') || !empty($_SESSION['dol_optimize_smallscreen'])) |
|
| 904 | +} |
|
| 905 | +if (GETPOST('dol_optimize_smallscreen', 'int') || !empty($_SESSION['dol_optimize_smallscreen'])) { |
|
| 862 | 906 | $conf->dol_optimize_smallscreen = 1; |
| 863 | -if (GETPOST('dol_no_mouse_hover', 'int') || !empty($_SESSION['dol_no_mouse_hover'])) |
|
| 907 | +} |
|
| 908 | +if (GETPOST('dol_no_mouse_hover', 'int') || !empty($_SESSION['dol_no_mouse_hover'])) { |
|
| 864 | 909 | $conf->dol_no_mouse_hover = 1; |
| 865 | -if (GETPOST('dol_use_jmobile', 'int') || !empty($_SESSION['dol_use_jmobile'])) |
|
| 910 | +} |
|
| 911 | +if (GETPOST('dol_use_jmobile', 'int') || !empty($_SESSION['dol_use_jmobile'])) { |
|
| 866 | 912 | $conf->dol_use_jmobile = 1; |
| 867 | -if (!empty($conf->browser->layout) && $conf->browser->layout != 'classic') |
|
| 913 | +} |
|
| 914 | +if (!empty($conf->browser->layout) && $conf->browser->layout != 'classic') { |
|
| 868 | 915 | $conf->dol_no_mouse_hover = 1; |
| 916 | +} |
|
| 869 | 917 | if ((!empty($conf->browser->layout) && $conf->browser->layout == 'phone') || (!empty($_SESSION['dol_screenwidth']) && $_SESSION['dol_screenwidth'] < 400) || (!empty($_SESSION['dol_screenheight']) && $_SESSION['dol_screenheight'] < 400) |
| 870 | 918 | ) { |
| 871 | 919 | $conf->dol_optimize_smallscreen = 1; |
| 872 | 920 | } |
| 873 | 921 | // If we force to use jmobile, then we reenable javascript |
| 874 | -if (!empty($conf->dol_use_jmobile)) |
|
| 922 | +if (!empty($conf->dol_use_jmobile)) { |
|
| 875 | 923 | $conf->use_javascript_ajax = 1; |
| 924 | +} |
|
| 876 | 925 | // Replace themes bugged with jmobile with eldy |
| 877 | 926 | if (!empty($conf->dol_use_jmobile) && in_array($conf->theme, array('bureau2crea', 'cameleo', 'amarok'))) { |
| 878 | 927 | $conf->theme = 'eldy'; |
@@ -896,8 +945,9 @@ discard block |
||
| 896 | 945 | if (!defined('NOLOGIN')) { |
| 897 | 946 | // If the login is not recovered, it is identified with an account that does not exist. |
| 898 | 947 | // Hacking attempt? |
| 899 | - if (!$user->login) |
|
| 900 | - accessforbidden(); |
|
| 948 | + if (!$user->login) { |
|
| 949 | + accessforbidden(); |
|
| 950 | + } |
|
| 901 | 951 | |
| 902 | 952 | // Check if user is active |
| 903 | 953 | if ($user->statut < 1) { |
@@ -972,15 +1022,18 @@ discard block |
||
| 972 | 1022 | |
| 973 | 1023 | // Load the menu manager (only if not already done) |
| 974 | 1024 | $file_menu = $conf->standard_menu; |
| 975 | - if (GETPOST('menu', 'alpha')) |
|
| 976 | - $file_menu = GETPOST('menu', 'alpha'); // example: menu=eldy_menu.php |
|
| 1025 | + if (GETPOST('menu', 'alpha')) { |
|
| 1026 | + $file_menu = GETPOST('menu', 'alpha'); |
|
| 1027 | + } |
|
| 1028 | + // example: menu=eldy_menu.php |
|
| 977 | 1029 | if (!class_exists('MenuManager')) { |
| 978 | 1030 | $menufound = 0; |
| 979 | 1031 | $dirmenus = array_merge(array("/core/menus/"), (array) $conf->modules_parts['menus']); |
| 980 | 1032 | foreach ($dirmenus as $dirmenu) { |
| 981 | 1033 | $menufound = dol_include_once($dirmenu . "standard/" . $file_menu); |
| 982 | - if (class_exists('MenuManager')) |
|
| 983 | - break; |
|
| 1034 | + if (class_exists('MenuManager')) { |
|
| 1035 | + break; |
|
| 1036 | + } |
|
| 984 | 1037 | } |
| 985 | 1038 | if (!class_exists('MenuManager')) { // If failed to include, we try with standard eldy_menu.php |
| 986 | 1039 | dol_syslog("You define a menu manager '" . $file_menu . "' that can not be loaded.", LOG_WARNING); |
@@ -1054,10 +1107,11 @@ discard block |
||
| 1054 | 1107 | { |
| 1055 | 1108 | global $db, $conf, $hookmanager; |
| 1056 | 1109 | |
| 1057 | - if ($contenttype == 'text/html') |
|
| 1058 | - header("Content-Type: text/html; charset=" . $conf->file->character_set_client); |
|
| 1059 | - else |
|
| 1060 | - header("Content-Type: " . $contenttype); |
|
| 1110 | + if ($contenttype == 'text/html') { |
|
| 1111 | + header("Content-Type: text/html; charset=" . $conf->file->character_set_client); |
|
| 1112 | + } else { |
|
| 1113 | + header("Content-Type: " . $contenttype); |
|
| 1114 | + } |
|
| 1061 | 1115 | // Security options |
| 1062 | 1116 | header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) |
| 1063 | 1117 | header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) |
@@ -1071,16 +1125,21 @@ discard block |
||
| 1071 | 1125 | //else $contentsecuritypolicy = $conf->global->MAIN_HTTP_CONTENT_SECURITY_POLICY; |
| 1072 | 1126 | $contentsecuritypolicy = $conf->global->MAIN_HTTP_CONTENT_SECURITY_POLICY; |
| 1073 | 1127 | |
| 1074 | - if (!is_object($hookmanager)) |
|
| 1075 | - $hookmanager = new HookManager($db); |
|
| 1128 | + if (!is_object($hookmanager)) { |
|
| 1129 | + $hookmanager = new HookManager($db); |
|
| 1130 | + } |
|
| 1076 | 1131 | $hookmanager->initHooks("main"); |
| 1077 | 1132 | |
| 1078 | 1133 | $parameters = array('contentsecuritypolicy' => $contentsecuritypolicy); |
| 1079 | 1134 | $result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks |
| 1080 | - if ($result > 0) |
|
| 1081 | - $contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP |
|
| 1082 | - else |
|
| 1083 | - $contentsecuritypolicy .= $hookmanager->resPrint; // Concat CSP |
|
| 1135 | + if ($result > 0) { |
|
| 1136 | + $contentsecuritypolicy = $hookmanager->resPrint; |
|
| 1137 | + } |
|
| 1138 | + // Replace CSP |
|
| 1139 | + else { |
|
| 1140 | + $contentsecuritypolicy .= $hookmanager->resPrint; |
|
| 1141 | + } |
|
| 1142 | + // Concat CSP |
|
| 1084 | 1143 | |
| 1085 | 1144 | if (!empty($contentsecuritypolicy)) { |
| 1086 | 1145 | // For example, to restrict 'script', 'object', 'frames' or 'img' to some domains: |
@@ -1127,18 +1186,20 @@ discard block |
||
| 1127 | 1186 | } |
| 1128 | 1187 | print '<!doctype html>' . "\n"; |
| 1129 | 1188 | |
| 1130 | - if (!empty($conf->global->MAIN_USE_CACHE_MANIFEST)) |
|
| 1131 | - print '<html lang="' . substr($langs->defaultlang, 0, 2) . '" manifest="' . DOL_BASE_URI . '/cache.manifest">' . "\n"; |
|
| 1132 | - else |
|
| 1133 | - print '<html lang="' . substr($langs->defaultlang, 0, 2) . '">' . "\n"; |
|
| 1189 | + if (!empty($conf->global->MAIN_USE_CACHE_MANIFEST)) { |
|
| 1190 | + print '<html lang="' . substr($langs->defaultlang, 0, 2) . '" manifest="' . DOL_BASE_URI . '/cache.manifest">' . "\n"; |
|
| 1191 | + } else { |
|
| 1192 | + print '<html lang="' . substr($langs->defaultlang, 0, 2) . '">' . "\n"; |
|
| 1193 | + } |
|
| 1134 | 1194 | //print '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">'."\n"; |
| 1135 | 1195 | if (empty($disablehead)) { |
| 1136 | 1196 | $ext = 'layout=' . $conf->browser->layout . '&version=' . urlencode(DOL_VERSION); |
| 1137 | 1197 | |
| 1138 | 1198 | print "<head>\n"; |
| 1139 | 1199 | |
| 1140 | - if (GETPOST('dol_basehref', 'alpha')) |
|
| 1141 | - print '<base href="' . dol_escape_htmltag(GETPOST('dol_basehref', 'alpha')) . '">' . "\n"; |
|
| 1200 | + if (GETPOST('dol_basehref', 'alpha')) { |
|
| 1201 | + print '<base href="' . dol_escape_htmltag(GETPOST('dol_basehref', 'alpha')) . '">' . "\n"; |
|
| 1202 | + } |
|
| 1142 | 1203 | |
| 1143 | 1204 | // Displays meta |
| 1144 | 1205 | print '<meta charset="UTF-8">' . "\n"; |
@@ -1148,10 +1209,13 @@ discard block |
||
| 1148 | 1209 | |
| 1149 | 1210 | // Favicon |
| 1150 | 1211 | $favicon = dol_buildpath('/theme/' . $conf->theme . '/img/favicon.ico', 1); |
| 1151 | - if (!empty($conf->global->MAIN_FAVICON_URL)) |
|
| 1152 | - $favicon = $conf->global->MAIN_FAVICON_URL; |
|
| 1153 | - if (empty($conf->dol_use_jmobile)) |
|
| 1154 | - print '<link rel="shortcut icon" type="image/x-icon" href="' . $favicon . '"/>' . "\n"; // Not required into an Android webview |
|
| 1212 | + if (!empty($conf->global->MAIN_FAVICON_URL)) { |
|
| 1213 | + $favicon = $conf->global->MAIN_FAVICON_URL; |
|
| 1214 | + } |
|
| 1215 | + if (empty($conf->dol_use_jmobile)) { |
|
| 1216 | + print '<link rel="shortcut icon" type="image/x-icon" href="' . $favicon . '"/>' . "\n"; |
|
| 1217 | + } |
|
| 1218 | + // Not required into an Android webview |
|
| 1155 | 1219 | |
| 1156 | 1220 | |
| 1157 | 1221 | |
@@ -1161,47 +1225,59 @@ discard block |
||
| 1161 | 1225 | //if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) print '<link rel="copyright" title="GNU General Public License" href="http://www.gnu.org/copyleft/gpl.html#SEC1">'."\n"; |
| 1162 | 1226 | //if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) print '<link rel="author" title="Dolibarr Development Team" href="https://www.dolibarr.org">'."\n"; |
| 1163 | 1227 | // Auto refresh page |
| 1164 | - if (GETPOST('autorefresh', 'int') > 0) |
|
| 1165 | - print '<meta http-equiv="refresh" content="' . GETPOST('autorefresh', 'int') . '">'; |
|
| 1228 | + if (GETPOST('autorefresh', 'int') > 0) { |
|
| 1229 | + print '<meta http-equiv="refresh" content="' . GETPOST('autorefresh', 'int') . '">'; |
|
| 1230 | + } |
|
| 1166 | 1231 | |
| 1167 | 1232 | // Displays title |
| 1168 | 1233 | $appli = constant('DOL_APPLICATION_TITLE'); |
| 1169 | - if (!empty($conf->global->MAIN_APPLICATION_TITLE)) |
|
| 1170 | - $appli = $conf->global->MAIN_APPLICATION_TITLE; |
|
| 1234 | + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) { |
|
| 1235 | + $appli = $conf->global->MAIN_APPLICATION_TITLE; |
|
| 1236 | + } |
|
| 1171 | 1237 | |
| 1172 | 1238 | print '<title>'; |
| 1173 | 1239 | $titletoshow = ''; |
| 1174 | - if ($title && !empty($conf->global->MAIN_HTML_TITLE) && preg_match('/noapp/', $conf->global->MAIN_HTML_TITLE)) |
|
| 1175 | - $titletoshow = dol_htmlentities($title); |
|
| 1176 | - else if ($title) |
|
| 1177 | - $titletoshow = dol_htmlentities($appli . ' - ' . $title); |
|
| 1178 | - else |
|
| 1179 | - $titletoshow = dol_htmlentities($appli); |
|
| 1180 | - |
|
| 1181 | - if (!is_object($hookmanager)) |
|
| 1182 | - $hookmanager = new HookManager($db); |
|
| 1240 | + if ($title && !empty($conf->global->MAIN_HTML_TITLE) && preg_match('/noapp/', $conf->global->MAIN_HTML_TITLE)) { |
|
| 1241 | + $titletoshow = dol_htmlentities($title); |
|
| 1242 | + } else if ($title) { |
|
| 1243 | + $titletoshow = dol_htmlentities($appli . ' - ' . $title); |
|
| 1244 | + } else { |
|
| 1245 | + $titletoshow = dol_htmlentities($appli); |
|
| 1246 | + } |
|
| 1247 | + |
|
| 1248 | + if (!is_object($hookmanager)) { |
|
| 1249 | + $hookmanager = new HookManager($db); |
|
| 1250 | + } |
|
| 1183 | 1251 | $hookmanager->initHooks("main"); |
| 1184 | 1252 | $parameters = array('title' => $titletoshow); |
| 1185 | 1253 | $result = $hookmanager->executeHooks('setHtmlTitle', $parameters); // Note that $action and $object may have been modified by some hooks |
| 1186 | - if ($result > 0) |
|
| 1187 | - $titletoshow = $hookmanager->resPrint; // Replace Title to show |
|
| 1188 | - else |
|
| 1189 | - $titletoshow .= $hookmanager->resPrint; // Concat to Title to show |
|
| 1254 | + if ($result > 0) { |
|
| 1255 | + $titletoshow = $hookmanager->resPrint; |
|
| 1256 | + } |
|
| 1257 | + // Replace Title to show |
|
| 1258 | + else { |
|
| 1259 | + $titletoshow .= $hookmanager->resPrint; |
|
| 1260 | + } |
|
| 1261 | + // Concat to Title to show |
|
| 1190 | 1262 | |
| 1191 | 1263 | print $titletoshow; |
| 1192 | 1264 | print '</title>'; |
| 1193 | 1265 | |
| 1194 | 1266 | print "\n"; |
| 1195 | 1267 | |
| 1196 | - if (GETPOST('version', 'int')) |
|
| 1197 | - $ext = 'version=' . GETPOST('version', 'int'); // usefull to force no cache on css/js |
|
| 1198 | - if (GETPOST('testmenuhider', 'int') || !empty($conf->global->MAIN_TESTMENUHIDER)) |
|
| 1199 | - $ext .= '&testmenuhider=' . (GETPOST('testmenuhider', 'int') ? GETPOST('testmenuhider', 'int') : $conf->global->MAIN_TESTMENUHIDER); |
|
| 1268 | + if (GETPOST('version', 'int')) { |
|
| 1269 | + $ext = 'version=' . GETPOST('version', 'int'); |
|
| 1270 | + } |
|
| 1271 | + // usefull to force no cache on css/js |
|
| 1272 | + if (GETPOST('testmenuhider', 'int') || !empty($conf->global->MAIN_TESTMENUHIDER)) { |
|
| 1273 | + $ext .= '&testmenuhider=' . (GETPOST('testmenuhider', 'int') ? GETPOST('testmenuhider', 'int') : $conf->global->MAIN_TESTMENUHIDER); |
|
| 1274 | + } |
|
| 1200 | 1275 | |
| 1201 | 1276 | $themeparam = '&lang=' . $langs->defaultlang . '&theme=' . $conf->theme . (GETPOST('optioncss', 'aZ09') ? '&optioncss=' . GETPOST('optioncss', 'aZ09', 1) : '') . '&userid=' . $user->id . '&entity=' . $conf->entity; |
| 1202 | 1277 | $themeparam .= ($ext ? '&' . $ext : ''); |
| 1203 | - if (!empty($_SESSION['dol_resetcache'])) |
|
| 1204 | - $themeparam .= '&dol_resetcache=' . $_SESSION['dol_resetcache']; |
|
| 1278 | + if (!empty($_SESSION['dol_resetcache'])) { |
|
| 1279 | + $themeparam .= '&dol_resetcache=' . $_SESSION['dol_resetcache']; |
|
| 1280 | + } |
|
| 1205 | 1281 | if (GETPOST('dol_hide_topmenu', 'int')) { |
| 1206 | 1282 | $themeparam .= '&dol_hide_topmenu=' . GETPOST('dol_hide_topmenu', 'int'); |
| 1207 | 1283 | } |
@@ -1222,14 +1298,21 @@ discard block |
||
| 1222 | 1298 | if (!defined('DISABLE_JQUERY') && !$disablejs && $conf->use_javascript_ajax) { |
| 1223 | 1299 | print '<!-- Includes CSS for JQuery (Ajax library) -->' . "\n"; |
| 1224 | 1300 | $jquerytheme = 'base'; |
| 1225 | - if (!empty($conf->global->MAIN_USE_JQUERY_THEME)) |
|
| 1226 | - $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; |
|
| 1227 | - if (constant('JS_JQUERY_UI')) |
|
| 1228 | - print '<link rel="stylesheet" type="text/css" href="' . JS_JQUERY_UI . 'css/' . $jquerytheme . '/jquery-ui.min.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; // JQuery |
|
| 1229 | - else |
|
| 1230 | - print '<link rel="stylesheet" type="text/css" href="' . DOL_BASE_URI . '/includes/jquery/css/' . $jquerytheme . '/jquery-ui.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; // JQuery |
|
| 1231 | - if (!defined('DISABLE_JQUERY_JNOTIFY')) |
|
| 1232 | - print '<link rel="stylesheet" type="text/css" href="' . DOL_BASE_URI . '/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; // JNotify |
|
| 1301 | + if (!empty($conf->global->MAIN_USE_JQUERY_THEME)) { |
|
| 1302 | + $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; |
|
| 1303 | + } |
|
| 1304 | + if (constant('JS_JQUERY_UI')) { |
|
| 1305 | + print '<link rel="stylesheet" type="text/css" href="' . JS_JQUERY_UI . 'css/' . $jquerytheme . '/jquery-ui.min.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; |
|
| 1306 | + } |
|
| 1307 | + // JQuery |
|
| 1308 | + else { |
|
| 1309 | + print '<link rel="stylesheet" type="text/css" href="' . DOL_BASE_URI . '/includes/jquery/css/' . $jquerytheme . '/jquery-ui.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; |
|
| 1310 | + } |
|
| 1311 | + // JQuery |
|
| 1312 | + if (!defined('DISABLE_JQUERY_JNOTIFY')) { |
|
| 1313 | + print '<link rel="stylesheet" type="text/css" href="' . DOL_BASE_URI . '/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; |
|
| 1314 | + } |
|
| 1315 | + // JNotify |
|
| 1233 | 1316 | if (!defined('DISABLE_SELECT2') && (!empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT'))) { // jQuery plugin "mutiselect", "multiple-select", "select2"... |
| 1234 | 1317 | $tmpplugin = empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) ? constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT; |
| 1235 | 1318 | print '<link rel="stylesheet" type="text/css" href="' . DOL_BASE_URI . '/includes/jquery/plugins/' . $tmpplugin . '/dist/css/' . $tmpplugin . '.css' . ($ext ? '?' . $ext : '') . '">' . "\n"; |
@@ -1257,8 +1340,9 @@ discard block |
||
| 1257 | 1340 | |
| 1258 | 1341 | //print 'themepath='.$themepath.' themeparam='.$themeparam;exit; |
| 1259 | 1342 | print '<link rel="stylesheet" type="text/css" href="' . $themepath . $themeparam . '">' . "\n"; |
| 1260 | - if (!empty($conf->global->MAIN_FIX_FLASH_ON_CHROME)) |
|
| 1261 | - print '<!-- Includes CSS that does not exists as a workaround of flash bug of chrome -->' . "\n" . '<link rel="stylesheet" type="text/css" href="filethatdoesnotexiststosolvechromeflashbug">' . "\n"; |
|
| 1343 | + if (!empty($conf->global->MAIN_FIX_FLASH_ON_CHROME)) { |
|
| 1344 | + print '<!-- Includes CSS that does not exists as a workaround of flash bug of chrome -->' . "\n" . '<link rel="stylesheet" type="text/css" href="filethatdoesnotexiststosolvechromeflashbug">' . "\n"; |
|
| 1345 | + } |
|
| 1262 | 1346 | |
| 1263 | 1347 | // CSS forced by modules (relative url starting with /) |
| 1264 | 1348 | if (!empty($conf->modules_parts['css'])) { |
@@ -1266,13 +1350,15 @@ discard block |
||
| 1266 | 1350 | foreach ($arraycss as $modcss => $filescss) { |
| 1267 | 1351 | $filescss = (array) $filescss; // To be sure filecss is an array |
| 1268 | 1352 | foreach ($filescss as $cssfile) { |
| 1269 | - if (empty($cssfile)) |
|
| 1270 | - dol_syslog("Warning: module " . $modcss . " declared a css path file into its descriptor that is empty.", LOG_WARNING); |
|
| 1353 | + if (empty($cssfile)) { |
|
| 1354 | + dol_syslog("Warning: module " . $modcss . " declared a css path file into its descriptor that is empty.", LOG_WARNING); |
|
| 1355 | + } |
|
| 1271 | 1356 | // cssfile is a relative path |
| 1272 | 1357 | print '<!-- Includes CSS added by module ' . $modcss . ' -->' . "\n" . '<link rel="stylesheet" type="text/css" href="' . dol_buildpath($cssfile, 1); |
| 1273 | 1358 | // We add params only if page is not static, because some web server setup does not return content type text/css if url has parameters, so browser cache is not used. |
| 1274 | - if (!preg_match('/\.css$/i', $cssfile)) |
|
| 1275 | - print $themeparam; |
|
| 1359 | + if (!preg_match('/\.css$/i', $cssfile)) { |
|
| 1360 | + print $themeparam; |
|
| 1361 | + } |
|
| 1276 | 1362 | print '">' . "\n"; |
| 1277 | 1363 | } |
| 1278 | 1364 | } |
@@ -1282,8 +1368,9 @@ discard block |
||
| 1282 | 1368 | foreach ($arrayofcss as $cssfile) { |
| 1283 | 1369 | print '<!-- Includes CSS added by page -->' . "\n" . '<link rel="stylesheet" type="text/css" title="default" href="' . dol_buildpath($cssfile, 1); |
| 1284 | 1370 | // We add params only if page is not static, because some web server setup does not return content type text/css if url has parameters and browser cache is not used. |
| 1285 | - if (!preg_match('/\.css$/i', $cssfile)) |
|
| 1286 | - print $themeparam; |
|
| 1371 | + if (!preg_match('/\.css$/i', $cssfile)) { |
|
| 1372 | + print $themeparam; |
|
| 1373 | + } |
|
| 1287 | 1374 | print '">' . "\n"; |
| 1288 | 1375 | } |
| 1289 | 1376 | } |
@@ -1292,22 +1379,26 @@ discard block |
||
| 1292 | 1379 | if (!defined('DISABLE_JQUERY') && !$disablejs && !empty($conf->use_javascript_ajax)) { |
| 1293 | 1380 | // JQuery. Must be before other includes |
| 1294 | 1381 | print '<!-- Includes JS for JQuery -->' . "\n"; |
| 1295 | - if (defined('JS_JQUERY') && constant('JS_JQUERY')) |
|
| 1296 | - print '<script type="text/javascript" src="' . JS_JQUERY . 'jquery.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1297 | - else |
|
| 1298 | - print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/js/jquery.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1382 | + if (defined('JS_JQUERY') && constant('JS_JQUERY')) { |
|
| 1383 | + print '<script type="text/javascript" src="' . JS_JQUERY . 'jquery.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1384 | + } else { |
|
| 1385 | + print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/js/jquery.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1386 | + } |
|
| 1299 | 1387 | if (!empty($conf->global->MAIN_FEATURES_LEVEL) && !defined('JS_JQUERY_MIGRATE_DISABLED')) { |
| 1300 | - if (defined('JS_JQUERY_MIGRATE') && constant('JS_JQUERY_MIGRATE')) |
|
| 1301 | - print '<script type="text/javascript" src="' . JS_JQUERY_MIGRATE . 'jquery-migrate.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1302 | - else |
|
| 1303 | - print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/js/jquery-migrate.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1304 | - } |
|
| 1305 | - if (defined('JS_JQUERY_UI') && constant('JS_JQUERY_UI')) |
|
| 1306 | - print '<script type="text/javascript" src="' . JS_JQUERY_UI . 'jquery-ui.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1307 | - else |
|
| 1308 | - print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/js/jquery-ui.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1309 | - if (!defined('DISABLE_JQUERY_TABLEDND')) |
|
| 1310 | - print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/plugins/tablednd/jquery.tablednd.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1388 | + if (defined('JS_JQUERY_MIGRATE') && constant('JS_JQUERY_MIGRATE')) { |
|
| 1389 | + print '<script type="text/javascript" src="' . JS_JQUERY_MIGRATE . 'jquery-migrate.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1390 | + } else { |
|
| 1391 | + print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/js/jquery-migrate.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1392 | + } |
|
| 1393 | + } |
|
| 1394 | + if (defined('JS_JQUERY_UI') && constant('JS_JQUERY_UI')) { |
|
| 1395 | + print '<script type="text/javascript" src="' . JS_JQUERY_UI . 'jquery-ui.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1396 | + } else { |
|
| 1397 | + print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/js/jquery-ui.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1398 | + } |
|
| 1399 | + if (!defined('DISABLE_JQUERY_TABLEDND')) { |
|
| 1400 | + print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/plugins/tablednd/jquery.tablednd.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
|
| 1401 | + } |
|
| 1311 | 1402 | // jQuery jnotify |
| 1312 | 1403 | if (empty($conf->global->MAIN_DISABLE_JQUERY_JNOTIFY) && !defined('DISABLE_JQUERY_JNOTIFY')) { |
| 1313 | 1404 | print '<script type="text/javascript" src="' . DOL_BASE_URI . '/includes/jquery/plugins/jnotify/jquery.jnotify.min.js' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
@@ -1378,10 +1469,12 @@ discard block |
||
| 1378 | 1469 | // Browser notifications |
| 1379 | 1470 | if (!defined('DISABLE_BROWSER_NOTIF')) { |
| 1380 | 1471 | $enablebrowsernotif = false; |
| 1381 | - if (!empty($conf->agenda->enabled) && !empty($conf->global->AGENDA_REMINDER_BROWSER)) |
|
| 1382 | - $enablebrowsernotif = true; |
|
| 1383 | - if ($conf->browser->layout == 'phone') |
|
| 1384 | - $enablebrowsernotif = false; |
|
| 1472 | + if (!empty($conf->agenda->enabled) && !empty($conf->global->AGENDA_REMINDER_BROWSER)) { |
|
| 1473 | + $enablebrowsernotif = true; |
|
| 1474 | + } |
|
| 1475 | + if ($conf->browser->layout == 'phone') { |
|
| 1476 | + $enablebrowsernotif = false; |
|
| 1477 | + } |
|
| 1385 | 1478 | if ($enablebrowsernotif) { |
| 1386 | 1479 | print '<!-- Includes JS of Dolibarr (brwoser layout = ' . $conf->browser->layout . ')-->' . "\n"; |
| 1387 | 1480 | //print '<script type="text/javascript" src="' . DOL_BASE_URI . '/core/js/lib_notification.js.php' . ($ext ? '?' . $ext : '') . '"></script>' . "\n"; |
@@ -1418,10 +1511,12 @@ discard block |
||
| 1418 | 1511 | } |
| 1419 | 1512 | } |
| 1420 | 1513 | |
| 1421 | - if (!empty($head)) |
|
| 1422 | - print $head . "\n"; |
|
| 1423 | - if (!empty($conf->global->MAIN_HTML_HEADER)) |
|
| 1424 | - print $conf->global->MAIN_HTML_HEADER . "\n"; |
|
| 1514 | + if (!empty($head)) { |
|
| 1515 | + print $head . "\n"; |
|
| 1516 | + } |
|
| 1517 | + if (!empty($conf->global->MAIN_HTML_HEADER)) { |
|
| 1518 | + print $conf->global->MAIN_HTML_HEADER . "\n"; |
|
| 1519 | + } |
|
| 1425 | 1520 | |
| 1426 | 1521 | print "<!-- Alixar debugBar header -->"; |
| 1427 | 1522 | print Debug::getRenderHeader(); // Includes Alixar debugBar header |
@@ -1486,15 +1581,20 @@ discard block |
||
| 1486 | 1581 | if (!empty($conf->global->MAIN_APPLICATION_TITLE)) { |
| 1487 | 1582 | $appli = $conf->global->MAIN_APPLICATION_TITLE; |
| 1488 | 1583 | if (preg_match('/\d\.\d/', $appli)) { |
| 1489 | - if (!preg_match('/' . preg_quote(DOL_VERSION) . '/', $appli)) |
|
| 1490 | - $appli .= " (" . DOL_VERSION . ")"; // If new title contains a version that is different than core |
|
| 1491 | - } else |
|
| 1492 | - $appli .= " " . DOL_VERSION; |
|
| 1493 | - } else |
|
| 1494 | - $appli .= " " . DOL_VERSION; |
|
| 1584 | + if (!preg_match('/' . preg_quote(DOL_VERSION) . '/', $appli)) { |
|
| 1585 | + $appli .= " (" . DOL_VERSION . ")"; |
|
| 1586 | + } |
|
| 1587 | + // If new title contains a version that is different than core |
|
| 1588 | + } else { |
|
| 1589 | + $appli .= " " . DOL_VERSION; |
|
| 1590 | + } |
|
| 1591 | + } else { |
|
| 1592 | + $appli .= " " . DOL_VERSION; |
|
| 1593 | + } |
|
| 1495 | 1594 | |
| 1496 | - if (!empty($conf->global->MAIN_FEATURES_LEVEL)) |
|
| 1497 | - $appli .= "<br>" . $langs->trans("LevelOfFeature") . ': ' . $conf->global->MAIN_FEATURES_LEVEL; |
|
| 1595 | + if (!empty($conf->global->MAIN_FEATURES_LEVEL)) { |
|
| 1596 | + $appli .= "<br>" . $langs->trans("LevelOfFeature") . ': ' . $conf->global->MAIN_FEATURES_LEVEL; |
|
| 1597 | + } |
|
| 1498 | 1598 | |
| 1499 | 1599 | $logouttext = ''; |
| 1500 | 1600 | if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { |
@@ -1532,12 +1632,15 @@ discard block |
||
| 1532 | 1632 | $parameters = array(); |
| 1533 | 1633 | $result = $hookmanager->executeHooks('printTopRightMenu', $parameters); // Note that $action and $object may have been modified by some hooks |
| 1534 | 1634 | if (is_numeric($result)) { |
| 1535 | - if ($result == 0) |
|
| 1536 | - $toprightmenu .= $hookmanager->resPrint; // add |
|
| 1537 | - else |
|
| 1538 | - $toprightmenu = $hookmanager->resPrint; // replace |
|
| 1539 | - } |
|
| 1540 | - else { |
|
| 1635 | + if ($result == 0) { |
|
| 1636 | + $toprightmenu .= $hookmanager->resPrint; |
|
| 1637 | + } |
|
| 1638 | + // add |
|
| 1639 | + else { |
|
| 1640 | + $toprightmenu = $hookmanager->resPrint; |
|
| 1641 | + } |
|
| 1642 | + // replace |
|
| 1643 | + } else { |
|
| 1541 | 1644 | $toprightmenu .= $result; // For backward compatibility |
| 1542 | 1645 | } |
| 1543 | 1646 | |
@@ -1557,8 +1660,9 @@ discard block |
||
| 1557 | 1660 | |
| 1558 | 1661 | if (is_array($_POST)) { |
| 1559 | 1662 | foreach ($_POST as $key => $value) { |
| 1560 | - if ($key !== 'action' && $key !== 'password' && !is_array($value)) |
|
| 1561 | - $qs .= '&' . $key . '=' . urlencode($value); |
|
| 1663 | + if ($key !== 'action' && $key !== 'password' && !is_array($value)) { |
|
| 1664 | + $qs .= '&' . $key . '=' . urlencode($value); |
|
| 1665 | + } |
|
| 1562 | 1666 | } |
| 1563 | 1667 | } |
| 1564 | 1668 | $qs .= (($qs && $morequerystring) ? '&' : '') . $morequerystring; |
@@ -1577,8 +1681,9 @@ discard block |
||
| 1577 | 1681 | $helppage = ''; |
| 1578 | 1682 | $mode = ''; |
| 1579 | 1683 | |
| 1580 | - if (empty($helppagename)) |
|
| 1581 | - $helppagename = 'EN:User_documentation|FR:Documentation_utilisateur|ES:Documentación_usuarios'; |
|
| 1684 | + if (empty($helppagename)) { |
|
| 1685 | + $helppagename = 'EN:User_documentation|FR:Documentation_utilisateur|ES:Documentación_usuarios'; |
|
| 1686 | + } |
|
| 1582 | 1687 | |
| 1583 | 1688 | // Get helpbaseurl, helppage and mode from helppagename and langs |
| 1584 | 1689 | $arrayres = getHelpParamFor($helppagename, $langs); |
@@ -1595,13 +1700,15 @@ discard block |
||
| 1595 | 1700 | } |
| 1596 | 1701 | $title = $appli . '<br>'; |
| 1597 | 1702 | $title .= $langs->trans($mode == 'wiki' ? 'GoToWikiHelpPage' : 'GoToHelpPage'); |
| 1598 | - if ($mode == 'wiki') |
|
| 1599 | - $title .= ' - ' . $langs->trans("PageWiki") . ' "' . dol_escape_htmltag(strtr($helppage, '_', ' ')) . '"'; |
|
| 1703 | + if ($mode == 'wiki') { |
|
| 1704 | + $title .= ' - ' . $langs->trans("PageWiki") . ' "' . dol_escape_htmltag(strtr($helppage, '_', ' ')) . '"'; |
|
| 1705 | + } |
|
| 1600 | 1706 | $text .= '<a class="help" target="_blank" rel="noopener" href="'; |
| 1601 | - if ($mode == 'wiki') |
|
| 1602 | - $text .= sprintf($helpbaseurl, urlencode(html_entity_decode($helppage))); |
|
| 1603 | - else |
|
| 1604 | - $text .= sprintf($helpbaseurl, $helppage); |
|
| 1707 | + if ($mode == 'wiki') { |
|
| 1708 | + $text .= sprintf($helpbaseurl, urlencode(html_entity_decode($helppage))); |
|
| 1709 | + } else { |
|
| 1710 | + $text .= sprintf($helpbaseurl, $helppage); |
|
| 1711 | + } |
|
| 1605 | 1712 | $text .= '">'; |
| 1606 | 1713 | //$text.=img_picto('', 'helpdoc_top').' '; |
| 1607 | 1714 | $text .= '<span class="fa fa-question-circle atoplogin"></span>'; |
@@ -1628,9 +1735,10 @@ discard block |
||
| 1628 | 1735 | print "<!-- End top horizontal menu -->\n\n"; |
| 1629 | 1736 | } |
| 1630 | 1737 | |
| 1631 | - if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile)) |
|
| 1632 | - print '<!-- Begin div id-container --><div id="id-container" class="id-container' . ($morecss ? ' ' . $morecss : '') . '">'; |
|
| 1633 | -} |
|
| 1738 | + if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile)) { |
|
| 1739 | + print '<!-- Begin div id-container --><div id="id-container" class="id-container' . ($morecss ? ' ' . $morecss : '') . '">'; |
|
| 1740 | + } |
|
| 1741 | + } |
|
| 1634 | 1742 | |
| 1635 | 1743 | /** |
| 1636 | 1744 | * Show left menu bar |
@@ -1654,8 +1762,9 @@ discard block |
||
| 1654 | 1762 | $searchform = ''; |
| 1655 | 1763 | $bookmarks = ''; |
| 1656 | 1764 | |
| 1657 | - if (!empty($menu_array_before)) |
|
| 1658 | - dol_syslog("Deprecated parameter menu_array_before was used when calling main::left_menu function. Menu entries of module should now be defined into module descriptor and not provided when calling left_menu.", LOG_WARNING); |
|
| 1765 | + if (!empty($menu_array_before)) { |
|
| 1766 | + dol_syslog("Deprecated parameter menu_array_before was used when calling main::left_menu function. Menu entries of module should now be defined into module descriptor and not provided when calling left_menu.", LOG_WARNING); |
|
| 1767 | + } |
|
| 1659 | 1768 | |
| 1660 | 1769 | if (empty($conf->dol_hide_leftmenu) && (!defined('NOREQUIREMENU') || !constant('NOREQUIREMENU'))) { |
| 1661 | 1770 | // Instantiate hooks of thirdparty module |
@@ -1663,8 +1772,10 @@ discard block |
||
| 1663 | 1772 | |
| 1664 | 1773 | print "\n" . '<!-- Begin side-nav id-left -->' . "\n" . '<div class="side-nav"><div id="id-left">' . "\n"; |
| 1665 | 1774 | |
| 1666 | - if ($conf->browser->layout == 'phone') |
|
| 1667 | - $conf->global->MAIN_USE_OLD_SEARCH_FORM = 1; // Select into select2 is awfull on smartphone. TODO Is this still true with select2 v4 ? |
|
| 1775 | + if ($conf->browser->layout == 'phone') { |
|
| 1776 | + $conf->global->MAIN_USE_OLD_SEARCH_FORM = 1; |
|
| 1777 | + } |
|
| 1778 | + // Select into select2 is awfull on smartphone. TODO Is this still true with select2 v4 ? |
|
| 1668 | 1779 | |
| 1669 | 1780 | print "\n"; |
| 1670 | 1781 | |
@@ -1691,8 +1802,9 @@ discard block |
||
| 1691 | 1802 | $reshook = $hookmanager->executeHooks('printSearchForm', $parameters); // Note that $action and $object may have been modified by some hooks |
| 1692 | 1803 | if (empty($reshook)) { |
| 1693 | 1804 | $searchform .= $hookmanager->resPrint; |
| 1694 | - } else |
|
| 1695 | - $searchform = $hookmanager->resPrint; |
|
| 1805 | + } else { |
|
| 1806 | + $searchform = $hookmanager->resPrint; |
|
| 1807 | + } |
|
| 1696 | 1808 | |
| 1697 | 1809 | // Force special value for $searchform |
| 1698 | 1810 | if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) || empty($conf->use_javascript_ajax)) { |
@@ -1736,38 +1848,49 @@ discard block |
||
| 1736 | 1848 | if (empty($conf->global->MAIN_HIDE_VERSION)) { // Version is already on help picto and on login page. |
| 1737 | 1849 | $doliurl = 'https://www.dolibarr.org'; |
| 1738 | 1850 | //local communities |
| 1739 | - if (preg_match('/fr/i', $langs->defaultlang)) |
|
| 1740 | - $doliurl = 'https://www.dolibarr.fr'; |
|
| 1741 | - if (preg_match('/es/i', $langs->defaultlang)) |
|
| 1742 | - $doliurl = 'https://www.dolibarr.es'; |
|
| 1743 | - if (preg_match('/de/i', $langs->defaultlang)) |
|
| 1744 | - $doliurl = 'https://www.dolibarr.de'; |
|
| 1745 | - if (preg_match('/it/i', $langs->defaultlang)) |
|
| 1746 | - $doliurl = 'https://www.dolibarr.it'; |
|
| 1747 | - if (preg_match('/gr/i', $langs->defaultlang)) |
|
| 1748 | - $doliurl = 'https://www.dolibarr.gr'; |
|
| 1851 | + if (preg_match('/fr/i', $langs->defaultlang)) { |
|
| 1852 | + $doliurl = 'https://www.dolibarr.fr'; |
|
| 1853 | + } |
|
| 1854 | + if (preg_match('/es/i', $langs->defaultlang)) { |
|
| 1855 | + $doliurl = 'https://www.dolibarr.es'; |
|
| 1856 | + } |
|
| 1857 | + if (preg_match('/de/i', $langs->defaultlang)) { |
|
| 1858 | + $doliurl = 'https://www.dolibarr.de'; |
|
| 1859 | + } |
|
| 1860 | + if (preg_match('/it/i', $langs->defaultlang)) { |
|
| 1861 | + $doliurl = 'https://www.dolibarr.it'; |
|
| 1862 | + } |
|
| 1863 | + if (preg_match('/gr/i', $langs->defaultlang)) { |
|
| 1864 | + $doliurl = 'https://www.dolibarr.gr'; |
|
| 1865 | + } |
|
| 1749 | 1866 | |
| 1750 | 1867 | $appli = constant('DOL_APPLICATION_TITLE'); |
| 1751 | 1868 | if (!empty($conf->global->MAIN_APPLICATION_TITLE)) { |
| 1752 | 1869 | $appli = $conf->global->MAIN_APPLICATION_TITLE; |
| 1753 | 1870 | $doliurl = ''; |
| 1754 | 1871 | if (preg_match('/\d\.\d/', $appli)) { |
| 1755 | - if (!preg_match('/' . preg_quote(DOL_VERSION) . '/', $appli)) |
|
| 1756 | - $appli .= " (" . DOL_VERSION . ")"; // If new title contains a version that is different than core |
|
| 1757 | - } else |
|
| 1758 | - $appli .= " " . DOL_VERSION; |
|
| 1759 | - } else |
|
| 1760 | - $appli .= " " . DOL_VERSION; |
|
| 1872 | + if (!preg_match('/' . preg_quote(DOL_VERSION) . '/', $appli)) { |
|
| 1873 | + $appli .= " (" . DOL_VERSION . ")"; |
|
| 1874 | + } |
|
| 1875 | + // If new title contains a version that is different than core |
|
| 1876 | + } else { |
|
| 1877 | + $appli .= " " . DOL_VERSION; |
|
| 1878 | + } |
|
| 1879 | + } else { |
|
| 1880 | + $appli .= " " . DOL_VERSION; |
|
| 1881 | + } |
|
| 1761 | 1882 | print '<div id="blockvmenuhelpapp" class="blockvmenuhelp">'; |
| 1762 | - if ($doliurl) |
|
| 1763 | - print '<a class="help" target="_blank" rel="noopener" href="' . $doliurl . '">'; |
|
| 1764 | - else |
|
| 1765 | - print '<span class="help">'; |
|
| 1883 | + if ($doliurl) { |
|
| 1884 | + print '<a class="help" target="_blank" rel="noopener" href="' . $doliurl . '">'; |
|
| 1885 | + } else { |
|
| 1886 | + print '<span class="help">'; |
|
| 1887 | + } |
|
| 1766 | 1888 | print $appli; |
| 1767 | - if ($doliurl) |
|
| 1768 | - print '</a>'; |
|
| 1769 | - else |
|
| 1770 | - print '</span>'; |
|
| 1889 | + if ($doliurl) { |
|
| 1890 | + print '</a>'; |
|
| 1891 | + } else { |
|
| 1892 | + print '</span>'; |
|
| 1893 | + } |
|
| 1771 | 1894 | print '</div>' . "\n"; |
| 1772 | 1895 | } |
| 1773 | 1896 | |
@@ -1814,9 +1937,10 @@ discard block |
||
| 1814 | 1937 | print "\n"; |
| 1815 | 1938 | print '<!-- Begin right area -->' . "\n"; |
| 1816 | 1939 | |
| 1817 | - if (empty($leftmenuwithoutmainarea)) |
|
| 1818 | - main_area($title); |
|
| 1819 | -} |
|
| 1940 | + if (empty($leftmenuwithoutmainarea)) { |
|
| 1941 | + main_area($title); |
|
| 1942 | + } |
|
| 1943 | + } |
|
| 1820 | 1944 | |
| 1821 | 1945 | /** |
| 1822 | 1946 | * Begin main area |
@@ -1828,16 +1952,18 @@ discard block |
||
| 1828 | 1952 | { |
| 1829 | 1953 | global $conf, $langs; |
| 1830 | 1954 | |
| 1831 | - if (empty($conf->dol_hide_leftmenu)) |
|
| 1832 | - print '<div id="id-right">'; |
|
| 1955 | + if (empty($conf->dol_hide_leftmenu)) { |
|
| 1956 | + print '<div id="id-right">'; |
|
| 1957 | + } |
|
| 1833 | 1958 | |
| 1834 | 1959 | print "\n"; |
| 1835 | 1960 | |
| 1836 | 1961 | print '<!-- Begin div class="fiche" -->' . "\n" . '<div class="fiche">' . "\n"; |
| 1837 | 1962 | |
| 1838 | - if (!empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED)) |
|
| 1839 | - print info_admin($langs->trans("WarningYouAreInMaintenanceMode", $conf->global->MAIN_ONLY_LOGIN_ALLOWED)); |
|
| 1840 | -} |
|
| 1963 | + if (!empty($conf->global->MAIN_ONLY_LOGIN_ALLOWED)) { |
|
| 1964 | + print info_admin($langs->trans("WarningYouAreInMaintenanceMode", $conf->global->MAIN_ONLY_LOGIN_ALLOWED)); |
|
| 1965 | + } |
|
| 1966 | + } |
|
| 1841 | 1967 | |
| 1842 | 1968 | /** |
| 1843 | 1969 | * Return helpbaseurl, helppage and mode |
@@ -1861,18 +1987,21 @@ discard block |
||
| 1861 | 1987 | // If WIKI URL |
| 1862 | 1988 | if (preg_match('/^es/i', $langs->defaultlang)) { |
| 1863 | 1989 | $helpbaseurl = 'http://wiki.dolibarr.org/index.php/%s'; |
| 1864 | - if (preg_match('/ES:([^|]+)/i', $helppagename, $reg)) |
|
| 1865 | - $helppage = $reg[1]; |
|
| 1990 | + if (preg_match('/ES:([^|]+)/i', $helppagename, $reg)) { |
|
| 1991 | + $helppage = $reg[1]; |
|
| 1992 | + } |
|
| 1866 | 1993 | } |
| 1867 | 1994 | if (preg_match('/^fr/i', $langs->defaultlang)) { |
| 1868 | 1995 | $helpbaseurl = 'http://wiki.dolibarr.org/index.php/%s'; |
| 1869 | - if (preg_match('/FR:([^|]+)/i', $helppagename, $reg)) |
|
| 1870 | - $helppage = $reg[1]; |
|
| 1996 | + if (preg_match('/FR:([^|]+)/i', $helppagename, $reg)) { |
|
| 1997 | + $helppage = $reg[1]; |
|
| 1998 | + } |
|
| 1871 | 1999 | } |
| 1872 | 2000 | if (empty($helppage)) { // If help page not already found |
| 1873 | 2001 | $helpbaseurl = 'http://wiki.dolibarr.org/index.php/%s'; |
| 1874 | - if (preg_match('/EN:([^|]+)/i', $helppagename, $reg)) |
|
| 1875 | - $helppage = $reg[1]; |
|
| 2002 | + if (preg_match('/EN:([^|]+)/i', $helppagename, $reg)) { |
|
| 2003 | + $helppage = $reg[1]; |
|
| 2004 | + } |
|
| 1876 | 2005 | } |
| 1877 | 2006 | $mode = 'wiki'; |
| 1878 | 2007 | } |
@@ -1903,8 +2032,9 @@ discard block |
||
| 1903 | 2032 | $ret .= '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; |
| 1904 | 2033 | $ret .= '<input type="hidden" name="mode" value="search">'; |
| 1905 | 2034 | $ret .= '<input type="hidden" name="savelogin" value="' . dol_escape_htmltag($user->login) . '">'; |
| 1906 | - if ($showtitlebefore) |
|
| 1907 | - $ret .= $title . ' '; |
|
| 2035 | + if ($showtitlebefore) { |
|
| 2036 | + $ret .= $title . ' '; |
|
| 2037 | + } |
|
| 1908 | 2038 | $ret .= '<input type="text" class="flat ' . $htmlmorecss . '"'; |
| 1909 | 2039 | $ret .= ' style="text-indent: 22px; background-image: url(\'' . $img . '\'); background-repeat: no-repeat; background-position: 3px;"'; |
| 1910 | 2040 | $ret .= ($accesskey ? ' accesskey="' . $accesskey . '"' : ''); |
@@ -1947,10 +2077,12 @@ discard block |
||
| 1947 | 2077 | foreach ($user->lastsearch_values_tmp as $key => $val) { |
| 1948 | 2078 | unset($_SESSION['lastsearch_values_tmp_' . $key]); // Clean array to rebuild it just after |
| 1949 | 2079 | if (count($val) && empty($_POST['button_removefilter'])) { // If there is search criteria to save and we did not click on 'Clear filter' button |
| 1950 | - if (empty($val['sortfield'])) |
|
| 1951 | - unset($val['sortfield']); |
|
| 1952 | - if (empty($val['sortorder'])) |
|
| 1953 | - unset($val['sortorder']); |
|
| 2080 | + if (empty($val['sortfield'])) { |
|
| 2081 | + unset($val['sortfield']); |
|
| 2082 | + } |
|
| 2083 | + if (empty($val['sortorder'])) { |
|
| 2084 | + unset($val['sortorder']); |
|
| 2085 | + } |
|
| 1954 | 2086 | dol_syslog('Save lastsearch_values_tmp_' . $key . '=' . json_encode($val, 0) . " (systematic recording of last search criterias)"); |
| 1955 | 2087 | $_SESSION['lastsearch_values_tmp_' . $key] = json_encode($val); |
| 1956 | 2088 | unset($_SESSION['lastsearch_values_' . $key]); |
@@ -1961,8 +2093,9 @@ discard block |
||
| 1961 | 2093 | |
| 1962 | 2094 | $relativepathstring = $_SERVER["PHP_SELF"]; |
| 1963 | 2095 | // Clean $relativepathstring |
| 1964 | - if (constant('DOL_BASE_URI')) |
|
| 1965 | - $relativepathstring = preg_replace('/^' . preg_quote(constant('DOL_BASE_URI'), '/') . '/', '', $relativepathstring); |
|
| 2096 | + if (constant('DOL_BASE_URI')) { |
|
| 2097 | + $relativepathstring = preg_replace('/^' . preg_quote(constant('DOL_BASE_URI'), '/') . '/', '', $relativepathstring); |
|
| 2098 | + } |
|
| 1966 | 2099 | $relativepathstring = preg_replace('/^\//', '', $relativepathstring); |
| 1967 | 2100 | $relativepathstring = preg_replace('/^custom\//', '', $relativepathstring); |
| 1968 | 2101 | if (preg_match('/list\.php$/', $relativepathstring)) { |
@@ -1970,12 +2103,15 @@ discard block |
||
| 1970 | 2103 | unset($_SESSION['lastsearch_page_tmp_' . $relativepathstring]); |
| 1971 | 2104 | unset($_SESSION['lastsearch_limit_tmp_' . $relativepathstring]); |
| 1972 | 2105 | |
| 1973 | - if (!empty($contextpage)) |
|
| 1974 | - $_SESSION['lastsearch_contextpage_tmp_' . $relativepathstring] = $contextpage; |
|
| 1975 | - if (!empty($page) && $page > 1) |
|
| 1976 | - $_SESSION['lastsearch_page_tmp_' . $relativepathstring] = $page; |
|
| 1977 | - if (!empty($limit) && $limit != $conf->limit) |
|
| 1978 | - $_SESSION['lastsearch_limit_tmp_' . $relativepathstring] = $limit; |
|
| 2106 | + if (!empty($contextpage)) { |
|
| 2107 | + $_SESSION['lastsearch_contextpage_tmp_' . $relativepathstring] = $contextpage; |
|
| 2108 | + } |
|
| 2109 | + if (!empty($page) && $page > 1) { |
|
| 2110 | + $_SESSION['lastsearch_page_tmp_' . $relativepathstring] = $page; |
|
| 2111 | + } |
|
| 2112 | + if (!empty($limit) && $limit != $conf->limit) { |
|
| 2113 | + $_SESSION['lastsearch_limit_tmp_' . $relativepathstring] = $limit; |
|
| 2114 | + } |
|
| 1979 | 2115 | |
| 1980 | 2116 | unset($_SESSION['lastsearch_contextpage_' . $relativepathstring]); |
| 1981 | 2117 | unset($_SESSION['lastsearch_page_' . $relativepathstring]); |
@@ -2002,20 +2138,26 @@ discard block |
||
| 2002 | 2138 | |
| 2003 | 2139 | print '</div> <!-- End div class="fiche" -->' . "\n"; // End div fiche |
| 2004 | 2140 | |
| 2005 | - if (empty($conf->dol_hide_leftmenu)) |
|
| 2006 | - print '</div> <!-- End div id-right -->' . "\n"; // End div id-right |
|
| 2141 | + if (empty($conf->dol_hide_leftmenu)) { |
|
| 2142 | + print '</div> <!-- End div id-right -->' . "\n"; |
|
| 2143 | + } |
|
| 2144 | + // End div id-right |
|
| 2007 | 2145 | |
| 2008 | - if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile)) |
|
| 2009 | - print '</div> <!-- End div id-container -->' . "\n"; // End div container |
|
| 2146 | + if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile)) { |
|
| 2147 | + print '</div> <!-- End div id-container -->' . "\n"; |
|
| 2148 | + } |
|
| 2149 | + // End div container |
|
| 2010 | 2150 | |
| 2011 | 2151 | print "\n"; |
| 2012 | - if ($comment) |
|
| 2013 | - print '<!-- ' . $comment . ' -->' . "\n"; |
|
| 2152 | + if ($comment) { |
|
| 2153 | + print '<!-- ' . $comment . ' -->' . "\n"; |
|
| 2154 | + } |
|
| 2014 | 2155 | |
| 2015 | 2156 | printCommonFooter($zone); |
| 2016 | 2157 | |
| 2017 | - if (!empty($delayedhtmlcontent)) |
|
| 2018 | - print $delayedhtmlcontent; |
|
| 2158 | + if (!empty($delayedhtmlcontent)) { |
|
| 2159 | + print $delayedhtmlcontent; |
|
| 2160 | + } |
|
| 2019 | 2161 | |
| 2020 | 2162 | if (!empty($conf->use_javascript_ajax)) { |
| 2021 | 2163 | print "\n" . '<!-- Includes JS Footer of Dolibarr -->' . "\n"; |