From 064a153f7491089f51e6112e22511447631634c5 Mon Sep 17 00:00:00 2001 From: bernhard Date: Mon, 24 Jul 2023 14:36:01 +0200 Subject: [PATCH] Issue #2298: pass the relevant ObjectType to ValueSet. The ObjectType gives information what the passed ObjectID means. Currently this is only relevant for distinguishing between ITSMConfigItem and ITSMConfigItemVersion. --- Kernel/System/DynamicField/Driver/Lens.pm | 50 ++++++++++++++++------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/Kernel/System/DynamicField/Driver/Lens.pm b/Kernel/System/DynamicField/Driver/Lens.pm index 581f29e5ec..b4cbb4a5f8 100644 --- a/Kernel/System/DynamicField/Driver/Lens.pm +++ b/Kernel/System/DynamicField/Driver/Lens.pm @@ -120,10 +120,15 @@ sub ValueSet { LensDynamicFieldConfig => $LensDFConfig, ); + my $ReferenceDFConfig = $Self->_GetReferenceDFConfig( + LensDynamicFieldConfig => $LensDFConfig, + ); + return $Kernel::OM->Get('Kernel::System::DynamicField::Backend')->ValueSet( %Param, DynamicFieldConfig => $AttributeDFConfig, ObjectID => $ReferencedObjectID, + ObjectType => $ReferenceDFConfig->{Config}->{ReferencedObjectType}, ); } @@ -502,29 +507,21 @@ sub ValueLookup { Methods that are used only internally. -=head2 _GetReferencedObjectID() +=head2 _GetReferenceDFConfig() -The ID of the referenced object. +A dynamic field configuration that can be used as a delegate. =cut -sub _GetReferencedObjectID { +sub _GetReferenceDFConfig { my ( $Self, %Param ) = @_; - my $LensDFConfig = $Param{LensDynamicFieldConfig}; - my $ObjectID = $Param{ObjectID}; - - # Get the dynamic field for the referenced object + my $LensDFConfig = $Param{LensDynamicFieldConfig}; my $ReferenceDFID = $LensDFConfig->{Config}->{ReferenceDF}; - my $ReferenceDFConfig = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet( + return $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet( ID => $ReferenceDFID, ); - - return $Kernel::OM->Get('Kernel::System::DynamicField::Backend')->ValueGet( - DynamicFieldConfig => $ReferenceDFConfig, - ObjectID => $ObjectID, - ); } =head2 _GetAttributeDFConfig() @@ -536,8 +533,7 @@ A dynamic field configuration that can be used as a delegate. sub _GetAttributeDFConfig { my ( $Self, %Param ) = @_; - my $LensDFConfig = $Param{LensDynamicFieldConfig}; - + my $LensDFConfig = $Param{LensDynamicFieldConfig}; my $AttributeDFID = $LensDFConfig->{Config}->{AttributeDF}; return $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet( @@ -545,4 +541,28 @@ sub _GetAttributeDFConfig { ); } +=head2 _GetReferencedObjectID() + +The ID of the referenced object. + +=cut + +sub _GetReferencedObjectID { + my ( $Self, %Param ) = @_; + + # extract params + my $LensDFConfig = $Param{LensDynamicFieldConfig}; + my $ObjectID = $Param{ObjectID}; + + # Get the dynamic field config for the referenced object + my $ReferenceDFConfig = $Self->_GetReferenceDFConfig( + LensDynamicFieldConfig => $LensDFConfig, + ); + + return $Kernel::OM->Get('Kernel::System::DynamicField::Backend')->ValueGet( + DynamicFieldConfig => $ReferenceDFConfig, + ObjectID => $ObjectID, + ); +} + 1;