From 546e508a866487422ea746c4c1d2cbad505c7841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=A4rter?= Date: Mon, 26 Feb 2024 15:32:58 +0100 Subject: [PATCH] Issue #2298: Small bugfixes. --- Kernel/System/DynamicField/Driver/Lens.pm | 8 +++++--- Kernel/System/Web/FormCache.pm | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Kernel/System/DynamicField/Driver/Lens.pm b/Kernel/System/DynamicField/Driver/Lens.pm index 437c139ce7..0bd679c9ee 100644 --- a/Kernel/System/DynamicField/Driver/Lens.pm +++ b/Kernel/System/DynamicField/Driver/Lens.pm @@ -640,8 +640,10 @@ sub GetFieldState { Behavior => 'IsACLReducible', ); + my $ReferenceID = $DFParam->{ $DynamicFieldConfig->{Config}{ReferenceDFName} } ? $DFParam->{ $DynamicFieldConfig->{Config}{ReferenceDFName} }[0] : undef; + # get the current value of the referenced attribute field if an object is referenced - if ( $DFParam->{ $DynamicFieldConfig->{Config}{ReferenceDFName} } ) { + if ( $ReferenceID ) { $AttributeFieldValue = $Self->ValueGet( DynamicFieldConfig => $DynamicFieldConfig, @@ -672,13 +674,13 @@ sub GetFieldState { # or is currently stored for the edited ticket/ci/... (2) my $LastSearchResults = $Kernel::OM->Get('Kernel::System::Web::FormCache')->GetFormData( LayoutObject => $Kernel::OM->Get('Kernel::Output::HTML::Layout'), - Key => 'PossibleValues_DynamicField_' . $ReferenceDFName, + Key => 'PossibleValues_' . $ReferenceDFName, ); my $Allowed = 0; if ( $LastSearchResults ) { # if a search has already been performed for this form id - $Allowed = grep { $_ eq $DFParam->{ $ReferenceDFName } } $LastSearchResults->@* ? 1 : 0; + $Allowed = ( grep { $_ eq $ReferenceID } $LastSearchResults->@* ) ? 1 : 0; } else { # if no search has been performed yet, the database value for the referenced object is also valid diff --git a/Kernel/System/Web/FormCache.pm b/Kernel/System/Web/FormCache.pm index 60b262a09e..46cf4fdd0f 100644 --- a/Kernel/System/Web/FormCache.pm +++ b/Kernel/System/Web/FormCache.pm @@ -313,11 +313,11 @@ sub DESTROY { SESSIONID: for my $SessionID ( keys $Self->{CacheUpdate}->%* ) { - next SESSIONID if !IsHashRefWithContent( $Self->{CacheUpdate}{$SessionID} ); + next SESSIONID if !IsHashRefWithData( $Self->{CacheUpdate}{$SessionID} ); FORMID: for my $FormID ( keys $Self->{CacheUpdate}{$SessionID}->%* ) { - next FORMID if !IsHashRefWithContent( $Self->{CacheUpdate}{$SessionID}{$FormID} ); + next FORMID if !IsHashRefWithData( $Self->{CacheUpdate}{$SessionID}{$FormID} ); # extract session data to update my $Data = $Self->{Cache}{$SessionID}{$FormID}; @@ -355,7 +355,7 @@ sub DESTROY { # store all new data $DBObject->DoArray( SQL => 'INSERT INTO form_cache (session_id, form_id, cache_key, cache_value, serialized, create_time) VALUES (?, ?, ?, ?, ?, current_timestamp)', - Bind => [ $SessionID, $FormID, $DataToStore{Keys}, $DataToStore{Values} ], + Bind => [ $SessionID, $FormID, $DataToStore{Keys}, $DataToStore{Values}, $DataToStore{Serialized} ], ); } }