2022-04-04 11:17:45 +00:00
< ? php
2026-04-23 12:57:54 +00:00
/* Copyright ( C ) 2026 MDW < mdeweerd @ users . noreply . github . com >
FIX: Resolve possibly-undefined-variable cases flagged by PHPStan (#39523)
* FIX: Resolve possibly-undefined-variable cases flagged by PHPStan
Fixes several cases of the variable.undefined PHPStan rule instead of
just excluding them via the baseline: a wrong variable used to build a
delete link (dir_add_card.php), an uninitialized $result across a
try/catch (CMailFile), missing GETPOST reads ($mode, $fk_project/$date
reset via unset() creating cross-branch ambiguity), a missing $r
contract check (commonfieldsinimport.inc.php), missing @var/global
annotations for $conf/$langs/$bc, dead extrafields-display code
guarded by the wrong condition (expedition/card.php), and an
undefined $soc passed to formAddObjectLine() where objects have no
buyer thirdparty (replaced with null). Corresponding entries removed
from dev/build/phpstan/phpstan-baseline.neon.
* FIX: Resolve more possibly-undefined-variable cases flagged by PHPStan
Second batch of variable.undefined fixes removed from the baseline:
- Complex conditional flows PHPStan can't prove exhaustive (Stripe key
selection in commoninvoice.class.php, a situation-invoice loop var in
pdf_sponge.modules.php, a product loop var in stock/movement_list.php)
fixed by adding a definite initialization before the ambiguous branch.
- A commented-out $linkback assignment restored in
expensereport/payment/info.php.
- Missing GETPOST reads added (holiday/list.php update-date filters,
product/stock/info.php $action/$socid, projet/comment.php $mode).
- A dead-code $mesg call to dol_htmloutput_mesg() removed from
admin_hrm.php (messages are already shown via setEventMessages()).
- Redundant isset() checks removed in product/reassort.php and
reassortlot.php where $type is unconditionally set earlier in the
same file, so the isset()-false branch was unreachable dead code.
- $user documented as always available in public/bookcal/index.php
(NOREQUIREUSER is not defined on that page).
- A genuinely missing $tmpcode initialization fixed in
attendee_new.php, suggestbooth.php and suggestconference.php: when
an existing thirdparty is reused (or SOCIETE_CODECLIENT_ADDON has no
auto-numbering), $tmpcode was never set before being assigned to
code_client/code_fournisseur.
* add phan fix
* add phan fix
* fix
* fix
* fix
2026-08-15 16:33:12 +00:00
* Copyright ( C ) 2026 Frédéric France < frederic . france @ free . fr >
2026-04-23 12:57:54 +00:00
*/
2024-02-21 17:14:29 +00:00
'@phan-var-force DolibarrModules $this' ;
2026-04-23 12:57:54 +00:00
/** @var DolibarrModules $this */
2022-04-04 11:17:45 +00:00
FIX: Resolve possibly-undefined-variable cases flagged by PHPStan (#39523)
* FIX: Resolve possibly-undefined-variable cases flagged by PHPStan
Fixes several cases of the variable.undefined PHPStan rule instead of
just excluding them via the baseline: a wrong variable used to build a
delete link (dir_add_card.php), an uninitialized $result across a
try/catch (CMailFile), missing GETPOST reads ($mode, $fk_project/$date
reset via unset() creating cross-branch ambiguity), a missing $r
contract check (commonfieldsinimport.inc.php), missing @var/global
annotations for $conf/$langs/$bc, dead extrafields-display code
guarded by the wrong condition (expedition/card.php), and an
undefined $soc passed to formAddObjectLine() where objects have no
buyer thirdparty (replaced with null). Corresponding entries removed
from dev/build/phpstan/phpstan-baseline.neon.
* FIX: Resolve more possibly-undefined-variable cases flagged by PHPStan
Second batch of variable.undefined fixes removed from the baseline:
- Complex conditional flows PHPStan can't prove exhaustive (Stripe key
selection in commoninvoice.class.php, a situation-invoice loop var in
pdf_sponge.modules.php, a product loop var in stock/movement_list.php)
fixed by adding a definite initialization before the ambiguous branch.
- A commented-out $linkback assignment restored in
expensereport/payment/info.php.
- Missing GETPOST reads added (holiday/list.php update-date filters,
product/stock/info.php $action/$socid, projet/comment.php $mode).
- A dead-code $mesg call to dol_htmloutput_mesg() removed from
admin_hrm.php (messages are already shown via setEventMessages()).
- Redundant isset() checks removed in product/reassort.php and
reassortlot.php where $type is unconditionally set earlier in the
same file, so the isset()-false branch was unreachable dead code.
- $user documented as always available in public/bookcal/index.php
(NOREQUIREUSER is not defined on that page).
- A genuinely missing $tmpcode initialization fixed in
attendee_new.php, suggestbooth.php and suggestconference.php: when
an existing thirdparty is reused (or SOCIETE_CODECLIENT_ADDON has no
auto-numbering), $tmpcode was never set before being assigned to
code_client/code_fournisseur.
* add phan fix
* add phan fix
* fix
* fix
* fix
2026-08-15 16:33:12 +00:00
if ( empty ( $keyforclass ) || empty ( $keyforclassfile ) || empty ( $keyforelement ) || empty ( $r )) {
2022-04-04 11:17:45 +00:00
//print $keyforclass.' - '.$keyforclassfile.' - '.$keyforelement;
FIX: Resolve possibly-undefined-variable cases flagged by PHPStan (#39523)
* FIX: Resolve possibly-undefined-variable cases flagged by PHPStan
Fixes several cases of the variable.undefined PHPStan rule instead of
just excluding them via the baseline: a wrong variable used to build a
delete link (dir_add_card.php), an uninitialized $result across a
try/catch (CMailFile), missing GETPOST reads ($mode, $fk_project/$date
reset via unset() creating cross-branch ambiguity), a missing $r
contract check (commonfieldsinimport.inc.php), missing @var/global
annotations for $conf/$langs/$bc, dead extrafields-display code
guarded by the wrong condition (expedition/card.php), and an
undefined $soc passed to formAddObjectLine() where objects have no
buyer thirdparty (replaced with null). Corresponding entries removed
from dev/build/phpstan/phpstan-baseline.neon.
* FIX: Resolve more possibly-undefined-variable cases flagged by PHPStan
Second batch of variable.undefined fixes removed from the baseline:
- Complex conditional flows PHPStan can't prove exhaustive (Stripe key
selection in commoninvoice.class.php, a situation-invoice loop var in
pdf_sponge.modules.php, a product loop var in stock/movement_list.php)
fixed by adding a definite initialization before the ambiguous branch.
- A commented-out $linkback assignment restored in
expensereport/payment/info.php.
- Missing GETPOST reads added (holiday/list.php update-date filters,
product/stock/info.php $action/$socid, projet/comment.php $mode).
- A dead-code $mesg call to dol_htmloutput_mesg() removed from
admin_hrm.php (messages are already shown via setEventMessages()).
- Redundant isset() checks removed in product/reassort.php and
reassortlot.php where $type is unconditionally set earlier in the
same file, so the isset()-false branch was unreachable dead code.
- $user documented as always available in public/bookcal/index.php
(NOREQUIREUSER is not defined on that page).
- A genuinely missing $tmpcode initialization fixed in
attendee_new.php, suggestbooth.php and suggestconference.php: when
an existing thirdparty is reused (or SOCIETE_CODECLIENT_ADDON has no
auto-numbering), $tmpcode was never set before being assigned to
code_client/code_fournisseur.
* add phan fix
* add phan fix
* fix
* fix
* fix
2026-08-15 16:33:12 +00:00
dol_print_error ( null , 'include of file commonfieldsinimport.inc.php was done but var $keyforclass or $keyforclassfile or $keyforelement or $r was not set' );
2022-04-04 11:17:45 +00:00
exit ;
}
if ( empty ( $keyforalias )) {
$keyforalias = 't' ;
}
dol_include_once ( $keyforclassfile );
if ( class_exists ( $keyforclass )) {
2026-04-23 12:57:54 +00:00
/** @var CommonObject $tmpobject */
2022-04-04 11:17:45 +00:00
$tmpobject = new $keyforclass ( $this -> db );
2026-04-23 12:57:54 +00:00
'@phan-var-force CommonObject $tmpobject' ;
2022-04-04 11:17:45 +00:00
// Add common fields
foreach ( $tmpobject -> fields as $keyfield => $valuefield ) {
$fieldname = $keyforalias . '.' . $keyfield ;
$fieldlabel = ucfirst ( $valuefield [ 'label' ]);
$typeFilter = " Text " ;
$typefield = preg_replace ( '/\(.*$/' , '' , $valuefield [ 'type' ]); // double(24,8) -> double
switch ( $typefield ) {
case 'int' :
case 'integer' :
case 'double' :
case 'price' :
$typeFilter = " Numeric " ;
break ;
case 'date' :
case 'datetime' :
case 'timestamp' :
$typeFilter = " Date " ;
break ;
case 'boolean' :
$typeFilter = " Boolean " ;
break ;
2026-04-23 12:57:54 +00:00
/*
* case 'sellist' :
* $tmp = '' ;
* $tmpparam = jsonOrUnserialize ( $obj -> param ); // $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
* if ( $tmpparam [ 'options' ] && is_array ( $tmpparam [ 'options' ])) {
* $tmpkeys = array_keys ( $tmpparam [ 'options' ]);
* $tmp = array_shift ( $tmpkeys );
* }
* if ( preg_match ( '/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/' , $tmp )) $typeFilter = " List: " . $tmp ;
* break ;
*/
2022-04-04 11:17:45 +00:00
}
$helpfield = '' ;
if ( ! empty ( $valuefield [ 'help' ])) {
$helpfield = preg_replace ( '/\(.*$/' , '' , $valuefield [ 'help' ]);
}
if ( $valuefield [ 'enabled' ]) {
$this -> import_fields_array [ $r ][ $fieldname ] = $fieldlabel ;
$this -> import_TypeFields_array [ $r ][ $fieldname ] = $typeFilter ;
$this -> import_entities_array [ $r ][ $fieldname ] = $keyforelement ;
$this -> import_help_array [ $r ][ $fieldname ] = $helpfield ;
}
}
} else {
dol_print_error ( $this -> db , 'Failed to find class ' . $keyforclass . ', even after the include of ' . $keyforclassfile );
}
// End add common fields