Skip to content

Commit

Permalink
Issue #4167: Refactored BaseEntity.pm
Browse files Browse the repository at this point in the history
  • Loading branch information
Rui Alves authored and svenoe committed Feb 20, 2025
1 parent 1bf18ff commit 3e1b62e
Showing 1 changed file with 32 additions and 27 deletions.
59 changes: 32 additions & 27 deletions Kernel/System/DynamicField/Driver/BaseEntity.pm
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ sub ValueSet {

if ( !$Param{Value} ) {
return $Kernel::OM->Get('Kernel::System::DynamicFieldValue')->ValueDelete(
FieldID => $Param{DynamicFieldConfig}->{ID},
FieldID => $Param{DynamicFieldConfig}{ID},
ObjectID => $Param{ObjectID},
UserID => $Param{UserID},
);
Expand All @@ -99,7 +99,7 @@ sub ValueSet {
}
elsif ( !$Param{Value}->@* ) {
return $Kernel::OM->Get('Kernel::System::DynamicFieldValue')->ValueDelete(
FieldID => $Param{DynamicFieldConfig}->{ID},
FieldID => $Param{DynamicFieldConfig}{ID},
ObjectID => $Param{ObjectID},
UserID => $Param{UserID},
);
Expand Down Expand Up @@ -151,7 +151,7 @@ sub ValueSet {
];

return $Kernel::OM->Get('Kernel::System::DynamicFieldValue')->ValueSet(
FieldID => $Param{DynamicFieldConfig}->{ID},
FieldID => $Param{DynamicFieldConfig}{ID},
ObjectID => $Param{ObjectID},
Value => $DBValue,
UserID => $Param{UserID},
Expand All @@ -162,7 +162,7 @@ sub ValueSet {
my $Value = $Param{DynamicFieldConfig}{Config}{MultiValue}
? $Param{Value}
: $Param{Set} ? [ map { $_->[0] } $Param{Value}->@* ]
: $Param{Value}->[0];
: $Param{Value}[0];

my $DBValue = $Self->ValueStructureToDB(
Value => $Value,
Expand All @@ -172,7 +172,7 @@ sub ValueSet {
);

return $Kernel::OM->Get('Kernel::System::DynamicFieldValue')->ValueSet(
FieldID => $Param{DynamicFieldConfig}->{ID},
FieldID => $Param{DynamicFieldConfig}{ID},
ObjectID => $Param{ObjectID},
Value => $DBValue,
UserID => $Param{UserID},
Expand Down Expand Up @@ -256,8 +256,8 @@ sub EditFieldRender {
my ( $Self, %Param ) = @_;

# take config from field config
my $FieldConfig = $Param{DynamicFieldConfig}->{Config};
my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}->{Name};
my $FieldConfig = $Param{DynamicFieldConfig}{Config};
my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}{Name};

my $Value = $Param{Value} // '';

Expand Down Expand Up @@ -306,7 +306,6 @@ sub EditFieldRender {

# set PossibleValues, use PossibleValuesFilter if defined
my $PossibleValues = $Param{PossibleValuesFilter} // $Self->PossibleValuesGet(%Param);

my %FieldTemplateData;

my @SelectionHTML;
Expand Down Expand Up @@ -424,13 +423,13 @@ sub EditFieldRender {
sub EditFieldValueGet {
my ( $Self, %Param ) = @_;

my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}->{Name};
my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}{Name};

my $Value;

# check if there is a Template and retrieve the dynamic field value from there
if ( IsHashRefWithData( $Param{Template} ) && defined $Param{Template}->{$FieldName} ) {
$Value = $Param{Template}->{$FieldName};
if ( IsHashRefWithData( $Param{Template} ) && defined $Param{Template}{$FieldName} ) {
$Value = $Param{Template}{$FieldName};
}

# otherwise get dynamic field value from the web request
Expand All @@ -441,7 +440,7 @@ sub EditFieldValueGet {
{
my @Data = $Param{ParamObject}->GetArray( Param => $FieldName );

if ( $Param{DynamicFieldConfig}->{Config}{MultiValue} ) {
if ( $Param{DynamicFieldConfig}{Config}{MultiValue} ) {

# delete the template value
pop @Data;
Expand Down Expand Up @@ -494,7 +493,6 @@ sub EditFieldValueValidate {

# get possible values list
my $PossibleValues = $Self->PossibleValuesGet(%Param);

for my $ValueItem ( @{$Value} ) {

# perform necessary validations
Expand Down Expand Up @@ -532,13 +530,17 @@ sub DisplayValueRender {
: ('');

$Param{ValueMaxChars} ||= '';

my $ItemList = $Self->PossibleValuesGet(
%Param
);
my @ReadableValues;
my @ReadableTitles;
for my $ValueItem (@Values) {
$ValueItem //= '';

# set title as value after update and before limit
if ($ValueItem) {
$ValueItem = $ItemList->{$ValueItem};
}
push @ReadableTitles, $ValueItem;

# HTML Output transformation
Expand Down Expand Up @@ -641,7 +643,7 @@ sub StatsFieldParameterBuild {

# get historical values from database
my $HistoricalValues = $Kernel::OM->Get('Kernel::System::DynamicFieldValue')->HistoricalValueGet(
FieldID => $Param{DynamicFieldConfig}->{ID},
FieldID => $Param{DynamicFieldConfig}{ID},
ValueType => 'Text,',
);

Expand All @@ -657,8 +659,8 @@ sub StatsFieldParameterBuild {

return {
Values => $Values,
Name => $Param{DynamicFieldConfig}->{Label},
Element => 'DynamicField_' . $Param{DynamicFieldConfig}->{Name},
Name => $Param{DynamicFieldConfig}{Label},
Element => 'DynamicField_' . $Param{DynamicFieldConfig}{Name},
Block => 'MultiSelectField',
};
}
Expand All @@ -678,12 +680,15 @@ sub ReadableValueRender {
else {
@Values = ( $Param{Value} );
}

my $ItemList = $Self->PossibleValuesGet(
%Param
);
my @ReadableValues;

for my $Item (@Values) {
$Item //= '';

if ($Item) {
$Item = $ItemList->{Item};
}
push @ReadableValues, $Item || '';
}

Expand Down Expand Up @@ -711,7 +716,7 @@ sub ReadableValueRender {
sub TemplateValueTypeGet {
my ( $Self, %Param ) = @_;

my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}->{Name};
my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}{Name};

# set the field types
my $EditValueType = 'ARRAY';
Expand Down Expand Up @@ -739,16 +744,16 @@ sub TemplateValueTypeGet {
sub ObjectMatch {
my ( $Self, %Param ) = @_;

my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}->{Name};
my $FieldName = 'DynamicField_' . $Param{DynamicFieldConfig}{Name};

# the attribute must be an array
return 0 if !IsArrayRefWithData( $Param{ObjectAttributes}->{$FieldName} );
return 0 if !IsArrayRefWithData( $Param{ObjectAttributes}{$FieldName} );

my $Match;

# search in all values for this attribute
VALUE:
for my $AttributeValue ( @{ $Param{ObjectAttributes}->{$FieldName} } ) {
for my $AttributeValue ( @{ $Param{ObjectAttributes}{$FieldName} } ) {

next VALUE if !defined $AttributeValue;

Expand Down Expand Up @@ -811,7 +816,7 @@ sub ColumnFilterValuesGet {
# get column filter values from database
my $ColumnFilterValues = $Kernel::OM->Get("Kernel::System::${ObjectType}::ColumnFilter")->DynamicFieldFilterValuesGet(
%Param,
FieldID => $Param{DynamicFieldConfig}->{ID},
FieldID => $Param{DynamicFieldConfig}{ID},
ValueType => $Self->{ValueType},
);

Expand All @@ -834,7 +839,7 @@ sub ColumnFilterValuesGet {
for my $ValueKey ( sort keys %{$ColumnFilterValues} ) {

my $OriginalValueName = $ColumnFilterValues->{$ValueKey};
$ColumnFilterValues->{$ValueKey} = $Param{LayoutObject}->{LanguageObject}->Translate($OriginalValueName);
$ColumnFilterValues->{$ValueKey} = $Param{LayoutObject}{LanguageObject}->Translate($OriginalValueName);
}
}

Expand Down

0 comments on commit 3e1b62e

Please sign in to comment.