Kernel::System::DynamicFieldLegacy::Backend

NAME

Kernel::System::DynamicFieldLegacy::Backend

DESCRIPTION

DynamicFields backend interface

PUBLIC INTERFACE

new()

create a DynamicField backend object. Do not use it directly, instead use:

    my $BackendObject = $Kernel::OM->Get('Kernel::System::DynamicFieldLegacy::Backend');

EditFieldRender()

creates the field HTML to be used in edit masks.

    my $FieldHTML = $BackendObject->EditFieldRender(
        DynamicFieldConfig   => $DynamicFieldConfig,      # complete config of the DynamicField
        ParamObject          => $ParamObject,
        LayoutObject         => $LayoutObject,
        PossibleValuesFilter => {                         # Optional. Some backends may support this.
            'Key1' => 'Value1',                           #     This may be needed to realize ACL support for ticket masks,
            'Key2' => 'Value2',                           #     where the possible values can be limited with and ACL.
        },
        Template             => {                         # Optional data structure of GenericAgent etc.
            Owner => 2,                                   # Value is accessable via field name (DynamicField_ + field name)
            Title => 'Generic Agent Job was here'         # and could be a scalar, Hash- or ArrayRef
            ...
            DynamicField_ExampleField1 => 'Value 1'
        },
        Value                => 'Any value',              # Optional
        Mandatory            => 1,                        # 0 or 1,
        Class                => 'AnyCSSClass OrOneMore',  # Optional
        ServerError          => 1,                        # 0 or 1,
        ErrorMessage         => $ErrorMessage,            # Optional or a default will be used in error case
        UseDefaultValue      => 1,                        # 0 or 1, 1 default
        OverridePossibleNone => 1,                        # Optional, 0 or 1. If defined orverrides the Possible None
                                                          #     setting of all dynamic fields (where applies) with the
                                                          #     defined value
        ConfirmationNeeded   => 0,                        # Optional, 0 or 1, default 0. To display a confirmation element
                                                          #     on fields that apply (like checkbox)
        AJAXUpdate           => 1,                        # Optional, 0 ir 1. To create JS code for field change to update
                                                          #     the form using ACLs triggered by the field.
        UpdatableFields      => [                         # Optional, to use if AJAXUpdate is 1. List of fields to display a
            'NetxStateID',                                #     spinning wheel when reloading via AJAXUpdate.
            'PriorityID',
        ],
        MaxLength            => 100                       # Optional, defines the maximum number of characters on fields
                                                          #      where applies (like TextArea)
    );

    Returns {
        Field => $HTMLString,
        Label => $LabelString,
    };

DisplayValueRender()

creates value and title strings to be used in display masks. Supports HTML output and will transform dates to the current user's timezone.

    my $ValueStrg = $BackendObject->DisplayValueRender(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        Value              => 'Any value',              # Optional
        HTMLOutput         => 1,                        # or 0, default 1, to return HTML ready
                                                        #    values
        ValueMaxChars      => 20,                       # Optional (for HTMLOutput only)
        TitleMaxChars      => 20,                       # Optional (for HTMLOutput only)
        LayoutObject       => $LayoutObject,
    );

    Returns

    $ValueStrg = {
        Title       => $Title,
        Value       => $Value,
        Link        => $Link,
        LinkPreview => $LinkPreview,
    }

ValueSet()

sets a dynamic field value.

    my $Success = $BackendObject->ValueSet(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        ObjectID           => $ObjectID,                # ID of the current object that the field
                                                        # must be linked to, e. g. TicketID
        ObjectName         => $ObjectName,              # Name of the current object that the field
                                                        # must be linked to, e. g. CustomerUserLogin
                                                        # You have to give either ObjectID OR ObjectName
        Value              => $Value,                   # Value to store, depends on backend type
        UserID             => 123,
    );

ValueIsDifferent()

compares if two dynamic field values are different.

This function relies on Kernel::System::VariableCheck::DataIsDifferent() but with some exceptions depending on each field.

    my $Success = $BackendObject->ValueIsDifferent(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
                                                        # must be linked to, e. g. TicketID
        Value1             => $Value1,                  # Dynamic Field Value
        Value2             => $Value2,                  # Dynamic Field Value
    );

ValueDelete()

deletes a dynamic field value.

    my $Success = $BackendObject->ValueDelete(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        ObjectID           => $ObjectID,                # ID of the current object that the field
                                                        # must be linked to, e. g. TicketID
        UserID             => 123,
    );

