Sorry about the title... it's descriptive at least.

So I've got GenericAgent.pm running, and it works great.

My only complaint is that we are trying to classify messages as they come
in based on Subject first, then by the text in the body of the message.

The problem is, I have about 30 keywords for 5 different queues.  I don't
particularly want to create 30 different "items" within GenericAgent, but
things don't seem to work using this:

    'Unsubscribe Tickets' => {
        # get all tickets with these properties
        Queue => 'Support',
        States => ['new', 'open'],
        Body => ['%unsubscribe%', '%un-subscribe%', '%cancel%'],
        Locks => ['unlock'],
        # new ticket properties
        New => {
            Queue => 'Support::Unsubscribe',
            Note => {
                From => 'MoveTicketsAgent',
                Subject => 'Ticket Moved!',
                Body => 'Moved ticket from "Support" to "Unsubscribe" because that I 
do.',
                ArticleType => 'note-internal', # 
note-internal|note-external|note-report
            },
        },
    },

What would be nice is if I could search for multiple items within a ticket,
kind of like this:

    select * from tickets where (body like '%unsubscribe%' or body like
    '%un-subscribe%' or body like '%cancel%')

So I guess the issue is in otrs/Kernel/System/Ticket.pm on line 1386:

    foreach my $Key (keys %FieldSQLMapFullText) {
        if ($Param{$Key}) {
            $Param{$Key} =~ s/\*/%/gi;
            $SQLExt .= " AND $FieldSQLMapFullText{$Key} LIKE 
'".$Self->{DBObject}->Quote($Param{$Key})."'";
        }
    }

Well, I decided to fix it myself.  Here's the diff:

*** Ticket-orig.pm      2004-09-09 14:39:39.000000000 -0400
--- Ticket-Beckman.pm   2004-09-09 14:43:01.000000000 -0400
***************
*** 1385,1392 ****
      );
      foreach my $Key (keys %FieldSQLMapFullText) {
          if ($Param{$Key}) {
!             $Param{$Key} =~ s/\*/%/gi;
!             $SQLExt .= " AND $FieldSQLMapFullText{$Key} LIKE 
'".$Self->{DBObject}->Quote($Param{$Key})."'";
          }
      }
      # ticket free text
--- 1385,1402 ----
      );
      foreach my $Key (keys %FieldSQLMapFullText) {
          if ($Param{$Key}) {
!             if (ref($Param{$Key}) eq "ARRAY") {
!                 foreach (@{$Param{$Key}}) {
!                     s/\*/%/gi;
!                     push (@{$Param{MyKeys}}, "$FieldSQLMapFullText{$Key} LIKE 
'".$Self->{DBObject}->Quote($_)."'");
!                 }
!                 if ($Param{MyKeys}) {
!                     $SQLExt .= " AND (${\(join ' OR ' , @{$Param{MyKeys}})})";
!                 }
!             } else {
!                 $Param{$Key} =~ s/\*/%/gi;
!                 $SQLExt .= " AND $FieldSQLMapFullText{$Key} LIKE 
'".$Self->{DBObject}->Quote($Param{$Key})."'";
!             }
          }
      }
      # ticket free text

---------------------------------------------------------------------------
Peter Beckman                                                  Internet Guy
[EMAIL PROTECTED]                             http://www.purplecow.com/
---------------------------------------------------------------------------
_______________________________________________
OTRS mailing list: otrs - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/otrs
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/otrs
Support oder Consulting f�r Ihr OTRS System?
=> http://www.otrs.de/

Reply via email to