hide unreplied status for Rejected tickets, #41670
[freeside.git] / rt / lib / RT / Search / UnrepliedTickets.pm
index a996901..a4fdacd 100644 (file)
@@ -6,9 +6,9 @@
 
 =head1 DESCRIPTION
 
-Find all unresolved tickets owned by the current user where the last correspondence
-from a requestor (or ticket creation) is more recent than the last
-correspondence from a non-requestor (if there is any).
+Find all unresolved tickets owned by the current user where the last
+correspondence from a requestor (or ticket creation) is more recent than the
+last correspondence from a non-requestor (if there is any).
 
 =head1 METHODS
 
@@ -30,28 +30,44 @@ sub Prepare  {
   my $self = shift;
 
   my $TicketsObj = $self->TicketsObj;
-  $TicketsObj->Limit(
+  # bypass the pre-RT-4.2 TicketRestrictions stuff and just use SearchBuilder
+  $TicketsObj->RT::SearchBuilder::Limit(
     FIELD => 'Owner',
     VALUE => $TicketsObj->CurrentUser->id
   );
-  $TicketsObj->Limit(
+  $TicketsObj->RT::SearchBuilder::Limit(
     FIELD => 'Status',
     OPERATOR => '!=',
     VALUE => 'resolved'
   );
-  my $txn_alias = $TicketsObj->JoinTransactions;
   $TicketsObj->Limit(
+    FIELD => 'Status',
+    OPERATOR => '!=',
+    VALUE => 'rejected',
+  );
+  my $txn_alias = $TicketsObj->JoinTransactions;
+  $TicketsObj->RT::SearchBuilder::Limit(
     ALIAS => $txn_alias,
     FIELD => 'Created',
     OPERATOR => '>',
     VALUE => 'COALESCE(main.Told,\'1970-01-01\')',
     QUOTEVALUE => 0,
   );
-  $TicketsObj->Limit(
+  $TicketsObj->RT::SearchBuilder::Limit(
+    ALIAS => $txn_alias,
+    FIELD => 'Type',
+    OPERATOR => '=',
+    VALUE => 'Correspond',
+    SUBCLAUSE => 'transactiontype',
+    ENTRYAGGREGATOR => 'OR',
+  );
+  $TicketsObj->RT::SearchBuilder::Limit(
     ALIAS => $txn_alias,
     FIELD => 'Type',
-    OPERATOR => 'IN',
-    VALUE => [ 'Correspond', 'Create' ],
+    OPERATOR => '=',
+    VALUE => 'Create',
+    SUBCLAUSE => 'transactiontype',
+    ENTRYAGGREGATOR => 'OR',
   );
 
   return(1);