AllValuesDelete()

deletes all values of a dynamic field.

    my $Success = $BackendObject->AllValuesDelete(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        UserID             => 123,
    );

ValueValidate()

validates a dynamic field value.

    my $Success = $BackendObject->ValueValidate(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        Value              => $Value,                   # Value to store, depends on backend type
        UserID             => 123,
    );

FieldValueValidate()

Validates a dynamic field possible value.

    my $Success = $BackendObject->FieldValueValidate(
        DynamicFieldConfig => $DynamicFieldConfig,      # Complete config of the DynamicField.
        Value              => $Value,                   # Value to validate from possible options.
        UserID             => 1,
    );

ValueGet()

get a dynamic field value.

    my $Value = $BackendObject->ValueGet(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        ObjectID           => $ObjectID,                # ID of the current object that the field
                                                        # must be linked to, e. g. TicketID
        ObjectName         => $ObjectName,              # Name of the current object that the field
                                                        # must be linked to, e. g. CustomerUserLogin
                                                        # You have to give either ObjectID OR ObjectName
    );

    Return $Value                                       # depends on backend type, i. e.
                                                        # Text, $Value =  'a string'
                                                        # DateTime, $Value = '1977-12-12 12:00:00'
                                                        # Checkbox, $Value = 1

ValueGetBulk()

Returns select dynamic fields from the database. Note: Values are converted based on the backend type.

    my $AllDFs = $BackendObject->GetAllDynamicFields(
        DynamicFieldConfigs => [    # (Required) Limit selection to this definition of dynamic fields.
            {
                ID         => 123,
                FieldType  => 'TextArea',
                ObjectType => 'Ticket',
                Config     => {},
                Name       => 'DynamicFieldName1';
            },
            {
                ID         => 124,
                FieldType  => 'MultiSelect',
                ObjectType => 'Ticket',
                Config     => {},
                Name       => 'DynamicFieldName2';
            },
        ],
        ObjectIDs => [              # (Required) Limit selection to these objects (e.g. TicketID).
            $ObjectID1,
            $ObjectID2,
            $ObjectID3,
        ],
        ReturnTypes      => [       # (Optional. Defines whether/how to render the return values).
            'Raw',
            'Lookup',
            'Readable',
        ],
        ReturnTypes      => 'Raw',  # (Optional. Simple syntax to single value).
    );

    Returns

    $AllDFs = {
        $ObjectID1 => {
            $DynamicFieldID1 => {
                Raw      => $RawValue,        # Default or if 'ReturnTypes' includes 'Raw'.
                Lookup   => $LookupValue,     # If 'ReturnTypes' includes 'Lookup'.
                Readable => $ReadableValue,   # If 'ReturnTypes' includes 'Readable'.
            },
            # ...
        },
        # ...
    };

SearchSQLGet()

returns the SQL WHERE part that needs to be used to search in a particular dynamic field. The table must already be joined.

    my $SQL = $BackendObject->SearchSQLGet(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        TableAlias         => $TableAlias,              # the alias of the already joined dynamic_field_value table to use
        SearchTerm         => $SearchTerm,              # What to look for. Placeholders in LIKE searches must be passed as %.
        Operator           => $Operator,                # One of [Equals, Like, GreaterThan, GreaterThanEquals, SmallerThan, SmallerThanEquals]
                                                        #   The supported operators differ for the different backends.
    );

SearchSQLOrderFieldGet()

returns the SQL field needed for ordering based on a dynamic field.

    my $SQL = $BackendObject->SearchSQLOrderFieldGet(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        TableAlias         => $TableAlias,              # the alias of the already joined dynamic_field_value table to use
    );

EditFieldValueGet()

