'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
show_day_events($db, $day, $month, $year, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, 0, $bookcalcalendars);
print '
';
diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php
index 0b07926aad8..4a20bf2dc9e 100644
--- a/htdocs/comm/card.php
+++ b/htdocs/comm/card.php
@@ -36,6 +36,7 @@
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php';
require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
diff --git a/htdocs/comm/mailing/advtargetemailing.php b/htdocs/comm/mailing/advtargetemailing.php
index bb296e516ee..e0098643747 100644
--- a/htdocs/comm/mailing/advtargetemailing.php
+++ b/htdocs/comm/mailing/advtargetemailing.php
@@ -448,6 +448,7 @@ if ($object->fetch($id) >= 0) {
$nbemail = ($object->nbemail ? $object->nbemail : '0');
if (getDolGlobalString('MAILING_LIMIT_SENDBYWEB') && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) {
$text = $langs->trans('LimitSendingEmailing', getDolGlobalString('MAILING_LIMIT_SENDBYWEB'));
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
print $form->textwithpicto($nbemail, $text, 1, 'warning');
} else {
print $nbemail;
diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php
index d38984a2b79..d1bde067b1e 100644
--- a/htdocs/comm/mailing/cibles.php
+++ b/htdocs/comm/mailing/cibles.php
@@ -480,7 +480,7 @@ if ($object->fetch($id) >= 0) {
$obj = new $classname($db);
// Check if qualified
- $qualified = (is_null($obj->enabled) ? 1 : dol_eval($obj->enabled, 1));
+ $qualified = (is_null($obj->enabled) ? 1 : (int) dol_eval($obj->enabled, 1));
// Check dependencies
foreach ($obj->require_module as $key) {
diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index 8618b1049fd..0a03d0cc1cd 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -77,6 +77,7 @@ $mode = GETPOST('mode', 'alpha');
// Search Fields
$search_all = trim((GETPOST('search_all', 'alphanohtml') != '') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
$search_user = GETPOSTINT('search_user');
+if ($search_user==-1) $search_user=0;
$search_sale = GETPOSTINT('search_sale');
$search_ref = GETPOST('sf_ref') ? GETPOST('sf_ref', 'alpha') : GETPOST('search_ref', 'alpha');
$search_refcustomer = GETPOST('search_refcustomer', 'alpha');
@@ -268,7 +269,7 @@ foreach ($object->fields as $key => $val) {
$arrayfields['t.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
- 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
+ 'enabled'=>(abs($visible) != 3 && (int) dol_eval($val['enabled'], 1)),
'position'=>$val['position'],
'help'=> isset($val['help']) ? $val['help'] : ''
);
@@ -587,7 +588,7 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent)";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_departements as state on (state.rowid = s.fk_departement)";
-$sql .= ', '.MAIN_DB_PREFIX.'propal as p';
+$sql .= ' INNER JOIN '.MAIN_DB_PREFIX.'propal as p ON p.fk_soc = s.rowid';
if (!empty($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (p.rowid = ef.fk_object)";
}
@@ -598,8 +599,10 @@ $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON p.fk_user_author = u.rowid';
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."projet as pr ON pr.rowid = p.fk_projet";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_availability as ava on (ava.rowid = p.fk_availability)";
if ($search_user > 0) {
- $sql .= ", ".MAIN_DB_PREFIX."element_contact as c";
- $sql .= ", ".MAIN_DB_PREFIX."c_type_contact as tc";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."element_contact as c";
+ $sql .= " ON c.element_id = p.rowid AND c.fk_socpeople = ".((int) $search_user);
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."c_type_contact as tc";
+ $sql .= " ON c.fk_c_type_contact = tc.rowid AND tc.element='propal' AND tc.source='internal'";
}
// Add table from hooks
@@ -607,8 +610,8 @@ $parameters = array();
$reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook
$sql .= $hookmanager->resPrint;
-$sql .= ' WHERE p.fk_soc = s.rowid';
-$sql .= ' AND p.entity IN ('.getEntity('propal').')';
+$sql .= ' WHERE';
+$sql .= ' p.entity IN ('.getEntity('propal').')';
if ($search_town) {
$sql .= natural_search('s.town', $search_town);
}
@@ -718,9 +721,6 @@ if ($search_date_delivery_start) {
if ($search_date_delivery_end) {
$sql .= " AND p.date_livraison <= '".$db->idate($search_date_delivery_end)."'";
}
-if ($search_user > 0) {
- $sql .= " AND c.fk_c_type_contact = tc.rowid AND tc.element='propal' AND tc.source='internal' AND c.element_id = p.rowid AND c.fk_socpeople = ".((int) $search_user);
-}
if ($search_date_signature_start) {
$sql .= " AND p.date_signature >= '".$db->idate($search_date_signature_start)."'";
}
@@ -1147,7 +1147,7 @@ if ($search_date_signature_endyear) {
if ($user->hasRight('user', 'user', 'lire')) {
$moreforfilter .= '';
$tmptitle = $langs->trans('LinkedToSpecificUsers');
- $moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$form->select_dolusers($search_user, 'search_user', $tmptitle, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth250 widthcentpercentminusx');
+ $moreforfilter .= img_picto($tmptitle, 'user', 'class="pictofixedwidth"').$form->select_dolusers((empty($search_user)?-2:0), 'search_user', $tmptitle, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth250 widthcentpercentminusx');
$moreforfilter .= '
';
}
// If the user can view products
diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php
index a6c9cf5a361..c3cd5cd37a1 100644
--- a/htdocs/compta/cashcontrol/cashcontrol_list.php
+++ b/htdocs/compta/cashcontrol/cashcontrol_list.php
@@ -110,7 +110,7 @@ foreach ($object->fields as $key => $val) {
$arrayfields['t.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
- 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
+ 'enabled'=>(abs($visible) != 3 && (int) dol_eval($val['enabled'], 1)),
'position'=>$val['position'],
'help'=> isset($val['help']) ? $val['help'] : ''
);
diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php
index ca53310fb71..10b20b58b85 100644
--- a/htdocs/compta/facture/card.php
+++ b/htdocs/compta/facture/card.php
@@ -1009,7 +1009,7 @@ if (empty($reshook)) {
$paiement = new Paiement($db);
$result = $paiement->fetch(GETPOSTINT('paiement_id'));
if ($result > 0) {
- $result = $paiement->delete(); // If fetch ok and found
+ $result = $paiement->delete($user); // If fetch ok and found
if ($result >= 0) {
header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
exit;
@@ -2093,7 +2093,7 @@ if (empty($reshook)) {
// Set if we used free entry or predefined product
$predef = '';
- $product_desc =(GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
+ $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : '');
$price_ht = '';
$price_ht_devise = '';
@@ -2292,8 +2292,8 @@ if (empty($reshook)) {
}
//If text set in desc is the same as product descpription (as now it's preloaded) we add it only one time
- if ($product_desc==$desc && getDolGlobalString('PRODUIT_AUTOFILL_DESC')) {
- $product_desc='';
+ if ($product_desc == $desc && getDolGlobalString('PRODUIT_AUTOFILL_DESC')) {
+ $product_desc = '';
}
if (!empty($product_desc) && getDolGlobalString('MAIN_NO_CONCAT_DESCRIPTION')) {
@@ -2347,10 +2347,16 @@ if (empty($reshook)) {
$type = $prod->type;
$fk_unit = $prod->fk_unit;
} else {
- if (!empty($price_ht)) $pu_ht = price2num($price_ht, 'MU');
- else $pu_ht = '';
- if (!empty($price_ttc)) $pu_ttc = price2num($price_ttc, 'MU');
- else $pu_ttc = '';
+ if (!empty($price_ht)) {
+ $pu_ht = price2num($price_ht, 'MU');
+ } else {
+ $pu_ht = '';
+ }
+ if (!empty($price_ttc)) {
+ $pu_ttc = price2num($price_ttc, 'MU');
+ } else {
+ $pu_ttc = '';
+ }
$tva_npr = (preg_match('/\*/', $tva_tx) ? 1 : 0);
$tva_tx = str_replace('*', '', $tva_tx);
if (empty($tva_tx)) {
@@ -2822,7 +2828,7 @@ if (empty($reshook)) {
&& !$objectidnext
&& $object->is_last_in_cycle()
&& $usercanunvalidate
- ) {
+ ) {
$outingError = 0;
$newCycle = $object->newCycle(); // we need to keep the "situation behavior" so we place it on a new situation cycle
if ($newCycle > 1) {
@@ -2836,7 +2842,7 @@ if (empty($reshook)) {
if ($next_invoice->type == Facture::TYPE_CREDIT_NOTE
&& $next_invoice->situation_counter == $object->situation_counter
&& $next_invoice->fk_facture_source == $object->id
- ) {
+ ) {
$linkedCreditNotesList[] = $next_invoice->id;
}
}
@@ -3942,7 +3948,7 @@ if ($action == 'create') {
}
// Other attributes
- $parameters = array('objectsrc' => !empty($objectsrc) ? $objectsrc : 0, 'colspan' => ' colspan="2"', 'cols' => '2', 'socid'=>$socid);
+ $parameters = array('objectsrc' => !empty($objectsrc) ? $objectsrc : 0, 'colspan' => ' colspan="2"', 'cols' => '2', 'socid' => $socid);
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
if (empty($reshook)) {
@@ -4276,7 +4282,7 @@ if ($action == 'create') {
&& !$objectidnext
&& $object->is_last_in_cycle()
&& $usercanunvalidate
- ) {
+ ) {
$formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $label, $text, 'confirm_situationout', $formquestion, "yes", 1);
}
}
@@ -5444,6 +5450,7 @@ if ($action == 'create') {
$text .= ''.$langs->trans($title).' ';
$bac = new CompanyBankAccount($db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$bac->fetch(0, $object->thirdparty->id);
print $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic;
diff --git a/htdocs/compta/paiement/card.php b/htdocs/compta/paiement/card.php
index 23112324c96..34b08386bca 100644
--- a/htdocs/compta/paiement/card.php
+++ b/htdocs/compta/paiement/card.php
@@ -120,7 +120,7 @@ if (empty($reshook)) {
if ($action == 'confirm_delete' && $confirm == 'yes' && $user->hasRight('facture', 'paiement')) {
$db->begin();
- $result = $object->delete();
+ $result = $object->delete($user);
if ($result > 0) {
$db->commit();
diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php
index 54768afbba2..0594855dce2 100644
--- a/htdocs/compta/paiement/class/paiement.class.php
+++ b/htdocs/compta/paiement/class/paiement.class.php
@@ -594,15 +594,13 @@ class Paiement extends CommonObject
* Delete a payment and generated links into account
* - Si le paiement porte sur un ecriture compte qui est rapprochee, on refuse
* - Si le paiement porte sur au moins une facture a "payee", on refuse
- * @TODO Add first param User $user
*
+ * @param User $user User making the deletion
* @param int $notrigger No trigger
* @return int Return integer <0 if KO, >0 if OK
*/
- public function delete($notrigger = 0)
+ public function delete($user, $notrigger = 0)
{
- global $user;
-
$error = 0;
$bank_line_id = $this->bank_line;
diff --git a/htdocs/compta/prelevement/create.php b/htdocs/compta/prelevement/create.php
index 930c01db9fe..8102984f3b2 100644
--- a/htdocs/compta/prelevement/create.php
+++ b/htdocs/compta/prelevement/create.php
@@ -258,7 +258,7 @@ if ($sourcetype != 'salary') {
$pricetowithdraw = $bprev->SommeAPrelever($type, 'salary');
}
if ($nb < 0) {
- dol_print_error($bprev->error);
+ dol_print_error($db, $bprev->error);
}
print '';
@@ -479,7 +479,7 @@ if ($resql) {
}
$title = $langs->trans("InvoiceWaitingWithdraw");
$picto = 'bill';
- if ($type =='bank-transfer') {
+ if ($type == 'bank-transfer') {
if ($sourcetype != 'salary') {
$title = $langs->trans("InvoiceWaitingPaymentByBankTransfer");
} else {
diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php
index 0a38507ccb6..72bb5428b75 100644
--- a/htdocs/compta/resultat/result.php
+++ b/htdocs/compta/resultat/result.php
@@ -351,10 +351,7 @@ if ($modecompta == 'CREANCES-DETTES') {
} else {
//var_dump($result);
//$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1, 1, '1');
- if (is_nan($r)) {
- $r = 0;
- }
+ $r = (float) dol_eval($result, 1, 1, '1');
print ''.price($r).' ';
}
@@ -378,10 +375,7 @@ if ($modecompta == 'CREANCES-DETTES') {
$result = str_replace('--', '+', $result);
//$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1, 1, '1');
- if (is_nan($r)) {
- $r = 0;
- }
+ $r = (float) dol_eval($result, 1, 1, '1');
print ''.price($r).' ';
if (empty($sommes[$code]['N'])) {
@@ -400,10 +394,7 @@ if ($modecompta == 'CREANCES-DETTES') {
$result = str_replace('--', '+', $result);
//$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1, 1, '1');
- if (is_nan($r)) {
- $r = 0;
- }
+ $r = (float) dol_eval($result, 1, 1, '1');
print ''.price($r).' ';
if (empty($sommes[$code]['M'][$k])) {
@@ -423,10 +414,7 @@ if ($modecompta == 'CREANCES-DETTES') {
$result = str_replace('--', '+', $result);
//$r = $AccCat->calculate($result);
- $r = dol_eval($result, 1, 1, '1');
- if (is_nan($r)) {
- $r = 0;
- }
+ $r = (float) dol_eval($result, 1, 1, '1');
print ''.price($r).' ';
if (empty($sommes[$code]['M'][$k])) {
diff --git a/htdocs/compta/tva/payments.php b/htdocs/compta/tva/payments.php
index f67add4b840..83f044af16f 100644
--- a/htdocs/compta/tva/payments.php
+++ b/htdocs/compta/tva/payments.php
@@ -146,6 +146,7 @@ if ($resql) {
setEventMessages($db->lasterror, null, 'errors');
}
+// @phan-suppress-next-line PhanPluginSuspiciousParamPosition
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $center, $num, $num, 'title_accountancy', 0, '', '', $limit);
if (isModEnabled('tax') && $user->hasRight('tax', 'charges', 'lire')) {
diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php
index 6ae0192bfe1..96e58140742 100644
--- a/htdocs/contact/list.php
+++ b/htdocs/contact/list.php
@@ -227,7 +227,7 @@ foreach ($object->fields as $key => $val) {
$arrayfields['p.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
- 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
+ 'enabled'=>(abs($visible) != 3 && (int) dol_eval($val['enabled'], 1)),
'position'=>$val['position'],
'help'=> isset($val['help']) ? $val['help'] : ''
);
diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php
index 651b48e40a4..1acea501327 100644
--- a/htdocs/core/actions_massactions.inc.php
+++ b/htdocs/core/actions_massactions.inc.php
@@ -1084,13 +1084,8 @@ if (!$error && ($massaction == 'delete' || ($action == 'delete' && $confirm == '
if ($objecttmp->element == 'societe') {
/** @var Societe $objecttmp */
+ // TODO Change signature of delete for Societe
$result = $objecttmp->delete($objecttmp->id, $user, 1);
- } elseif ($objecttmp->element == 'member') {
- /** @var Adherent $objecttmp */
- $result = $objecttmp->delete($objecttmp->id, $user, 0);
- } elseif ($objecttmp->element == 'action') {
- /** @var ActionComm $objecttmp */
- $result = $objecttmp->delete(); // TODO Add User $user as first param
} else {
$result = $objecttmp->delete($user);
}
diff --git a/htdocs/core/boxes/box_scheduled_jobs.php b/htdocs/core/boxes/box_scheduled_jobs.php
index 6bcb71d5311..539781c0da9 100644
--- a/htdocs/core/boxes/box_scheduled_jobs.php
+++ b/htdocs/core/boxes/box_scheduled_jobs.php
@@ -89,7 +89,7 @@ class box_scheduled_jobs extends ModeleBoxes
while ($i < $num) {
$objp = $this->db->fetch_object($result);
- if (dol_eval($objp->test, 1, 1, '2')) {
+ if ((int) dol_eval($objp->test, 1, 1, '2')) {
$nextrun = $this->db->jdate($objp->datenextrun);
if (empty($nextrun)) {
$nextrun = $this->db->jdate($objp->datestart);
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 564f7d84493..f2a66a77bf9 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -477,13 +477,13 @@ abstract class CommonObject
public $fk_multicurrency;
/**
- * @var string|array Multicurrency code
+ * @var string|string[] Multicurrency code
* Or, just for the Paiement object, an array: invoice ID => currency code for that invoice.
*/
public $multicurrency_code;
/**
- * @var float|array Multicurrency rate ("tx" = "taux" in French)
+ * @var float|float[] Multicurrency rate ("tx" = "taux" in French)
* Or, just for the Paiement object, an array: invoice ID => currency rate for that invoice.
*/
public $multicurrency_tx;
@@ -921,14 +921,14 @@ abstract class CommonObject
}
$enabled = 1;
if ($enabled && isset($extrafields->attributes[$this->table_element]['enabled'][$key])) {
- $enabled = dol_eval($extrafields->attributes[$this->table_element]['enabled'][$key], 1, 1, '2');
+ $enabled = (int) dol_eval($extrafields->attributes[$this->table_element]['enabled'][$key], 1, 1, '2');
}
if ($enabled && isset($extrafields->attributes[$this->table_element]['list'][$key])) {
- $enabled = dol_eval($extrafields->attributes[$this->table_element]['list'][$key], 1, 1, '2');
+ $enabled = (int) dol_eval($extrafields->attributes[$this->table_element]['list'][$key], 1, 1, '2');
}
$perms = 1;
if ($perms && isset($extrafields->attributes[$this->table_element]['perms'][$key])) {
- $perms = dol_eval($extrafields->attributes[$this->table_element]['perms'][$key], 1, 1, '2');
+ $perms = (int) dol_eval($extrafields->attributes[$this->table_element]['perms'][$key], 1, 1, '2');
}
if (empty($enabled)) {
continue; // 0 = Never visible field
@@ -3992,11 +3992,8 @@ abstract class CommonObject
$origin = 'order_supplier';
}
- // Elements of the core modules which have `$module` property but may to which we don't want to prefix module part to the element name for finding the linked object in llx_element_element.
- // It's because an entry for this element may be exist in llx_element_element before this modification (version <=14.2) and ave named only with their element name in fk_source or fk_target.
- $coremodule = array('knowledgemanagement', 'partnership', 'workstation', 'ticket', 'recruitment', 'eventorganization', 'asset');
- // Add module part to target type if object has $module property and isn't in core modules.
- $targettype = ((!empty($this->module) && ! in_array($this->module, $coremodule)) ? $this->module.'_' : '').$this->element;
+ // Add module part to target type
+ $targettype = $this->getElementType();
$parameters = array('targettype' => $targettype);
// Hook for explicitly set the targettype if it must be differtent than $this->element
@@ -4048,6 +4045,21 @@ abstract class CommonObject
}
}
+ /**
+ * Return element type string formatted like element_element target_type and source_type
+ *
+ * @return string
+ */
+ public function getElementType()
+ {
+ // Elements of the core modules having a `$module` property but for which we may not want to prefix the element name with the module name for finding the linked object in llx_element_element.
+ // It's because existing llx_element_element entries inserted prior to this modification (version <=14.2) may already use the element name alone in fk_source or fk_target (without the module name prefix).
+ $coreModule = array('knowledgemanagement', 'partnership', 'workstation', 'ticket', 'recruitment', 'eventorganization', 'asset');
+ // Add module part to target type if object has $module property and isn't in core modules.
+ return ((!empty($this->module) && !in_array($this->module, $coreModule)) ? $this->module.'_' : '').$this->element;
+ }
+
+
/**
* Fetch array of objects linked to current object (object of enabled modules only). Links are loaded into
* this->linkedObjectsIds array +
@@ -6180,12 +6192,12 @@ abstract class CommonObject
$enabled = 1;
if (isset($this->fields[$key]['enabled'])) {
- $enabled = dol_eval($this->fields[$key]['enabled'], 1, 1, '1');
+ $enabled = (int) dol_eval($this->fields[$key]['enabled'], 1, 1, '1');
}
/*$perms = 1;
if (isset($this->fields[$key]['perms']))
{
- $perms = dol_eval($this->fields[$key]['perms'], 1, 1, '1');
+ $perms = (int) dol_eval($this->fields[$key]['perms'], 1, 1, '1');
}*/
if (empty($enabled)) {
continue;
@@ -8596,7 +8608,7 @@ abstract class CommonObject
// Test on 'enabled' ('enabled' is different than 'list' = 'visibility')
$enabled = 1;
if ($enabled && isset($extrafields->attributes[$this->table_element]['enabled'][$key])) {
- $enabled = dol_eval($extrafields->attributes[$this->table_element]['enabled'][$key], 1, 1, '2');
+ $enabled = (int) dol_eval($extrafields->attributes[$this->table_element]['enabled'][$key], 1, 1, '2');
}
if (empty($enabled)) {
continue;
@@ -8604,12 +8616,12 @@ abstract class CommonObject
$visibility = 1;
if ($visibility && isset($extrafields->attributes[$this->table_element]['list'][$key])) {
- $visibility = dol_eval($extrafields->attributes[$this->table_element]['list'][$key], 1, 1, '2');
+ $visibility = (int) dol_eval($extrafields->attributes[$this->table_element]['list'][$key], 1, 1, '2');
}
$perms = 1;
if ($perms && isset($extrafields->attributes[$this->table_element]['perms'][$key])) {
- $perms = dol_eval($extrafields->attributes[$this->table_element]['perms'][$key], 1, 1, '2');
+ $perms = (int) dol_eval($extrafields->attributes[$this->table_element]['perms'][$key], 1, 1, '2');
}
if (($mode == 'create') && abs($visibility) != 1 && abs($visibility) != 3) {
diff --git a/htdocs/core/class/commonstickergenerator.class.php b/htdocs/core/class/commonstickergenerator.class.php
index fa98bed7b41..ba63bba320e 100644
--- a/htdocs/core/class/commonstickergenerator.class.php
+++ b/htdocs/core/class/commonstickergenerator.class.php
@@ -190,7 +190,9 @@ abstract class CommonStickerGenerator extends CommonDocGenerator
for ($i = $x1; $i <= $x2; $i += $Pointilles + $Pointilles) {
for ($j = $i; $j <= ($i + $Pointilles); $j++) {
if ($j <= ($x2 - 1)) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$pdf->Line($j, $y1, $j + 1, $y1); // on trace le pointill? du haut, point par point
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$pdf->Line($j, $y2, $j + 1, $y2); // on trace le pointill? du bas, point par point
}
}
@@ -198,7 +200,9 @@ abstract class CommonStickerGenerator extends CommonDocGenerator
for ($i = $y1; $i <= $y2; $i += $Pointilles + $Pointilles) {
for ($j = $i; $j <= ($i + $Pointilles); $j++) {
if ($j <= ($y2 - 1)) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$pdf->Line($x1, $j, $x1, $j + 1); // on trace le pointill? du haut, point par point
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$pdf->Line($x2, $j, $x2, $j + 1); // on trace le pointill? du bas, point par point
}
}
@@ -257,8 +261,8 @@ abstract class CommonStickerGenerator extends CommonDocGenerator
{
if ($src != $dest) {
$tab = array(
- 'in'=>39.37008,
- 'mm'=>1000
+ 'in' => 39.37008,
+ 'mm' => 1000
);
return $value * $tab[$dest] / $tab[$src];
}
@@ -278,7 +282,7 @@ abstract class CommonStickerGenerator extends CommonDocGenerator
{
// phpcs:enable
// Array for link between height of characters and space between lines
- $_Table_Hauteur_Chars = array(6=>2, 7=>2.5, 8=>3, 9=>3.5, 10=>4, 11=>6, 12=>7, 13=>8, 14=>9, 15=>10);
+ $_Table_Hauteur_Chars = array(6 => 2, 7 => 2.5, 8 => 3, 9 => 3.5, 10 => 4, 11 => 6, 12 => 7, 13 => 8, 14 => 9, 15 => 10);
if (in_array($pt, array_keys($_Table_Hauteur_Chars))) {
return $_Table_Hauteur_Chars[$pt];
} else {
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index 7bcdab198e0..a7b6cc9ac22 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -966,9 +966,9 @@ class ExtraFields
$unique = $this->attributes[$extrafieldsobjectkey]['unique'][$key];
$required = $this->attributes[$extrafieldsobjectkey]['required'][$key];
$param = $this->attributes[$extrafieldsobjectkey]['param'][$key];
- $perms = dol_eval($this->attributes[$extrafieldsobjectkey]['perms'][$key], 1, 1, '2');
+ $perms = (int) dol_eval($this->attributes[$extrafieldsobjectkey]['perms'][$key], 1, 1, '2');
$langfile = $this->attributes[$extrafieldsobjectkey]['langfile'][$key];
- $list = dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1, 1, '2');
+ $list = (string) dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1, 1, '2');
$totalizable = $this->attributes[$extrafieldsobjectkey]['totalizable'][$key];
$help = $this->attributes[$extrafieldsobjectkey]['help'][$key];
$hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller)
@@ -1649,9 +1649,9 @@ class ExtraFields
$unique = $this->attributes[$extrafieldsobjectkey]['unique'][$key];
$required = $this->attributes[$extrafieldsobjectkey]['required'][$key];
$param = $this->attributes[$extrafieldsobjectkey]['param'][$key];
- $perms = dol_eval($this->attributes[$extrafieldsobjectkey]['perms'][$key], 1, 1, '2');
+ $perms = (int) dol_eval($this->attributes[$extrafieldsobjectkey]['perms'][$key], 1, 1, '2');
$langfile = $this->attributes[$extrafieldsobjectkey]['langfile'][$key];
- $list = dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1, 1, '2');
+ $list = (string) dol_eval($this->attributes[$extrafieldsobjectkey]['list'][$key], 1, 1, '2');
$help = $this->attributes[$extrafieldsobjectkey]['help'][$key];
$hidden = (empty($list) ? 1 : 0); // If $list empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller)
@@ -2154,17 +2154,17 @@ class ExtraFields
$enabled = 1;
if (isset($this->attributes[$object->table_element]['enabled'][$key])) { // 'enabled' is often a condition on module enabled or not
- $enabled = dol_eval($this->attributes[$object->table_element]['enabled'][$key], 1, 1, '2');
+ $enabled = (int) dol_eval($this->attributes[$object->table_element]['enabled'][$key], 1, 1, '2');
}
$visibility = 1;
if (isset($this->attributes[$object->table_element]['list'][$key])) { // 'list' is option for visibility
- $visibility = intval(dol_eval($this->attributes[$object->table_element]['list'][$key], 1, 1, '2'));
+ $visibility = (int) dol_eval($this->attributes[$object->table_element]['list'][$key], 1, 1, '2');
}
$perms = 1;
if (isset($this->attributes[$object->table_element]['perms'][$key])) {
- $perms = dol_eval($this->attributes[$object->table_element]['perms'][$key], 1, 1, '2');
+ $perms = (int) dol_eval($this->attributes[$object->table_element]['perms'][$key], 1, 1, '2');
}
if (empty($enabled)
|| (
diff --git a/htdocs/core/class/fiscalyear.class.php b/htdocs/core/class/fiscalyear.class.php
index 7d617e1ecb3..c1592b01db3 100644
--- a/htdocs/core/class/fiscalyear.class.php
+++ b/htdocs/core/class/fiscalyear.class.php
@@ -254,16 +254,16 @@ class Fiscalyear extends CommonObject
/**
* Delete record
*
- * @param int $id Id of record to delete
+ * @param User $user User that delete
* @return int Return integer <0 if KO, >0 if OK
*/
- public function delete($id)
+ public function delete($user)
{
$this->db->begin();
- $sql = "DELETE FROM ".$this->db->prefix()."accounting_fiscalyear WHERE rowid = ".((int) $id);
+ $sql = "DELETE FROM ".$this->db->prefix()."accounting_fiscalyear";
+ $sql .= " WHERE rowid = ".((int) $this->id);
- dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$result = $this->db->query($sql);
if ($result) {
$this->db->commit();
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 4f3da187b8a..630602e2c75 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -796,12 +796,15 @@ class Form
} elseif ($type == 'helpclickable') {
$img = img_help(($tooltiptrigger != '' ? 2 : 1), $alt);
} elseif ($type == 'superadmin') {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$img = img_picto($alt, 'redstar');
} elseif ($type == 'admin') {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$img = img_picto($alt, 'star');
} elseif ($type == 'warning') {
$img = img_warning($alt);
} elseif ($type != 'none') {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$img = img_picto($alt, $type); // $type can be an image path
}
@@ -2222,11 +2225,11 @@ class Form
$outarray[$userstatic->id] = $userstatic->getFullName($langs, $fullNameMode, -1, $maxlength) . $moreinfo;
$outarray2[$userstatic->id] = array(
- 'id'=>$userstatic->id,
- 'label'=>$labeltoshow,
- 'labelhtml'=>$labeltoshowhtml,
- 'color'=>'',
- 'picto'=>''
+ 'id' => $userstatic->id,
+ 'label' => $labeltoshow,
+ 'labelhtml' => $labeltoshowhtml,
+ 'color' => '',
+ 'picto' => ''
);
$i++;
@@ -3370,7 +3373,7 @@ class Form
}
}
- $parameters = array('objp'=>$objp);
+ $parameters = array('objp' => $objp);
$reshook = $hookmanager->executeHooks('constructProductListOption', $parameters); // Note that $action and $object may have been modified by hook
if (empty($reshook)) {
$opt .= $hookmanager->resPrint;
@@ -5375,11 +5378,11 @@ class Form
}
$more .= $this->selectDate($input['value'], $input['name'], $h, $m, 0, '', 1, $addnowlink);
$more .= ''."\n";
- $formquestion[] = array('name'=>$input['name'].'day');
- $formquestion[] = array('name'=>$input['name'].'month');
- $formquestion[] = array('name'=>$input['name'].'year');
- $formquestion[] = array('name'=>$input['name'].'hour');
- $formquestion[] = array('name'=>$input['name'].'min');
+ $formquestion[] = array('name' => $input['name'].'day');
+ $formquestion[] = array('name' => $input['name'].'month');
+ $formquestion[] = array('name' => $input['name'].'year');
+ $formquestion[] = array('name' => $input['name'].'hour');
+ $formquestion[] = array('name' => $input['name'].'min');
} elseif ($input['type'] == 'other') { // can be 1 column or 2 depending if label is set or not
$more .= '';
if (!empty($input['label'])) {
@@ -7202,7 +7205,7 @@ class Form
// Add a link to set data
if ($conf->use_javascript_ajax && !empty($adddateof)) {
if (!is_array($adddateof)) {
- $arrayofdateof = array(array('adddateof'=>$adddateof, 'labeladddateof'=>$labeladddateof));
+ $arrayofdateof = array(array('adddateof' => $adddateof, 'labeladddateof' => $labeladddateof));
} else {
$arrayofdateof = $adddateof;
}
@@ -8050,22 +8053,22 @@ class Form
* Can use autocomplete with ajax after x key pressed or a full combo, depending on setup.
* This is the generic method that will replace all specific existing methods.
*
- * @param string $objectdesc 'ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]'. For hard coded custom needs. Try to prefer method using $objectfield instead of $objectdesc.
- * @param string $htmlname Name of HTML select component
- * @param int $preselectedvalue Preselected value (ID of element)
- * @param string $showempty ''=empty values not allowed, 'string'=value show if we allow empty values (for example 'All', ...)
- * @param string $searchkey Search criteria
- * @param string $placeholder Place holder
- * @param string $morecss More CSS
- * @param string $moreparams More params provided to ajax call
- * @param int $forcecombo Force to load all values and output a standard combobox (with no beautification)
- * @param int $disabled 1=Html component is disabled
- * @param string $selected_input_value Value of preselected input text (for use with ajax)
- * @param string $objectfield Object:Field that contains the definition (in table $fields or $extrafields). Example: 'Object:xxx' or 'Module_Object:xxx' or 'Object:options_xxx' or 'Module_Object:options_xxx'
+ * @param string $objectdesc 'ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]'. For hard coded custom needs. Try to prefer method using $objectfield instead of $objectdesc.
+ * @param string $htmlname Name of HTML select component
+ * @param int $preSelectedValue Preselected value (ID of element)
+ * @param string $showempty ''=empty values not allowed, 'string'=value show if we allow empty values (for example 'All', ...)
+ * @param string $searchkey Search criteria
+ * @param string $placeholder Place holder
+ * @param string $morecss More CSS
+ * @param string $moreparams More params provided to ajax call
+ * @param int $forcecombo Force to load all values and output a standard combobox (with no beautification)
+ * @param int $disabled 1=Html component is disabled
+ * @param string $selected_input_value Value of preselected input text (for use with ajax)
+ * @param string $objectfield Object:Field that contains the definition (in table $fields or $extrafields). Example: 'Object:xxx' or 'Module_Object:xxx' or 'Object:options_xxx' or 'Module_Object:options_xxx'
* @return string Return HTML string
* @see selectForFormsList(), select_thirdparty_list()
*/
- public function selectForForms($objectdesc, $htmlname, $preselectedvalue, $showempty = '', $searchkey = '', $placeholder = '', $morecss = '', $moreparams = '', $forcecombo = 0, $disabled = 0, $selected_input_value = '', $objectfield = '')
+ public function selectForForms($objectdesc, $htmlname, $preSelectedValue, $showempty = '', $searchkey = '', $placeholder = '', $morecss = '', $moreparams = '', $forcecombo = 0, $disabled = 0, $selected_input_value = '', $objectfield = '')
{
global $conf, $extrafields, $user;
@@ -8164,10 +8167,25 @@ class Form
if (!empty($conf->use_javascript_ajax) && getDolGlobalString($confkeyforautocompletemode) && !$forcecombo) {
// No immediate load of all database
$placeholder = '';
- if ($preselectedvalue && empty($selected_input_value)) {
- $objecttmp->fetch($preselectedvalue);
+
+ if ($preSelectedValue && empty($selected_input_value)) {
+ $objecttmp->fetch($preSelectedValue);
$selected_input_value = ($prefixforautocompletemode == 'company' ? $objecttmp->name : $objecttmp->ref);
- //unset($objecttmp);
+
+ $oldValueForShowOnCombobox = 0;
+ foreach ($objecttmp->fields as $fieldK => $fielV) {
+ if (!$fielV['showoncombobox'] || empty($objecttmp->$fieldK)) {
+ continue;
+ }
+
+ if (!$oldValueForShowOnCombobox) {
+ $selected_input_value = '';
+ }
+
+ $selected_input_value .= $oldValueForShowOnCombobox ? ' - ' : '';
+ $selected_input_value .= $objecttmp->$fieldK;
+ $oldValueForShowOnCombobox = empty($fielV['showoncombobox']) ? 0 : $fielV['showoncombobox'];
+ }
}
// Set url and param to call to get json of the search results
@@ -8175,12 +8193,12 @@ class Form
$urloption = 'htmlname=' . urlencode($htmlname) . '&outjson=1&objectdesc=' . urlencode($objectdescorig) . '&objectfield='.urlencode($objectfield) . ($sortfield ? '&sortfield=' . urlencode($sortfield) : '');
// Activate the auto complete using ajax call.
- $out .= ajax_autocompleter($preselectedvalue, $htmlname, $urlforajaxcall, $urloption, getDolGlobalString($confkeyforautocompletemode), 0, array());
+ $out .= ajax_autocompleter($preSelectedValue, $htmlname, $urlforajaxcall, $urloption, getDolGlobalString($confkeyforautocompletemode), 0);
$out .= '';
$out .= '
';
} else {
// Immediate load of table record.
- $out .= $this->selectForFormsList($objecttmp, $htmlname, $preselectedvalue, $showempty, $searchkey, $placeholder, $morecss, $moreparams, $forcecombo, 0, $disabled, $sortfield, $filter);
+ $out .= $this->selectForFormsList($objecttmp, $htmlname, $preSelectedValue, $showempty, $searchkey, $placeholder, $morecss, $moreparams, $forcecombo, 0, $disabled, $sortfield, $filter);
}
return $out;
@@ -8222,7 +8240,7 @@ class Form
if (!empty($objecttmp->fields)) { // For object that declare it, it is better to use declared fields (like societe, contact, ...)
$tmpfieldstoshow = '';
foreach ($objecttmp->fields as $key => $val) {
- if (!dol_eval($val['enabled'], 1, 1, '1')) {
+ if (! (int) dol_eval($val['enabled'], 1, 1, '1')) {
continue;
}
if (!empty($val['showoncombobox'])) {
@@ -10710,8 +10728,8 @@ class Form
include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
$searchtags = removeGlobalParenthesis($searchtags);
- $ret .= '
';
- $ret .= 'x ';
+ $ret .= '';
+ $ret .= 'x ';
$ret .= dol_escape_htmltag($searchtags);
$ret .= ' ';
}
diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php
index 606becf17c2..8c998f0cc50 100644
--- a/htdocs/core/class/html.formmail.class.php
+++ b/htdocs/core/class/html.formmail.class.php
@@ -1521,7 +1521,7 @@ class FormMail extends Form
'basic' => 'basic',
'news' => 'news',
'commerce' => 'commerce',
- 'text' => 'text'
+ //'text' => 'text'
);
foreach ($templates as $template => $templateFunction) {
diff --git a/htdocs/core/class/html.formsms.class.php b/htdocs/core/class/html.formsms.class.php
index f9cecb96867..4aa0bd0ed61 100644
--- a/htdocs/core/class/html.formsms.class.php
+++ b/htdocs/core/class/html.formsms.class.php
@@ -1,7 +1,7 @@
* Copyright (C) 2010 Juanjo Menent
- * Copyright (C) 2018 Frédéric France
+ * Copyright (C) 2018-2024 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
@@ -41,6 +41,10 @@ class FormSms
public $fromid;
public $fromname;
public $fromsms;
+
+ /**
+ * @var string
+ */
public $fromtype;
public $replytoname;
public $replytomail;
@@ -48,9 +52,25 @@ class FormSms
public $tomail;
public $withsubstit; // Show substitution array
+
+ /**
+ * @var int
+ */
public $withfrom;
+
+ /**
+ * @var int
+ */
public $withto;
+
+ /**
+ * @var int
+ */
public $withtopic;
+
+ /**
+ * @var int
+ */
public $withbody;
/**
diff --git a/htdocs/core/class/menu.class.php b/htdocs/core/class/menu.class.php
index 0b908997d15..6b93331127e 100644
--- a/htdocs/core/class/menu.class.php
+++ b/htdocs/core/class/menu.class.php
@@ -119,7 +119,6 @@ class Menu
{
$nb = 0;
foreach ($this->liste as $val) {
- //if (dol_eval($val['enabled'], 1, 1, '1')) $nb++;
if (!empty($val['enabled'])) {
$nb++; // $val['enabled'] is already evaluated to 0 or 1, no need for dol_eval()
}
diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php
index ebda232e331..25dc836be3c 100644
--- a/htdocs/core/class/menubase.class.php
+++ b/htdocs/core/class/menubase.class.php
@@ -434,7 +434,7 @@ class Menubase
$this->title = $obj->title;
$this->prefix = $obj->prefix;
$this->langs = $obj->langs;
- $this->perms = $obj->perms;
+ $this->perms = str_replace("\"", "'", $obj->perms);
$this->enabled = str_replace("\"", "'", $obj->enabled);
$this->user = $obj->user;
$this->tms = $this->db->jdate($obj->tms);
@@ -665,7 +665,7 @@ class Menubase
if (isset($menu['perms'])) {
$tmpcond = $menu['perms'];
if ($leftmenu == 'all') {
- $tmpcond = preg_replace('/\$leftmenu\s*==\s*["\'a-zA-Z_]+/', '1==1', $tmpcond); // Force part of condition to true
+ $tmpcond = preg_replace('/\$leftmenu\s*==\s*["\'a-zA-Z_]+/', '1==1', $tmpcond); // Force the part of condition on leftmenu to true
}
$perms = verifCond($tmpcond);
//print "verifCond rowid=".$menu['rowid']." ".$tmpcond.":".$perms." \n";
@@ -676,7 +676,7 @@ class Menubase
if (isset($menu['enabled'])) {
$tmpcond = $menu['enabled'];
if ($leftmenu == 'all') {
- $tmpcond = preg_replace('/\$leftmenu\s*==\s*["\'a-zA-Z_]+/', '1==1', $tmpcond); // Force part of condition to true
+ $tmpcond = preg_replace('/\$leftmenu\s*==\s*["\'a-zA-Z_]+/', '1==1', $tmpcond); // Force the part of condition on leftmenu to true
}
$enabled = verifCond($tmpcond);
//var_dump($menu['type'].' - '.$menu['titre'].' - '.$menu['enabled'].' => '.$enabled);
diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php
index 5cd303acaa0..96daa0479f8 100644
--- a/htdocs/core/class/translate.class.php
+++ b/htdocs/core/class/translate.class.php
@@ -727,7 +727,6 @@ class Translate
return $str;
} else { // Translation is not available
- //if ($key[0] == '$') { return dol_eval($key, 1, 1, '1'); }
return $this->getTradFromKey($key);
}
}
@@ -796,9 +795,6 @@ class Translate
return $str;
} else {
- /*if ($key[0] == '$') {
- return dol_eval($key, 1, 1, '1');
- }*/
return $this->getTradFromKey($key);
}
}
diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php
index 3f1b42aa5c2..c8409cbe9ae 100644
--- a/htdocs/core/class/utils.class.php
+++ b/htdocs/core/class/utils.class.php
@@ -157,7 +157,7 @@ class Utils
}
}
if (!$alreadyincluded) {
- $filesarray[] = array('fullname'=>$filelog, 'type'=>'file');
+ $filesarray[] = array('fullname' => $filelog, 'type' => 'file');
}
}
}
@@ -783,7 +783,7 @@ class Utils
dol_syslog("Utils::executeCLI result=".$result." output=".$output." error=".$error, LOG_DEBUG);
- return array('result'=>$result, 'output'=>$output, 'error'=>$error);
+ return array('result' => $result, 'output' => $output, 'error' => $error);
}
/**
@@ -909,25 +909,26 @@ class Utils
//var_dump($phpfileval['fullname']);
$arrayreplacement = array(
- 'mymodule'=>strtolower($module),
- 'MyModule'=>$module,
- 'MYMODULE'=>strtoupper($module),
- 'My module'=>$module,
- 'my module'=>$module,
- 'Mon module'=>$module,
- 'mon module'=>$module,
- 'htdocs/modulebuilder/template'=>strtolower($module),
- '__MYCOMPANY_NAME__'=>$mysoc->name,
- '__KEYWORDS__'=>$module,
- '__USER_FULLNAME__'=>$user->getFullName($langs),
- '__USER_EMAIL__'=>$user->email,
- '__YYYY-MM-DD__'=>dol_print_date($now, 'dayrfc'),
- '---Put here your own copyright and developer email---'=>dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''),
- '__DATA_SPECIFICATION__'=>'Not yet available',
- '__README__'=>dolMd2Asciidoc($contentreadme),
- '__CHANGELOG__'=>dolMd2Asciidoc($contentchangelog),
+ 'mymodule' => strtolower($module),
+ 'MyModule' => $module,
+ 'MYMODULE' => strtoupper($module),
+ 'My module' => $module,
+ 'my module' => $module,
+ 'Mon module' => $module,
+ 'mon module' => $module,
+ 'htdocs/modulebuilder/template' => strtolower($module),
+ '__MYCOMPANY_NAME__' => $mysoc->name,
+ '__KEYWORDS__' => $module,
+ '__USER_FULLNAME__' => $user->getFullName($langs),
+ '__USER_EMAIL__' => $user->email,
+ '__YYYY-MM-DD__' => dol_print_date($now, 'dayrfc'),
+ '---Put here your own copyright and developer email---' => dol_print_date($now, 'dayrfc').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''),
+ '__DATA_SPECIFICATION__' => 'Not yet available',
+ '__README__' => dolMd2Asciidoc($contentreadme),
+ '__CHANGELOG__' => dolMd2Asciidoc($contentchangelog),
);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
dolReplaceInFile($destfile, $arrayreplacement);
}
diff --git a/htdocs/core/get_info.php b/htdocs/core/get_info.php
index e5ab3e0c3cd..28434f7d405 100644
--- a/htdocs/core/get_info.php
+++ b/htdocs/core/get_info.php
@@ -142,6 +142,7 @@ if (isModEnabled('modulebuilder')) {
//$text.= img_picto(":".$langs->trans("ModuleBuilder"), 'printer_top.png', 'class="printer"');
$text .= ' ';
$text .= '';
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$toprightmenu .= $form->textwithtooltip('', $langs->trans("ModuleBuilder"), 2, 1, $text, 'login_block_elem', 2);
}
diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php
index 91f76b66cdd..81fe78a073c 100644
--- a/htdocs/core/lib/ajax.lib.php
+++ b/htdocs/core/lib/ajax.lib.php
@@ -628,19 +628,19 @@ function ajax_event($htmlname, $events)
/**
* On/off button for constant
*
- * @param string $code Name of constant
- * @param array $input Array of complementary actions to do if success ("disabled"|"enabled'|'set'|'del') => CSS element to switch, 'alert' => message to show, ... Example: array('disabled'=>array(0=>'cssid'))
- * @param int $entity Entity. Current entity is used if null.
- * @param int $revertonoff 1=Revert on/off
- * @param int $strict Use only "disabled" with delConstant and "enabled" with setConstant
- * @param int $forcereload Force to reload page if we click/change value (this is supported only when there is no 'alert' option in input)
- * @param int $marginleftonlyshort 1 = Add a short left margin on picto, 2 = Add a larger left margin on picto, 0 = No left margin.
- * @param int $forcenoajax 1 = Force to use a ahref link instead of ajax code.
- * @param int $setzeroinsteadofdel 1 = Set constantto '0' instead of deleting it
- * @param string $suffix Suffix to use on the name of the switch_on picto. Example: '', '_red'
- * @param string $mode Add parameter &mode= to the href link (Used for href link)
- * @param string $morecss More CSS
- * @return string
+ * @param string $code Name of constant
+ * @param array $input Array of complementary actions to do if success ("disabled"|"enabled'|'set'|'del') => CSS element to switch, 'alert' => message to show, ... Example: array('disabled'=>array(0=>'cssid'))
+ * @param int|null $entity Entity. Current entity is used if null.
+ * @param int $revertonoff 1=Revert on/off
+ * @param int $strict Use only "disabled" with delConstant and "enabled" with setConstant
+ * @param int $forcereload Force to reload page if we click/change value (this is supported only when there is no 'alert' option in input)
+ * @param int $marginleftonlyshort 1 = Add a short left margin on picto, 2 = Add a larger left margin on picto, 0 = No left margin.
+ * @param int $forcenoajax 1 = Force to use a ahref link instead of ajax code.
+ * @param int $setzeroinsteadofdel 1 = Set constantto '0' instead of deleting it
+ * @param string $suffix Suffix to use on the name of the switch_on picto. Example: '', '_red'
+ * @param string $mode Add parameter &mode= to the href link (Used for href link)
+ * @param string $morecss More CSS
+ * @return string
*/
function ajax_constantonoff($code, $input = array(), $entity = null, $revertonoff = 0, $strict = 0, $forcereload = 0, $marginleftonlyshort = 2, $forcenoajax = 0, $setzeroinsteadofdel = 0, $suffix = '', $mode = '', $morecss = 'inline-block')
{
diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php
index c5209a3790d..01afca27f93 100644
--- a/htdocs/core/lib/company.lib.php
+++ b/htdocs/core/lib/company.lib.php
@@ -390,7 +390,7 @@ function societe_prepare_head(Societe $object)
$head[$h][0] = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id;
$head[$h][1] = $langs->trans("Events");
- if (isModEnabled('agenda')&& ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
+ if (isModEnabled('agenda') && ($user->hasRight('agenda', 'myactions', 'read') || $user->hasRight('agenda', 'allactions', 'read'))) {
$nbEvent = 0;
// Enable caching of thirdparty count actioncomm
require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
@@ -537,7 +537,7 @@ function getCountry($searchkey, $withcode = '', $dbtouse = null, $outputlangs =
// Check parameters
if (empty($searchkey) && empty($searchlabel)) {
if ($withcode === 'all') {
- return array('id'=>'', 'code'=>'', 'label'=>'');
+ return array('id' => '', 'code' => '', 'label' => '');
} else {
return '';
}
@@ -578,7 +578,7 @@ function getCountry($searchkey, $withcode = '', $dbtouse = null, $outputlangs =
} elseif ($withcode == 3) {
$result = $obj->rowid;
} elseif ($withcode === 'all') {
- $result = array('id'=>$obj->rowid, 'code'=>$obj->code, 'label'=>$label);
+ $result = array('id' => $obj->rowid, 'code' => $obj->code, 'label' => $label);
} else {
$result = $label;
}
@@ -651,9 +651,9 @@ function getState($id, $withcode = '', $dbtouse = null, $withregion = 0, $output
}
} elseif ($withcode === 'all') {
if ($withregion == 1) {
- return array('id'=>$obj->id, 'code'=>$obj->code, 'label'=>$label, 'region_code'=>$obj->region_code, 'region'=>$obj->region_name);
+ return array('id' => $obj->id, 'code' => $obj->code, 'label' => $label, 'region_code' => $obj->region_code, 'region' => $obj->region_name);
} else {
- return array('id'=>$obj->id, 'code'=>$obj->code, 'label'=>$label);
+ return array('id' => $obj->id, 'code' => $obj->code, 'label' => $label);
}
} else {
if ($withregion == 1) {
@@ -962,7 +962,7 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel
dol_print_error($db);
}
- $parameters = array('sql'=>$sql, 'function'=>'show_projects');
+ $parameters = array('sql' => $sql, 'function' => 'show_projects');
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
@@ -1062,36 +1062,36 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
$extrafields->fetch_name_optionals_label($contactstatic->table_element);
$contactstatic->fields = array(
- 'rowid' =>array('type'=>'integer', 'label'=>"TechnicalID", 'enabled'=>(getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'visible'=>(getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'position'=>1),
- 'name' =>array('type'=>'varchar(128)', 'label'=>'Name', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1),
- 'poste' =>array('type'=>'varchar(128)', 'label'=>'PostOrFunction', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>2, 'index'=>1, 'position'=>20),
- 'address' =>array('type'=>'varchar(128)', 'label'=>'Address', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>3, 'index'=>1, 'position'=>30),
- 'note_private' =>array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>(!getDolGlobalInt('MAIN_LIST_HIDE_PRIVATE_NOTES')), 'visible'=>3, 'position'=>35),
- 'role' =>array('type'=>'checkbox', 'label'=>'Role', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>4, 'index'=>1, 'position'=>40),
- 'birthday' =>array('type'=>'date', 'label'=>'Birthday', 'enabled'=>1, 'visible'=>-1, 'notnull'=> 0, 'position'=>45),
- 'statut' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'default'=>0, 'index'=>1, 'position'=>50, 'arrayofkeyval'=>array(0=>$contactstatic->LibStatut(0, 1), 1=>$contactstatic->LibStatut(1, 1))),
+ 'rowid' => array('type' => 'integer', 'label' => "TechnicalID", 'enabled' => (getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'visible' => (getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'position' => 1),
+ 'name' => array('type' => 'varchar(128)', 'label' => 'Name', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'showoncombobox' => 1, 'index' => 1, 'position' => 10, 'searchall' => 1),
+ 'poste' => array('type' => 'varchar(128)', 'label' => 'PostOrFunction', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'showoncombobox' => 2, 'index' => 1, 'position' => 20),
+ 'address' => array('type' => 'varchar(128)', 'label' => 'Address', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'showoncombobox' => 3, 'index' => 1, 'position' => 30),
+ 'note_private' => array('type' => 'html', 'label' => 'NotePrivate', 'enabled' => (!getDolGlobalInt('MAIN_LIST_HIDE_PRIVATE_NOTES')), 'visible' => 3, 'position' => 35),
+ 'role' => array('type' => 'checkbox', 'label' => 'Role', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'showoncombobox' => 4, 'index' => 1, 'position' => 40),
+ 'birthday' => array('type' => 'date', 'label' => 'Birthday', 'enabled' => 1, 'visible' => -1, 'notnull' => 0, 'position' => 45),
+ 'statut' => array('type' => 'integer', 'label' => 'Status', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'default' => 0, 'index' => 1, 'position' => 50, 'arrayofkeyval' => array(0 => $contactstatic->LibStatut(0, 1), 1 => $contactstatic->LibStatut(1, 1))),
);
// Definition of fields for list
$arrayfields = array(
- 't.rowid'=>array('label'=>"TechnicalID", 'checked'=>(getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'enabled'=>(getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'position'=>1),
- 't.name'=>array('label'=>"Name", 'checked'=>1, 'position'=>10),
- 't.poste'=>array('label'=>"PostOrFunction", 'checked'=>1, 'position'=>20),
- 't.address'=>array('label'=>(empty($conf->dol_optimize_smallscreen) ? $langs->trans("Address").' / '.$langs->trans("Phone").' / '.$langs->trans("Email") : $langs->trans("Address")), 'checked'=>1, 'position'=>30),
- 't.note_private' => array('label' => 'NotePrivate', 'checked' => 0, 'position'=>35),
- 'sc.role'=>array('label'=>"ContactByDefaultFor", 'checked'=>1, 'position'=>40),
- 't.birthday'=>array('label'=>"Birthday", 'checked'=>0, 'position'=>45),
- 't.statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>50, 'class'=>'center'),
+ 't.rowid' => array('label' => "TechnicalID", 'checked' => (getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'enabled' => (getDolGlobalString('MAIN_SHOW_TECHNICAL_ID') ? 1 : 0), 'position' => 1),
+ 't.name' => array('label' => "Name", 'checked' => 1, 'position' => 10),
+ 't.poste' => array('label' => "PostOrFunction", 'checked' => 1, 'position' => 20),
+ 't.address' => array('label' => (empty($conf->dol_optimize_smallscreen) ? $langs->trans("Address").' / '.$langs->trans("Phone").' / '.$langs->trans("Email") : $langs->trans("Address")), 'checked' => 1, 'position' => 30),
+ 't.note_private' => array('label' => 'NotePrivate', 'checked' => 0, 'position' => 35),
+ 'sc.role' => array('label' => "ContactByDefaultFor", 'checked' => 1, 'position' => 40),
+ 't.birthday' => array('label' => "Birthday", 'checked' => 0, 'position' => 45),
+ 't.statut' => array('label' => "Status", 'checked' => 1, 'position' => 50, 'class' => 'center'),
);
// Extra fields
if (!empty($extrafields->attributes[$contactstatic->table_element]['label']) && is_array($extrafields->attributes[$contactstatic->table_element]['label']) && count($extrafields->attributes[$contactstatic->table_element]['label'])) {
foreach ($extrafields->attributes[$contactstatic->table_element]['label'] as $key => $val) {
if (!empty($extrafields->attributes[$contactstatic->table_element]['list'][$key])) {
$arrayfields["ef.".$key] = array(
- 'label'=>$extrafields->attributes[$contactstatic->table_element]['label'][$key],
- 'checked'=>((dol_eval($extrafields->attributes[$contactstatic->table_element]['list'][$key], 1, 1, '1') < 0) ? 0 : 1),
- 'position'=>1000 + $extrafields->attributes[$contactstatic->table_element]['pos'][$key],
- 'enabled' => (abs((int) dol_eval($extrafields->attributes[$contactstatic->table_element]['list'][$key], 1)) != 3 && dol_eval($extrafields->attributes[$contactstatic->table_element]['perms'][$key], 1, 1, '1'))
+ 'label' => $extrafields->attributes[$contactstatic->table_element]['label'][$key],
+ 'checked' => (((int) dol_eval($extrafields->attributes[$contactstatic->table_element]['list'][$key], 1, 1, '1') < 0) ? 0 : 1),
+ 'position' => 1000 + $extrafields->attributes[$contactstatic->table_element]['pos'][$key],
+ 'enabled' => (abs((int) dol_eval($extrafields->attributes[$contactstatic->table_element]['list'][$key], 1)) != 3 && (int) dol_eval($extrafields->attributes[$contactstatic->table_element]['perms'][$key], 1, 1, '1'))
);
}
}
@@ -1274,7 +1274,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
if (!empty($arrayfields['t.'.$key]['checked']) || !empty($arrayfields['sc.'.$key]['checked'])) {
print '';
if (in_array($key, array('statut'))) {
- print $form->selectarray('search_status', array('-1'=>'', '0'=>$contactstatic->LibStatut(0, 1), '1'=>$contactstatic->LibStatut(1, 1)), $search_status, 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage');
+ print $form->selectarray('search_status', array('-1' => '', '0' => $contactstatic->LibStatut(0, 1), '1' => $contactstatic->LibStatut(1, 1)), $search_status, 0, 0, 0, '', 0, 0, 0, '', 'onrightofpage');
} elseif (in_array($key, array('role'))) {
print $formcompany->showRoles("search_roles", $contactstatic, 'edit', $search_roles, 'minwidth200 maxwidth300');
} elseif (in_array($key, array('birthday'))) {
@@ -1298,7 +1298,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
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, $contactstatic); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
// Action column
@@ -1345,7 +1345,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
$extrafieldsobjectkey = $contactstatic->table_element;
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;
// Action column
@@ -1406,7 +1406,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
print ' ';
// Add to agenda
- if (isModEnabled('agenda')&& $user->hasRight('agenda', 'myactions', 'create')) {
+ if (isModEnabled('agenda') && $user->hasRight('agenda', 'myactions', 'create')) {
print '';
print img_object($langs->trans("Event"), "action");
print ' ';
@@ -1484,7 +1484,8 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
if ($showuserlogin) {
print ' ';
- $tmpuser= new User($db);
+ $tmpuser = new User($db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$resfetch = $tmpuser->fetch(0, '', '', 0, -1, '', $contactstatic->id);
if ($resfetch > 0) {
print $tmpuser->getNomUrl(1, '', 0, 0, 24, 1);
@@ -1501,7 +1502,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl
print ' ';
// Add to agenda
- if (isModEnabled('agenda')&& $user->hasRight('agenda', 'myactions', 'create')) {
+ if (isModEnabled('agenda') && $user->hasRight('agenda', 'myactions', 'create')) {
print '';
print img_object($langs->trans("Event"), "action");
print ' ';
@@ -1686,7 +1687,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = null, $nopr
$parameters = array('sql' => &$sql, 'filterobj' => $filterobj, 'objcon' => $objcon);
$reshook = $hookmanager->executeHooks('showActionsDoneListSelect', $parameters); // Note that $action and $object may have been modified by hook
if (!empty($hookmanager->resPrint)) {
- $sql.= $hookmanager->resPrint;
+ $sql .= $hookmanager->resPrint;
}
$sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as a";
@@ -1708,7 +1709,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = null, $nopr
$parameters = array('sql' => &$sql, 'filterobj' => $filterobj, 'objcon' => $objcon);
$reshook = $hookmanager->executeHooks('showActionsDoneListFrom', $parameters); // Note that $action and $object may have been modified by hook
if (!empty($hookmanager->resPrint)) {
- $sql.= $hookmanager->resPrint;
+ $sql .= $hookmanager->resPrint;
}
if (is_object($filterobj) && in_array(get_class($filterobj), array('Societe', 'Client', 'Fournisseur'))) {
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON a.fk_contact = sp.rowid";
@@ -1829,7 +1830,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = null, $nopr
$parameters = array('sql' => &$sql, 'filterobj' => $filterobj, 'objcon' => $objcon, 'module' => $module);
$reshook = $hookmanager->executeHooks('showActionsDoneListWhere', $parameters); // Note that $action and $object may have been modified by hook
if (!empty($hookmanager->resPrint)) {
- $sql.= $hookmanager->resPrint;
+ $sql .= $hookmanager->resPrint;
}
if (is_array($actioncode)) {
@@ -1893,48 +1894,48 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = null, $nopr
}
$histo[$numaction] = array(
- 'type'=>$obj->type,
- 'tododone'=>$tododone,
- 'id'=>$obj->id,
- 'datestart'=>$db->jdate($obj->dp),
- 'dateend'=>$db->jdate($obj->dp2),
- 'note'=>$obj->label,
- 'percent'=>$obj->percent,
+ 'type' => $obj->type,
+ 'tododone' => $tododone,
+ 'id' => $obj->id,
+ 'datestart' => $db->jdate($obj->dp),
+ 'dateend' => $db->jdate($obj->dp2),
+ 'note' => $obj->label,
+ 'percent' => $obj->percent,
- 'userid'=>$obj->user_id,
- 'login'=>$obj->user_login,
- 'userfirstname'=>$obj->user_firstname,
- 'userlastname'=>$obj->user_lastname,
- 'userphoto'=>$obj->user_photo,
+ 'userid' => $obj->user_id,
+ 'login' => $obj->user_login,
+ 'userfirstname' => $obj->user_firstname,
+ 'userlastname' => $obj->user_lastname,
+ 'userphoto' => $obj->user_photo,
- 'contact_id'=>$obj->fk_contact,
+ 'contact_id' => $obj->fk_contact,
'socpeopleassigned' => $contactaction->socpeopleassigned,
'lastname' => empty($obj->lastname) ? '' : $obj->lastname,
'firstname' => empty($obj->firstname) ? '' : $obj->firstname,
- 'fk_element'=>$obj->fk_element,
- 'elementtype'=>$obj->elementtype,
+ 'fk_element' => $obj->fk_element,
+ 'elementtype' => $obj->elementtype,
// Type of event
- 'acode'=>$obj->acode,
- 'alabel'=>$obj->alabel,
- 'libelle'=>$obj->alabel, // deprecated
- 'apicto'=>$obj->apicto
+ 'acode' => $obj->acode,
+ 'alabel' => $obj->alabel,
+ 'libelle' => $obj->alabel, // deprecated
+ 'apicto' => $obj->apicto
);
} else {
$histo[$numaction] = array(
- 'type'=>$obj->type,
- 'tododone'=>'done',
- 'id'=>$obj->id,
- 'datestart'=>$db->jdate($obj->dp),
- 'dateend'=>$db->jdate($obj->dp2),
- 'note'=>$obj->label,
- 'percent'=>$obj->percent,
- 'acode'=>$obj->acode,
+ 'type' => $obj->type,
+ 'tododone' => 'done',
+ 'id' => $obj->id,
+ 'datestart' => $db->jdate($obj->dp),
+ 'dateend' => $db->jdate($obj->dp2),
+ 'note' => $obj->label,
+ 'percent' => $obj->percent,
+ 'acode' => $obj->acode,
- 'userid'=>$obj->user_id,
- 'login'=>$obj->user_login,
- 'userfirstname'=>$obj->user_firstname,
- 'userlastname'=>$obj->user_lastname,
- 'userphoto'=>$obj->user_photo
+ 'userid' => $obj->user_id,
+ 'login' => $obj->user_login,
+ 'userfirstname' => $obj->user_firstname,
+ 'userlastname' => $obj->user_lastname,
+ 'userphoto' => $obj->user_photo
);
}
@@ -1946,7 +1947,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = null, $nopr
}
}
- if (isModEnabled('agenda')|| (isModEnabled('mailing') && !empty($objcon->email))) {
+ if (isModEnabled('agenda') || (isModEnabled('mailing') && !empty($objcon->email))) {
$delay_warning = $conf->global->MAIN_DELAY_ACTIONS_TODO * 24 * 60 * 60;
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
diff --git a/htdocs/core/lib/customreports.lib.php b/htdocs/core/lib/customreports.lib.php
index 496b5a605ac..1359fae99a1 100644
--- a/htdocs/core/lib/customreports.lib.php
+++ b/htdocs/core/lib/customreports.lib.php
@@ -65,7 +65,7 @@ function fillArrayOfMeasures($object, $tablealias, $labelofobject, &$arrayofmesu
// Add main fields of object
foreach ($object->fields as $key => $val) {
- if (!empty($val['isameasure']) && (!isset($val['enabled']) || dol_eval($val['enabled'], 1, 1, '1'))) {
+ if (!empty($val['isameasure']) && (!isset($val['enabled']) || (int) dol_eval($val['enabled'], 1, 1, '1'))) {
$position = (empty($val['position']) ? 0 : intval($val['position']));
$arrayofmesures[$tablealias.'.'.$key.'-sum'] = array(
'label' => img_picto('', (empty($object->picto) ? 'generic' : $object->picto), 'class="pictofixedwidth"').$labelofobject.': '.$langs->trans($val['label']).' ('.$langs->trans("Sum").') ',
@@ -100,7 +100,7 @@ function fillArrayOfMeasures($object, $tablealias, $labelofobject, &$arrayofmesu
// Add extrafields to Measures
if (!empty($object->isextrafieldmanaged) && isset($extrafields->attributes[$object->table_element]['label'])) {
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
- if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1, 1, '1'))) {
+ if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || (int) dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1, 1, '1'))) {
$position = (!empty($val['position']) ? $val['position'] : 0);
$arrayofmesures[preg_replace('/^t/', 'te', $tablealias).'.'.$key.'-sum'] = array(
'label' => img_picto('', (empty($object->picto) ? 'generic' : $object->picto), 'class="pictofixedwidth"').$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' ('.$langs->trans("Sum").') ',
@@ -206,10 +206,10 @@ function fillArrayOfXAxis($object, $tablealias, $labelofobject, &$arrayofxaxis,
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
continue;
}
- if (isset($val['enabled']) && !dol_eval($val['enabled'], 1, 1, '1')) {
+ if (isset($val['enabled']) && ! (int) dol_eval($val['enabled'], 1, 1, '1')) {
continue;
}
- if (isset($val['visible']) && !dol_eval($val['visible'], 1, 1, '1')) {
+ if (isset($val['visible']) && ! (int) dol_eval($val['visible'], 1, 1, '1')) {
continue;
}
if (preg_match('/^fk_/', $key) && !preg_match('/^fk_statu/', $key)) {
@@ -371,10 +371,10 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
continue;
}
- if (isset($val['enabled']) && !dol_eval($val['enabled'], 1, 1, '1')) {
+ if (isset($val['enabled']) && ! (int) dol_eval($val['enabled'], 1, 1, '1')) {
continue;
}
- if (isset($val['visible']) && !dol_eval($val['visible'], 1, 1, '1')) {
+ if (isset($val['visible']) && ! (int) dol_eval($val['visible'], 1, 1, '1')) {
continue;
}
if (preg_match('/^fk_/', $key) && !preg_match('/^fk_statu/', $key)) {
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index d69dd57271f..8d29bf8c390 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -2332,7 +2332,7 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab
if (empty($tabsname)) {
$tabsname = str_replace("@", "", $picto);
}
- $out .= '';
+ $out .= '
';
$out .= '
'; // Do not use "reposition" class in the "More".
$out .= '
';
$out .= $outmore;
@@ -6890,7 +6890,7 @@ function get_product_vat_for_country($idprod, $thirdpartytouse, $idprodfournpric
if (($mysoc->country_code == $thirdpartytouse->country_code)
|| (in_array($mysoc->country_code, array('FR', 'MC')) && in_array($thirdpartytouse->country_code, array('FR', 'MC')))
|| (in_array($mysoc->country_code, array('MQ', 'GP')) && in_array($thirdpartytouse->country_code, array('MQ', 'GP')))
- ) {
+ ) {
// If country of thirdparty to consider is ours
if ($idprodfournprice > 0) { // We want vat for product for a "supplier" object
$result = $product->get_buyprice($idprodfournprice, 0, 0, 0);
@@ -8274,12 +8274,13 @@ function dol_concatdesc($text1, $text2, $forxml = false, $invert = false)
/**
* Return array of possible common substitutions. This includes several families like: 'system', 'mycompany', 'object', 'objectamount', 'date', 'user'
*
- * @param Translate $outputlangs Output language
- * @param int $onlykey 1=Do not calculate some heavy values of keys (performance enhancement when we need only the keys), 2=Values are trunc and html sanitized (to use for help tooltip)
- * @param array $exclude Array of family keys we want to exclude. For example array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...)
- * @param Object $object Object for keys on object
- * @param array $include Array of family keys we want to include. For example array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...)
- * @return array Array of substitutions
+ * @param Translate $outputlangs Output language
+ * @param int $onlykey 1=Do not calculate some heavy values of keys (performance enhancement when we need only the keys),
+ * 2=Values are trunc and html sanitized (to use for help tooltip)
+ * @param array|null $exclude Array of family keys we want to exclude. For example array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...)
+ * @param Object|null $object Object for keys on object
+ * @param array|null $include Array of family keys we want to include. For example array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...)
+ * @return array Array of substitutions
* @see setSubstitFromObject()
*/
function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $object = null, $include = null)
@@ -9756,13 +9757,13 @@ function dol_getIdFromCode($db, $key, $tablename, $fieldkey = 'code', $fieldid =
}
/**
- * Check if a variable with name $var start with $text.
+ * Check if a variable with name $var startx with $text.
* Can be used to forge dol_eval() conditions.
*
- * @param $var string Variable
- * @param $regextext string Text that must be a valid regex string
- * @param $matchrule int 1=Test if start with, 0=Test if equal
- * @return boolean|string True or False, text if bad use.
+ * @param string $var Variable
+ * @param string $regextext Text that must be a valid regex string
+ * @param int $matchrule 1=Test if start with, 0=Test if equal
+ * @return boolean|string True or False, text if bad usage.
*/
function isStringVarMatching($var, $regextext, $matchrule = 1)
{
@@ -9786,9 +9787,9 @@ function isStringVarMatching($var, $regextext, $matchrule = 1)
* Verify if condition in string is ok or not
*
* @param string $strToEvaluate String with condition to check
- * @param string $onlysimplestring '0' (deprecated, used for computed property of extrafields)=Accept all chars,
+ * @param string $onlysimplestring '0' (deprecated, do not use it anymore)=Accept all chars,
* '1' (most common use)=Accept only simple string with char 'a-z0-9\s^$_+-.*>&|=!?():"\',/@';',
- * '2' (rarely used)=Accept also '[]'
+ * '2' (used for example for the compute property of extrafields)=Accept also '[]'
* @return boolean True or False. Note: It returns also True if $strToEvaluate is ''. False if error
*/
function verifCond($strToEvaluate, $onlysimplestring = '1')
@@ -9798,7 +9799,7 @@ function verifCond($strToEvaluate, $onlysimplestring = '1')
if (isset($strToEvaluate) && $strToEvaluate !== '') {
//var_dump($strToEvaluate);
//$rep = dol_eval($strToEvaluate, 1, 0, '1'); // to show the error
- $rep = dol_eval($strToEvaluate, 1, 1, $onlysimplestring); // The dol_eval() must contains all the "global $xxx;" for all variables $xxx found into the string condition
+ $rep = (int) dol_eval($strToEvaluate, 1, 1, $onlysimplestring); // The dol_eval() must contains all the "global $xxx;" for all variables $xxx found into the string condition
$rights = $rep && (!is_string($rep) || strpos($rep, 'Bad string syntax to evaluate') === false);
//var_dump($rights);
}
@@ -9810,15 +9811,15 @@ function verifCond($strToEvaluate, $onlysimplestring = '1')
* This function is called by verifCond() or trans() and transnoentitiesnoconv().
*
* @param string $s String to evaluate
- * @param int $returnvalue 0=No return (used to execute eval($a=something)). 1=Value of eval is returned (used to eval($something)).
+ * @param int $returnvalue 0=No return (deprecated, used to execute eval($a=something)). 1=Value of eval is returned (used to eval($something)).
* @param int $hideerrors 1=Hide errors
- * @param string $onlysimplestring '0' (deprecated, used for computed property of extrafields)=Accept all chars,
+ * @param string $onlysimplestring '0' (deprecated, do not use it anymore)=Accept all chars,
* '1' (most common use)=Accept only simple string with char 'a-z0-9\s^$_+-.*>&|=!?():"\',/@';',
- * '2' (rarely used)=Accept also '[]'
+ * '2' (used for example for the compute property of extrafields)=Accept also '[]'
* @return mixed Nothing or return result of eval
* @see verifCond()
*/
-function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1')
+function dol_eval($s, $returnvalue = 1, $hideerrors = 1, $onlysimplestring = '1')
{
// Only this global variables can be read by eval function and returned to caller
global $conf; // Read of const is done with getDolGlobalString() but we need $conf->currency for example
@@ -9837,10 +9838,14 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
try {
// Test on dangerous char (used for RCE), we allow only characters to make PHP variable testing
- if ($onlysimplestring == '1') {
- // We must accept: '1 && getDolGlobalInt("doesnotexist1") && getDolGlobalString("MAIN_FEATURES_LEVEL")'
- // We must accept: '$user->hasRight("cabinetmed", "read") && !$object->canvas=="patient@cabinetmed"'
+ if ($onlysimplestring == '1' || $onlysimplestring == '2') {
+ // We must accept with 1: '1 && getDolGlobalInt("doesnotexist1") && getDolGlobalString("MAIN_FEATURES_LEVEL")'
+ // We must accept with 1: '$user->hasRight("cabinetmed", "read") && !$object->canvas=="patient@cabinetmed"'
+ // We must accept with 2: (($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : "Parent project not found"
$specialcharsallowed = '^$_+-.*>&|=!?():"\',/@';
+ if ($onlysimplestring == '2') {
+ $specialcharsallowed .= '[]';
+ }
if (getDolGlobalString('MAIN_ALLOW_UNSECURED_SPECIAL_CHARS_IN_DOL_EVAL')) {
$specialcharsallowed .= getDolGlobalString('MAIN_ALLOW_UNSECURED_SPECIAL_CHARS_IN_DOL_EVAL');
}
@@ -9866,50 +9871,15 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
//print 'scheck='.$scheck." : ".strpos($scheck, '(')."
\n";
if (strpos($scheck, '(') !== false) {
if ($returnvalue) {
- return 'Bad string syntax to evaluate (mode 1, found call of a function or method without using the direct name of the function): '.$s;
+ return 'Bad string syntax to evaluate (mode '.$onlysimplestring.', found call of a function or method without using the direct name of the function): '.$s;
} else {
- dol_syslog('Bad string syntax to evaluate (mode 1, found call of a function or method without using the direct name of the function): '.$s);
+ dol_syslog('Bad string syntax to evaluate (mode '.$onlysimplestring.', found call of a function or method without using the direct name of the function): '.$s);
return '';
}
}
// TODO
- // We can exclude $ char that are not: $db, $langs, $leftmenu, $topmenu, $user, $langs, $objectoffield, $object...,
- } elseif ($onlysimplestring == '2') {
- // We must accept: (($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : "Parent project not found"
- $specialcharsallowed = '^$_+-.*>&|=!?():"\',/@[]';
- if (getDolGlobalString('MAIN_ALLOW_UNSECURED_SPECIAL_CHARS_IN_DOL_EVAL')) {
- $specialcharsallowed .= getDolGlobalString('MAIN_ALLOW_UNSECURED_SPECIAL_CHARS_IN_DOL_EVAL');
- }
- if (preg_match('/[^a-z0-9\s'.preg_quote($specialcharsallowed, '/').']/i', $s)) {
- if ($returnvalue) {
- return 'Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s;
- } else {
- dol_syslog('Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s);
- return '';
- }
- }
- $savescheck = '';
- $scheck = $s;
- while ($scheck && $savescheck != $scheck) {
- $savescheck = $scheck;
- $scheck = preg_replace('/->[a-zA-Z0-9_]+\(/', '->__METHOD__', $scheck); // accept parenthesis in '...->method(...'
- $scheck = preg_replace('/^\(/', '__PARENTHESIS__ ', $scheck); // accept parenthesis in '(...'. Must replace with __PARENTHESIS__ with a space after to allow following substitutions
- $scheck = preg_replace('/\s\(/', '__PARENTHESIS__ ', $scheck); // accept parenthesis in '... ('. Must replace with __PARENTHESIS__ with a space after to allow following substitutions
- $scheck = preg_replace('/^!?[a-zA-Z0-9_]+\(/', '__FUNCTION__', $scheck); // accept parenthesis in 'function(' and '!function('
- $scheck = preg_replace('/\s!?[a-zA-Z0-9_]+\(/', '__FUNCTION__', $scheck); // accept parenthesis in '... function(' and '... !function('
- $scheck = preg_replace('/(\^|\')\(/', '__REGEXSTART__', $scheck); // To allow preg_match('/^(aaa|bbb)/'... or isStringVarMatching('leftmenu', '(aaa|bbb)')
- }
- //print 'scheck='.$scheck." : ".strpos($scheck, '(')."
\n";
- if (strpos($scheck, '(') !== false) {
- if ($returnvalue) {
- return 'Bad string syntax to evaluate (mode 2, found call of a function or method without using the direct name of the function): '.$s;
- } else {
- dol_syslog('Bad string syntax to evaluate (mode 2, found call of a function or method without using the direct name of the function): '.$s);
- return '';
- }
- }
- // TODO
- // We can exclude $ char that are not: $db, $leftmenu, $topmenu, $user, $langs, $object...,
+ // We can exclude $ char that are not:
+ // $db, $langs, $leftmenu, $topmenu, $user, $langs, $objectoffield, $object...,
}
if (is_array($s) || $s === 'Array') {
return 'Bad string syntax to evaluate (value is Array) '.var_export($s, true);
@@ -9949,6 +9919,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("fopen", "file_put_contents", "fputs", "fputscsv", "fwrite", "fpassthru", "require", "include", "mkdir", "rmdir", "symlink", "touch", "unlink", "umask"));
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("get_defined_functions", "get_defined_vars", "get_defined_constants", "get_declared_classes"));
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("function", "call_user_func"));
+ $forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("require", "include", "require_once", "include_once"));
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("eval", "create_function", "assert", "mb_ereg_replace")); // function with eval capabilities
$forbiddenphpmethods = array('invoke', 'invokeArgs'); // Method of ReflectionFunction to execute a function
@@ -9978,11 +9949,26 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
//print $s."
\n";
if ($returnvalue) {
if ($hideerrors) {
- return @eval('return '.$s.';');
+ ob_start(); // An evaluation has no reason to output data
+ $tmps = @eval('return '.$s.';');
+ $tmpo = ob_get_contents();
+ ob_clean(); // End of interception of data
+ if ($tmpo) {
+ print 'Bad string syntax to evaluate. Some data were output when it should not when evaluating: '.$s;
+ }
+ return $tmps;
} else {
- return eval('return '.$s.';');
+ ob_start(); // An evaluation has no reason to output data
+ $tmps = eval('return '.$s.';');
+ $tmpo = ob_get_contents();
+ ob_clean(); // End of interception of data
+ if ($tmpo) {
+ print 'Bad string syntax to evaluate. Some data were output when it should not when evaluating: '.$s;
+ }
+ return $tmps;
}
} else {
+ dol_syslog('Do not use anymore dol_eval with param returnvalue=0', LOG_WARNING);
if ($hideerrors) {
@eval($s);
} else {
@@ -13096,7 +13082,7 @@ function getActionCommEcmList($object)
* @param Translate $langs Object langs
* @param DoliDB $db Object db
* @param mixed $filterobj Filter on object Adherent|Societe|Project|Product|CommandeFournisseur|Dolresource|Ticket|... to list events linked to an object
- * @param Contact $objcon Filter on object contact to filter events on a contact
+ * @param Contact|null $objcon Filter on object contact to filter events on a contact
* @param int $noprint Return string but does not output it
* @param string $actioncode Filter on actioncode
* @param string $donetodo Filter on event 'done' or 'todo' or ''=nofilter (all).
@@ -13105,7 +13091,7 @@ function getActionCommEcmList($object)
* @param string $sortorder Sort order
* @return string|void Return html part or void if noprint is 1
*/
-function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = '', $noprint = 0, $actioncode = '', $donetodo = 'done', $filters = array(), $sortfield = 'a.datep,a.id', $sortorder = 'DESC')
+function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = null, $noprint = 0, $actioncode = '', $donetodo = 'done', $filters = array(), $sortfield = 'a.datep,a.id', $sortorder = 'DESC')
{
global $user, $conf;
global $form;
@@ -13120,6 +13106,8 @@ function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = '', $n
}
$histo = array();
+ '@phan-var-force array
$histo';
+
$numaction = 0;
$now = dol_now();
@@ -13199,7 +13187,7 @@ function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = '', $n
}
$sql .= " WHERE a.entity IN (".getEntity('agenda').")";
- if ($force_filter_contact === false) {
+ if (!$force_filter_contact) {
if (is_object($filterobj) && in_array(get_class($filterobj), array('Societe', 'Client', 'Fournisseur')) && $filterobj->id) {
$sql .= " AND a.fk_soc = ".((int) $filterobj->id);
} elseif (is_object($filterobj) && get_class($filterobj) == 'Project' && $filterobj->id) {
@@ -13327,6 +13315,7 @@ function show_actions_messaging($conf, $langs, $db, $filterobj, $objcon = '', $n
while ($i < $imaxinloop) {
$obj = $db->fetch_object($resql);
+ '@phan-var-force array{apicto:string,contact_id:string,dp:string,dp2:string,firstname:string,label:string,message:string,msg_from:string,ref:string,type:string,user_lastname:string} $obj';
if ($obj->type == 'action') {
$contactaction = new ActionComm($db);
$contactaction->id = $obj->id;
diff --git a/htdocs/core/lib/modulebuilder.lib.php b/htdocs/core/lib/modulebuilder.lib.php
index 3218ee9212d..19d9c9319a2 100644
--- a/htdocs/core/lib/modulebuilder.lib.php
+++ b/htdocs/core/lib/modulebuilder.lib.php
@@ -450,7 +450,7 @@ function dolGetListOfObjectClasses($destdir)
$objects[$fileobj['fullname']] = $objectnameloop;
}
}
- if (count($objects)>0) {
+ if (count($objects) > 0) {
return $objects;
}
@@ -559,12 +559,12 @@ function reWriteAllPermissions($file, $permissions, $key, $right, $objectname, $
}
}
} elseif ($action == -2 && !empty($objectname) && !empty($module)) {
- $key= null;
+ $key = null;
$right = null;
$objectOfRights = array();
//check if object already declared in rights file
foreach ($permissions as $right) {
- $objectOfRights[]= $right[4];
+ $objectOfRights[] = $right[4];
}
if (in_array(strtolower($objectname), $objectOfRights)) {
$error++;
@@ -591,7 +591,7 @@ function reWriteAllPermissions($file, $permissions, $key, $right, $objectname, $
if (!$error) {
// prepare permissions array
$count_perms = count($permissions);
- for ($i = 0;$i<$count_perms;$i++) {
+ for ($i = 0;$i < $count_perms;$i++) {
$permissions[$i][0] = "\$this->rights[\$r][0] = \$this->numero . sprintf('%02d', \$r + 1)";
$permissions[$i][1] = "\$this->rights[\$r][1] = '".$permissions[$i][1]."'";
$permissions[$i][4] = "\$this->rights[\$r][4] = '".$permissions[$i][4]."'";
@@ -611,7 +611,7 @@ function reWriteAllPermissions($file, $permissions, $key, $right, $objectname, $
// parcourir les objects
- $o=0;
+ $o = 0;
foreach ($permissions as &$object) {
// récupérer la permission de l'objet
$p = 1;
@@ -735,7 +735,7 @@ function writePropsInAsciiDoc($file, $objectname, $destfile)
foreach ($attributesUnique as $attUnique) {
$table .= "|".$attUnique;
}
- $table .="\n";
+ $table .= "\n";
$valuesModif = array();
foreach ($keys as $string) {
$string = trim($string, "'");
@@ -783,9 +783,9 @@ function writePropsInAsciiDoc($file, $objectname, $destfile)
$table .= "|===\n";
$table .= "__ end table for object $objectname\n";
- //write in file
+ //write in file @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$writeInFile = dolReplaceInFile($destfile, array('== DATA SPECIFICATIONS' => $table));
- if ($writeInFile<0) {
+ if ($writeInFile < 0) {
return -1;
}
return 1;
@@ -897,7 +897,7 @@ function writePermsInAsciiDoc($file, $destfile)
foreach ($permissions as $key => $element) {
$element = str_replace(" '", '', $element);
$element = trim($element, "'");
- $permsN[] = substr($element, strpos($element, "=")+1);
+ $permsN[] = substr($element, strpos($element, "=") + 1);
}
array_pop($permsN);
@@ -926,8 +926,9 @@ function writePermsInAsciiDoc($file, $destfile)
}
// end table
$string .= "\n|===\n";
- $write = dolReplaceInFile($destfile, array('__DATA_PERMISSIONS__'=> $string));
- if ($write<0) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
+ $write = dolReplaceInFile($destfile, array('__DATA_PERMISSIONS__' => $string));
+ if ($write < 0) {
return -1;
}
return 1;
@@ -985,7 +986,7 @@ function addObjectsToApiFile($file, $objects, $modulename)
//add methods for each object
$allContent = getFromFile($file, '/*begin methods CRUD*/', '/*end methods CRUD*/');
foreach ($objects as $object) {
- $contentReplaced =str_replace(["myobject","MyObject"], [strtolower($object),$object], $allContent);
+ $contentReplaced = str_replace(["myobject","MyObject"], [strtolower($object),$object], $allContent);
dolReplaceInFile($file, array('/*end methods CRUD*/' => '/*CRUD FOR '.strtoupper($object).'*/'."\n".$contentReplaced."\n\t".'/*END CRUD FOR '.strtoupper($object).'*/'."\n\t".'/*end methods CRUD*/'));
}
dolReplaceInFile($file, array($allContent => '','MyModule' => ucfirst($modulename)));
@@ -1049,7 +1050,7 @@ function removeObjectFromApiFile($file, $objectname, $modulename)
*/
function reWriteAllMenus($file, $menus, $menuWantTo, $key, $action)
{
- $errors =0;
+ $errors = 0;
$counter = 0;
if (!file_exists($file)) {
return -1;
@@ -1062,7 +1063,7 @@ function reWriteAllMenus($file, $menus, $menuWantTo, $key, $action)
array_push($menus, $menuWantTo);
} elseif ($action == 2 && !empty($key) && !empty($menuWantTo)) {
// update right from permissions array
- $urlCounter=0;
+ $urlCounter = 0;
// check if the values already exists
foreach ($menus as $index => $menu) {
if ($index !== $key) {
@@ -1111,20 +1112,20 @@ function reWriteAllMenus($file, $menus, $menuWantTo, $key, $action)
//var_dump(dol_escape_php($menu['perms'], 1)); exit;
$str_menu .= $start."\n";
- $str_menu.= "\t\t\$this->menu[\$r++]=array(\n";
- $str_menu.= "\t\t\t 'fk_menu' => '".dol_escape_php($menu['fk_menu'], 1)."',\n";
- $str_menu.= "\t\t\t 'type' => '".dol_escape_php($menu['type'], 1)."',\n";
- $str_menu.= "\t\t\t 'titre' => '".dol_escape_php($menu['titre'], 1)."',\n";
- $str_menu.= "\t\t\t 'mainmenu' => '".dol_escape_php($menu['mainmenu'], 1)."',\n";
- $str_menu.= "\t\t\t 'leftmenu' => '".dol_escape_php($menu['leftmenu'], 1)."',\n";
- $str_menu.= "\t\t\t 'url' => '".dol_escape_php($menu['url'], 1)."',\n";
- $str_menu.= "\t\t\t 'langs' => '".dol_escape_php($menu['langs'], 1)."',\n";
- $str_menu.= "\t\t\t 'position' => ".((int) $menu['position']).",\n";
- $str_menu.= "\t\t\t 'enabled' => '".dol_escape_php($menu['enabled'], 1)."',\n";
- $str_menu.= "\t\t\t 'perms' => '".dol_escape_php($menu['perms'], 1)."',\n";
- $str_menu.= "\t\t\t 'target' => '".dol_escape_php($menu['target'], 1)."',\n";
- $str_menu.= "\t\t\t 'user' => ".((int) $menu['user']).",\n";
- $str_menu.= "\t\t);\n";
+ $str_menu .= "\t\t\$this->menu[\$r++]=array(\n";
+ $str_menu .= "\t\t\t 'fk_menu' => '".dol_escape_php($menu['fk_menu'], 1)."',\n";
+ $str_menu .= "\t\t\t 'type' => '".dol_escape_php($menu['type'], 1)."',\n";
+ $str_menu .= "\t\t\t 'titre' => '".dol_escape_php($menu['titre'], 1)."',\n";
+ $str_menu .= "\t\t\t 'mainmenu' => '".dol_escape_php($menu['mainmenu'], 1)."',\n";
+ $str_menu .= "\t\t\t 'leftmenu' => '".dol_escape_php($menu['leftmenu'], 1)."',\n";
+ $str_menu .= "\t\t\t 'url' => '".dol_escape_php($menu['url'], 1)."',\n";
+ $str_menu .= "\t\t\t 'langs' => '".dol_escape_php($menu['langs'], 1)."',\n";
+ $str_menu .= "\t\t\t 'position' => ".((int) $menu['position']).",\n";
+ $str_menu .= "\t\t\t 'enabled' => '".dol_escape_php($menu['enabled'], 1)."',\n";
+ $str_menu .= "\t\t\t 'perms' => '".dol_escape_php($menu['perms'], 1)."',\n";
+ $str_menu .= "\t\t\t 'target' => '".dol_escape_php($menu['target'], 1)."',\n";
+ $str_menu .= "\t\t\t 'user' => ".((int) $menu['user']).",\n";
+ $str_menu .= "\t\t);\n";
if (is_null($next_val) || $val_actuel['leftmenu'] !== $next_val['leftmenu']) {
$str_menu .= $end."\n";
@@ -1266,7 +1267,7 @@ function createNewDictionnary($modulename, $file, $namedic, $dictionnaires = nul
$dictionnaires['tabfieldinsert'][] = (array_key_exists('code', $columns) && array_key_exists('label', $columns) ? 'code,label' : '');
$dictionnaires['tabrowid'][] = $primaryKey;
$dictionnaires['tabcond'][] = isModEnabled('$modulename');
- $dictionnaires['tabhelp'][] = (array_key_exists('code', $columns) ? array('code'=>$langs->trans('CodeTooltipHelp'), 'field2' => 'field2tooltip') : '');
+ $dictionnaires['tabhelp'][] = (array_key_exists('code', $columns) ? array('code' => $langs->trans('CodeTooltipHelp'), 'field2' => 'field2tooltip') : '');
// Build the dictionary string
$writeInfile = updateDictionaryInFile($modulename, $file, $dictionnaires);
diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php
index 4cfac0f4413..7d342e152a3 100644
--- a/htdocs/core/lib/pdf.lib.php
+++ b/htdocs/core/lib/pdf.lib.php
@@ -429,7 +429,7 @@ function pdfBuildThirdpartyName($thirdparty, Translate $outputlangs, $includeali
* @param Contact|string|null $targetcontact Target contact object
* @param int $usecontact Use contact instead of company
* @param string $mode Address type ('source', 'target', 'targetwithdetails', 'targetwithdetails_xxx': target but include also phone/fax/email/url)
- * @param Object $object Object we want to build document for
+ * @param Object|null $object Object we want to build document for
* @return string|int String with full address or -1 if KO
*/
function pdf_build_address($outputlangs, $sourcecompany, $targetcompany = '', $targetcontact = '', $usecontact = 0, $mode = 'source', $object = null)
@@ -718,7 +718,7 @@ function pdf_build_address($outputlangs, $sourcecompany, $targetcompany = '', $t
/**
* Show header of page for PDF generation
*
- * @param TCPDF $pdf Object PDF
+ * @param TCPDF $pdf Object PDF
* @param Translate $outputlangs Object lang for output
* @param int $page_height Height of page
* @return void
@@ -752,11 +752,11 @@ function pdf_pagehead(&$pdf, $outputlangs, $page_height)
/**
* Return array of possible substitutions for PDF content (without external module substitutions).
*
- * @param Translate $outputlangs Output language
- * @param array $exclude Array of family keys we want to exclude. For example array('mycompany', 'object', 'date', 'user', ...)
- * @param Object $object Object
- * @param int $onlykey 1=Do not calculate some heavy values of keys (performance enhancement when we need only the keys), 2=Values are truncated and html sanitized (to use for help tooltip)
- * @param array $include Array of family keys we want to include. For example array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...)
+ * @param Translate $outputlangs Output language
+ * @param array|null $exclude Array of family keys we want to exclude. For example array('mycompany', 'object', 'date', 'user', ...)
+ * @param Object|null $object Object
+ * @param int $onlykey 1=Do not calculate some heavy values of keys (performance enhancement when we need only the keys), 2=Values are truncated and html sanitized (to use for help tooltip)
+ * @param array|null $include Array of family keys we want to include. For example array('system', 'mycompany', 'object', 'objectamount', 'date', 'user', ...)
* @return array Array of substitutions
*/
function pdf_getSubstitutionArray($outputlangs, $exclude = null, $object = null, $onlykey = 0, $include = null)
@@ -2296,11 +2296,11 @@ function pdf_getlineremisepercent($object, $i, $outputlangs, $hidedetails = 0)
/**
* Return line percent
*
- * @param Object $object Object
- * @param int $i Current line number
- * @param Translate $outputlangs Object langs for output
- * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines)
- * @param HookManager $hookmanager Hook manager instance
+ * @param Object $object Object
+ * @param int $i Current line number
+ * @param Translate $outputlangs Object langs for output
+ * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines)
+ * @param HookManager|null $hookmanager Hook manager instance
* @return string
*/
function pdf_getlineprogress($object, $i, $outputlangs, $hidedetails = 0, $hookmanager = null)
diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php
index aaf3b602a36..271667675cd 100644
--- a/htdocs/core/lib/website.lib.php
+++ b/htdocs/core/lib/website.lib.php
@@ -519,6 +519,7 @@ function redirectToContainer($containerref, $containeraliasalt = '', $containeri
if ($containeraliasalt) {
include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php';
$tmpwebsitepage = new WebsitePage($db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$result = $tmpwebsitepage->fetch(0, $website->id, '', $containeraliasalt);
if ($result > 0) {
$containerref = $tmpwebsitepage->pageurl;
@@ -542,6 +543,7 @@ function redirectToContainer($containerref, $containeraliasalt = '', $containeri
if (!$containeraliasalt) { // If containeraliasalt set, we already did the test
include_once DOL_DOCUMENT_ROOT.'/website/class/websitepage.class.php';
$tmpwebsitepage = new WebsitePage($db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$result = $tmpwebsitepage->fetch(0, $website->id, $containerref);
unset($tmpwebsitepage);
}
@@ -1104,7 +1106,7 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
global $conf, $db, $hookmanager, $langs, $mysoc, $user, $website, $websitepage, $weblangs; // Very important. Required to have var available when running included containers.
$error = 0;
- $arrayresult = array('code'=>'', 'list'=>array());
+ $arrayresult = array('code' => '', 'list' => array());
if (!is_object($weblangs)) {
$weblangs = $langs;
@@ -1212,22 +1214,22 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so
$filecontent = file_get_contents($filehtmlheader);
if ((empty($max) || ($found < $max)) && preg_match('/'.preg_quote($searchstring, '/').'/', $filecontent)) {
- $arrayresult['list'][] = array('type'=>'website_htmlheadercontent');
+ $arrayresult['list'][] = array('type' => 'website_htmlheadercontent');
}
$filecontent = file_get_contents($filecss);
if ((empty($max) || ($found < $max)) && preg_match('/'.preg_quote($searchstring, '/').'/', $filecontent)) {
- $arrayresult['list'][] = array('type'=>'website_csscontent');
+ $arrayresult['list'][] = array('type' => 'website_csscontent');
}
$filecontent = file_get_contents($filejs);
if ((empty($max) || ($found < $max)) && preg_match('/'.preg_quote($searchstring, '/').'/', $filecontent)) {
- $arrayresult['list'][] = array('type'=>'website_jscontent');
+ $arrayresult['list'][] = array('type' => 'website_jscontent');
}
$filerobot = file_get_contents($filerobot);
if ((empty($max) || ($found < $max)) && preg_match('/'.preg_quote($searchstring, '/').'/', $filecontent)) {
- $arrayresult['list'][] = array('type'=>'website_robotcontent');
+ $arrayresult['list'][] = array('type' => 'website_robotcontent');
}
$searchdone = 1;
diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
index 48d43f760e9..f1e0d0c26ad 100644
--- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
@@ -285,7 +285,7 @@ class pdf_crabe extends ModelePDFFactures
$hookmanager = new HookManager($this->db);
}
$hookmanager->initHooks(array('pdfgeneration'));
- $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
+ $parameters = array('file' => $file, 'object' => $object, 'outputlangs' => $outputlangs);
global $action;
$reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
@@ -775,7 +775,7 @@ class pdf_crabe extends ModelePDFFactures
if (empty($this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'])) {
$this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] = 0;
}
- $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')] = array('vatrate'=>$vatrate, 'vatcode'=>$vatcode, 'amount'=> $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] + $tvaligne);
+ $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')] = array('vatrate' => $vatrate, 'vatcode' => $vatcode, 'amount' => $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] + $tvaligne);
if ($posYAfterImage > $posYAfterDescription) {
$nexY = $posYAfterImage;
@@ -784,10 +784,10 @@ class pdf_crabe extends ModelePDFFactures
// Add line
if (getDolGlobalString('MAIN_PDF_DASH_BETWEEN_LINES') && $i < ($nblines - 1)) {
$pdf->setPage($pageposafter);
- $pdf->SetLineStyle(array('dash'=>'1,1', 'color'=>array(80, 80, 80)));
+ $pdf->SetLineStyle(array('dash' => '1,1', 'color' => array(80, 80, 80)));
//$pdf->SetDrawColor(190,190,200);
$pdf->line($this->marge_gauche, $nexY + 1, $this->page_largeur - $this->marge_droite, $nexY + 1);
- $pdf->SetLineStyle(array('dash'=>0));
+ $pdf->SetLineStyle(array('dash' => 0));
}
$nexY += 2; // Add space between lines
@@ -872,7 +872,7 @@ class pdf_crabe extends ModelePDFFactures
// Add pdfgeneration hook
$hookmanager->initHooks(array('pdfgeneration'));
- $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
+ $parameters = array('file' => $file, 'object' => $object, 'outputlangs' => $outputlangs);
global $action;
$reshook = $hookmanager->executeHooks('afterPDFCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) {
@@ -882,7 +882,7 @@ class pdf_crabe extends ModelePDFFactures
dolChmod($file);
- $this->result = array('fullpath'=>$file);
+ $this->result = array('fullpath' => $file);
return 1; // No error
} else {
@@ -1204,8 +1204,9 @@ class pdf_crabe extends ModelePDFFactures
if ($object->mode_reglement_code == "PRE") {
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
$bac = new CompanyBankAccount($this->db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$bac->fetch(0, $object->thirdparty->id);
- $iban= $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic;
+ $iban = $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic;
$lib_mode_reg .= ' '.$outputlangs->trans("PaymentTypePREdetails", dol_trunc($iban, 6, 'right', 'UTF-8', 1));
}
$pdf->MultiCell(80, 5, $lib_mode_reg, 0, 'L');
@@ -2139,11 +2140,11 @@ class pdf_crabe extends ModelePDFFactures
$contactshipping = $object->fetch_Contact($idaddressshipping[0]);
$companystatic = new Societe($this->db);
$companystatic->fetch($object->contact->fk_soc);
- $carac_client_name_shipping=pdfBuildThirdpartyName($object->contact, $outputlangs);
+ $carac_client_name_shipping = pdfBuildThirdpartyName($object->contact, $outputlangs);
$carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $companystatic, $object->contact, $usecontact, 'target', $object);
} else {
- $carac_client_name_shipping=pdfBuildThirdpartyName($object->thirdparty, $outputlangs);
- $carac_client_shipping=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'target', $object);
+ $carac_client_name_shipping = pdfBuildThirdpartyName($object->thirdparty, $outputlangs);
+ $carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'target', $object);
}
if (!empty($carac_client_shipping)) {
$posy += $hautcadre;
@@ -2162,7 +2163,7 @@ class pdf_crabe extends ModelePDFFactures
$posy = $pdf->getY();
// Show shipping information
- $pdf->SetXY($posx+2, $posy);
+ $pdf->SetXY($posx + 2, $posy);
$pdf->SetFont('', '', $default_font_size - 1);
$pdf->MultiCell($widthrecbox - 2, 2, $carac_client_shipping, '', 'L');
$top_shift += $hautcadre;
diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
index 00c28594717..438123738d4 100644
--- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
@@ -317,7 +317,7 @@ class pdf_sponge extends ModelePDFFactures
$hookmanager = new HookManager($this->db);
}
$hookmanager->initHooks(array('pdfgeneration'));
- $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
+ $parameters = array('file' => $file, 'object' => $object, 'outputlangs' => $outputlangs);
global $action;
$reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
@@ -848,9 +848,9 @@ class pdf_sponge extends ModelePDFFactures
$parameters = array(
'object' => $object,
'i' => $i,
- 'pdf' =>& $pdf,
- 'curY' =>& $curY,
- 'nexY' =>& $nexY,
+ 'pdf' => & $pdf,
+ 'curY' => & $curY,
+ 'nexY' => & $nexY,
'outputlangs' => $outputlangs,
'hidedetails' => $hidedetails
);
@@ -900,7 +900,7 @@ class pdf_sponge extends ModelePDFFactures
// Retrieve type from database for backward compatibility with old records
if ((!isset($localtax1_type) || $localtax1_type == '' || !isset($localtax2_type) || $localtax2_type == '') // if tax type not defined
&& (!empty($localtax1_rate) || !empty($localtax2_rate))) { // and there is local tax
- $localtaxtmp_array = getLocalTaxesFromRate($vatrate, 0, $object->thirdparty, $mysoc);
+ $localtaxtmp_array = getLocalTaxesFromRate($vatrate, 0, $object->thirdparty, $mysoc);
$localtax1_type = isset($localtaxtmp_array[0]) ? $localtaxtmp_array[0] : '';
$localtax2_type = isset($localtaxtmp_array[2]) ? $localtaxtmp_array[2] : '';
}
@@ -934,17 +934,17 @@ class pdf_sponge extends ModelePDFFactures
if (empty($this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'])) {
$this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] = 0;
}
- $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')] = array('vatrate'=>$vatrate, 'vatcode'=>$vatcode, 'amount'=> $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] + $tvaligne);
+ $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')] = array('vatrate' => $vatrate, 'vatcode' => $vatcode, 'amount' => $this->tva_array[$vatrate.($vatcode ? ' ('.$vatcode.')' : '')]['amount'] + $tvaligne);
$nexY = max($nexY, $posYAfterImage);
// Add line
if (getDolGlobalString('MAIN_PDF_DASH_BETWEEN_LINES') && $i < ($nblines - 1)) {
$pdf->setPage($pageposafter);
- $pdf->SetLineStyle(array('dash'=>'1,1', 'color'=>array(80, 80, 80)));
+ $pdf->SetLineStyle(array('dash' => '1,1', 'color' => array(80, 80, 80)));
//$pdf->SetDrawColor(190,190,200);
$pdf->line($this->marge_gauche, $nexY, $this->page_largeur - $this->marge_droite, $nexY);
- $pdf->SetLineStyle(array('dash'=>0));
+ $pdf->SetLineStyle(array('dash' => 0));
}
// Detect if some page were added automatically and output _tableau for past pages
@@ -1024,7 +1024,7 @@ class pdf_sponge extends ModelePDFFactures
// Add pdfgeneration hook
$hookmanager->initHooks(array('pdfgeneration'));
- $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs);
+ $parameters = array('file' => $file, 'object' => $object, 'outputlangs' => $outputlangs);
global $action;
$reshook = $hookmanager->executeHooks('afterPDFCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) {
@@ -1034,7 +1034,7 @@ class pdf_sponge extends ModelePDFFactures
dolChmod($file);
- $this->result = array('fullpath'=>$file);
+ $this->result = array('fullpath' => $file);
return 1; // No error
} else {
@@ -1298,8 +1298,9 @@ class pdf_sponge extends ModelePDFFactures
if ($object->mode_reglement_code == "PRE") {
require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
$bac = new CompanyBankAccount($this->db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$bac->fetch(0, $object->thirdparty->id);
- $iban= $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic;
+ $iban = $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic;
$lib_mode_reg .= ' '.$outputlangs->trans("PaymentTypePREdetails", dol_trunc($iban, 6, 'right', 'UTF-8', 1));
}
@@ -2390,11 +2391,11 @@ class pdf_sponge extends ModelePDFFactures
$contactshipping = $object->fetch_Contact($idaddressshipping[0]);
$companystatic = new Societe($this->db);
$companystatic->fetch($object->contact->fk_soc);
- $carac_client_name_shipping=pdfBuildThirdpartyName($object->contact, $outputlangs);
+ $carac_client_name_shipping = pdfBuildThirdpartyName($object->contact, $outputlangs);
$carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $companystatic, $object->contact, $usecontact, 'target', $object);
} else {
- $carac_client_name_shipping=pdfBuildThirdpartyName($object->thirdparty, $outputlangs);
- $carac_client_shipping=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'target', $object);
+ $carac_client_name_shipping = pdfBuildThirdpartyName($object->thirdparty, $outputlangs);
+ $carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'target', $object);
}
if (!empty($carac_client_shipping)) {
$posy += $hautcadre;
@@ -2413,7 +2414,7 @@ class pdf_sponge extends ModelePDFFactures
$posy = $pdf->getY();
// Show shipping information
- $pdf->SetXY($posx+2, $posy);
+ $pdf->SetXY($posx + 2, $posy);
$pdf->SetFont('', '', $default_font_size - 1);
$pdf->MultiCell($widthrecbox - 2, 2, $carac_client_shipping, '', 'L');
$shipp_shift += $hautcadre;
diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php
index bb3f6ae561e..2cc8f02d3b8 100644
--- a/htdocs/core/modules/import/import_csv.modules.php
+++ b/htdocs/core/modules/import/import_csv.modules.php
@@ -393,6 +393,7 @@ class ImportCsv extends ModeleImports
// Is it a required field ?
if (preg_match('/\*/', $objimport->array_import_fields[0][$val]) && ((string) $newval == '')) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->trans('ErrorMissingMandatoryValue', $key);
$this->errors[$error]['type'] = 'NOTNULL';
$errorforthistable++;
@@ -405,7 +406,7 @@ class ImportCsv extends ModeleImports
if ($objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeid'
|| $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromref'
|| $objimport->array_import_convertvalue[0][$val]['rule'] == 'fetchidfromcodeorlabel'
- ) {
+ ) {
// New val can be an id or ref. If it start with id: it is forced to id, if it start with ref: it is forced to ref. It not, we try to guess.
$isidorref = 'id';
if (!is_numeric($newval) && $newval != '' && !preg_match('/^id:/i', $newval)) {
@@ -854,7 +855,7 @@ class ImportCsv extends ModeleImports
$fname = 'rowid';
if (strpos($tablename, '_categorie_') !== false) {
$is_table_category_link = true;
- $fname='*';
+ $fname = '*';
}
if (!empty($updatekeys)) {
diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php
index 5e9ca592a0c..9750222149a 100644
--- a/htdocs/core/modules/import/import_xlsx.modules.php
+++ b/htdocs/core/modules/import/import_xlsx.modules.php
@@ -516,6 +516,7 @@ class ImportXlsx extends ModeleImports
$newval = $classinstance->id;
} elseif (! $error) {
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
} elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) {
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldRefNotIn', $key, $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element']));
@@ -558,6 +559,7 @@ class ImportXlsx extends ModeleImports
$newval = $classinstance->id;
} else {
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
} else {
$this->errors[$error]['lib'] = 'ErrorFieldValueNotIn';
@@ -595,6 +597,7 @@ class ImportXlsx extends ModeleImports
$newval = $scaleorid ? $scaleorid : 0;
} else {
if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict']));
} else {
$this->errors[$error]['lib'] = 'ErrorFieldValueNotIn';
@@ -753,6 +756,7 @@ class ImportXlsx extends ModeleImports
if (!empty($filter)) {
$tableforerror .= ':' . $filter;
}
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorFieldValueNotIn', $key, $newval, $field, $tableforerror);
$this->errors[$error]['type'] = 'FOREIGNKEY';
$errorforthistable++;
@@ -761,6 +765,7 @@ class ImportXlsx extends ModeleImports
} elseif (!preg_match('/' . $objimport->array_import_regex[0][$val] . '/i', $newval)) {
// If test is just a static regex
//if ($key == 19) print "xxx".$newval."zzz".$objimport->array_import_regex[0][$val]." ";
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorWrongValueForField', $key, $newval, $objimport->array_import_regex[0][$val]);
$this->errors[$error]['type'] = 'REGEX';
$errorforthistable++;
@@ -771,6 +776,7 @@ class ImportXlsx extends ModeleImports
// Check HTML injection
$inj = testSqlAndScriptInject($newval, 0);
if ($inj) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorHtmlInjectionForField', $key, dol_trunc($newval, 100));
$this->errors[$error]['type'] = 'HTMLINJECTION';
$errorforthistable++;
@@ -892,7 +898,7 @@ class ImportXlsx extends ModeleImports
$fname = 'rowid';
if (strpos($tablename, '_categorie_') !== false) {
$is_table_category_link = true;
- $fname='*';
+ $fname = '*';
}
if (!empty($updatekeys)) {
diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php
index a12dd5ed70a..09a79dca030 100644
--- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php
+++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php
@@ -359,7 +359,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
);
complete_substitutions_array($substitutionarray, $langs, $object);
// Call the ODTSubstitution hook
- $parameters = array('file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$substitutionarray);
+ $parameters = array('file' => $file, 'object' => $object, 'outputlangs' => $outputlangs, 'substitutionarray' => &$substitutionarray);
$reshook = $hookmanager->executeHooks('ODTSubstitution', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
// Line of free text
@@ -412,9 +412,10 @@ class doc_generic_proposal_odt extends ModelePDFPropales
include_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
$companybankaccount = new CompanyBankAccount($this->db);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$companybankaccount->fetch(0, $object->thirdparty->id);
- $array_objet['company_default_bank_iban']=$companybankaccount->iban;
- $array_objet['company_default_bank_bic']=$companybankaccount->bic;
+ $array_objet['company_default_bank_iban'] = $companybankaccount->iban;
+ $array_objet['company_default_bank_bic'] = $companybankaccount->bic;
// retrieve contact information for use in object as contact_xxx tags
$array_thirdparty_contact = array();
@@ -426,7 +427,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
complete_substitutions_array($tmparray, $outputlangs, $object);
// Call the ODTSubstitution hook
- $parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray);
+ $parameters = array('odfHandler' => &$odfHandler, 'file' => $file, 'object' => $object, 'outputlangs' => $outputlangs, 'substitutionarray' => &$tmparray);
$reshook = $hookmanager->executeHooks('ODTSubstitution', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
foreach ($tmparray as $key => $value) {
@@ -464,7 +465,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
$tmparray = $this->get_substitutionarray_lines($line, $outputlangs, $linenumber);
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
// Call the ODTSubstitutionLine hook
- $parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray, 'line'=>$line);
+ $parameters = array('odfHandler' => &$odfHandler, 'file' => $file, 'object' => $object, 'outputlangs' => $outputlangs, 'substitutionarray' => &$tmparray, 'line' => $line);
$reshook = $hookmanager->executeHooks('ODTSubstitutionLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
foreach ($tmparray as $key => $val) {
try {
@@ -496,7 +497,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales
}
// Call the beforeODTSave hook
- $parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray);
+ $parameters = array('odfHandler' => &$odfHandler, 'file' => $file, 'object' => $object, 'outputlangs' => $outputlangs, 'substitutionarray' => &$tmparray);
$reshook = $hookmanager->executeHooks('beforeODTSave', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
// Write new file
@@ -517,14 +518,14 @@ class doc_generic_proposal_odt extends ModelePDFPropales
return -1;
}
}
- $parameters = array('odfHandler'=>&$odfHandler, 'file'=>$file, 'object'=>$object, 'outputlangs'=>$outputlangs, 'substitutionarray'=>&$tmparray);
+ $parameters = array('odfHandler' => &$odfHandler, 'file' => $file, 'object' => $object, 'outputlangs' => $outputlangs, 'substitutionarray' => &$tmparray);
$reshook = $hookmanager->executeHooks('afterODTCreation', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
dolChmod($file);
$odfHandler = null; // Destroy object
- $this->result = array('fullpath'=>$file);
+ $this->result = array('fullpath' => $file);
return 1; // Success
} else {
diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
index f53f7eba871..be2c6e38937 100644
--- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
+++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php
@@ -714,7 +714,7 @@ class pdf_aurore extends ModelePDFSupplierProposal
* @param Object $object Object to show
* @param int|float $posy Y
* @param Translate $outputlangs Langs object
- * @return int
+ * @return int|float
*/
protected function _tableau_info(&$pdf, $object, $posy, $outputlangs)
{
diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_zenith.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_zenith.modules.php
index 2c10cdefc1c..f42c862bb9e 100644
--- a/htdocs/core/modules/supplier_proposal/doc/pdf_zenith.modules.php
+++ b/htdocs/core/modules/supplier_proposal/doc/pdf_zenith.modules.php
@@ -844,7 +844,7 @@ class pdf_zenith extends ModelePDFSupplierProposal
* @param SupplierProposal $object Object to show
* @param int|float $posy Y
* @param Translate $outputlangs Langs object
- * @return integer
+ * @return int|float
*/
protected function _tableau_info(&$pdf, $object, $posy, $outputlangs)
{
diff --git a/htdocs/core/tpl/admin_extrafields_view.tpl.php b/htdocs/core/tpl/admin_extrafields_view.tpl.php
index 7c1f4a94a15..04d75f0e844 100644
--- a/htdocs/core/tpl/admin_extrafields_view.tpl.php
+++ b/htdocs/core/tpl/admin_extrafields_view.tpl.php
@@ -99,7 +99,7 @@ print "\n";
if (isset($extrafields->attributes[$elementtype]['type']) && is_array($extrafields->attributes[$elementtype]['type']) && count($extrafields->attributes[$elementtype]['type'])) {
foreach ($extrafields->attributes[$elementtype]['type'] as $key => $value) {
- /*if (! dol_eval($extrafields->attributes[$elementtype]['enabled'][$key], 1, 1, '1')) {
+ /*if (! (int) dol_eval($extrafields->attributes[$elementtype]['enabled'][$key], 1, 1, '1')) {
// TODO Uncomment this to exclude extrafields of modules not enabled. Add a link to "Show extrafields disabled"
// continue;
}*/
diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php
index ea44ee232c7..2503285cbc2 100644
--- a/htdocs/core/tpl/card_presend.tpl.php
+++ b/htdocs/core/tpl/card_presend.tpl.php
@@ -78,7 +78,7 @@ if ($action == 'presend') {
$outputlangs = new Translate('', $conf);
$outputlangs->setDefaultLang($newlang);
// Load traductions files required by page
- $outputlangs->loadLangs(array('commercial', 'bills', 'orders', 'contracts', 'members', 'propal', 'products', 'supplier_proposal', 'interventions', 'receptions', 'sendings'));
+ $outputlangs->loadLangs(array('commercial', 'bills', 'orders', 'contracts', 'main', 'members', 'propal', 'products', 'supplier_proposal', 'interventions', 'receptions', 'sendings'));
if (!empty($defaulttopiclang)) {
$outputlangs->loadLangs(array($defaulttopiclang));
}
diff --git a/htdocs/core/tpl/extrafields_list_array_fields.tpl.php b/htdocs/core/tpl/extrafields_list_array_fields.tpl.php
index 46ad5391035..e7f745cedf7 100644
--- a/htdocs/core/tpl/extrafields_list_array_fields.tpl.php
+++ b/htdocs/core/tpl/extrafields_list_array_fields.tpl.php
@@ -24,9 +24,9 @@ if (!empty($extrafieldsobjectkey)) { // $extrafieldsobject is the $object->table
$arrayfields[$extrafieldsobjectprefix.$key] = array(
'label' => $extrafields->attributes[$extrafieldsobjectkey]['label'][$key],
'type' => $extrafields->attributes[$extrafieldsobjectkey]['type'][$key],
- 'checked' => ((dol_eval($extrafields->attributes[$extrafieldsobjectkey]['list'][$key], 1, 1, '1') <= 0) ? 0 : 1),
+ 'checked' => (((int) dol_eval($extrafields->attributes[$extrafieldsobjectkey]['list'][$key], 1, 1, '1') <= 0) ? 0 : 1),
'position' => $extrafields->attributes[$extrafieldsobjectkey]['pos'][$key],
- 'enabled' => (abs((int) dol_eval($extrafields->attributes[$extrafieldsobjectkey]['list'][$key], 1)) != 3 && dol_eval($extrafields->attributes[$extrafieldsobjectkey]['perms'][$key], 1, 1, '1')),
+ 'enabled' => (abs((int) dol_eval($extrafields->attributes[$extrafieldsobjectkey]['list'][$key], 1)) != 3 && (int) dol_eval($extrafields->attributes[$extrafieldsobjectkey]['perms'][$key], 1, 1, '1')),
'langfile' => $extrafields->attributes[$extrafieldsobjectkey]['langfile'][$key],
'help' => $extrafields->attributes[$extrafieldsobjectkey]['help'][$key],
);
diff --git a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php
index 679a420df8c..b44df727362 100644
--- a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php
+++ b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php
@@ -35,7 +35,7 @@ if (!empty($extrafieldsobjectkey) && !empty($extrafields->attributes[$extrafield
// If field is a computed field, we make computation to get value
if ($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key]) {
$objectoffield = $object; //For compatibility with the computed formula
- $value = dol_eval($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key], 1, 1, '2');
+ $value = dol_eval((int) $extrafields->attributes[$extrafieldsobjectkey]['computed'][$key], 1, 1, '2');
if (is_numeric(price2num($value)) && $extrafields->attributes[$extrafieldsobjectkey]['totalizable'][$key]) {
$obj->$tmpkey = price2num($value);
}
diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php
index 2867f2ec15e..347e611b8bf 100644
--- a/htdocs/core/tpl/extrafields_view.tpl.php
+++ b/htdocs/core/tpl/extrafields_view.tpl.php
@@ -74,15 +74,15 @@ if (empty($reshook) && !empty($object->table_element) && isset($extrafields->att
$enabled = 1;
if ($enabled && isset($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra])) {
- $enabled = dol_eval($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra], 1, 1, '2');
+ $enabled = (int) dol_eval($extrafields->attributes[$object->table_element]['enabled'][$tmpkeyextra], 1, 1, '2');
}
if ($enabled && isset($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra])) {
- $enabled = dol_eval($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra], 1, 1, '2');
+ $enabled = (int) dol_eval($extrafields->attributes[$object->table_element]['list'][$tmpkeyextra], 1, 1, '2');
}
$perms = 1;
if ($perms && isset($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra])) {
- $perms = dol_eval($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra], 1, 1, '2');
+ $perms = (int) dol_eval($extrafields->attributes[$object->table_element]['perms'][$tmpkeyextra], 1, 1, '2');
}
//print $tmpkeyextra.'-'.$enabled.'-'.$perms.' '."\n";
diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php
index aacf0be0b0d..3dc3b059e8c 100644
--- a/htdocs/core/tpl/objectline_edit.tpl.php
+++ b/htdocs/core/tpl/objectline_edit.tpl.php
@@ -359,7 +359,7 @@ $coldisplay++;
trans('ServiceLimitedDuration').' '.$langs->trans('From').' '; ?>
lines)) {
+ if (getDolGlobalString('MAIN_FILL_SERVICE_DATES_FROM_LAST_SERVICE_LINE') && !empty($object->lines) && $i > 0) {
for ($j = $i - 1; $j >= 0; $j--) {
$lastline = $object->lines[$j];
if ($lastline->product_type == Product::TYPE_SERVICE && (!empty($lastline->date_start) || !empty($lastline->date_end))) {
diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
index b04026109f3..273b560fa27 100644
--- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
+++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php
@@ -399,11 +399,11 @@ class InterfaceTicketEmail extends DolibarrTriggers
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $value) {
$enabled = 1;
if ($enabled && isset($extrafields->attributes[$object->table_element]['list'][$key])) {
- $enabled = dol_eval($extrafields->attributes[$object->table_element]['list'][$key], 1);
+ $enabled = (int) dol_eval($extrafields->attributes[$object->table_element]['list'][$key], 1);
}
$perms = 1;
if ($perms && isset($extrafields->attributes[$object->table_element]['perms'][$key])) {
- $perms = dol_eval($extrafields->attributes[$object->table_element]['perms'][$key], 1);
+ $perms = (int) dol_eval($extrafields->attributes[$object->table_element]['perms'][$key], 1);
}
$qualified = true;
diff --git a/htdocs/datapolicy/class/datapolicycron.class.php b/htdocs/datapolicy/class/datapolicycron.class.php
index d83e4534acd..943c2e57956 100644
--- a/htdocs/datapolicy/class/datapolicycron.class.php
+++ b/htdocs/datapolicy/class/datapolicycron.class.php
@@ -501,11 +501,7 @@ class DataPolicyCron
}
if ($action == 'delete') { // If object to clean is not used
- if ($object->element == 'adherent') {
- $result = $object->delete($obj->rowid, $user);
- } else {
- $result = $object->delete($user);
- }
+ $result = $object->delete($user);
if ($result < 0) {
$errormsg = $object->error;
$error++;
diff --git a/htdocs/don/card.php b/htdocs/don/card.php
index adaa6686ebf..d925aa68368 100644
--- a/htdocs/don/card.php
+++ b/htdocs/don/card.php
@@ -293,6 +293,7 @@ if (empty($reshook)) {
// Action validation
if ($action == 'valid_promesse') {
$object->fetch($id);
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
if ($object->valid_promesse($id, $user->id) >= 0) {
setEventMessages($langs->trans("DonationValidated", $object->ref), null);
$action = '';
diff --git a/htdocs/don/class/api_donations.class.php b/htdocs/don/class/api_donations.class.php
index 5e13d12bd35..1312e385480 100644
--- a/htdocs/don/class/api_donations.class.php
+++ b/htdocs/don/class/api_donations.class.php
@@ -317,6 +317,7 @@ class Donations extends DolibarrApi
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
}
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$result = $this->don->valid_promesse($id, DolibarrApiAccess::$user->id, $notrigger);
if ($result == 0) {
throw new RestException(304, 'Error nothing done. May be object is already validated');
diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php
index dbdd5caf745..c3bce69d1db 100644
--- a/htdocs/don/class/don.class.php
+++ b/htdocs/don/class/don.class.php
@@ -725,6 +725,7 @@ class Don extends CommonObject
*/
public function setValid($user, $notrigger = 0)
{
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
return $this->valid_promesse($this->id, $user->id, $notrigger);
}
@@ -957,7 +958,7 @@ class Don extends CommonObject
$result .= $linkend;
global $action;
$hookmanager->initHooks(array($this->element . 'dao'));
- $parameters = array('id'=>$this->id, 'getnomurl' => &$result);
+ $parameters = array('id' => $this->id, 'getnomurl' => &$result);
$reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
$result = $hookmanager->resPrint;
diff --git a/htdocs/emailcollector/lib/emailcollector.lib.php b/htdocs/emailcollector/lib/emailcollector.lib.php
index 8bb69da5f3b..3549f20a5a5 100644
--- a/htdocs/emailcollector/lib/emailcollector.lib.php
+++ b/htdocs/emailcollector/lib/emailcollector.lib.php
@@ -38,13 +38,12 @@ function emailcollectorPrepareHead($object)
$h = 0;
$head = array();
- $head[$h][0] = dol_buildpath("/admin/emailcollector_card.php", 1).'?id='.$object->id;
+ $head[$h][0] = DOL_URL_ROOT . '/admin/emailcollector_card.php?id='.$object->id;
$head[$h][1] = $langs->trans("EmailCollector");
$head[$h][2] = 'card';
$h++;
- /*if (isset($object->fields['note_public']) || isset($object->fields['note_private']))
- {
+ /*if (isset($object->fields['note_public']) || isset($object->fields['note_private'])) {
$nbNote = 0;
if (!empty($object->note_private)) $nbNote++;
if (!empty($object->note_public)) $nbNote++;
diff --git a/htdocs/eventorganization/class/conferenceorbooth.class.php b/htdocs/eventorganization/class/conferenceorbooth.class.php
index f6f14fdf863..97497ced70a 100644
--- a/htdocs/eventorganization/class/conferenceorbooth.class.php
+++ b/htdocs/eventorganization/class/conferenceorbooth.class.php
@@ -359,13 +359,14 @@ class ConferenceOrBooth extends ActionComm
/**
* Delete object in database
*
- * @param int $notrigger false=launch triggers after, true=disable triggers
- * @return int Return integer <0 if KO, >0 if OK
+ * @param User $user User making the delete
+ * @param int $notrigger false=launch triggers after, true=disable triggers
+ * @return int Return integer <0 if KO, >0 if OK
*/
- public function delete($notrigger = 0)
+ public function delete($user, $notrigger = 0)
{
//TODO delete attendees and subscription
- return parent::delete($notrigger);
+ return parent::delete($user, $notrigger);
}
/**
diff --git a/htdocs/eventorganization/conferenceorbooth_list.php b/htdocs/eventorganization/conferenceorbooth_list.php
index 41caf186654..a2b370ba6f4 100644
--- a/htdocs/eventorganization/conferenceorbooth_list.php
+++ b/htdocs/eventorganization/conferenceorbooth_list.php
@@ -122,7 +122,7 @@ foreach ($object->fields as $key => $val) {
$arrayfields['t.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
- 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
+ 'enabled'=>(abs($visible) != 3 && (int) dol_eval($val['enabled'], 1)),
'position'=>$val['position'],
'help'=> isset($val['help']) ? $val['help'] : ''
);
diff --git a/htdocs/eventorganization/conferenceorboothattendee_list.php b/htdocs/eventorganization/conferenceorboothattendee_list.php
index 94145c852e1..afb8f29d942 100644
--- a/htdocs/eventorganization/conferenceorboothattendee_list.php
+++ b/htdocs/eventorganization/conferenceorboothattendee_list.php
@@ -130,7 +130,7 @@ foreach ($object->fields as $key => $val) {
$arrayfields['t.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
- 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
+ 'enabled'=>(abs($visible) != 3 && (int) dol_eval($val['enabled'], 1)),
'position'=>$val['position'],
'help'=> isset($val['help']) ? $val['help'] : ''
);
diff --git a/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php b/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php
index 1f89e43eaba..b0efb0602c5 100644
--- a/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php
+++ b/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php
@@ -1,5 +1,6 @@
*
* 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
@@ -16,7 +17,7 @@
*/
/**
- * \file lib/eventorganization_conferenceorbooth.lib.php
+ * \file htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php
* \ingroup eventorganization
* \brief Library files with common functions for ConferenceOrBooth
*/
@@ -37,18 +38,18 @@ function conferenceorboothPrepareHead($object, $with_project = 0)
$h = 0;
$head = array();
- $withProjectUrl='';
- if ($with_project>0) {
+ $withProjectUrl = '';
+ if ($with_project > 0) {
$withProjectUrl = "&withproject=1";
}
- $head[$h][0] = DOL_URL_ROOT.'/eventorganization/conferenceorbooth_card.php?id='.$object->id.$withProjectUrl;
+ $head[$h][0] = DOL_URL_ROOT . '/eventorganization/conferenceorbooth_card.php?id=' . $object->id . $withProjectUrl;
$head[$h][1] = $langs->trans("Card");
$head[$h][2] = 'card';
$h++;
if (getDolGlobalString('MAIN_FEATURES_LEVEL') && getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) {
- $head[$h][0] = DOL_URL_ROOT.'/eventorganization/conferenceorbooth_contact.php?id='.$object->id.$withProjectUrl;
+ $head[$h][0] = DOL_URL_ROOT . '/eventorganization/conferenceorbooth_contact.php?id=' . $object->id . $withProjectUrl;
$head[$h][1] = $langs->trans("ContactsAddresses");
$head[$h][2] = 'contact';
$h++;
@@ -82,15 +83,15 @@ function conferenceorboothPrepareHead($object, $with_project = 0)
$h++;
*/
- require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
- require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
- $upload_dir = $conf->eventorganization->dir_output."/conferenceorbooth/".dol_sanitizeFileName($object->ref);
+ require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
+ require_once DOL_DOCUMENT_ROOT . '/core/class/link.class.php';
+ $upload_dir = $conf->eventorganization->dir_output . "/conferenceorbooth/" . dol_sanitizeFileName($object->ref);
$nbFiles = count(dol_dir_list($upload_dir, 'files', 0, '', '(\.meta|_preview.*\.png)$'));
$nbLinks = Link::count($db, $object->element, $object->id);
- $head[$h][0] = dol_buildpath("/eventorganization/conferenceorbooth_document.php", 1).'?id='.$object->id.$withProjectUrl;
+ $head[$h][0] = DOL_URL_ROOT . '/eventorganization/conferenceorbooth_document.php?id=' . $object->id . $withProjectUrl;
$head[$h][1] = $langs->trans('Documents');
if (($nbFiles + $nbLinks) > 0) {
- $head[$h][1] .= ''.($nbFiles + $nbLinks).' ';
+ $head[$h][1] .= '' . ($nbFiles + $nbLinks) . ' ';
}
$head[$h][2] = 'document';
$h++;
@@ -125,22 +126,22 @@ function conferenceorboothProjectPrepareHead($object)
$h = 0;
$head = array();
- $head[$h][0] = dol_buildpath("/eventorganization/conferenceorbooth_list.php", 1).'?projectid='.$object->id;
+ $head[$h][0] = DOL_URL_ROOT . 'eventorganization/conferenceorbooth_list.php?projectid=' . $object->id;
$head[$h][1] = $langs->trans("ConferenceOrBooth");
$head[$h][2] = 'conferenceorbooth';
// Enable caching of conf or booth count attendees
$nbAttendees = 0;
- $nbConferenceOrBooth= 0;
- require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
- $cachekey = 'count_conferenceorbooth_project_'.$object->id;
+ $nbConferenceOrBooth = 0;
+ require_once DOL_DOCUMENT_ROOT . '/core/lib/memory.lib.php';
+ $cachekey = 'count_conferenceorbooth_project_' . $object->id;
$dataretrieved = dol_getcache($cachekey);
if (!is_null($dataretrieved)) {
$nbAttendees = $dataretrieved;
} else {
- require_once DOL_DOCUMENT_ROOT.'/eventorganization/class/conferenceorbooth.class.php';
- $conforbooth=new ConferenceOrBooth($db);
- $result = $conforbooth->fetchAll('', '', 0, 0, '(t.fk_project:=:'.((int) $object->id).')');
- if (!is_array($result) && $result<0) {
+ require_once DOL_DOCUMENT_ROOT . '/eventorganization/class/conferenceorbooth.class.php';
+ $conforbooth = new ConferenceOrBooth($db);
+ $result = $conforbooth->fetchAll('', '', 0, 0, '(t.fk_project:=:' . ((int) $object->id) . ')');
+ if (!is_array($result) && $result < 0) {
setEventMessages($conforbooth->error, $conforbooth->errors, 'errors');
} else {
$nbConferenceOrBooth = count($result);
@@ -148,25 +149,25 @@ function conferenceorboothProjectPrepareHead($object)
dol_setcache($cachekey, $nbConferenceOrBooth, 120); // If setting cache fails, this is not a problem, so we do not test result.
}
if ($nbConferenceOrBooth > 0) {
- $head[$h][1] .= ''.$nbConferenceOrBooth.' ';
+ $head[$h][1] .= '' . $nbConferenceOrBooth . ' ';
}
$h++;
- $head[$h][0] = dol_buildpath("/eventorganization/conferenceorboothattendee_list.php", 1).'?fk_project='.$object->id.'&withproject=1';
+ $head[$h][0] = DOL_URL_ROOT . '/eventorganization/conferenceorboothattendee_list.php?fk_project=' . $object->id . '&withproject=1';
$head[$h][1] = $langs->trans("Attendees");
$head[$h][2] = 'attendees';
// Enable caching of conf or booth count attendees
$nbAttendees = 0;
- require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
- $cachekey = 'count_attendees_conferenceorbooth_project_'.$object->id;
+ require_once DOL_DOCUMENT_ROOT . '/core/lib/memory.lib.php';
+ $cachekey = 'count_attendees_conferenceorbooth_project_' . $object->id;
$dataretrieved = dol_getcache($cachekey);
if (!is_null($dataretrieved)) {
$nbAttendees = $dataretrieved;
} else {
- require_once DOL_DOCUMENT_ROOT.'/eventorganization/class/conferenceorboothattendee.class.php';
- $attendees=new ConferenceOrBoothAttendee($db);
- $result = $attendees->fetchAll('', '', 0, 0, '(t.fk_project:=:'.((int) $object->id).')');
- if (!is_array($result) && $result<0) {
+ require_once DOL_DOCUMENT_ROOT . '/eventorganization/class/conferenceorboothattendee.class.php';
+ $attendees = new ConferenceOrBoothAttendee($db);
+ $result = $attendees->fetchAll('', '', 0, 0, '(t.fk_project:=:' . ((int) $object->id) . ')');
+ if (!is_array($result) && $result < 0) {
setEventMessages($attendees->error, $attendees->errors, 'errors');
} else {
$nbAttendees = count($result);
@@ -174,7 +175,7 @@ function conferenceorboothProjectPrepareHead($object)
dol_setcache($cachekey, $nbAttendees, 120); // If setting cache fails, this is not a problem, so we do not test result.
}
if ($nbAttendees > 0) {
- $head[$h][1] .= ''.$nbAttendees.' ';
+ $head[$h][1] .= '' . $nbAttendees . ' ';
}
complete_head_from_modules($conf, $langs, $object, $head, $h, 'conferenceorboothproject@eventorganization');
@@ -200,7 +201,7 @@ function conferenceorboothAttendeePrepareHead($object)
$h = 0;
$head = array();
- $head[$h][0] = DOL_URL_ROOT."/eventorganization/conferenceorboothattendee_card.php?id=".((int) $object->id).($object->fk_actioncomm > 0 ? '&conforboothid='.((int) $object->fk_actioncomm) : '').($object->fk_project > 0 ? '&withproject=1&fk_project='.((int) $object->fk_project) : '');
+ $head[$h][0] = DOL_URL_ROOT . "/eventorganization/conferenceorboothattendee_card.php?id=" . ((int) $object->id) . ($object->fk_actioncomm > 0 ? '&conforboothid=' . ((int) $object->fk_actioncomm) : '') . ($object->fk_project > 0 ? '&withproject=1&fk_project=' . ((int) $object->fk_project) : '');
$head[$h][1] = $langs->trans("Card");
$head[$h][2] = 'card';
$h++;
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index f0e85472b80..8c259b63e2a 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -506,7 +506,7 @@ if (empty($reshook)) {
}
} elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->hasRight('expedition', 'supprimer')) {
$also_update_stock = (GETPOST('alsoUpdateStock', 'alpha') ? 1 : 0);
- $result = $object->delete(0, $also_update_stock);
+ $result = $object->delete($user, 0, $also_update_stock);
if ($result > 0) {
header("Location: ".DOL_URL_ROOT.'/expedition/index.php');
exit;
@@ -2763,7 +2763,7 @@ if ($action == 'create') {
// Presend form
$modelmail = 'shipping_send';
- $defaulttopic = $langs->trans('SendShippingRef');
+ $defaulttopic = 'SendShippingRef';
$diroutput = $conf->expedition->dir_output.'/sending';
$trackid = 'shi'.$object->id;
diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php
index 4704baf9bb3..b9b21899b28 100644
--- a/htdocs/expedition/class/expedition.class.php
+++ b/htdocs/expedition/class/expedition.class.php
@@ -1242,7 +1242,7 @@ class Expedition extends CommonObject
$mouvS = new MouvementStock($this->db);
// we do not log origin because it will be deleted
- $mouvS->origin = null;
+ $mouvS->origin = '';
// get lot/serial
$lotArray = null;
if (isModEnabled('productbatch')) {
@@ -1376,13 +1376,18 @@ class Expedition extends CommonObject
* Delete shipment.
* Warning, do not delete a shipment if a delivery is linked to (with table llx_element_element)
*
- * @param int $notrigger Disable triggers
- * @param bool $also_update_stock true if the stock should be increased back (false by default)
- * @return int >0 if OK, 0 if deletion done but failed to delete files, <0 if KO
+ * @param User $user User making the deletion
+ * @param int $notrigger Disable triggers
+ * @param bool $also_update_stock true if the stock should be increased back (false by default)
+ * @return int >0 if OK, 0 if deletion done but failed to delete files, <0 if KO
*/
- public function delete($notrigger = 0, $also_update_stock = false)
+ public function delete($user = null, $notrigger = 0, $also_update_stock = false)
{
- global $conf, $langs, $user;
+ global $conf, $langs;
+
+ if (empty($user)) {
+ global $user;
+ }
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
@@ -1435,7 +1440,7 @@ class Expedition extends CommonObject
$mouvS = new MouvementStock($this->db);
// we do not log origin because it will be deleted
- $mouvS->origin = null;
+ $mouvS->origin = '';
// get lot/serial
$lotArray = $shipmentlinebatch->fetchAll($obj->expeditiondet_id);
if (!is_array($lotArray)) {
diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php
index c49cf2fbf14..c25fd3bff9c 100644
--- a/htdocs/exports/class/export.class.php
+++ b/htdocs/exports/class/export.class.php
@@ -764,7 +764,7 @@ class Export
// Export of compute field does not work. $obj contains $obj->alias_field and formula may contains $obj->field
// Also the formula may contains objects of class that are not loaded.
$computestring = $this->array_export_special[$indice][$key];
- //$tmp = dol_eval($computestring, 1, 0, '1');
+ //$tmp = (string) dol_eval($computestring, 1, 0, '2');
//$obj->$alias = $tmp;
$this->error = "ERROPNOTSUPPORTED. Operation ".$computestring." not supported. Export of 'computed' extrafields is not yet supported, please remove field.";
diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php
index a6c3687c9c5..638dbd6b700 100644
--- a/htdocs/exports/export.php
+++ b/htdocs/exports/export.php
@@ -58,7 +58,7 @@ $entitytoicon = array(
'other' => 'generic',
'account' => 'account',
'product' => 'product',
- 'virtualproduct'=>'product',
+ 'virtualproduct' => 'product',
'subproduct' => 'product',
'product_supplier_ref' => 'product',
'stock' => 'stock',
@@ -67,11 +67,11 @@ $entitytoicon = array(
'stockbatch' => 'stock',
'category' => 'category',
'shipment' => 'sending',
- 'shipment_line'=> 'sending',
- 'reception'=> 'sending',
- 'reception_line'=> 'sending',
- 'expensereport'=> 'trip',
- 'expensereport_line'=> 'trip',
+ 'shipment_line' => 'sending',
+ 'reception' => 'sending',
+ 'reception_line' => 'sending',
+ 'expensereport' => 'trip',
+ 'expensereport_line' => 'trip',
'holiday' => 'holiday',
'contract_line' => 'contract',
'translation' => 'generic',
@@ -114,16 +114,16 @@ $entitytolang = array(
'other' => 'Other',
'trip' => 'TripsAndExpenses',
'shipment' => 'Shipments',
- 'shipment_line'=> 'ShipmentLine',
+ 'shipment_line' => 'ShipmentLine',
'project' => 'Projects',
'projecttask' => 'Tasks',
'task_time' => 'TaskTimeSpent',
'action' => 'Event',
- 'expensereport'=> 'ExpenseReport',
- 'expensereport_line'=> 'ExpenseReportLine',
+ 'expensereport' => 'ExpenseReport',
+ 'expensereport_line' => 'ExpenseReportLine',
'holiday' => 'TitreRequestCP',
'contract' => 'Contract',
- 'contract_line'=> 'ContractLine',
+ 'contract_line' => 'ContractLine',
'translation' => 'Translation',
'bom' => 'BOM',
'bomline' => 'BOMLine',
@@ -1020,7 +1020,7 @@ if ($step == 4 && $datatoexport) {
print ' ';
print ' ';
print '';
- $arrayvisibility = array('private'=>$langs->trans("Private"), 'all'=>$langs->trans("Everybody"));
+ $arrayvisibility = array('private' => $langs->trans("Private"), 'all' => $langs->trans("Everybody"));
print $form->selectarray('visibility', $arrayvisibility, 'private');
print ' ';
print '';
@@ -1203,6 +1203,7 @@ if ($step == 5 && $datatoexport) {
$htmltabloflibs .= ' '.img_picto_common($key, $objmodelexport->getPictoForKey($key)).' ';
$text = $objmodelexport->getDriverDescForKey($key);
$label = $listeall[$key];
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$htmltabloflibs .= $form->textwithpicto($label, $text).' ';
$htmltabloflibs .= ''.$objmodelexport->getLibLabelForKey($key).' ';
$htmltabloflibs .= ''.$objmodelexport->getLibVersionForKey($key).' ';
diff --git a/htdocs/exports/index.php b/htdocs/exports/index.php
index d7ede2988cc..2cde771c03a 100644
--- a/htdocs/exports/index.php
+++ b/htdocs/exports/index.php
@@ -83,6 +83,7 @@ foreach ($liste as $key => $val) {
print ''.img_picto_common($model->getDriverLabelForKey($key), $model->getPictoForKey($key)).' ';
$text = $model->getDriverDescForKey($key);
$label = $liste[$key];
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
print ''.$form->textwithpicto($label, $text).' ';
print ''.$model->getLibLabelForKey($key).' ';
print ''.$model->getLibVersionForKey($key).' ';
diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php
index c5d1ad93933..a8301b48558 100644
--- a/htdocs/fichinter/card.php
+++ b/htdocs/fichinter/card.php
@@ -8,7 +8,7 @@
* Copyright (C) 2014-2022 Charlene Benke
* Copyright (C) 2015-2016 Abbes Bahfir
* Copyright (C) 2018-2022 Philippe Grand
- * Copyright (C) 2020 Frédéric France
+ * Copyright (C) 2020-2024 Frédéric France
* Copyright (C) 2023 Benjamin Grembi
* Copyright (C) 2023-2024 William Mead
*
@@ -338,7 +338,7 @@ if (empty($reshook)) {
if ($product_type == Product::TYPE_SERVICE || getDolGlobalString('FICHINTER_PRINT_PRODUCTS')) { //only services except if config includes products
$duration = 3600; // Default to one hour
-
+ $desc = '';
// Predefined products & services
if ($lines[$i]->fk_product > 0) {
$prod = new Product($db);
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index 32b4d27d4c8..7eff5f099d2 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -2316,6 +2316,8 @@ class CommandeFournisseur extends CommonOrder
*/
public function deleteLine($idline, $notrigger = 0)
{
+ global $user;
+
if ($this->statut == 0) {
$line = new CommandeFournisseurLigne($this->db);
@@ -2333,12 +2335,11 @@ class CommandeFournisseur extends CommonOrder
}
}
- if ($line->delete($notrigger) > 0) {
+ if ($line->delete($user, $notrigger) > 0) {
$this->update_price(1);
return 1;
} else {
- $this->error = $line->error;
- $this->errors = $line->errors;
+ $this->setErrorsFromObject($line);
return -1;
}
} else {
@@ -4158,12 +4159,15 @@ class CommandeFournisseurLigne extends CommonOrderLine
/**
* Delete line in database
*
+ * @param User $user User making the change
* @param int $notrigger 1=Disable call to triggers
* @return int Return integer <0 if KO, >0 if OK
*/
- public function delete($notrigger = 0)
+ public function delete($user, $notrigger = 0)
{
- global $user;
+ if (empty($user)) {
+ global $user;
+ }
$error = 0;
diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php
index 132af79c05f..c01feb22892 100644
--- a/htdocs/fourn/class/paiementfourn.class.php
+++ b/htdocs/fourn/class/paiementfourn.class.php
@@ -428,13 +428,15 @@ class PaiementFourn extends Paiement
* Si le paiement porte sur un ecriture compte qui est rapprochee, on refuse
* Si le paiement porte sur au moins une facture a "payee", on refuse
* @TODO Add User $user as first param
- *
+ * @param User $user User making the deletion
* @param int $notrigger No trigger
- * @return int Return integer <0 si ko, >0 si ok
+ * @return int Return integer <0 si ko, >0 si ok
*/
- public function delete($notrigger = 0)
+ public function delete($user = null, $notrigger = 0)
{
- global $user;
+ if (empty($user)) {
+ global $user;
+ }
$bank_line_id = $this->bank_line;
diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php
index d412fa6d6ee..68f6d8f0af2 100644
--- a/htdocs/fourn/commande/list.php
+++ b/htdocs/fourn/commande/list.php
@@ -200,7 +200,7 @@ foreach ($object->fields as $key => $val) {
$arrayfields['cf.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
- 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)),
+ 'enabled'=>(abs($visible) != 3 && (int) dol_eval($val['enabled'], 1)),
'position'=>$val['position'],
'help'=> isset($val['help']) ? $val['help'] : ''
);
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 2210f2c1493..6c097c907d8 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -143,7 +143,7 @@ $error = 0;
* Actions
*/
-$parameters = array('socid'=>$socid);
+$parameters = array('socid' => $socid);
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
@@ -747,7 +747,7 @@ if (empty($reshook)) {
$paiementfourn = new PaiementFourn($db);
$result = $paiementfourn->fetch(GETPOST('paiement_id'));
if ($result > 0) {
- $result = $paiementfourn->delete();
+ $result = $paiementfourn->delete($user);
if ($result > 0) {
header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
exit;
@@ -2403,7 +2403,7 @@ if ($action == 'create') {
// Deposit - Down payment
if (!getDolGlobalString('INVOICE_DISABLE_DEPOSIT')) {
print '';
- $tmp='
';
+ $tmp = '
';
print '";
- if ($nbofsuggested>0) {
+ if ($nbofsuggested > 0) {
echo "
".$langs->trans("SearchIntoBatch").": $nbofsuggested ";
foreach ($prod->stock_warehouse[getDolGlobalString($constantforkey)]->detail_batch as $dbatch) { // $dbatch is instance of Productbatch
$batchStock = + $dbatch->qty; // To get a numeric
@@ -628,7 +628,7 @@ if (empty($reshook)) {
if (getDolGlobalString('TAKEPOS_GROUP_SAME_PRODUCT')) {
foreach ($invoice->lines as $line) {
if ($line->product_ref == $prod->ref) {
- if ($line->special_code==4) {
+ if ($line->special_code == 4) {
continue;
} // If this line is sended to printer create new line
// check if qty in stock
@@ -678,7 +678,7 @@ if (empty($reshook)) {
// complete line by hook
$parameters = array('prod' => $prod, 'line' => $line);
- $reshook=$hookmanager->executeHooks('completeTakePosAddLine', $parameters, $invoice, $action); // Note that $action and $line may have been modified by some hooks
+ $reshook = $hookmanager->executeHooks('completeTakePosAddLine', $parameters, $invoice, $action); // Note that $action and $line may have been modified by some hooks
if ($reshook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
}
@@ -733,7 +733,7 @@ if (empty($reshook)) {
if ($action == "addnote" && ($user->hasRight('takepos', 'run') || defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE'))) {
$desc = GETPOST('addnote', 'alpha');
- if ($idline==0) {
+ if ($idline == 0) {
$invoice->update_note($desc, '_public');
} else {
foreach ($invoice->lines as $line) {
@@ -791,6 +791,7 @@ if (empty($reshook)) {
// We delete the lines
$resdeletelines = 1;
foreach ($invoice->lines as $line) {
+ // @phan-suppress-next-line PhanPluginSuspiciousParamPosition
$tmpres = $invoice->deleteLine($line->id);
if ($tmpres < 0) {
$resdeletelines = 0;
@@ -928,7 +929,7 @@ if (empty($reshook)) {
$invoice->fetch($placeid);
}
- if ($action=="setbatch" && ($user->hasRight('takepos', 'run') || defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE'))) {
+ if ($action == "setbatch" && ($user->hasRight('takepos', 'run') || defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE'))) {
$constantforkey = 'CASHDESK_ID_WAREHOUSE'.$_SESSION["takeposterminal"];
$sql = "UPDATE ".MAIN_DB_PREFIX."facturedet set batch=".$db->escape($batch).", fk_warehouse=".getDolGlobalString($constantforkey)." where rowid=".((int) $idoflineadded);
$db->query($sql);
@@ -1139,7 +1140,7 @@ if ((getDolGlobalString('TAKEPOS_PHONE_BASIC_LAYOUT') == 1 && $conf->browser->la