dolibarr 21.0.0-alpha
ExtraFields Class Reference

Class to manage standard extra fields. More...

Collaboration diagram for ExtraFields:

Public Member Functions

 __construct ($db)
 Constructor.
 
 addExtraField ($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param='', $alwayseditable=0, $perms='', $list='-1', $help='', $computed='', $entity='', $langfile='', $enabled='1', $totalizable=0, $printable=0, $moreparams=array())
 Add a new extra field parameter.
 
 updateExtraField ($attrname, $label, $type, $pos, $size, $elementtype, $unique=0, $required=0, $default_value='', $param='', $alwayseditable=0, $perms='', $list='-1', $help='', $computed='', $entity='', $langfile='', $enabled='1', $totalizable=0, $printable=0, $moreparams=array())
 Update an existing extra field parameter.
 
 delete ($attrname, $elementtype='')
 Delete an optional attribute.
 
 update ($attrname, $label, $type, $length, $elementtype, $unique=0, $required=0, $pos=0, $param=array(), $alwayseditable=0, $perms='', $list='', $help='', $default='', $computed='', $entity='', $langfile='', $enabled='1', $totalizable=0, $printable=0, $moreparams=array())
 Modify type of a personalized attribute.
 
 fetch_name_optionals_label ($elementtype, $forceload=false, $attrname='')
 Load the array of extrafields definition $this->attributes.
 
 showInputField ($key, $value, $moreparam='', $keysuffix='', $keyprefix='', $morecss='', $objectid=0, $extrafieldsobjectkey='', $mode=0)
 Return HTML string to put an input field into a page Code very similar with showInputField of common object.
 
 showOutputField ($key, $value, $moreparam='', $extrafieldsobjectkey='', $outputlangs=null, $object=null)
 Return HTML string to put an output field into a page.
 
 getAlignFlag ($key, $extrafieldsobjectkey='')
 Return the CSS to use for this extrafield into list.
 
 showSeparator ($key, $object, $colspan=2, $display_type='card', $mode='')
 Return HTML string to print separator extrafield.
 
 setOptionalsFromPost ($extralabels, &$object, $onlykey='', $todefaultifmissing=0)
 Fill array_options property of object by extrafields value (using for data sent by forms)
 
 getOptionalsFromPost ($extrafieldsobjectkey, $keysuffix='', $keyprefix='')
 return array_options array of data of extrafields value of object sent by a search form
 

Static Public Member Functions

static getListOfTypesLabels ()
 Return array with all possible types and labels of extrafields.
 
static isEmptyValue ($v, string $type)
 Return if a value is "empty" for a mandatory vision.
 

Private Member Functions

 create ($attrname, $type='varchar', $length='255', $elementtype='', $unique=0, $required=0, $default_value='', $param=array(), $perms='', $list='0', $computed='', $help='', $moreparams=array())
 Add a new optional attribute.
 
 create_label ($attrname, $label='', $type='', $pos=0, $size='', $elementtype='', $unique=0, $required=0, $param='', $alwayseditable=0, $perms='', $list='-1', $help='', $default='', $computed='', $entity='', $langfile='', $enabled='1', $totalizable=0, $printable=0, $moreparams=array())
 Add description of a new optional attribute.
 
 delete_label ($attrname, $elementtype='')
 Delete description of an optional attribute.
 
 update_label ($attrname, $label, $type, $size, $elementtype, $unique=0, $required=0, $pos=0, $param=array(), $alwayseditable=0, $perms='', $list='0', $help='', $default='', $computed='', $entity='', $langfile='', $enabled='1', $totalizable=0, $printable=0, $moreparams=array())
 Modify description of personalized attribute This is a private method.
 

Detailed Description

Class to manage standard extra fields.

Definition at line 41 of file extrafields.class.php.

Constructor & Destructor Documentation

◆ __construct()

ExtraFields::__construct ( $db)

Constructor.

Parameters
DoliDB$dbDatabase handler

Definition at line 114 of file extrafields.class.php.

Member Function Documentation

◆ addExtraField()

ExtraFields::addExtraField ( $attrname,
$label,
$type,
$pos,
$size,
$elementtype,
$unique = 0,
$required = 0,
$default_value = '',
$param = '',
$alwayseditable = 0,
$perms = '',
$list = '-1',
$help = '',
$computed = '',
$entity = '',
$langfile = '',
$enabled = '1',
$totalizable = 0,
$printable = 0,
$moreparams = array() )