extracts the value of a dynamic field from the param object.

    my $Value = $BackendObject->EditFieldValueGet(
        DynamicFieldConfig   => $DynamicFieldConfig,    # complete config of the DynamicField
        ParamObject          => $ParamObject,           # the current request data
        LayoutObject         => $LayoutObject,          # used to transform dates to user time zone
        TransformDates       => 1                       # 1 || 0, default 1, to transform the dynamic fields that
                                                        #   use dates to the user time zone (i.e. Date, DateTime
                                                        #   dynamic fields)
        Template             => $Template,
        ReturnValueStructure => 0,                      # 0 || 1, default 0
                                                        #   Returns special structure
                                                        #   (only for backend internal use).
        ReturnTemplateStructure => 0,                   # 0 || 1, default 0
                                                        #   Returns the structured values as got from the http request
    );

    Returns $Value;                                     # depending on each field type e.g.
                                                        #   $Value = 'a text';
                                                        #   $Value = '1977-12-12 12:00:00';
                                                        #   $Value = 1;

    my $Value = $BackendObject->EditFieldValueGet(
        DynamicFieldConfig      => $DynamicFieldConfig, # complete config of the DynamicField
        ParamObject             => $ParamObject,        # the current request data
        TransformDates          => 0                    # 1 || 0, default 1, to transform the dynamic fields that
                                                        #   use dates to the user time zone (i.e. Date, DateTime
                                                        #   dynamic fields)

        Template                => $Template            # stored values from DB like Search profile or Generic Agent job
        ReturnTemplateStructure => 1,                   # 0 || 1, default 0
                                                        #   Returns the structured values as got from the http request
                                                        #   (only for backend internal use).
    );

    Returns $Value;                                     # depending on each field type e.g.
                                                        #   $Value = 'a text';
                                                        #   $Value = {
                                                                Used   => 1,
                                                                Year   => '1977',
                                                                Month  => '12',
                                                                Day    => '12',
                                                                Hour   => '12',
                                                                Minute => '00'
                                                            },
                                                        #   $Value = 1;

EditFieldValueValidate()

validate the current value for the dynamic field

    my $Result = $BackendObject->EditFieldValueValidate(
        DynamicFieldConfig   => $DynamicFieldConfig,      # complete config of the DynamicField
        PossibleValuesFilter => {                         # Optional. Some backends may support this.
            'Key1' => 'Value1',                           #     This may be needed to realize ACL support for ticket masks,
            'Key2' => 'Value2',                           #     where the possible values can be limited with and ACL.
        },
        ParamObject          => $Self->{ParamObject}      # To get the values directly from the web request
        Mandatory            => 1,                        # 0 or 1,
    );

    Returns

    $Result = {
        ServerError        => 1,                          # 0 or 1,
        ErrorMessage       => $ErrorMessage,              # Optional or a default will be used in error case
    }

SearchFieldRender()

creates the field HTML to be used in search masks.

    my $FieldHTML = $BackendObject->SearchFieldRender(
        DynamicFieldConfig   => $DynamicFieldConfig,      # complete config of the DynamicField
        ParamObject          => $ParamObject,
        Profile              => $ProfileData,             # search template data to load
        PossibleValuesFilter => {                         # optional. Some backends may support this.
            'Key1' => 'Value1',                           #     This may be needed to realize ACL support for ticket masks,
            'Key2' => 'Value2',                           #     where the possible values can be limited with and ACL.
        },
        DefaultValue         => $Value,                   # optional, depending on each field type e.g
                                                          #   $Value = a text';
                                                          #   $Value
                                                          #       = 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartYear=1977;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartMonth=12;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartDay=12;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartHour=00;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartMinute=00;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartSecond=00;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopYear=2011;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopMonth=09;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopDay=29;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopHour=23;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopMinute=59;'
                                                          #       . 'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopSecond=59;';
                                                          #
                                                          #   $Value =  1;
        ConfirmationCheckboxes => 0,                      # or 1, to dislay confirmation checkboxes
        UseLabelHints          => 1,                      # or 0, default 1. To display seach hints in labels
        Type                   => 'some type',            # search preference type

    );

    Returns {
        Field => $HTMLString,
        Label => $LabelString,
    };

SearchFieldValueGet()

