diff --git a/htdocs/bom/bom_card.php b/htdocs/bom/bom_card.php
index 90c9bdb0472..e4cd35e11ad 100644
--- a/htdocs/bom/bom_card.php
+++ b/htdocs/bom/bom_card.php
@@ -396,11 +396,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
// Confirmation to delete
if ($action == 'delete') {
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteBillOfMaterials'), $langs->trans('ConfirmDeleteBillOfMaterials'), 'confirm_delete', '', 0, 1);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id]), $langs->trans('DeleteBillOfMaterials'), $langs->trans('ConfirmDeleteBillOfMaterials'), 'confirm_delete', '', 0, 1);
}
// Confirmation to delete line
if ($action == 'deleteline') {
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id, 'lineid' => $lineid]), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_deleteline', '', 0, 1);
}
// Confirmation of validation
@@ -438,7 +438,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
);
}
if (!$error) {
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Validate'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id]), $langs->trans('Validate'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
} else {
setEventMessage($langs->trans('Error'), 'errors');
$action = '';
@@ -465,7 +465,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
);
}
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Close'), $text, 'confirm_close', $formquestion, 0, 1, 220);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id]), $langs->trans('Close'), $text, 'confirm_close', $formquestion, 0, 1, 220);
}
// Confirmation of reopen
@@ -489,22 +489,22 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
);
}
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ReOpen'), $text, 'confirm_reopen', $formquestion, 0, 1, 220);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id]), $langs->trans('ReOpen'), $text, 'confirm_reopen', $formquestion, 0, 1, 220);
}
// Clone confirmation
if ($action == 'clone') {
// Create an array for form
$formquestion = array();
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneBillOfMaterials', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id]), $langs->trans('ToClone'), $langs->trans('ConfirmCloneBillOfMaterials', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
}
- // Confirmation of action xxxx
+ // Confirmation of action setdraft
if ($action == 'setdraft') {
$text = $langs->trans('ConfirmSetToDraft', $object->ref);
$formquestion = array();
- $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('SetToDraft'), $text, 'confirm_setdraft', $formquestion, 0, 1, 220);
+ $formconfirm = $form->formconfirm(dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id]), $langs->trans('SetToDraft'), $text, 'confirm_setdraft', $formquestion, 0, 1, 220);
}
// Call Hook formConfirm
@@ -741,14 +741,14 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
// Back to draft
if ($object->status == $object::STATUS_VALIDATED) {
if ($permissiontoadd) {
- print ''.$langs->trans("SetToDraft").''."\n";
+ print ''.$langs->trans("SetToDraft").''."\n";
}
}
// Modify
if ($object->status == $object::STATUS_DRAFT) {
if ($permissiontoadd) {
- print 'id.'&action=edit&token='.newToken().'">'.$langs->trans("Modify").''."\n";
+ print ' $object->id, 'action' => 'edit'], true).'">'.$langs->trans("Modify").''."\n";
} else {
print ''.$langs->trans('Modify').''."\n";
}
@@ -758,7 +758,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
if ($object->status == $object::STATUS_DRAFT) {
if ($permissiontoadd) {
if (is_array($object->lines) && count($object->lines) > 0) {
- print ''.$langs->trans("Validate").''."\n";
+ print ''.$langs->trans("Validate").''."\n";
} else {
$langs->load("errors");
print ''.$langs->trans("Validate").''."\n";
@@ -768,38 +768,38 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
// Re-open
if ($permissiontoadd && $object->status == $object::STATUS_CANCELED) {
- print ''.$langs->trans("ReOpen").''."\n";
+ print ''.$langs->trans("ReOpen").''."\n";
}
// Create MO
if (isModEnabled('mrp')) {
if ($object->status == $object::STATUS_VALIDATED && $user->hasRight('mrp', 'write')) {
- print 'id).'">'.$langs->trans("CreateMO").''."\n";
+ print ' $object->id])).'">'.$langs->trans("CreateMO").''."\n";
}
}
// Clone
if ($permissiontoadd) {
- print dolGetButtonAction($langs->trans("ToClone"), '', 'clone', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=clone&object=bom', 'clone', $permissiontoadd);
+ print dolGetButtonAction($langs->trans("ToClone"), '', 'clone', dolBuildUrl($_SERVER['PHP_SELF'], ['id' => $object->id, 'action' => 'clone', 'object' => 'bom'], true), 'clone', $permissiontoadd);
}
// Close / Cancel
if ($permissiontoadd && $object->status == $object::STATUS_VALIDATED) {
- print ''.$langs->trans("Disable").''."\n";
+ print ''.$langs->trans("Disable").''."\n";
}
/*
if ($user->hasRight('bom', 'write')) {
if ($object->status == 1) {
- print 'id.'&action=disable&token='.newToken().'">'.$langs->trans("Disable").''."\n";
+ print ' $object->id, 'action' => 'disenable'], true).'">'.$langs->trans("Disable").''."\n";
} else {
- print 'id.'&action=enable&token='.newToken().'">'.$langs->trans("Enable").''."\n";
+ print ' $object->id, 'action' => 'enable'], true).'">'.$langs->trans("Enable").''."\n";
}
}
*/
// Delete
- print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete);
+ print dolGetButtonAction($langs->trans("Delete"), '', 'delete', dolBuildUrl($_SERVER["PHP_SELF"], ['id' => $object->id, 'action' => 'delete'], true), 'delete', $permissiontodelete);
}
print ''."\n";
}
diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php
index bd951d9adf7..f6c06d7b1c6 100644
--- a/htdocs/bom/class/bom.class.php
+++ b/htdocs/bom/class/bom.class.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2019 Laurent Destailleur
* Copyright (C) 2023 Benjamin Falière
* Copyright (C) 2023 Charlene Benke
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2024-2026 MDW
*
* This program is free software; you can redistribute it and/or modify
@@ -1159,7 +1159,9 @@ class BOM extends CommonObject
$label = implode($this->getTooltipContentArray($params));
}
- $url = DOL_URL_ROOT.'/bom/bom_card.php?id='.$this->id;
+ $baseurl = DOL_URL_ROOT.'/bom/bom_card.php';
+
+ $query = ['id' => $this->id];
if ($option != 'nolink') {
// Add param to save lastsearch_values or not
@@ -1168,9 +1170,10 @@ class BOM extends CommonObject
$add_save_lastsearch_values = 1;
}
if ($add_save_lastsearch_values) {
- $url .= '&save_lastsearch_values=1';
+ $query = array_merge($query, ['save_lastsearch_values' => 1]);
}
}
+ $url = dolBuildUrl($baseurl, $query);
$linkclose = '';
if (empty($notooltip)) {
diff --git a/htdocs/loan/calcmens.php b/htdocs/loan/calcmens.php
index 9ac180674eb..c003d3aa6a7 100644
--- a/htdocs/loan/calcmens.php
+++ b/htdocs/loan/calcmens.php
@@ -1,7 +1,7 @@
* Copyright (C) 2020 Maxime DEMAREST
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -35,7 +35,6 @@ if (!defined('NOREQUIREAJAX')) {
// Load Dolibarr environment
require '../main.inc.php';
-require DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
/**
* @var Conf $conf
* @var DoliDB $db
@@ -43,6 +42,7 @@ require DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
* @var Translate $langs
* @var User $user
*/
+require DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
$mens = (float) price2num(GETPOST('mens'));
$capital = (float) price2num(GETPOST('capital'));
diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php
index 3d661cd1ac4..70e81f7bb42 100644
--- a/htdocs/loan/card.php
+++ b/htdocs/loan/card.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2015-2025 Frédéric France
+ * Copyright (C) 2015-2026 Frédéric France
* Copyright (C) 2017 Laurent Destailleur
* Copyright (C) 2020 Maxime DEMAREST
* Copyright (C) 2024-2025 MDW
@@ -27,6 +27,13 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
@@ -43,15 +50,6 @@ if (isModEnabled('project')) {
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
}
-
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("banks", "bills", "compta", "loan"));
diff --git a/htdocs/loan/document.php b/htdocs/loan/document.php
index d9c504ad468..12be55e6fa3 100644
--- a/htdocs/loan/document.php
+++ b/htdocs/loan/document.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2014-2024 Alexandre Spangaro
* Copyright (C) 2017 Ferran Marcet
* Copyright (C) 2024-2025 MDW
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -26,6 +26,13 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
@@ -36,14 +43,6 @@ if (isModEnabled('project')) {
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
}
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("other", "companies", "compta", "bills", "loan"));
diff --git a/htdocs/loan/info.php b/htdocs/loan/info.php
index 78757779f42..01a318a04bf 100644
--- a/htdocs/loan/info.php
+++ b/htdocs/loan/info.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2014-2024 Alexandre Spangaro
* Copyright (C) 2017 Ferran Marcet
* Copyright (C) 2024 MDW
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -26,13 +26,6 @@
// Load Dolibarr environment
require '../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
-if (isModEnabled('project')) {
- require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
-}
-
/**
* @var Conf $conf
* @var DoliDB $db
@@ -40,6 +33,12 @@ if (isModEnabled('project')) {
* @var Translate $langs
* @var User $user
*/
+require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+if (isModEnabled('project')) {
+ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+}
// Load translation files required by the page
$langs->loadLangs(array("compta", "bills", "loan"));
diff --git a/htdocs/loan/list.php b/htdocs/loan/list.php
index ebdd345935e..5871bab5b6c 100644
--- a/htdocs/loan/list.php
+++ b/htdocs/loan/list.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2015-2024 Frédéric France
+ * Copyright (C) 2015-2026 Frédéric France
* Copyright (C) 2015 Juanjo Menent
* Copyright (C) 2016 Laurent Destailleur
*
@@ -26,8 +26,6 @@
// Load Dolibarr environment
require '../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
-
/**
* @var Conf $conf
* @var DoliDB $db
@@ -35,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
* @var Translate $langs
* @var User $user
*/
+require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
// Load translation files required by the page
$langs->loadLangs(array("banks", "bills", "compta", "loan"));
diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php
index 2a4e015b6ac..7ded2fc2100 100644
--- a/htdocs/loan/note.php
+++ b/htdocs/loan/note.php
@@ -3,7 +3,7 @@
* Copyright (C) 2004-2007 Laurent Destailleur
* Copyright (C) 2005-2012 Regis Houssin
* Copyright (C) 2013 Florian Henry
- * Copyright (C) 2015-2025 Frédéric France
+ * Copyright (C) 2015-2026 Frédéric France
* Copyright (C) 2016-2025 Alexandre Spangaro
* Copyright (C) 2017 Ferran Marcet
* Copyright (C) 2024-2025 MDW
@@ -30,11 +30,6 @@
// Load Dolibarr environment
require '../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
-require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
-
/**
* @var Conf $conf
* @var DoliDB $db
@@ -42,6 +37,10 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
* @var Translate $langs
* @var User $user
*/
+require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
+require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
$action = GETPOST('action', 'aZ09');
diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php
index 05acdc903f0..23742c2d28b 100644
--- a/htdocs/loan/payment/card.php
+++ b/htdocs/loan/payment/card.php
@@ -1,7 +1,7 @@
* Copyright (C) 2024 MDW
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -25,12 +25,6 @@
// Load Dolibarr environment
require '../../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
-if (isModEnabled("bank")) {
- require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
-}
-
/**
* @var Conf $conf
* @var DoliDB $db
@@ -38,6 +32,11 @@ if (isModEnabled("bank")) {
* @var Translate $langs
* @var User $user
*/
+require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
+require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
+if (isModEnabled("bank")) {
+ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
+}
// Load translation files required by the page
$langs->loadLangs(array("bills", "banks", "companies", "loan"));
@@ -102,6 +101,7 @@ $help_url = "EN:Module_Loan|FR:Module_Emprunt";
llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'bodyforlist mod-loan page-payment-card');
$h = 0;
+$head = [];
$head = array();
$head[$h][0] = DOL_URL_ROOT.'/loan/payment/card.php?id='.$id;
diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php
index 28e06ff4bd2..60337fcb99b 100644
--- a/htdocs/loan/payment/payment.php
+++ b/htdocs/loan/payment/payment.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2015-2025 Frédéric France
+ * Copyright (C) 2015-2026 Frédéric France
* Copyright (C) 2020 Maxime DEMAREST
* Copyright (C) 2025 MDW
*
@@ -26,12 +26,6 @@
// Load Dolibarr environment
require '../../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/loanschedule.class.php';
-require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
-require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
-
/**
* @var Conf $conf
* @var DoliDB $db
@@ -39,11 +33,16 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
* @var Translate $langs
* @var User $user
*/
+require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
+require_once DOL_DOCUMENT_ROOT.'/loan/class/loanschedule.class.php';
+require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
+require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
$langs->loadLangs(array("bills", "loan"));
$action = GETPOST('action', 'aZ09');
-$confirm = GETPOST('confirm', 'alpha');
+$confirm = GETPOST('confirm', 'alpha');
$cancel = GETPOST('cancel', 'alpha');
$chid = GETPOSTINT('id');
diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php
index 0e2ad762c98..0b5318b738d 100644
--- a/htdocs/loan/schedule.php
+++ b/htdocs/loan/schedule.php
@@ -3,7 +3,7 @@
* Copyright (C) 2018-2024 Alexandre Spangaro
* Copyright (C) 2020 Maxime DEMAREST
* Copyright (C) 2024-2026 MDW
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -27,6 +27,13 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
@@ -37,14 +44,6 @@ if (isModEnabled('project')) {
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
}
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
$loanid = GETPOSTINT('loanid');
$action = GETPOST('action', 'aZ09');
diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php
index eed9752de36..3a464b934c5 100644
--- a/htdocs/mrp/class/mo.class.php
+++ b/htdocs/mrp/class/mo.class.php
@@ -1,7 +1,7 @@
* Copyright (C) 2020 Lenin Rivas
- * Copyright (C) 2023-2025 Frédéric France
+ * Copyright (C) 2023-2026 Frédéric France
* Copyright (C) 2024-2026 MDW
* Copyright (C) 2025 Noé Cendrier
*
@@ -1543,11 +1543,13 @@ class Mo extends CommonObject
$label = implode($this->getTooltipContentArray($params));
}
- $url = DOL_URL_ROOT.'/mrp/mo_card.php?id='.$this->id;
+ $baseurl = DOL_URL_ROOT.'/mrp/mo_card.php';
if ($option == 'production') {
- $url = DOL_URL_ROOT.'/mrp/mo_production.php?id='.$this->id;
+ $baseurl = DOL_URL_ROOT.'/mrp/mo_production.php';
}
+ $query = ['id' => $this->id];
+
if ($option != 'nolink') {
// Add param to save lastsearch_values or not
$add_save_lastsearch_values = ($save_lastsearch_value == 1 ? 1 : 0);
@@ -1555,9 +1557,10 @@ class Mo extends CommonObject
$add_save_lastsearch_values = 1;
}
if ($add_save_lastsearch_values) {
- $url .= '&save_lastsearch_values=1';
+ $query = array_merge($query, ['save_lastsearch_values' => 1]);
}
}
+ $url = dolBuildUrl($baseurl, $query);
$linkclose = '';
if (empty($notooltip)) {
diff --git a/htdocs/mrp/mo_agenda.php b/htdocs/mrp/mo_agenda.php
index 5067c0260a5..c10f3d10e77 100644
--- a/htdocs/mrp/mo_agenda.php
+++ b/htdocs/mrp/mo_agenda.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2024 Alexandre Spangaro
* Copyright (C) 2024-2025 MDW
*
@@ -26,6 +26,14 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
@@ -35,15 +43,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php';
-
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("mrp", "other"));
@@ -91,7 +90,6 @@ if (!$sortorder) {
// Initialize a technical objects
$object = new Mo($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('moagenda', 'globalcard')); // Note that conf->hooks_modules contains array
diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php
index 232a58f161d..e9192c85597 100644
--- a/htdocs/mrp/mo_card.php
+++ b/htdocs/mrp/mo_card.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2017-2020 Laurent Destailleur
* Copyright (C) 2024 Alexandre Spangaro
* Copyright (C) 2024-2025 MDW
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -27,7 +27,15 @@
// Load Dolibarr environment
require '../main.inc.php';
-
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Societe $mysoc
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
@@ -42,16 +50,6 @@ if (isModEnabled('workstation')) {
require_once DOL_DOCUMENT_ROOT.'/workstation/class/workstation.class.php';
}
-
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Societe $mysoc
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array('mrp', 'other'));
@@ -73,7 +71,6 @@ $socid = GETPOSTINT("socid");
$object = new Mo($db);
$objectbom = new BOM($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('mocard', 'globalcard')); // Note that conf->hooks_modules contains array
diff --git a/htdocs/mrp/mo_document.php b/htdocs/mrp/mo_document.php
index 53944f77e15..e2fdcc269f1 100644
--- a/htdocs/mrp/mo_document.php
+++ b/htdocs/mrp/mo_document.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2024 Alexandre Spangaro
* Copyright (C) 2025 MDW
*
@@ -26,7 +26,14 @@
// Load Dolibarr environment
require '../main.inc.php';
-
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
@@ -36,14 +43,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php';
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("mrp", "companies", "other", "mails"));
@@ -74,7 +73,6 @@ if (!$sortfield) {
// Initialize a technical objects
$object = new Mo($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('modocument', 'globalcard')); // Note that conf->hooks_modules contains array
diff --git a/htdocs/mrp/mo_list.php b/htdocs/mrp/mo_list.php
index bc4c6ab761e..68cb5411a3f 100644
--- a/htdocs/mrp/mo_list.php
+++ b/htdocs/mrp/mo_list.php
@@ -1,7 +1,7 @@
* Copyright (C) 2024 Alexandre Spangaro
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2025 MDW
*
* This program is free software; you can redistribute it and/or modify
@@ -26,7 +26,14 @@
// Load Dolibarr environment
require '../main.inc.php';
-
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
@@ -39,14 +46,6 @@ if (isModEnabled('category')) {
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcategory.class.php';
}
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("mrp", "other"));
@@ -59,7 +58,7 @@ $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button
$toselect = GETPOST('toselect', 'array:int'); // Array of ids of elements selected into a list
$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search
$backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
-$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
+$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
$mode = GETPOST('mode', 'alpha');
$groupby = GETPOST('groupby', 'aZ09'); // Example: $groupby = 'p.fk_opp_status' or $groupby = 'p.fk_statut'
@@ -92,7 +91,6 @@ $pagenext = $page + 1;
// Initialize a technical objects
$object = new Mo($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array($contextpage)); // Note that conf->hooks_modules contains array of activated contexes
diff --git a/htdocs/mrp/mo_movements.php b/htdocs/mrp/mo_movements.php
index b8e49048c7e..928e320d95e 100644
--- a/htdocs/mrp/mo_movements.php
+++ b/htdocs/mrp/mo_movements.php
@@ -1,7 +1,7 @@
* Copyright (C) 2022 Ferran Marcet
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2024 Alexandre Spangaro
* Copyright (C) 2024-2025 MDW
*
@@ -27,6 +27,14 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
@@ -39,14 +47,6 @@ require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php';
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("mrp", "stocks", "other"));
@@ -95,7 +95,6 @@ if (!$sortorder) {
// Initialize a technical objects
$object = new Mo($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('mocard', 'globalcard', 'mocardmovelist' )); // Note that conf->hooks_modules contains array
diff --git a/htdocs/mrp/mo_note.php b/htdocs/mrp/mo_note.php
index da66e229a6c..edacf43f88d 100644
--- a/htdocs/mrp/mo_note.php
+++ b/htdocs/mrp/mo_note.php
@@ -1,6 +1,6 @@
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2024 Alexandre Spangaro
* Copyright (C) 2025 MDW
*
@@ -26,20 +26,20 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/class/mo.class.php';
require_once DOL_DOCUMENT_ROOT.'/mrp/lib/mrp_mo.lib.php';
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("mrp", "companies"));
@@ -52,7 +52,6 @@ $backtopage = GETPOST('backtopage', 'alpha');
// Initialize a technical objects
$object = new Mo($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('monote', 'globalcard')); // Note that conf->hooks_modules contains array
diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php
index 2b38cbcd2b6..2cc6ed2716e 100644
--- a/htdocs/mrp/mo_production.php
+++ b/htdocs/mrp/mo_production.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2019-2020 Laurent Destailleur
* Copyright (C) 2023 Christian Humpel
* Copyright (C) 2023 Vincent de Grandpré
- * Copyright (C) 2024-2025 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
* Copyright (C) 2024-2025 MDW
* Copyright (C) 2024 Alexandre Spangaro
* Copyright (C) 2025 Noé Cendrier
@@ -29,6 +29,14 @@
// Load Dolibarr environment
require '../main.inc.php';
+/**
+ * @var Conf $conf
+ * @var DoliDB $db
+ * @var ExtraFields $extrafields
+ * @var HookManager $hookmanager
+ * @var Translate $langs
+ * @var User $user
+ */
require_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
@@ -43,15 +51,6 @@ require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php';
require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php';
require_once DOL_DOCUMENT_ROOT.'/workstation/class/workstation.class.php';
-
-/**
- * @var Conf $conf
- * @var DoliDB $db
- * @var HookManager $hookmanager
- * @var Translate $langs
- * @var User $user
- */
-
// Load translation files required by the page
$langs->loadLangs(array("mrp", "stocks", "other", "product", "productbatch"));
@@ -71,7 +70,6 @@ $collapse = GETPOST('collapse', 'aZ09comma');
// Initialize a technical objects
$object = new Mo($db);
-$extrafields = new ExtraFields($db);
$diroutputmassaction = $conf->mrp->dir_output.'/temp/massgeneration/'.$user->id;
$objectline = new MoLine($db);
diff --git a/htdocs/subtotals/core/substitutions/functions_subtotals.lib.php b/htdocs/subtotals/core/substitutions/functions_subtotals.lib.php
index b3b1cc35432..c11ac7c012f 100644
--- a/htdocs/subtotals/core/substitutions/functions_subtotals.lib.php
+++ b/htdocs/subtotals/core/substitutions/functions_subtotals.lib.php
@@ -1,7 +1,7 @@
+ * Copyright (C) 2025-2026 Frédéric France
*
* 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
diff --git a/htdocs/workstation/class/workstationresource.class.php b/htdocs/workstation/class/workstationresource.class.php
index b72bf804de1..73225f01fa0 100644
--- a/htdocs/workstation/class/workstationresource.class.php
+++ b/htdocs/workstation/class/workstationresource.class.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2017 Laurent Destailleur
* Copyright (C) 2020 Gauthier VERDOL
* Copyright (C) 2024-2026 MDW
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -95,7 +95,12 @@ class WorkstationResource extends CommonObject
{
global $db;
$obj = new self($db);
- return array_map('intval', parent::getAllItemsLinkedByObjectID($fk_workstation, 'fk_resource', 'fk_workstation', $obj->table_element));
+ $all_items = parent::getAllItemsLinkedByObjectID($fk_workstation, 'fk_resource', 'fk_workstation', $obj->table_element);
+ if (!is_array($all_items)) {
+ return [];
+ }
+
+ return array_map('intval', $all_items);
}
/**
diff --git a/htdocs/workstation/class/workstationusergroup.class.php b/htdocs/workstation/class/workstationusergroup.class.php
index 9b62594540a..ef5f5925d32 100644
--- a/htdocs/workstation/class/workstationusergroup.class.php
+++ b/htdocs/workstation/class/workstationusergroup.class.php
@@ -2,7 +2,7 @@
/* Copyright (C) 2017 Laurent Destailleur
* Copyright (C) 2020 Gauthier VERDOL
* Copyright (C) 2024-2026 MDW
- * Copyright (C) 2024 Frédéric France
+ * Copyright (C) 2024-2026 Frédéric France
*
* 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
@@ -95,7 +95,12 @@ class WorkstationUserGroup extends CommonObject
global $db;
$obj = new self($db);
- return array_map('intval', parent::getAllItemsLinkedByObjectID($fk_workstation, 'fk_usergroup', 'fk_workstation', $obj->table_element));
+ $all_items = parent::getAllItemsLinkedByObjectID($fk_workstation, 'fk_usergroup', 'fk_workstation', $obj->table_element);
+ if (!is_array($all_items)) {
+ return [];
+ }
+
+ return array_map('intval', $all_items);
}
/**