Add a new extra field parameter.

Parameters
string$attrnameCode of attribute
string$labellabel of attribute
string$typeType of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', 'separate',...)
int$posPosition of attribute
string$sizeSize/length definition of attribute ('5', '24,8', ...). For float, it contains 2 numeric separated with a comma.
string$elementtypeElement type. Same value than object->table_element (Example 'member', 'product', 'thirdparty', ...)
int<0,1>$unique Is field unique or not
int<0,1>$required Is field required or not
string$default_valueDefaulted value (In database. use the default_value feature for default value on screen. Example: '', '0', 'null', 'avalue')
array<string,mixed|mixed[]>|string$param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
int<0,1>$alwayseditable Is attribute always editable regardless of the document status
string$permsPermission to check
string$listVisibility ('0'=never visible, '1'=visible on list+forms, '2'=list only, '3'=form only or 'eval string')
string$helpText with help tooltip
string$computedComputed value
string$entityEntity of extrafields (for multicompany modules)
string$langfileLanguage file
string$enabledCondition to have the field enabled or not
int<0,1>$totalizable Is a measure. Must show a total on lists
int<0,1>$printable Is extrafield displayed on PDF
array<string,mixed>$moreparams More parameters. Example: array('css'=>, 'csslist'=>Css on list, 'cssview'=>...)
Returns
int Return integer <=0 if KO, >0 if OK

Definition at line 145 of file extrafields.class.php.

References create(), and create_label().

◆ create()

ExtraFields::create ( $attrname,
$type = 'varchar',
$length = '255',
$elementtype = '',
$unique = 0,
$required = 0,
$default_value = '',
$param = array(),
$perms = '',
$list = '0',
$computed = '',
$help = '',
$moreparams = array() )
private

Add a new optional attribute.

This is a private method. For public method, use addExtraField.