extracts the value of a dynamic field from the param object or search profile.

    my $Value = $BackendObject->SearchFieldValueGet(
        DynamicFieldConfig     => $DynamicFieldConfig,    # complete config of the DynamicField
        ParamObject            => $ParamObject,           # the current request data
        Profile                => $ProfileData,           # the serach profile
        ReturnProfileStructure => 0,                      # 0 || 1, default 0
                                                          #   Returns the structured values as got from the http request
        Type                   => 'some type',            # search preference type
    );

    Returns $Value;                                       # depending on each field type e.g.
                                                          #   $Value = 'a text';
                                                          #   $Value = {
                                                          #      'DynamicField_' . $DynamicFieldConfig->{Name} => 1,
                                                          #       ValueStart {
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartYear'   => '1977',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartMonth'  => '12',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartDay'    => '12',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartHour'   => '00',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartMinute' => '00',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartSecond' => '00',
                                                          #       },
                                                          #       ValueStop {
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopYear'    => '2011',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopMonth'   => '09',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopDay'     => '29',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopHour'    => '23',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopMinute'  => '59',
                                                          #           'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopSecond'  => '59',
                                                          #       },
                                                          #   },
                                                          #   $Value = 1;

    my $Value = $BackendObject->SearchFieldValueGet(
        DynamicFieldConfig   => $DynamicFieldConfig,      # complete config of the DynamicField
        ParamObject          => $ParamObject,             # the current request data
        Profile              => $ProfileData,             # the serach profile
        ReturnProfileStructure => 1,                      # 0 || 1, default 0
                                                          #   Returns the structured values as got from the http request
    );

    Returns $Value;                                       # depending on each field type e.g.
                                                          #   $Value =  {
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} => 'a text';
                                                          #   };
                                                          #   $Value = {
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name}                 => 1,
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartYear'   => '1977',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartMonth'  => '12',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartDay'    => '12',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartHour'   => '00',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartMinute' => '00',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StartSecond' => '00',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopYear'    => '2011',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopMonth'   => '09',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopDay'     => '29',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopHour'    => '23',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopMinute'  => '59',
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} . 'StopSecond'  => '59',
                                                          #   };
                                                          #   $Value =  {
                                                          #       'DynamicField_' . $DynamicFieldConfig->{Name} = 1;
                                                          #   };

SearchFieldPreferences()

Returns the search field preferences of the backend.

    my $SearchFieldPreferences = $BackendObject->SearchFieldPreferences(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
    );

    Returns (example for Date and DateTime):

    $SearchFieldPreferences = [
        {
            Type        => 'TimePoint',
            LabelSuffix => 'before/after',
        },
        {
            Type        => 'TimeSlot',
            LabelSuffix => 'between',
        },
    ];

SearchFieldParameterBuild()

build the search parameters to be passed to the search engine.

    my $DynamicFieldSearchParameter = $BackendObject->SearchFieldParameterBuild(
        DynamicFieldConfig   => $DynamicFieldConfig,    # complete config of the DynamicField
        LayoutObject         => $LayoutObject,          # optional
        Profile              => $ProfileData,           # the search profile
        Type                 => 'some type',            # search preference type
    );

    Returns

    $DynamicFieldSearchParameter = {
        Parameter {
            Equals => $Value,                           # Available operatiors:

                                                        #   Equals            => 123,
                                                        #   Like              => 'value*',
                                                        #   GreaterThan       => '2001-01-01 01:01:01',
                                                        #   GreaterThanEquals => '2001-01-01 01:01:01',
                                                        #   SmallerThan       => '2002-02-02 02:02:02',
                                                        #   SmallerThanEquals => '2002-02-02 02:02:02',
        },
        Display => $DisplayValue,                       # the value to be displayed in the search terms section
    };

ReadableValueRender()

creates value and title strings to be used for storage (e. g. TicketHistory). Produces text output and does not transform time zones of dates.

    my $ValueStrg = $BackendObject->ReadableValueRender(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        Value              => 'Any value',              # Optional
        ValueMaxChars      => 20,                       # Optional
        TitleMaxChars      => 20,                       # Optional
    );

    Returns

    $ValueStrg = {
        Title => $Title,
        Value => $Value,
    }

TemplateValueTypeGet()

gets the value type (SCALAR or ARRAY) for a field stored on a template, like a Search Profile or a Generic Agent job

    my $ValueType = $BackendObject->TemplateValueTypeGet(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
        FieldType => 'Edit',                             # or 'Search' or 'All'
    );

    returns

    $ValueType = {
        'DynamicField_ . '$DynamicFieldConfig->{Name} => 'SCALAR',
    }

    my $ValueType = $Self->{BackendObject}->TemplateValueTypeGet(
        DynamicFieldConfig => $DynamicFieldConfig,
        FieldType => 'Search',
    );

    returns

    $ValueType = {
        'Search_DynamicField_' . $DynamicFieldConfig->{Name} => 'ARRAY',
    }

    my $ValueType = $Self->{BackendObject}->TemplateValueTypeGet(
        DynamicFieldConfig => $DynamicFieldConfig,
        FieldType => 'All',
    );

    returns

    $ValueType = {
        'DynamicField_ . '$DynamicFieldConfig->{Name} => 'SCALAR',
        'Search_DynamicField_' . $DynamicFieldConfig->{Name} => 'ARRAY',
    }

RandomValueSet()

sets a dynamic field random value.

    my $Result = $BackendObject->RandomValueSet(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        ObjectID           => $ObjectID,                # ID of the current object that the field
                                                        # must be linked to, e. g. TicketID
        UserID             => 123,
    );

    returns:

    $Result {
        Success => 1                # or undef
        Value   => $RandomValue     # or undef
    }

HistoricalValuesGet()

returns the list of database values for a defined dynamic field. This function is used to calculate ACLs in Search Dialog

    my $HistorialValues = $BackendObject->HistoricalValuesGet(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
    );

    Returns:

    $HistoricalValues = {
        '1'     => '1',
        'Item1' => 'Item1',
        'Item2' => 'Item2',
    }

ValueLookup()

returns the display value for a value key for a defined Dynamic Field. This function is meaningful for those Dynamic Fields that stores a value different than the value that is shown ( e.g. a Dropdown field could store Key = 1 and Display Value = One ) other fields return the same value as the value key

    my $Value = $BackendObject->ValueLookup(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        Key                => 'sotred value',           # could also be an array ref for
                                                        #    MultipleSelect fields
        LanguageObject     => $LanguageObject,          # optional, used to get value translations
        ForceTimeZone      => 1,                        # optional, force displaying of timezone information if possible.
    );

    Returns:

    $Value = 'value to display';

HasBehavior()

checks if the dynamic field as an specified behavior

    my $Success = $BackendObject->HasBehavior(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
        Behavior           => 'Some Behavior',           # 'IsACLReducible' to be reduded by ACLs
                                                         #    and updatable via AJAX
                                                         # 'IsNotificationEventCondition' to be used
                                                         #     in the notification events as a
                                                         #     ticket condition
                                                         # 'IsSortable' to sort by this field in
                                                         #     "Small" overviews
                                                         # 'IsStatsCondition' to be used in
                                                         #     Statistics as a condition
                                                         # 'IsCustomerInterfaceCapable' to make
                                                         #     the field usable in the customer
                                                         #     interface
                                                         # 'IsHTMLContent' to indicate that there is                                                        # 'IsCustomerInterfaceCapable' to make
                                                         #     HTML content (avoid duble cnversion to HTML)
    );

    Returns:

    $Success = 1;                # or undefined (if the dynamic field does not have that behavior)

Functions For IsACLReducible Behavior

The following functions should be only used if the dynamic field has IsACLReducible behavior

PossibleValuesGet()

returns the list of possible values for a dynamic field

    my $PossibleValues = $BackendObject->PossibleValuesGet(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
    );

    Returns:

    $PossibleValues = {
        ''  => '-',             # 'none' value if defined in the dynamic field configuration
        '1' => 'Item1',
        '2' => 'Item2',
    }

BuildSelectionDataGet()

returns the list of possible values for a dynamic field as needed for BuildSelection or BuildSelectionJSON if TreeView parameter is set in the DynamicFieldConfig the result will be an ArrayHashRef, otherwise the result will be a HashRef.

    my $DataValues = $BackendObject->BuildSelectionDataGet(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
        PossibleValues     => $PossibleValues,           # field possible values (could be reduced
                                                         #    by ACLs)
        Value              => $Value,                    # optional scalar, ArrayRef or HashRef
                                                         #    depending on dynamic field the
    );

    Returns:

    $DataValues = {
        ''  => '-',
        '1' => 'Item1',
        '2' => 'Item2',
    }

    or

    $DataValues = [
        {
            Key   => '',
            Value => '-',
        },
        {
            Key   => '1',
            Value => 'Item1'
        },
        {
            Key      => '1::A',
            Value    => 'Item1-A',
            Disabled => 1,
        },
        {
            Key      => '1::A::1',
            Value    => 'Item1-A-1',
            Selected => 1,
        },
        {
            Key      => '2',
            Value    => 'Item2',
        },
    ];

Functions For IsStatsCondition Behavior

The following functions should be only used if the dynamic field has IsStatsCondition behavior

StatsFieldParameterBuild()

    my $DynamicFieldStatsParameter =  $BackendObject->StatsFieldParameterBuild(
        DynamicFieldConfig   => $DynamicFieldConfig,      # complete config of the DynamicField
        PossibleValuesFilter => ['value1', 'value2'],     # Optional. Some backends may support this.
                                                          #     This may be needed to realize ACL support for ticket masks,
                                                          #     where the possible values can be limited with and ACL.
    );

    returns

    $DynamicFieldStatsParameter = {
        Values => {
            $Key1 => $Value1,
            $Key2 => $Value2,
        },
        Name               => 'DynamicField_' . $DynamicFieldConfig->{Label},
        Element            => 'DynamicField_' . $DynamicFieldConfig->{Name},
        TranslatableValues => 1,
        TimePeriodFormat   => 'DateInputFormat',
        Block              => 'InputField',              # or 'MultiselectField' or 'Time'
    };

