Kernel::System::DynamicField
DynamicFields backend
create a DynamicField object. Do not use it directly, instead use:
my $DynamicFieldObject = $Kernel::OM->Get('Kernel::System::DynamicField');
add new Dynamic Field config
returns id of new Dynamic field if successful or undef otherwise
my $ID = $DynamicFieldObject->DynamicFieldAdd( InternalField => 0, # optional, 0 or 1, internal fields are protected Name => 'NameForField', # mandatory Label => 'a description', # mandatory, label to show FieldOrder => 123, # mandatory, display order FieldType => 'Text', # mandatory, selects the DF backend to use for this field ObjectType => 'Article', # this controls which object the dynamic field links to # allow only lowercase letters Config => $ConfigHashRef, # it is stored on YAML format # to individual articles, otherwise to tickets Reorder => 1, # or 0, to trigger reorder function, default 1 ValidID => 1, UserID => 123, );
Returns:
$ID = 567;
get Dynamic Field attributes
my $DynamicField = $DynamicFieldObject->DynamicFieldGet( ID => 123, # ID or Name must be provided Name => 'DynamicField', );
Returns:
$DynamicField = { ID => 123, InternalField => 0, Name => 'NameForField', Label => 'The label to show', FieldOrder => 123, FieldType => 'Text', ObjectType => 'Article', Config => $ConfigHashRef, ValidID => 1, CreateTime => '2011-02-08 15:08:00', ChangeTime => '2011-06-11 17:22:00', };
update Dynamic Field content into database
returns 1 on success or undef on error
my $Success = $DynamicFieldObject->DynamicFieldUpdate( ID => 1234, # mandatory Name => 'NameForField', # mandatory Label => 'a description', # mandatory, label to show FieldOrder => 123, # mandatory, display order FieldType => 'Text', # mandatory, selects the DF backend to use for this field ObjectType => 'Article', # this controls which object the dynamic field links to # allow only lowercase letters Config => $ConfigHashRef, # it is stored on YAML format # to individual articles, otherwise to tickets ValidID => 1, Reorder => 1, # or 0, to trigger reorder function, default 1 UserID => 123, );
delete a Dynamic field entry. You need to make sure that all values are deleted before calling this function, otherwise it will fail on DBMS which check referential integrity.
returns 1 if successful or undef otherwise
my $Success = $DynamicFieldObject->DynamicFieldDelete( ID => 123, UserID => 123, Reorder => 1, # or 0, to trigger reorder function, default 1 );
get DynamicField list ordered by the the "Field Order" field in the DB
my $List = $DynamicFieldObject->DynamicFieldList(); or my $List = $DynamicFieldObject->DynamicFieldList( Valid => 0, # optional, defaults to 1 # object type (optional) as STRING or as ARRAYREF ObjectType => 'Ticket', ObjectType => ['Ticket', 'Article'], ResultType => 'HASH', # optional, 'ARRAY' or 'HASH', defaults to 'ARRAY' FieldFilter => { # optional, only active fields (non 0) will be returned ItemOne => 1, ItemTwo => 2, ItemThree => 1, ItemFour => 1, ItemFive => 0, }, );
Returns:
$List = { 1 => 'ItemOne', 2 => 'ItemTwo', 3 => 'ItemThree', 4 => 'ItemFour', }; or $List = ( 1, 2, 3, 4 );
get DynamicField list with complete data ordered by the "Field Order" field in the DB
my $List = $DynamicFieldObject->DynamicFieldListGet(); or my $List = $DynamicFieldObject->DynamicFieldListGet( Valid => 0, # optional, defaults to 1 # object type (optional) as STRING or as ARRAYREF ObjectType => 'Ticket', ObjectType => ['Ticket', 'Article'], FieldFilter => { # optional, only active fields (non 0) will be returned nameforfield => 1, fieldname => 2, other => 0, otherfield => 0, }, );
Returns:
$List = ( { ID => 123, InternalField => 0, Name => 'nameforfield', Label => 'The label to show', FieldType => 'Text', ObjectType => 'Article', Config => $ConfigHashRef, ValidID => 1, CreateTime => '2011-02-08 15:08:00', ChangeTime => '2011-06-11 17:22:00', }, { ID => 321, InternalField => 0, Name => 'fieldname', Label => 'It is not a label', FieldType => 'Text', ObjectType => 'Ticket', Config => $ConfigHashRef, ValidID => 1, CreateTime => '2010-09-11 10:08:00', ChangeTime => '2011-01-01 01:01:01', }, ... );
sets the order of all dynamic fields based on a consecutive number list starting with number 1. This function will remove duplicate order numbers and gaps in the numbering.
my $Success = $DynamicFieldObject->DynamicFieldOrderReset();
Returns:
$Success = 1; # or 0 in case of error
checks for duplicate order numbers and gaps in the numbering.
my $Success = $DynamicFieldObject->DynamicFieldOrderCheck();
Returns:
$Success = 1; # or 0 in case duplicates or gaps in the dynamic fields # order numbering
(a) Fetches object ID(s) for given object name(s). (b) Fetches object name(s) for given object ID(s).
NOTE: Only use object mappings for dynamic fields that must support non-integer object IDs, like customer user logins and customer company IDs.
my $ObjectMapping = $DynamicFieldObject->ObjectMappingGet( ObjectName => $ObjectName, # Name or array ref of names of the object(s) to get the ID(s) for # Note: either give ObjectName or ObjectID ObjectID => $ObjectID, # ID or array ref of IDs of the object(s) to get the name(s) for # Note: either give ObjectName or ObjectID ObjectType => 'CustomerUser', # Type of object to get mapping for ); Returns for parameter ObjectID: $ObjectMapping = { ObjectID => ObjectName, ObjectID => ObjectName, ObjectID => ObjectName, # ... }; Returns for parameter ObjectName: $ObjectMapping = { ObjectName => ObjectID, ObjectName => ObjectID, ObjectName => ObjectID, # ... };
Creates an object mapping for the given given object name.
NOTE: Only use object mappings for dynamic fields that must support non-integer object IDs, like customer user logins and customer company IDs.
my $ObjectID = $DynamicFieldObject->ObjectMappingCreate( ObjectName => 'customer-1', # Name of the object to create the mapping for ObjectType => 'CustomerUser', # Type of object to create the mapping for );
Changes name of given object mapping.
NOTE: Only use object mappings for dynamic fields that must support non-integer object IDs, like customer user logins and customer company IDs.
my $Success = $DynamicFieldObject->ObjectMappingNameChange( OldObjectName => 'customer-1', NewObjectName => 'customer-2', ObjectType => 'CustomerUser', # Type of object to change name for ); Returns 1 on success.
This software is part of the OTRS project (https://otrs.org/).
This software comes with ABSOLUTELY NO WARRANTY. For details, see the enclosed file COPYING for license information (GPL). If you did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.