Parameters
string$attrnamecode of attribute
string$typeType of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', ...)
string$lengthSize/length of attribute ('5', '24,8', ...)
string$elementtypeElement type ('member', 'product', 'thirdparty', 'contact', ...)
int<0,1>$unique Is field unique or not
int<0,1>$required Is field required or not
string$default_valueDefault value for field (in database)
array<string,mixed|mixed[]>$param Params for field (ex for select list : array('options'=>array('value'=>'label of option'))
string$permsPermission
string$listInto list view by default
string$computedComputed value
string$helpHelp on tooltip
array<string,mixed>$moreparams More parameters. Example: array('css'=>, 'csslist'=>, 'cssview'=>...)
Returns
int Return integer <=0 if KO, >0 if OK

Definition at line 286 of file extrafields.class.php.

Referenced by addExtraField().

◆ create_label()

ExtraFields::create_label ( $attrname,
$label = '',
$type = '',
$pos = 0,
$size = '',
$elementtype = '',
$unique = 0,
$required = 0,
$param = '',
$alwayseditable = 0,
$perms = '',
$list = '-1',
$help = '',
$default = '',
$computed = '',
$entity = '',
$langfile = '',
$enabled = '1',
$totalizable = 0,
$printable = 0,
$moreparams = array() )
private

Add description of a new optional attribute.

Parameters
string$attrnamecode of attribute
string$labellabel of attribute
string$typeType of attribute ('int', 'varchar', 'text', 'html', 'date', 'datehour', 'float')
int$posPosition of attribute
string$sizeSize/length of attribute ('5', '24,8', ...)
string$elementtypeElement type ('member', 'product', 'thirdparty', ...)
int<0,1>$unique Is field unique or not
int<0,1>$required Is field required or not
array<string,mixed|mixed[]>|string$param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
int<0,1>$alwayseditable Is attribute always editable regardless of the document status
string$permsPermission to check
string$listVisibility
string$helpHelp on tooltip
string$defaultDefault value (in database. use the default_value feature for default value on screen).
string$computedComputed value
string$entityEntity of extrafields
string$langfileLanguage file
string$enabledCondition to have the field enabled or not
int<0,1>$totalizable Is a measure. Must show a total on lists
int<0,1>$printable Is extrafield displayed on PDF
array<string,mixed>$moreparams More parameters. Example: array('css'=>, 'csslist'=>, 'cssview'=>...)
Returns
int Return integer <=0 if KO, >0 if OK
Exceptions
Exception

Definition at line 408 of file extrafields.class.php.

References dol_now(), and dol_syslog().

Referenced by addExtraField().

◆ delete()

ExtraFields::delete ( $attrname,
$elementtype = '' )

Delete an optional attribute.

Parameters
string$attrnameCode of attribute to delete
string$elementtypeElement type ('member', 'product', 'thirdparty', 'contact', ...)
Returns
int Return integer < 0 if KO, 0 if nothing is done, 1 if OK

Definition at line 541 of file extrafields.class.php.

References delete_label().

◆ delete_label()

ExtraFields::delete_label ( $attrname,
$elementtype = '' )
private

Delete description of an optional attribute.

Parameters
string$attrnameCode of attribute to delete
string$elementtypeElement type ('member', 'product', 'thirdparty', ...)
Returns
int Return integer < 0 if KO, 0 if nothing is done, 1 if OK

Definition at line 606 of file extrafields.class.php.

References dol_print_error(), and dol_syslog().

Referenced by delete().

◆ fetch_name_optionals_label()

ExtraFields::fetch_name_optionals_label ( $elementtype,
$forceload = false,
$attrname = '' )

Load the array of extrafields definition $this->attributes.

Parameters
string$elementtypeType of element ('all' = all or $object->table_element like 'adherent', 'commande', 'thirdparty', 'facture', 'propal', 'product', ...).
boolean$forceloadForce load of extra fields whatever is status of cache.
string$attrnameThe name of the attribute.
Returns
array<string,string> Array of attributes keys+label for all extra fields. in addition $this->attributes will be completed with array{label:array<string,string>,type:array<string,string>,size:array<string,string>,default:array<string,string>,computed:array<string,string>,unique:array<string,int>,required:array<string,int>,param:array<string,mixed>,perms:array<string,mixed[]>,list:array<string,int>|array<string,string>,pos:array<string,int>,totalizable:array<string,int>,help:array<string,string>,printable:array<string,int>,enabled:array<string,int>,langfile:array<string,string>,css:array<string,string>,csslist:array<string,string>,hidden:array<string,int>,mandatoryfieldsofotherentities?:array<string,string>,loaded?:int,count:int} Note: count set as present to avoid static analysis notices

Definition at line 977 of file extrafields.class.php.

References dol_syslog(), and jsonOrUnserialize().

◆ getAlignFlag()

ExtraFields::getAlignFlag ( $key,
$extrafieldsobjectkey = '' )

Return the CSS to use for this extrafield into list.

Parameters
string$keyKey of attribute
string$extrafieldsobjectkeyIf defined, use the new method to get extrafields data
Returns
string Formatted value

Definition at line 2402 of file extrafields.class.php.

◆ getListOfTypesLabels()

static ExtraFields::getListOfTypesLabels ( )
static

Return array with all possible types and labels of extrafields.

Returns
string[]

Definition at line 2843 of file extrafields.class.php.

References getDolGlobalString().

◆ getOptionalsFromPost()

ExtraFields::getOptionalsFromPost ( $extrafieldsobjectkey,
$keysuffix = '',
$keyprefix = '' )

return array_options array of data of extrafields value of object sent by a search form

Parameters
array<string,mixed>|string$extrafieldsobjectkey array of extrafields (old usage) or value of object->table_element (new usage)
string$keysuffixSuffix string to add into name and id of field (can be used to avoid duplicate names)
string$keyprefixPrefix string to add into name and id of field (can be used to avoid duplicate names)
Returns
array<string,mixed>|int<0,0> array_options set or 0 if no value

Definition at line 2706 of file extrafields.class.php.

References dol_htmlcleanlastbr(), dol_mktime(), GETPOST(), GETPOSTINT(), GETPOSTISARRAY(), and price2num().

◆ isEmptyValue()

static ExtraFields::isEmptyValue ( $v,
string $type )
static

Return if a value is "empty" for a mandatory vision.

Parameters
null|int|float|string|array<int|string,mixed>$v Value to test
string$typeType of extrafield 'sellist', 'link', 'select', ...
Returns
bool True is value is an empty value, not allowed for a mandatory field.

Definition at line 2874 of file extrafields.class.php.

Referenced by CommonObject\insertExtraFields().

◆ setOptionalsFromPost()

ExtraFields::setOptionalsFromPost ( $extralabels,
& $object,
$onlykey = '',
$todefaultifmissing = 0 )

Fill array_options property of object by extrafields value (using for data sent by forms)

Parameters
null$extralabelsDeprecated (old $array of extrafields, now set this to null)
CommonObject$objectObject
string$onlykeyOnly some keys are filled: 'string' => When we make update of only one extrafield ($action = 'update_extras'), calling page can set this to avoid to have other extrafields being reset. '@GETPOSTISSET' => When we make update of several extrafields ($action = 'update'), calling page can set this to avoid to have fields not into POST being reset.
int$todefaultifmissing1=Set value to the default value in database if value is mandatory and missing
Returns
int 1 if array_options set, 0 if no value, -1 if error (field required missing for example)

Definition at line 2539 of file extrafields.class.php.

◆ showInputField()

ExtraFields::showInputField ( $key,
$value,
$moreparam = '',
$keysuffix = '',
$keyprefix = '',
$morecss = '',
$objectid = 0,
$extrafieldsobjectkey = '',
$mode = 0 )

Return HTML string to put an input field into a page Code very similar with showInputField of common object.

Parameters
string$keyKey of attribute
string|array{start:int,end:int}$value Preselected value to show (for date type it must be in timestamp format, for amount or price it must be a php numeric value); for dates in filter mode, a range array('start'=><timestamp>, 'end'=><timestamp>) should be provided
string$moreparamTo add more parameters on html input tag
string$keysuffixSuffix string to add after name and id of field (can be used to avoid duplicate names)
string$keyprefixPrefix string to add before name and id of field (can be used to avoid duplicate names)
string$morecssMore css (to defined size of field. Old behaviour: may also be a numeric)
int$objectidCurrent object id
string$extrafieldsobjectkeyThe key to use to store retrieved data (commonly $object->table_element)
int$mode1=Used for search filters
Returns
string

Definition at line 1088 of file extrafields.class.php.

References ajax_combobox(), dol_escape_htmltag(), dol_eval(), dol_syslog(), forgeSQLFromUniversalSearchCriteria(), getDolGlobalInt(), getDolGlobalString(), and price().

◆ showOutputField()

ExtraFields::showOutputField ( $key,
$value,
$moreparam = '',
$extrafieldsobjectkey = '',
$outputlangs = null,
$object = null )

Return HTML string to put an output field into a page.

Parameters
string$keyKey of attribute
string$valueValue to show
string$moreparamTo add more parameters on html input tag (only checkbox use html input for output rendering)
string$extrafieldsobjectkeyRequired (for example $object->table_element).
Translate$outputlangsOutput
object$objectThe parent object of field to show
Returns
string Formatted value

Definition at line 1958 of file extrafields.class.php.

References convertSecondToTime(), dol_eval(), dol_print_date(), dol_print_email(), dol_print_ip(), dol_print_phone(), dol_print_url(), dol_syslog(), dol_trunc(), getDolGlobalInt(), img_object(), price(), and yn().

◆ showSeparator()

ExtraFields::showSeparator ( $key,
$object,
$colspan = 2,
$display_type = 'card',
$mode = '' )

Return HTML string to print separator extrafield.

Parameters
string$keyKey of attribute
object$objectObject
int$colspanValue of colspan to use (it must includes the first column with title)
string$display_type"card" for form display, "line" for document line display (extrafields on propal line, order line, etc...)
string$modeShow output ('view') or input ('create' or 'edit') for extrafield
Returns
string HTML code with line for separator

Definition at line 2440 of file extrafields.class.php.

◆ update()

ExtraFields::update ( $attrname,
$label,
$type,
$length,
$elementtype,
$unique = 0,
$required = 0,
$pos = 0,
$param = array(),
$alwayseditable = 0,
$perms = '',
$list = '',
$help = '',
$default = '',
$computed = '',
$entity = '',
$langfile = '',
$enabled = '1',
$totalizable = 0,
$printable = 0,
$moreparams = array() )

Modify type of a personalized attribute.

Parameters
string$attrnameName of attribute
string$labelLabel of attribute
string$typeType of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', ...)
string$lengthSize/length of attribute ('5', '24,8', ...)
string$elementtypeElement type ('member', 'product', 'thirdparty', 'contact', ...)
int<0,1>$unique Is field unique or not
int<0,1>$required Is field required or not
int<0,1>$pos Position of attribute
array<string,mixed|mixed[]>$param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
int$alwayseditableIs attribute always editable regardless of the document status
string$permsPermission to check
string$listVisibility
string$helpHelp on tooltip
string$defaultDefault value (in database. use the default_value feature for default value on screen).
string$computedComputed value
string$entityEntity of extrafields
string$langfileLanguage file
string$enabledCondition to have the field enabled or not
int<0,1>$totalizable Is extrafield totalizable on list
int<0,1>$printable Is extrafield displayed on PDF
array<string,mixed>$moreparams More parameters. Example: array('css'=>, 'csslist'=>, 'cssview'=>...)
Returns
int >0 if OK, <=0 if KO
Exceptions
Exception

Definition at line 664 of file extrafields.class.php.

References dol_syslog(), and update_label().

Referenced by updateExtraField().

◆ update_label()

ExtraFields::update_label ( $attrname,
$label,
$type,
$size,
$elementtype,
$unique = 0,
$required = 0,
$pos = 0,
$param = array(),
$alwayseditable = 0,
$perms = '',
$list = '0',
$help = '',
$default = '',
$computed = '',
$entity = '',
$langfile = '',
$enabled = '1',
$totalizable = 0,
$printable = 0,
$moreparams = array() )
private

Modify description of personalized attribute This is a private method.

For public method, use updateExtraField.

Parameters
string$attrnameName of attribute
string$labelLabel of attribute
string$typeType of attribute
string$sizeSize/length of attribute ('5', '24,8', ...)
string$elementtypeElement type ('member', 'product', 'thirdparty', ...)
int<0,1>$unique Is field unique or not
int<0,1>$required Is field required or not
int$posPosition of attribute
array<string,mixed|array<string,mixed>>$param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
int<0,1>$alwayseditable Is attribute always editable regardless of the document status
string$permsPermission to check
string$listVisibility
string$helpHelp on tooltip.
string$defaultDefault value (in database. use the default_value feature for default value on screen).
string$computedComputed value
string$entityEntity of extrafields
string$langfileLanguage file
string$enabledCondition to have the field enabled or not
int<0,1>$totalizable Is extrafield totalizable on list
int<0,1>$printable Is extrafield displayed on PDF
array<string,mixed>$moreparams More parameters. Example: array('css'=>, 'csslist'=>, 'cssview'=>...)
Returns
int Return integer <=0 if KO, >0 if OK
Exceptions
Exception

Definition at line 822 of file extrafields.class.php.

References dol_now(), dol_print_error(), and dol_syslog().

Referenced by update(), and updateExtraField().

◆ updateExtraField()

ExtraFields::updateExtraField ( $attrname,
$label,
$type,
$pos,
$size,
$elementtype,
$unique = 0,
$required = 0,
$default_value = '',
$param = '',
$alwayseditable = 0,
$perms = '',
$list = '-1',
$help = '',
$computed = '',
$entity = '',
$langfile = '',
$enabled = '1',
$totalizable = 0,
$printable = 0,
$moreparams = array() )

Update an existing extra field parameter.

Parameters
string$attrnameCode of attribute
string$labellabel of attribute
string$typeType of attribute ('boolean', 'int', 'varchar', 'text', 'html', 'date', 'datetime', 'duration', 'price', 'pricecy', 'phone', 'mail', 'password', 'url', 'select', 'checkbox', 'separate',...)
int$posPosition of attribute
string$sizeSize/length definition of attribute ('5', '24,8', ...). For float, it contains 2 numeric separated with a comma.
string$elementtypeElement type. Same value than object->table_element (Example 'member', 'product', 'thirdparty', ...)
int<0,1>$unique Is field unique or not
int<0,1>$required Is field required or not
string$default_valueDefaulted value (In database. use the default_value feature for default value on screen. Example: '', '0', 'null', 'avalue')
array<string,mixed|mixed[]>|string$param Params for field (ex for select list : array('options' => array(value'=>'label of option')) )
int<0,1>$alwayseditable Is attribute always editable regardless of the document status
string$permsPermission to check
string$listVisibility ('0'=never visible, '1'=visible on list+forms, '2'=list only, '3'=form only or 'eval string')
string$helpText with help tooltip
string$computedComputed value
string$entityEntity of extrafields (for multicompany modules)
string$langfileLanguage file
string$enabledCondition to have the field enabled or not
int<0,1>$totalizable Is a measure. Must show a total on lists
int<0,1>$printable Is extrafield displayed on PDF
array<string,mixed>$moreparams More parameters. Example: array('css'=>, 'csslist'=>Css on list, 'cssview'=>...)
Returns
int Return integer <=0 if KO, >0 if OK

Definition at line 221 of file extrafields.class.php.

References dol_syslog(), update(), and update_label().


The documentation for this class was generated from the following file: