NAME
Kernel::System::DynamicFieldLegacy
DESCRIPTION
DynamicFields backend
PUBLIC INTERFACE
new()
create a DynamicField object. Do not use it directly, instead use:
my $DynamicFieldObject = $Kernel::OM->Get('Kernel::System::DynamicFieldLegacy');
DynamicFieldAdd()
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;
DynamicFieldGet()
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',
CreateBy => 1,
ChangeTime => '2011-06-11 17:22:00',
ChangeBy => 1,
};
DynamicFieldUpdate()
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,
);
DynamicFieldDelete()
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
);
DynamicFieldList()
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
);
DynamicFieldListGet()
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',
},
...
);
DynamicFieldOrderReset()
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
DynamicFieldOrderCheck()
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
ObjectMappingGet()
(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,
# ...
};
ObjectMappingCreate()
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
);
ObjectMappingNameChange()
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.