StatsSearchFieldParameterBuild()

build the search parameters to be passed to the search engine within the stats module.

    my $DynamicFieldStatsSearchParameter = $BackendObject->StatsSearchFieldParameterBuild(
        DynamicFieldConfig   => $DynamicFieldConfig,    # complete config of the DynamicField
        Value                => $Value,                 # the serach profile
    );

    Returns

    $DynamicFieldStatsSearchParameter = {
            Equals => $Value,                           # Available operatiors:

                                                        #   Equals            => 123,
                                                        #   Like              => 'value*',
                                                        #   GreaterThan       => '2001-01-01 01:01:01',
                                                        #   GreaterThanEquals => '2001-01-01 01:01:01',
                                                        #   SmallerThan       => '2002-02-02 02:02:02',
                                                        #   SmallerThanEquals => '2002-02-02 02:02:02',
        },
    };

Functions For IsNotificationEventCondition Behavior

The following functions should be only used if the dynamic field has IsNotificationEventCondition behavior

ObjectMatch()

return if the current field values matches with the value got in an objects attribute structure ( like the result of a TicketGet() )

    my $Match = $BackendObject->ObjectMatch(
        DynamicFieldConfig => $DynamicFieldConfig,       # complete config of the DynamicField
        Value              => $Value,                    # single value to match
        ObjectAttributes   => $ObjectAttributes,         # the complete set of attributes from an object
                                                         #      ( i.e. the result of a TicketGet() )
    );

    Returns:

    $Match                                 # 1 or 0

Functions For IsFiltrable Behavior

The following functions should be only used if the dynamic field has IsFiltrable behavior

ColumnFilterValuesGet()

get the list distinct values for a dynamic field from a list of tickets

    my $ColumnFilterValues = $BackendObject->ColumnFilterValuesGet(
        DynamicFieldConfig => $DynamicFieldConfig,      #DynamicField configuraction
        LayoutObject       => $LayoutObject,
        TicketIDs          => [23, 1, 56, 74],          # array ref list of ticket IDs
    );

    Returns:

    $HistoricalValues{
        ValueA => 'ValueA',
        ValueB => 'ValueB',
        ValueC => 'ValueC'
    };

ValueSearch()

Searches/fetches dynamic field value.

    my $Value = $BackendObject->ValueSearch(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        Search             => 'search term',
    );

    Returns [
        {
            ID            => 437,
            FieldID       => 23,
            ObjectID      => 133,
            ValueText     => 'some text',
            ValueDateTime => '1977-12-12 12:00:00',
            ValueInt      => 123,
            ValueDouble   => 123.123,
        },
    ];

FormFieldSchema()

Get dynamic field specific form field backend schema.

    my $FormFieldSchema = $BackendObject->FormFieldSchema(
        DynamicFieldConfig => $DynamicFieldConfig,          # complete config of the DynamicField
        Name               => 'MyDynamicField',             # optional: DF name. (Default: DF config value)
        Label              => 'My Dynamic Field',           # optional: DF label. (Default: DF config value)
        Description        => 'Long description',           # optional: Field description.
        Hint               => 'Short description',          # optional: Field description.
        Placeholder        => 'Please insert some text...', # optional: Field placeholder.
        Mandatory          => 1,                            # optional: Show field as mandatory. (Default: 0)
    );

    Returns {
        Type        => 'FormInput',
        Name        => 'MyDynamicField',
        Required    => 1,
        Label       => 'My Dynamic Field',
        Description => 'Long description',
        Hint        => 'Short description',
        Placeholder => 'Please insert some text...',
    };

DisplayValueData()

creates value and title strings to be used in display masks.

    my $DisplayValueData = $BackendObject->DisplayValueData(
        DynamicFieldConfig => $DynamicFieldConfig,      # complete config of the DynamicField
        Value              => 'Any value',              # Optional
    );

    Returns

    $DisplayValueData = {
        Title       => $Title,
        Value       => $Value,
        Link        => $Link,
        LinkPreview => $LinkPreview,
    }
Scroll to Top