Skip to content

Commit

Permalink
Issue #3789: Enhance TicketSearch to support search via Lens DF
Browse files Browse the repository at this point in the history
- "Minimal invasive" changes to TicketSearch.pm
- Add missing implementation to Lens.pm Driver
- Add unit test for Lens searches
  • Loading branch information
MichaelThumes committed Sep 18, 2024
1 parent a9304b9 commit 1a6976c
Show file tree
Hide file tree
Showing 3 changed files with 637 additions and 19 deletions.
23 changes: 7 additions & 16 deletions Kernel/System/DynamicField/Driver/Lens.pm
Original file line number Diff line number Diff line change
Expand Up @@ -207,25 +207,16 @@ sub ValueValidate {
sub SearchSQLGet {
my ( $Self, %Param ) = @_;

# get database object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');

if ( $Param{Operator} eq 'Like' ) {

# TODO: also search ConfigItemID when an integer is given
return $DBObject->QueryCondition(
Key => "$Param{TableAlias}.value_text",
Value => $Param{SearchTerm},
);
}
my $LensDFConfig = $Param{DynamicFieldConfig};

# TODO: should other operators be supported ??
$Kernel::OM->Get('Kernel::System::Log')->Log(
'Priority' => 'error',
'Message' => "Unsupported Operator $Param{Operator}",
my $AttributeDFConfig = $Self->_GetAttributeDFConfig(
LensDynamicFieldConfig => $LensDFConfig,
);

return;
return $Kernel::OM->Get('Kernel::System::DynamicField::Backend')->SearchSQLGet(
%Param,
DynamicFieldConfig => $AttributeDFConfig,
);
}

sub SearchSQLOrderFieldGet {
Expand Down
21 changes: 18 additions & 3 deletions Kernel/System/Ticket/TicketSearch.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1551,10 +1551,25 @@ sub TicketSearch {
$DBObject->Quote( $DynamicField->{ID}, 'Integer' ) . ") ";
}
else {
$SQLFrom .= "INNER JOIN dynamic_field_value dfv$DynamicFieldJoinCounter
ON (st.id = dfv$DynamicFieldJoinCounter.object_id

if ( $DynamicField->{FieldType} eq 'Lens' ) {

$SQLFrom .= "INNER JOIN dynamic_field_value lensdfv$DynamicFieldJoinCounter
ON ( st.id = lensdfv$DynamicFieldJoinCounter.object_id
AND lensdfv$DynamicFieldJoinCounter.field_id = " .
$DynamicField->{Config}->{ReferenceDF} . " )
INNER JOIN dynamic_field_value dfv$DynamicFieldJoinCounter
ON ( lensdfv$DynamicFieldJoinCounter.value_int = dfv$DynamicFieldJoinCounter.object_id
AND dfv$DynamicFieldJoinCounter.field_id = " .
$DBObject->Quote( $DynamicField->{ID}, 'Integer' ) . ") ";
$DynamicField->{Config}->{AttributeDF} . " ) ";
}
else {

$SQLFrom .= "INNER JOIN dynamic_field_value dfv$DynamicFieldJoinCounter
ON (st.id = dfv$DynamicFieldJoinCounter.object_id
AND dfv$DynamicFieldJoinCounter.field_id = " .
$DBObject->Quote( $DynamicField->{ID}, 'Integer' ) . ") ";
}
}
}
elsif ( $DynamicField->{ObjectType} eq 'Article' ) {
Expand Down
Loading

0 comments on commit 1a6976c

Please sign in to comment.