option to include resolved tickets in search, RT#11658
[freeside.git] / rt / lib / RT / Search / Googleish.pm
index 07e1904..88634ff 100644 (file)
@@ -142,7 +142,8 @@ sub QueryToSQL {
 
         # Is there a queue named $key?
         elsif ( $Queue = RT::Queue->new( $self->TicketsObj->CurrentUser )
-            and $Queue->Load($key) )
+            and $Queue->Load($key)
+            and $Queue->id )
         {
             my $quoted_queue = $Queue->Name;
             $quoted_queue =~ s/'/\\'/g;
@@ -152,6 +153,7 @@ sub QueryToSQL {
         # Is there a owner named $key?
         elsif ( $User = RT::User->new( $self->TicketsObj->CurrentUser )
             and $User->Load($key)
+            and $User->id
             and $User->Privileged )
         {
             push @owner_clauses, "Owner = '" . $User->Name . "'";
@@ -173,13 +175,15 @@ sub QueryToSQL {
         push @queue_clauses, "Queue = '$quoted_queue'";
     }
 
+    if ( ! @status_clauses 
+        and ! RT->Config->Get('SimpleSearchIncludeResolved') ) {
+        # implicitly exclude resolved status
+        @status_clauses = map "Status = '$_'", RT::Queue->ActiveStatusArray();
+    }
+
     push @tql_clauses, join( " OR ", sort @id_clauses );
     push @tql_clauses, join( " OR ", sort @owner_clauses );
-    if ( ! @status_clauses ) {
-        push @tql_clauses, join( " OR ", map "Status = '$_'", RT::Queue->ActiveStatusArray());
-    } else {
-        push @tql_clauses, join( " OR ", sort @status_clauses );
-    }
+    push @tql_clauses, join( " OR ", sort @status_clauses );
     push @tql_clauses, join( " OR ", sort @user_clauses );
     push @tql_clauses, join( " OR ", sort @queue_clauses );
     @tql_clauses = grep { $_ ? $_ = "( $_ )" : undef } @tql_clauses;