From 3b54c6e75023b5b938867be063cb9b59ca2da130 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Thu, 20 Aug 2015 14:53:01 -0500
Subject: [PATCH] search: Prefer user search of current advanced search

Also, apply requested state to the user and organization tickets search.
---
 include/staff/tickets.inc.php | 30 +++++++++++++++++-------------
 scp/tickets.php               |  5 +++--
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php
index 7ec261761..2de687068 100644
--- a/include/staff/tickets.inc.php
+++ b/include/staff/tickets.inc.php
@@ -110,25 +110,14 @@ case 'search':
         // Clear sticky search queue
         unset($_SESSION[$queue_key]);
         break;
-    } elseif (isset($_SESSION['advsearch'])) {
-        $form = $search->getFormFromSession('advsearch');
-        $tickets = $search->mangleQuerySet($tickets, $form);
-        $view_all_tickets = $thisstaff->hasPerm(SearchBackend::PERM_EVERYTHING);
-        $results_type=__('Advanced Search')
-            . '<a class="action-button" style="font-size: 15px;" href="?clear_filter"><i style="top:0" class="icon-ban-circle"></i> <em>' . __('clear') . '</em></a>';
-        foreach ($form->getFields() as $sf) {
-            if ($sf->get('name') == 'keywords' && $sf->getClean()) {
-                $has_relevance = true;
-                break;
-            }
-        }
-        break;
     }
     // Apply user filter
     elseif (isset($_GET['uid']) && ($user = User::lookup($_GET['uid']))) {
         $tickets->filter(array('user__id'=>$_GET['uid']));
         $results_type = sprintf('%s — %s', __('Search Results'),
             $user->getName());
+        if (isset($_GET['status']))
+            $status = $_GET['status'];
         // Don't apply normal open ticket
         break;
     }
@@ -136,8 +125,23 @@ case 'search':
         $tickets->filter(array('user__org_id'=>$_GET['orgid']));
         $results_type = sprintf('%s — %s', __('Search Results'),
             $org->getName());
+        if (isset($_GET['status']))
+            $status = $_GET['status'];
         // Don't apply normal open ticket
         break;
+    } elseif (isset($_SESSION['advsearch'])) {
+        $form = $search->getFormFromSession('advsearch');
+        $tickets = $search->mangleQuerySet($tickets, $form);
+        $view_all_tickets = $thisstaff->hasPerm(SearchBackend::PERM_EVERYTHING);
+        $results_type=__('Advanced Search')
+            . '<a class="action-button" style="font-size: 15px;" href="?clear_filter"><i style="top:0" class="icon-ban-circle"></i> <em>' . __('clear') . '</em></a>';
+        foreach ($form->getFields() as $sf) {
+            if ($sf->get('name') == 'keywords' && $sf->getClean()) {
+                $has_relevance = true;
+                break;
+            }
+        }
+        break;
     }
     // Fall-through and show open tickets
 case 'open':
diff --git a/scp/tickets.php b/scp/tickets.php
index 8ae7ca004..e4c1fc103 100644
--- a/scp/tickets.php
+++ b/scp/tickets.php
@@ -37,9 +37,10 @@ if($_REQUEST['id']) {
 
 if ($_REQUEST['uid']) {
     $user = User::lookup($_REQUEST['uid']);
-} elseif (!$ticket) {
+}
+if (!$ticket) {
     $queue_key = sprintf('::Q:%s', ObjectModel::OBJECT_TYPE_TICKET);
-    $queue_name = strtolower($_GET['status'] ?: $_GET['a']); //Status is overloaded
+    $queue_name = strtolower($_GET['a'] ?: $_GET['status']); //Status is overloaded
     if (!$queue_name && isset($_SESSION[$queue_key]))
         $queue_name = $_SESSION[$queue_key];
 
-- 
GitLab