mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Fix: Add some initialisations that avoid notices (#28191)
* Fix: Initialize to avoid incrementing undefined variable. # Fix: Initialize to avoid incrementing undefined variable. Got an error in the Web Interface related to error not being defined and incremented * Fix: Initialize # Fix: Initialize Was not defined during test
This commit is contained in:
parent
f445d1e376
commit
ae0f43632e
|
|
@ -352,18 +352,18 @@ if (!empty($php_session_save_handler) && $php_session_save_handler == 'db') {
|
|||
require_once 'core/lib/phpsessionin'.$php_session_save_handler.'.lib.php';
|
||||
}
|
||||
|
||||
// Init session. Name of session is specific to Dolibarr instance.
|
||||
// Must be done after the include of filefunc.inc.php so global variables of conf file are defined (like $dolibarr_main_instance_unique_id or $dolibarr_main_force_https).
|
||||
// Note: the function dol_getprefix() is defined into functions.lib.php but may have been defined to return a different key to manage another area to protect.
|
||||
$prefix = dol_getprefix('');
|
||||
$sessionname = 'DOLSESSID_'.$prefix;
|
||||
$sessiontimeout = 'DOLSESSTIMEOUT_'.$prefix;
|
||||
// Init session. Name of session is specific to Dolibarr instance.
|
||||
// Must be done after the include of filefunc.inc.php so global variables of conf file are defined (like $dolibarr_main_instance_unique_id or $dolibarr_main_force_https).
|
||||
// Note: the function dol_getprefix() is defined into functions.lib.php but may have been defined to return a different key to manage another area to protect.
|
||||
$prefix = dol_getprefix('');
|
||||
$sessionname = 'DOLSESSID_'.$prefix;
|
||||
$sessiontimeout = 'DOLSESSTIMEOUT_'.$prefix;
|
||||
if (!empty($_COOKIE[$sessiontimeout])) {
|
||||
ini_set('session.gc_maxlifetime', $_COOKIE[$sessiontimeout]);
|
||||
}
|
||||
|
||||
// This create lock, released by session_write_close() or end of page.
|
||||
// We need this lock as long as we read/write $_SESSION ['vars']. We can remove lock when finished.
|
||||
// This create lock, released by session_write_close() or end of page.
|
||||
// We need this lock as long as we read/write $_SESSION ['vars']. We can remove lock when finished.
|
||||
if (!defined('NOSESSION')) {
|
||||
if (PHP_VERSION_ID < 70300) {
|
||||
session_set_cookie_params(0, '/', null, ((empty($dolibarr_main_force_https) && isHTTPS() === false) ? false : true), true); // Add tag secure and httponly on session cookie (same as setting session.cookie_httponly into php.ini). Must be called before the session_start.
|
||||
|
|
@ -385,13 +385,13 @@ if (!defined('NOSESSION')) {
|
|||
}
|
||||
|
||||
|
||||
// Init the 6 global objects, this include will make the 'new Xxx()' and set properties for: $conf, $db, $langs, $user, $mysoc, $hookmanager
|
||||
require_once 'master.inc.php';
|
||||
// Init the 6 global objects, this include will make the 'new Xxx()' and set properties for: $conf, $db, $langs, $user, $mysoc, $hookmanager
|
||||
require_once 'master.inc.php';
|
||||
|
||||
// Uncomment this and set session.save_handler = user to use local session storing
|
||||
// include DOL_DOCUMENT_ROOT.'/core/lib/phpsessionindb.inc.php
|
||||
// Uncomment this and set session.save_handler = user to use local session storing
|
||||
// include DOL_DOCUMENT_ROOT.'/core/lib/phpsessionindb.inc.php
|
||||
|
||||
// If software has been locked. Only login $conf->global->MAIN_ONLY_LOGIN_ALLOWED is allowed.
|
||||
// If software has been locked. Only login $conf->global->MAIN_ONLY_LOGIN_ALLOWED is allowed.
|
||||
if (getDolGlobalString('MAIN_ONLY_LOGIN_ALLOWED')) {
|
||||
$ok = 0;
|
||||
if ((!session_id() || !isset($_SESSION["dol_login"])) && !isset($_POST["username"]) && !empty($_SERVER["GATEWAY_INTERFACE"])) {
|
||||
|
|
@ -421,10 +421,10 @@ if (getDolGlobalString('MAIN_ONLY_LOGIN_ALLOWED')) {
|
|||
}
|
||||
|
||||
|
||||
// Activate end of page function
|
||||
register_shutdown_function('dol_shutdown');
|
||||
// Activate end of page function
|
||||
register_shutdown_function('dol_shutdown');
|
||||
|
||||
// Load debugbar
|
||||
// Load debugbar
|
||||
if (isModEnabled('debugbar') && !GETPOST('dol_use_jmobile') && empty($_SESSION['dol_use_jmobile'])) {
|
||||
global $debugbar;
|
||||
include_once DOL_DOCUMENT_ROOT.'/debugbar/class/DebugBar.php';
|
||||
|
|
@ -438,7 +438,7 @@ if (isModEnabled('debugbar') && !GETPOST('dol_use_jmobile') && empty($_SESSION['
|
|||
$debugbar['time']->startMeasure('pageaftermaster', 'Page generation (after environment init)');
|
||||
}
|
||||
|
||||
// Detection browser
|
||||
// Detection browser
|
||||
if (isset($_SERVER["HTTP_USER_AGENT"])) {
|
||||
$tmp = getBrowserInfo($_SERVER["HTTP_USER_AGENT"]);
|
||||
$conf->browser->name = $tmp['browsername'];
|
||||
|
|
@ -453,13 +453,13 @@ if (isset($_SERVER["HTTP_USER_AGENT"])) {
|
|||
}
|
||||
}
|
||||
|
||||
// If theme is forced
|
||||
// If theme is forced
|
||||
if (GETPOST('theme', 'aZ09')) {
|
||||
$conf->theme = GETPOST('theme', 'aZ09');
|
||||
$conf->css = "/theme/".$conf->theme."/style.css.php";
|
||||
}
|
||||
|
||||
// Set global MAIN_OPTIMIZEFORTEXTBROWSER (must be before login part)
|
||||
// Set global MAIN_OPTIMIZEFORTEXTBROWSER (must be before login part)
|
||||
if (GETPOST('textbrowser', 'int') || (!empty($conf->browser->name) && $conf->browser->name == 'lynxlinks')) { // If we must enable text browser
|
||||
$conf->global->MAIN_OPTIMIZEFORTEXTBROWSER = 1;
|
||||
}
|
||||
|
|
@ -546,7 +546,7 @@ if ($checkifupgraderequired) {
|
|||
}
|
||||
}
|
||||
|
||||
// Creation of a token against CSRF vulnerabilities
|
||||
// Creation of a token against CSRF vulnerabilities
|
||||
if (!defined('NOTOKENRENEWAL') && !defined('NOSESSION')) {
|
||||
// No token renewal on .css.php, .js.php and .json.php (even if the NOTOKENRENEWAL was not provided)
|
||||
if (!preg_match('/\.(css|js|json)\.php$/', $_SERVER["PHP_SELF"])) {
|
||||
|
|
@ -566,9 +566,9 @@ if (!defined('NOTOKENRENEWAL') && !defined('NOSESSION')) {
|
|||
}
|
||||
}
|
||||
|
||||
//dol_syslog("CSRF info: ".defined('NOCSRFCHECK')." - ".$dolibarr_nocsrfcheck." - ".$conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN." - ".$_SERVER['REQUEST_METHOD']." - ".GETPOST('token', 'alpha'));
|
||||
//dol_syslog("CSRF info: ".defined('NOCSRFCHECK')." - ".$dolibarr_nocsrfcheck." - ".$conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN." - ".$_SERVER['REQUEST_METHOD']." - ".GETPOST('token', 'alpha'));
|
||||
|
||||
// Check validity of token, only if option MAIN_SECURITY_CSRF_WITH_TOKEN enabled or if constant CSRFCHECK_WITH_TOKEN is set into page
|
||||
// Check validity of token, only if option MAIN_SECURITY_CSRF_WITH_TOKEN enabled or if constant CSRFCHECK_WITH_TOKEN is set into page
|
||||
if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN')) || defined('CSRFCHECK_WITH_TOKEN')) {
|
||||
// Array of action code where CSRFCHECK with token will be forced (so token must be provided on url request)
|
||||
$sensitiveget = false;
|
||||
|
|
@ -629,10 +629,10 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt(
|
|||
}
|
||||
}
|
||||
|
||||
$sessiontokenforthisurl = (empty($_SESSION['token']) ? '' : $_SESSION['token']);
|
||||
// TODO Get the sessiontokenforthisurl into an array of session token (one array per base URL so we can use the CSRF per page and we keep ability for several tabs per url in a browser)
|
||||
$sessiontokenforthisurl = (empty($_SESSION['token']) ? '' : $_SESSION['token']);
|
||||
// TODO Get the sessiontokenforthisurl into an array of session token (one array per base URL so we can use the CSRF per page and we keep ability for several tabs per url in a browser)
|
||||
if (GETPOSTISSET('token') && GETPOST('token') != 'notrequired' && GETPOST('token', 'alpha') != $sessiontokenforthisurl) {
|
||||
dol_syslog("--- Access to ".(empty($_SERVER["REQUEST_METHOD"]) ? '' : $_SERVER["REQUEST_METHOD"].' ').$_SERVER["PHP_SELF"]." refused by CSRF protection (invalid token), so we disable POST and some GET parameters - referrer=".(empty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER']).", action=".GETPOST('action', 'aZ09').", _GET|POST['token']=".GETPOST('token', 'alpha'), LOG_WARNING);
|
||||
dol_syslog("--- Access to ".(empty($_SERVER["REQUEST_METHOD"]) ? '' : $_SERVER["REQUEST_METHOD"].' ').$_SERVER["PHP_SELF"]." refused by CSRF protection (invalid token), so we disable POST and some GET parameters - referrer=".(empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER']).", action=".GETPOST('action', 'aZ09').", _GET|POST['token']=".GETPOST('token', 'alpha'), LOG_WARNING);
|
||||
//dol_syslog("_SESSION['token']=".$sessiontokenforthisurl, LOG_DEBUG);
|
||||
// Do not output anything on standard output because this create problems when using the BACK button on browsers. So we just set a message into session.
|
||||
if (!defined('NOTOKENRENEWAL')) {
|
||||
|
|
@ -659,7 +659,7 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt(
|
|||
// Note: There is another CSRF protection into the filefunc.inc.php
|
||||
}
|
||||
|
||||
// Disable modules (this must be after session_start and after conf has been loaded)
|
||||
// Disable modules (this must be after session_start and after conf has been loaded)
|
||||
if (GETPOSTISSET('disablemodules')) {
|
||||
$_SESSION["disablemodules"] = GETPOST('disablemodules', 'alpha');
|
||||
}
|
||||
|
|
@ -684,8 +684,8 @@ if (!empty($_SESSION["disablemodules"])) {
|
|||
}
|
||||
}
|
||||
|
||||
// Set current modulepart
|
||||
$modulepart = explode("/", $_SERVER["PHP_SELF"]);
|
||||
// Set current modulepart
|
||||
$modulepart = explode("/", $_SERVER["PHP_SELF"]);
|
||||
if (is_array($modulepart) && count($modulepart) > 0) {
|
||||
foreach ($conf->modules as $module) {
|
||||
if (in_array($module, $modulepart)) {
|
||||
|
|
@ -704,6 +704,7 @@ if (is_array($modulepart)) {
|
|||
*/
|
||||
|
||||
$login = '';
|
||||
$error = 0;
|
||||
if (!defined('NOLOGIN')) {
|
||||
// $authmode lists the different method of identification to be tested in order of preference.
|
||||
// Example: 'http', 'dolibarr', 'ldap', 'http,forceuser', '...'
|
||||
|
|
@ -804,7 +805,7 @@ if (!defined('NOLOGIN')) {
|
|||
// Hooks on failed login
|
||||
$action = '';
|
||||
$hookmanager->initHooks(array('login'));
|
||||
$parameters = array('dol_authmode'=>$authmode, 'dol_loginmesg'=>$_SESSION["dol_loginmesg"]);
|
||||
$parameters = array('dol_authmode' => $authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]);
|
||||
$reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
$error++;
|
||||
|
|
@ -847,7 +848,7 @@ if (!defined('NOLOGIN')) {
|
|||
if (!is_object($langs)) { // This can occurs when calling page with NOREQUIRETRAN defined, however we need langs for error messages.
|
||||
include_once DOL_DOCUMENT_ROOT.'/core/class/translate.class.php';
|
||||
$langs = new Translate("", $conf);
|
||||
$langcode = (GETPOST('lang', 'aZ09', 1) ?GETPOST('lang', 'aZ09', 1) : getDolGlobalString('MAIN_LANG_DEFAULT', 'auto'));
|
||||
$langcode = (GETPOST('lang', 'aZ09', 1) ? GETPOST('lang', 'aZ09', 1) : getDolGlobalString('MAIN_LANG_DEFAULT', 'auto'));
|
||||
if (defined('MAIN_LANG_DEFAULT')) {
|
||||
$langcode = constant('MAIN_LANG_DEFAULT');
|
||||
}
|
||||
|
|
@ -930,7 +931,7 @@ if (!defined('NOLOGIN')) {
|
|||
// Hooks on failed login
|
||||
$action = '';
|
||||
$hookmanager->initHooks(array('login'));
|
||||
$parameters = array('dol_authmode'=>$dol_authmode, 'dol_loginmesg'=>$_SESSION["dol_loginmesg"]);
|
||||
$parameters = array('dol_authmode' => $dol_authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]);
|
||||
$reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
$error++;
|
||||
|
|
@ -998,7 +999,7 @@ if (!defined('NOLOGIN')) {
|
|||
// Hooks on failed login
|
||||
$action = '';
|
||||
$hookmanager->initHooks(array('login'));
|
||||
$parameters = array('dol_authmode'=>$dol_authmode, 'dol_loginmesg'=>$_SESSION["dol_loginmesg"]);
|
||||
$parameters = array('dol_authmode' => $dol_authmode, 'dol_loginmesg' => $_SESSION["dol_loginmesg"]);
|
||||
$reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
$error++;
|
||||
|
|
@ -1049,10 +1050,10 @@ if (!defined('NOLOGIN')) {
|
|||
// User validity dates are no more valid
|
||||
dol_syslog("The user login has a validity between [".$user->datestartvalidity." and ".$user->dateendvalidity."], current date is ".dol_now());
|
||||
}
|
||||
session_destroy();
|
||||
session_set_cookie_params(0, '/', null, (empty($dolibarr_main_force_https) ? false : true), true); // Add tag secure and httponly on session cookie
|
||||
session_name($sessionname);
|
||||
session_start();
|
||||
session_destroy();
|
||||
session_set_cookie_params(0, '/', null, (empty($dolibarr_main_force_https) ? false : true), true); // Add tag secure and httponly on session cookie
|
||||
session_name($sessionname);
|
||||
session_start();
|
||||
|
||||
if ($resultFetchUser == 0) {
|
||||
$langs->loadLangs(array('main', 'errors'));
|
||||
|
|
@ -1072,23 +1073,23 @@ if (!defined('NOLOGIN')) {
|
|||
$user->context['audit'] = 'ErrorUserSessionWasInvalidated - login='.$login;
|
||||
}
|
||||
|
||||
// Call trigger
|
||||
$result = $user->call_trigger('USER_LOGIN_FAILED', $user);
|
||||
// Call trigger
|
||||
$result = $user->call_trigger('USER_LOGIN_FAILED', $user);
|
||||
if ($result < 0) {
|
||||
$error++;
|
||||
}
|
||||
// End call triggers
|
||||
// End call triggers
|
||||
|
||||
// Hooks on failed login
|
||||
$action = '';
|
||||
$hookmanager->initHooks(array('login'));
|
||||
$parameters = array('dol_authmode' => (isset($dol_authmode) ? $dol_authmode : ''), 'dol_loginmesg' => $_SESSION["dol_loginmesg"]);
|
||||
$reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
|
||||
// Hooks on failed login
|
||||
$action = '';
|
||||
$hookmanager->initHooks(array('login'));
|
||||
$parameters = array('dol_authmode' => (isset($dol_authmode) ? $dol_authmode : ''), 'dol_loginmesg' => $_SESSION["dol_loginmesg"]);
|
||||
$reshook = $hookmanager->executeHooks('afterLoginFailed', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
$error++;
|
||||
}
|
||||
|
||||
$paramsurl = array();
|
||||
$paramsurl = array();
|
||||
if (GETPOST('textbrowser', 'int')) {
|
||||
$paramsurl[] = 'textbrowser='.GETPOST('textbrowser', 'int');
|
||||
}
|
||||
|
|
@ -1099,8 +1100,8 @@ if (!defined('NOLOGIN')) {
|
|||
$paramsurl[] = 'lang='.GETPOST('lang', 'aZ09');
|
||||
}
|
||||
|
||||
header('Location: '.DOL_URL_ROOT.'/index.php'.(count($paramsurl) ? '?'.implode('&', $paramsurl) : ''));
|
||||
exit;
|
||||
header('Location: '.DOL_URL_ROOT.'/index.php'.(count($paramsurl) ? '?'.implode('&', $paramsurl) : ''));
|
||||
exit;
|
||||
} else {
|
||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('main'));
|
||||
|
|
@ -1221,7 +1222,7 @@ if (!defined('NOLOGIN')) {
|
|||
// Hooks on successful login
|
||||
$action = '';
|
||||
$hookmanager->initHooks(array('login'));
|
||||
$parameters = array('dol_authmode'=>$dol_authmode, 'dol_loginfo'=>$loginfo);
|
||||
$parameters = array('dol_authmode' => $dol_authmode, 'dol_loginfo' => $loginfo);
|
||||
$reshook = $hookmanager->executeHooks('afterLogin', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
|
||||
if ($reshook < 0) {
|
||||
$error++;
|
||||
|
|
@ -1305,13 +1306,13 @@ if (!defined('NOLOGIN')) {
|
|||
}
|
||||
|
||||
|
||||
// Case forcing style from url
|
||||
// Case forcing style from url
|
||||
if (GETPOST('theme', 'aZ09')) {
|
||||
$conf->theme = GETPOST('theme', 'aZ09', 1);
|
||||
$conf->css = "/theme/".$conf->theme."/style.css.php";
|
||||
}
|
||||
|
||||
// Set javascript option
|
||||
// Set javascript option
|
||||
if (GETPOST('nojs', 'int')) { // If javascript was not disabled on URL
|
||||
$conf->use_javascript_ajax = 0;
|
||||
} else {
|
||||
|
|
@ -1320,15 +1321,15 @@ if (GETPOST('nojs', 'int')) { // If javascript was not disabled on URL
|
|||
}
|
||||
}
|
||||
|
||||
// Set MAIN_OPTIMIZEFORTEXTBROWSER for user (must be after login part)
|
||||
// Set MAIN_OPTIMIZEFORTEXTBROWSER for user (must be after login part)
|
||||
if (!getDolGlobalString('MAIN_OPTIMIZEFORTEXTBROWSER') && !empty($user->conf->MAIN_OPTIMIZEFORTEXTBROWSER)) {
|
||||
$conf->global->MAIN_OPTIMIZEFORTEXTBROWSER = $user->conf->MAIN_OPTIMIZEFORTEXTBROWSER;
|
||||
}
|
||||
|
||||
// set MAIN_OPTIMIZEFORCOLORBLIND for user
|
||||
$conf->global->MAIN_OPTIMIZEFORCOLORBLIND = empty($user->conf->MAIN_OPTIMIZEFORCOLORBLIND) ? '' : $user->conf->MAIN_OPTIMIZEFORCOLORBLIND;
|
||||
// set MAIN_OPTIMIZEFORCOLORBLIND for user
|
||||
$conf->global->MAIN_OPTIMIZEFORCOLORBLIND = empty($user->conf->MAIN_OPTIMIZEFORCOLORBLIND) ? '' : $user->conf->MAIN_OPTIMIZEFORCOLORBLIND;
|
||||
|
||||
// Set terminal output option according to conf->browser.
|
||||
// Set terminal output option according to conf->browser.
|
||||
if (GETPOST('dol_hide_leftmenu', 'int') || !empty($_SESSION['dol_hide_leftmenu'])) {
|
||||
$conf->dol_hide_leftmenu = 1;
|
||||
}
|
||||
|
|
@ -1344,7 +1345,7 @@ if (GETPOST('dol_no_mouse_hover', 'int') || !empty($_SESSION['dol_no_mouse_hover
|
|||
if (GETPOST('dol_use_jmobile', 'int') || !empty($_SESSION['dol_use_jmobile'])) {
|
||||
$conf->dol_use_jmobile = 1;
|
||||
}
|
||||
// If not on Desktop
|
||||
// If not on Desktop
|
||||
if (!empty($conf->browser->layout) && $conf->browser->layout != 'classic') {
|
||||
$conf->dol_no_mouse_hover = 1;
|
||||
}
|
||||
|
|
@ -1361,7 +1362,7 @@ if ((!empty($conf->browser->layout) && $conf->browser->layout == 'phone')
|
|||
$conf->global->PRODUIT_DESC_IN_FORM_ACCORDING_TO_DEVICE = 0;
|
||||
}
|
||||
}
|
||||
// Replace themes bugged with jmobile with eldy
|
||||
// Replace themes bugged with jmobile with eldy
|
||||
if (!empty($conf->dol_use_jmobile) && in_array($conf->theme, array('bureau2crea', 'cameleo', 'amarok'))) {
|
||||
$conf->theme = 'eldy';
|
||||
$conf->css = "/theme/".$conf->theme."/style.css.php";
|
||||
|
|
@ -1410,15 +1411,19 @@ if (!defined('NOREQUIRETRAN')) {
|
|||
}
|
||||
|
||||
// Define some constants used for style of arrays
|
||||
$bc = array(0=>'class="impair"', 1=>'class="pair"');
|
||||
$bcdd = array(0=>'class="drag drop oddeven"', 1=>'class="drag drop oddeven"');
|
||||
$bcnd = array(0=>'class="nodrag nodrop nohover"', 1=>'class="nodrag nodrop nohoverpair"'); // Used for tr to add new lines
|
||||
$bctag = array(0=>'class="impair tagtr"', 1=>'class="pair tagtr"');
|
||||
$bc = array(0 => 'class="impair"', 1 => 'class="pair"');
|
||||
$bcdd = array(0 => 'class="drag drop oddeven"', 1 => 'class="drag drop oddeven"');
|
||||
$bcnd = array(0 => 'class="nodrag nodrop nohover"', 1 => 'class="nodrag nodrop nohoverpair"'); // Used for tr to add new lines
|
||||
$bctag = array(0 => 'class="impair tagtr"', 1 => 'class="pair tagtr"');
|
||||
|
||||
// Define messages variables
|
||||
$mesg = ''; $warning = ''; $error = 0;
|
||||
$mesg = '';
|
||||
$warning = '';
|
||||
$error = 0;
|
||||
// deprecated, see setEventMessages() and dol_htmloutput_events()
|
||||
$mesgs = array(); $warnings = array(); $errors = array();
|
||||
$mesgs = array();
|
||||
$warnings = array();
|
||||
$errors = array();
|
||||
|
||||
// Constants used to defined number of lines in textarea
|
||||
if (empty($conf->browser->firefox)) {
|
||||
|
|
@ -1443,9 +1448,9 @@ if (empty($conf->browser->firefox)) {
|
|||
define('ROWS_9', 8);
|
||||
}
|
||||
|
||||
$heightforframes = 50;
|
||||
$heightforframes = 50;
|
||||
|
||||
// Init menu manager
|
||||
// Init menu manager
|
||||
if (!defined('NOREQUIREMENU')) {
|
||||
if (empty($user->socid)) { // If internal user or not defined
|
||||
$conf->standard_menu = (!getDolGlobalString('MAIN_MENU_STANDARD_FORCED') ? (!getDolGlobalString('MAIN_MENU_STANDARD') ? 'eldy_menu.php' : $conf->global->MAIN_MENU_STANDARD) : $conf->global->MAIN_MENU_STANDARD_FORCED);
|
||||
|
|
@ -1487,7 +1492,7 @@ if (!empty(GETPOST('seteventmessages', 'alpha'))) {
|
|||
}
|
||||
}
|
||||
|
||||
// Functions
|
||||
// Functions
|
||||
|
||||
if (!function_exists("llxHeader")) {
|
||||
/**
|
||||
|
|
@ -1515,19 +1520,19 @@ if (!function_exists("llxHeader")) {
|
|||
global $conf, $hookmanager;
|
||||
|
||||
$parameters = array(
|
||||
'head' =>& $head,
|
||||
'title' =>& $title,
|
||||
'help_url' =>& $help_url,
|
||||
'target' =>& $target,
|
||||
'disablejs' =>& $disablejs,
|
||||
'disablehead' =>& $disablehead,
|
||||
'arrayofjs' =>& $arrayofjs,
|
||||
'arrayofcss' =>& $arrayofcss,
|
||||
'morequerystring' =>& $morequerystring,
|
||||
'morecssonbody' =>& $morecssonbody,
|
||||
'replacemainareaby' =>& $replacemainareaby,
|
||||
'disablenofollow' =>& $disablenofollow,
|
||||
'disablenoindex' =>& $disablenoindex
|
||||
'head' => & $head,
|
||||
'title' => & $title,
|
||||
'help_url' => & $help_url,
|
||||
'target' => & $target,
|
||||
'disablejs' => & $disablejs,
|
||||
'disablehead' => & $disablehead,
|
||||
'arrayofjs' => & $arrayofjs,
|
||||
'arrayofcss' => & $arrayofcss,
|
||||
'morequerystring' => & $morequerystring,
|
||||
'morecssonbody' => & $morecssonbody,
|
||||
'replacemainareaby' => & $replacemainareaby,
|
||||
'disablenofollow' => & $disablenofollow,
|
||||
'disablenoindex' => & $disablenoindex
|
||||
|
||||
);
|
||||
$reshook = $hookmanager->executeHooks('llxHeader', $parameters);
|
||||
|
|
@ -1573,13 +1578,13 @@ if (!function_exists("llxHeader")) {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show HTTP header. Called by top_htmlhead().
|
||||
*
|
||||
* @param string $contenttype Content type. For example, 'text/html'
|
||||
* @param int $forcenocache Force disabling of cache for the page
|
||||
* @return void
|
||||
*/
|
||||
/**
|
||||
* Show HTTP header. Called by top_htmlhead().
|
||||
*
|
||||
* @param string $contenttype Content type. For example, 'text/html'
|
||||
* @param int $forcenocache Force disabling of cache for the page
|
||||
* @return void
|
||||
*/
|
||||
function top_httphead($contenttype = 'text/html', $forcenocache = 0)
|
||||
{
|
||||
global $db, $conf, $hookmanager;
|
||||
|
|
@ -1634,7 +1639,7 @@ function top_httphead($contenttype = 'text/html', $forcenocache = 0)
|
|||
}
|
||||
$hookmanager->initHooks(array("main"));
|
||||
|
||||
$parameters = array('contentsecuritypolicy'=>$contentsecuritypolicy, 'mode'=>'reportonly');
|
||||
$parameters = array('contentsecuritypolicy' => $contentsecuritypolicy, 'mode' => 'reportonly');
|
||||
$result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if ($result > 0) {
|
||||
$contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP
|
||||
|
|
@ -1671,7 +1676,7 @@ function top_httphead($contenttype = 'text/html', $forcenocache = 0)
|
|||
}
|
||||
$hookmanager->initHooks(array("main"));
|
||||
|
||||
$parameters = array('contentsecuritypolicy'=>$contentsecuritypolicy, 'mode'=>'active');
|
||||
$parameters = array('contentsecuritypolicy' => $contentsecuritypolicy, 'mode' => 'active');
|
||||
$result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if ($result > 0) {
|
||||
$contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP
|
||||
|
|
@ -1772,7 +1777,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr
|
|||
|
||||
// Mobile appli like icon
|
||||
$manifest = DOL_URL_ROOT.'/theme/'.$conf->theme.'/manifest.json.php';
|
||||
$parameters = array('manifest'=>$manifest);
|
||||
$parameters = array('manifest' => $manifest);
|
||||
$resHook = $hookmanager->executeHooks('hookSetManifest', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if ($resHook > 0) {
|
||||
$manifest = $hookmanager->resPrint; // Replace manifest.json
|
||||
|
|
@ -1809,7 +1814,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr
|
|||
$titletoshow = dol_htmlentities($appli);
|
||||
}
|
||||
|
||||
$parameters = array('title'=>$titletoshow);
|
||||
$parameters = array('title' => $titletoshow);
|
||||
$result = $hookmanager->executeHooks('setHtmlTitle', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if ($result > 0) {
|
||||
$titletoshow = $hookmanager->resPrint; // Replace Title to show
|
||||
|
|
@ -1846,7 +1851,8 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr
|
|||
$themeparam .= '&dol_no_mouse_hover='.GETPOST('dol_no_mouse_hover', 'int');
|
||||
}
|
||||
if (GETPOSTISSET('dol_use_jmobile')) {
|
||||
$themeparam .= '&dol_use_jmobile='.GETPOST('dol_use_jmobile', 'int'); $conf->dol_use_jmobile = GETPOST('dol_use_jmobile', 'int');
|
||||
$themeparam .= '&dol_use_jmobile='.GETPOST('dol_use_jmobile', 'int');
|
||||
$conf->dol_use_jmobile = GETPOST('dol_use_jmobile', 'int');
|
||||
}
|
||||
if (GETPOSTISSET('THEME_DARKMODEENABLED')) {
|
||||
$themeparam .= '&THEME_DARKMODEENABLED='.GETPOST('THEME_DARKMODEENABLED', 'int');
|
||||
|
|
@ -1875,7 +1881,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr
|
|||
print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/jnotify/jquery.jnotify-alt.min.css'.($ext ? '?'.$ext : '').'">'."\n"; // JNotify
|
||||
}
|
||||
if (!defined('DISABLE_SELECT2') && (getDolGlobalString('MAIN_USE_JQUERY_MULTISELECT') || defined('REQUIRE_JQUERY_MULTISELECT'))) { // jQuery plugin "mutiselect", "multiple-select", "select2"...
|
||||
$tmpplugin = !getDolGlobalString('MAIN_USE_JQUERY_MULTISELECT') ?constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT;
|
||||
$tmpplugin = !getDolGlobalString('MAIN_USE_JQUERY_MULTISELECT') ? constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT;
|
||||
print '<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/includes/jquery/plugins/'.$tmpplugin.'/dist/css/'.$tmpplugin.'.css'.($ext ? '?'.$ext : '').'">'."\n";
|
||||
}
|
||||
}
|
||||
|
|
@ -2006,7 +2012,7 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr
|
|||
}
|
||||
if (!defined('DISABLE_SELECT2') && (getDolGlobalString('MAIN_USE_JQUERY_MULTISELECT') || defined('REQUIRE_JQUERY_MULTISELECT'))) {
|
||||
// jQuery plugin "mutiselect", "multiple-select", "select2", ...
|
||||
$tmpplugin = !getDolGlobalString('MAIN_USE_JQUERY_MULTISELECT') ?constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT;
|
||||
$tmpplugin = !getDolGlobalString('MAIN_USE_JQUERY_MULTISELECT') ? constant('REQUIRE_JQUERY_MULTISELECT') : $conf->global->MAIN_USE_JQUERY_MULTISELECT;
|
||||
print '<script nonce="'.getNonce().'" src="'.DOL_URL_ROOT.'/includes/jquery/plugins/'.$tmpplugin.'/dist/js/'.$tmpplugin.'.full.min.js'.($ext ? '?'.$ext : '').'"></script>'."\n"; // We include full because we need the support of containerCssClass
|
||||
}
|
||||
if (!defined('DISABLE_MULTISELECT')) { // jQuery plugin "mutiselect" to select with checkboxes. Can be removed once we have an enhanced search tool
|
||||
|
|
@ -2116,22 +2122,22 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show an HTML header + a BODY + The top menu bar
|
||||
*
|
||||
* @param string $head Lines in the HEAD
|
||||
* @param string $title Title of web page
|
||||
* @param string $target Target to use in menu links (Example: '' or '_top')
|
||||
* @param int $disablejs Do not output links to js (Ex: qd fonction utilisee par sous formulaire Ajax)
|
||||
* @param int $disablehead Do not output head section
|
||||
* @param array $arrayofjs Array of js files to add in header
|
||||
* @param array $arrayofcss Array of css files to add in header
|
||||
* @param string $morequerystring Query string to add to the link "print" to get same parameters (use only if autodetect fails)
|
||||
* @param string $helppagename Name of wiki page for help ('' by default).
|
||||
* Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage|DE:GermanPage
|
||||
* For other external page: http://server/url
|
||||
* @return void
|
||||
*/
|
||||
/**
|
||||
* Show an HTML header + a BODY + The top menu bar
|
||||
*
|
||||
* @param string $head Lines in the HEAD
|
||||
* @param string $title Title of web page
|
||||
* @param string $target Target to use in menu links (Example: '' or '_top')
|
||||
* @param int $disablejs Do not output links to js (Ex: qd fonction utilisee par sous formulaire Ajax)
|
||||
* @param int $disablehead Do not output head section
|
||||
* @param array $arrayofjs Array of js files to add in header
|
||||
* @param array $arrayofcss Array of css files to add in header
|
||||
* @param string $morequerystring Query string to add to the link "print" to get same parameters (use only if autodetect fails)
|
||||
* @param string $helppagename Name of wiki page for help ('' by default).
|
||||
* Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage|DE:GermanPage
|
||||
* For other external page: http://server/url
|
||||
* @return void
|
||||
*/
|
||||
function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead = 0, $arrayofjs = array(), $arrayofcss = array(), $morequerystring = '', $helppagename = '')
|
||||
{
|
||||
global $user, $conf, $langs, $db, $form;
|
||||
|
|
@ -2168,7 +2174,7 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
|||
// Show menu entries
|
||||
print '<div id="tmenu_tooltip'.(!getDolGlobalString('MAIN_MENU_INVERT') ? '' : 'invert').'" class="tmenu">'."\n";
|
||||
$menumanager->atarget = $target;
|
||||
$menumanager->showmenu('top', array('searchform'=>$searchform)); // This contains a \n
|
||||
$menumanager->showmenu('top', array('searchform' => $searchform)); // This contains a \n
|
||||
print "</div>\n";
|
||||
|
||||
// Define link to login card
|
||||
|
|
@ -2379,13 +2385,13 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build the tooltip on user login
|
||||
*
|
||||
* @param int $hideloginname Hide login name. Show only the image.
|
||||
* @param string $urllogout URL for logout (Will use DOL_URL_ROOT.'/user/logout.php?token=...' if empty)
|
||||
* @return string HTML content
|
||||
*/
|
||||
/**
|
||||
* Build the tooltip on user login
|
||||
*
|
||||
* @param int $hideloginname Hide login name. Show only the image.
|
||||
* @param string $urllogout URL for logout (Will use DOL_URL_ROOT.'/user/logout.php?token=...' if empty)
|
||||
* @return string HTML content
|
||||
*/
|
||||
function top_menu_user($hideloginname = 0, $urllogout = '')
|
||||
{
|
||||
global $langs, $conf, $db, $hookmanager, $user, $mysoc;
|
||||
|
|
@ -2492,7 +2498,7 @@ function top_menu_user($hideloginname = 0, $urllogout = '')
|
|||
$dropdownBody .= '</div>';
|
||||
|
||||
// Execute hook
|
||||
$parameters = array('user'=>$user, 'langs' => $langs);
|
||||
$parameters = array('user' => $user, 'langs' => $langs);
|
||||
$result = $hookmanager->executeHooks('printTopRightMenuLoginDropdownBody', $parameters); // Note that $action and $object may have been modified by some hooks
|
||||
if (is_numeric($result)) {
|
||||
if ($result == 0) {
|
||||
|
|
@ -2647,11 +2653,11 @@ function top_menu_user($hideloginname = 0, $urllogout = '')
|
|||
return $btnUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the tooltip on top menu quick add
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
/**
|
||||
* Build the tooltip on top menu quick add
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
function top_menu_quickadd()
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
|
@ -2710,11 +2716,11 @@ function top_menu_quickadd()
|
|||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate list of quickadd items
|
||||
*
|
||||
* @return string HTML output
|
||||
*/
|
||||
/**
|
||||
* Generate list of quickadd items
|
||||
*
|
||||
* @return string HTML output
|
||||
*/
|
||||
function printDropdownQuickadd()
|
||||
{
|
||||
global $conf, $user, $langs, $hookmanager;
|
||||
|
|
@ -2889,11 +2895,11 @@ function printDropdownQuickadd()
|
|||
return $dropDownQuickAddHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the tooltip on top menu bookmark
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
/**
|
||||
* Build the tooltip on top menu bookmark
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
function top_menu_bookmark()
|
||||
{
|
||||
global $langs, $conf, $db, $user;
|
||||
|
|
@ -2972,11 +2978,11 @@ function top_menu_bookmark()
|
|||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the tooltip on top menu tsearch
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
/**
|
||||
* Build the tooltip on top menu tsearch
|
||||
*
|
||||
* @return string HTML content
|
||||
*/
|
||||
function top_menu_search()
|
||||
{
|
||||
global $langs, $conf, $db, $user, $hookmanager;
|
||||
|
|
@ -3258,7 +3264,7 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
|
|||
// Show left menu with other forms
|
||||
$menumanager->menu_array = $menu_array_before;
|
||||
$menumanager->menu_array_after = $menu_array_after;
|
||||
$menumanager->showmenu('left', array('searchform'=>$searchform)); // output menu_array and menu found in database
|
||||
$menumanager->showmenu('left', array('searchform' => $searchform)); // output menu_array and menu found in database
|
||||
|
||||
// Dolibarr version + help + bug report link
|
||||
print "\n";
|
||||
|
|
@ -3287,7 +3293,8 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
|
|||
|
||||
$appli = constant('DOL_APPLICATION_TITLE');
|
||||
if (getDolGlobalString('MAIN_APPLICATION_TITLE')) {
|
||||
$appli = getDolGlobalString('MAIN_APPLICATION_TITLE'); $doliurl = '';
|
||||
$appli = getDolGlobalString('MAIN_APPLICATION_TITLE');
|
||||
$doliurl = '';
|
||||
if (preg_match('/\d\.\d/', $appli)) {
|
||||
if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) {
|
||||
$appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core
|
||||
|
|
@ -3397,12 +3404,12 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Begin main area
|
||||
*
|
||||
* @param string $title Title
|
||||
* @return void
|
||||
*/
|
||||
/**
|
||||
* Begin main area
|
||||
*
|
||||
* @param string $title Title
|
||||
* @return void
|
||||
*/
|
||||
function main_area($title = '')
|
||||
{
|
||||
global $conf, $langs, $hookmanager;
|
||||
|
|
@ -3458,13 +3465,13 @@ function main_area($title = '')
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return helpbaseurl, helppage and mode
|
||||
*
|
||||
* @param string $helppagename Page name ('EN:xxx,ES:eee,FR:fff,DE:ddd...' or 'http://localpage')
|
||||
* @param Translate $langs Language
|
||||
* @return array Array of help urls
|
||||
*/
|
||||
/**
|
||||
* Return helpbaseurl, helppage and mode
|
||||
*
|
||||
* @param string $helppagename Page name ('EN:xxx,ES:eee,FR:fff,DE:ddd...' or 'http://localpage')
|
||||
* @param Translate $langs Language
|
||||
* @return array Array of help urls
|
||||
*/
|
||||
function getHelpParamFor($helppagename, $langs)
|
||||
{
|
||||
$helpbaseurl = '';
|
||||
|
|
@ -3505,26 +3512,26 @@ function getHelpParamFor($helppagename, $langs)
|
|||
}
|
||||
$mode = 'wiki';
|
||||
}
|
||||
return array('helpbaseurl'=>$helpbaseurl, 'helppage'=>$helppage, 'mode'=>$mode);
|
||||
return array('helpbaseurl' => $helpbaseurl, 'helppage' => $helppage, 'mode' => $mode);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show a search area.
|
||||
* Used when the javascript quick search is not used.
|
||||
*
|
||||
* @param string $urlaction Url post
|
||||
* @param string $urlobject Url of the link under the search box
|
||||
* @param string $title Title search area
|
||||
* @param string $htmlmorecss Add more css
|
||||
* @param string $htmlinputname Field Name input form
|
||||
* @param string $accesskey Accesskey
|
||||
* @param string $prefhtmlinputname Complement for id to avoid multiple same id in the page
|
||||
* @param string $img Image to use
|
||||
* @param int $showtitlebefore Show title before input text instead of into placeholder. This can be set when output is dedicated for text browsers.
|
||||
* @param int $autofocus Set autofocus on field
|
||||
* @return string
|
||||
*/
|
||||
/**
|
||||
* Show a search area.
|
||||
* Used when the javascript quick search is not used.
|
||||
*
|
||||
* @param string $urlaction Url post
|
||||
* @param string $urlobject Url of the link under the search box
|
||||
* @param string $title Title search area
|
||||
* @param string $htmlmorecss Add more css
|
||||
* @param string $htmlinputname Field Name input form
|
||||
* @param string $accesskey Accesskey
|
||||
* @param string $prefhtmlinputname Complement for id to avoid multiple same id in the page
|
||||
* @param string $img Image to use
|
||||
* @param int $showtitlebefore Show title before input text instead of into placeholder. This can be set when output is dedicated for text browsers.
|
||||
* @param int $autofocus Set autofocus on field
|
||||
* @return string
|
||||
*/
|
||||
function printSearchForm($urlaction, $urlobject, $title, $htmlmorecss, $htmlinputname, $accesskey = '', $prefhtmlinputname = '', $img = '', $showtitlebefore = 0, $autofocus = 0)
|
||||
{
|
||||
global $langs, $user;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
* Copyright (C) 2005-2014 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2020 Tobias Sekan <tobias.sekan@startmail.com>
|
||||
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -54,6 +55,7 @@ $search_ref = GETPOST("sref", "alpha") ? GETPOST("sref", "alpha") : GETPOST("sea
|
|||
$search_label = GETPOST("snom", "alpha") ? GETPOST("snom", "alpha") : GETPOST("search_label", "alpha");
|
||||
$search_status = GETPOST("search_status", "int");
|
||||
|
||||
$search_category_list = array();
|
||||
if (isModEnabled('categorie')) {
|
||||
$search_category_list = GETPOST("search_category_".Categorie::TYPE_WAREHOUSE."_list", "array");
|
||||
}
|
||||
|
|
@ -112,20 +114,20 @@ foreach ($object->fields as $key => $val) {
|
|||
|
||||
// Definition of array of fields for columns
|
||||
$arrayfields = array(
|
||||
'stockqty'=>array('type'=>'float', 'label'=>'PhysicalStock', 'enabled'=>1, 'visible'=>-2, 'checked'=>0, 'position'=>170),
|
||||
'estimatedvalue'=>array('type'=>'float', 'label'=>'EstimatedStockValue', 'enabled'=>1, 'visible'=>1, 'checked'=>1, 'position'=>171),
|
||||
'estimatedstockvaluesell'=>array('type'=>'float', 'label'=>'EstimatedStockValueSell', 'enabled'=>1, 'checked'=>1, 'visible'=>2, 'position'=>172),
|
||||
'stockqty' => array('type' => 'float', 'label' => 'PhysicalStock', 'enabled' => 1, 'visible' => -2, 'checked' => 0, 'position' => 170),
|
||||
'estimatedvalue' => array('type' => 'float', 'label' => 'EstimatedStockValue', 'enabled' => 1, 'visible' => 1, 'checked' => 1, 'position' => 171),
|
||||
'estimatedstockvaluesell' => array('type' => 'float', 'label' => 'EstimatedStockValueSell', 'enabled' => 1, 'checked' => 1, 'visible' => 2, 'position' => 172),
|
||||
);
|
||||
foreach ($object->fields as $key => $val) {
|
||||
// If $val['visible']==0, then we never show the field
|
||||
if (!empty($val['visible'])) {
|
||||
$visible = (int) dol_eval($val['visible'], 1);
|
||||
$arrayfields['t.'.$key] = array(
|
||||
'label'=>$val['label'],
|
||||
'checked'=>(($visible < 0) ? 0 : 1),
|
||||
'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
|
||||
'position'=>$val['position'],
|
||||
'help'=> isset($val['help']) ? $val['help'] : ''
|
||||
'label' => $val['label'],
|
||||
'checked' => (($visible < 0) ? 0 : 1),
|
||||
'enabled' => (abs($visible) != 3 && dol_eval($val['enabled'], 1)),
|
||||
'position' => $val['position'],
|
||||
'help' => isset($val['help']) ? $val['help'] : ''
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -468,8 +470,8 @@ print '<input type="hidden" name="mode" value="'.$mode.'">';
|
|||
|
||||
|
||||
$newcardbutton = '';
|
||||
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition'));
|
||||
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition'));
|
||||
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-bars imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss' => 'reposition'));
|
||||
$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/(&|\?)*mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss' => 'reposition'));
|
||||
$newcardbutton .= dolGetButtonTitleSeparator();
|
||||
$newcardbutton .= dolGetButtonTitle($langs->trans('MenuNewWarehouse'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/product/stock/card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->hasRight('stock', 'creer'));
|
||||
|
||||
|
|
@ -593,7 +595,7 @@ if (!empty($arrayfields["estimatedstockvaluesell"]['checked'])) {
|
|||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
|
||||
|
||||
// Fields from hook
|
||||
$parameters = array('arrayfields'=>$arrayfields);
|
||||
$parameters = array('arrayfields' => $arrayfields);
|
||||
$reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
|
||||
|
|
@ -666,7 +668,7 @@ if (!empty($arrayfields["estimatedstockvaluesell"]['checked'])) {
|
|||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||
|
||||
// Hook fields
|
||||
$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder);
|
||||
$parameters = array('arrayfields' => $arrayfields, 'param' => $param, 'sortfield' => $sortfield, 'sortorder' => $sortorder);
|
||||
$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
|
||||
|
|
@ -852,7 +854,7 @@ while ($i < $imaxinloop) {
|
|||
// Extra fields
|
||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||
// Fields from hook
|
||||
$parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray);
|
||||
$parameters = array('arrayfields' => $arrayfields, 'object' => $object, 'obj' => $obj, 'i' => $i, 'totalarray' => &$totalarray);
|
||||
$reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
|
||||
|
|
@ -904,7 +906,7 @@ if ($num == 0) {
|
|||
|
||||
$db->free($resql);
|
||||
|
||||
$parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql);
|
||||
$parameters = array('arrayfields' => $arrayfields, 'sql' => $sql);
|
||||
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook
|
||||
print $hookmanager->resPrint;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user