diff --git a/include/ajax.tickets.php b/include/ajax.tickets.php index 5834b2377744ebbba350aa6a50947e1e56c7d4af..45eb78ecee1e21d4c5a88d55c7641727185a59dd 100644 --- a/include/ajax.tickets.php +++ b/include/ajax.tickets.php @@ -101,6 +101,8 @@ class TicketsAjaxAPI extends AjaxController { global $thisstaff, $cfg, $ost; $result=array(); + $criteria = array(); + $select = 'SELECT ticket.ticket_id'; $from = ' FROM '.TICKET_TABLE.' ticket LEFT JOIN '.TICKET_STATUS_TABLE.' status @@ -119,29 +121,38 @@ class TicketsAjaxAPI extends AjaxController { $where.=' ) '; //Department - if($req['deptId']) + if ($req['deptId']) { $where.=' AND ticket.dept_id='.db_input($req['deptId']); + $criteria['dept_id'] = $req['deptId']; + } //Help topic - if($req['topicId']) + if($req['topicId']) { $where.=' AND ticket.topic_id='.db_input($req['topicId']); + $criteria['topic_id'] = $req['topicId']; + } //Status switch(strtolower($req['status'])) { case 'open': $where.=' AND status.state="open" '; + $criteria['status'] = 'open'; break; case 'answered': $where.=' AND status.state="open" AND ticket.isanswered=1 '; + $criteria += array('status' => 'open', 'isanswered'=>1); break; case 'overdue': $where.=' AND status.state="open" AND ticket.isoverdue=1 '; + $criteria += array('status' => 'open', 'isoverdue'=>1); break; case 'resolved': $where.=' AND status.state="resolved" '; + $criteria += array('status' => 'resolved', 'isoverdue'=>1); break; case 'closed': $where.=' AND status.state="closed" '; + $criteria['status'] = 'closed'; break; } @@ -150,10 +161,14 @@ class TicketsAjaxAPI extends AjaxController { $id=preg_replace("/[^0-9]/", "", $req['assignee']); $assignee = $req['assignee']; $where.= ' AND ( ( status.state="open" '; - if($assignee[0]=='t') + if($assignee[0]=='t') { $where.=' AND ticket.team_id='.db_input($id); - elseif($assignee[0]=='s') + $criteria['team_id'] = $id; + } + elseif($assignee[0]=='s') { $where.=' AND ticket.staff_id='.db_input($id); + $criteria['staff_id'] = $id; + } elseif(is_numeric($id)) $where.=' AND ticket.staff_id='.db_input($id); @@ -177,28 +192,22 @@ class TicketsAjaxAPI extends AjaxController { if( ($startTime && $startTime>time()) or ($startTime>$endTime && $endTime>0)) $startTime=$endTime=0; - if($startTime) + if($startTime) { $where.=' AND ticket.created>=FROM_UNIXTIME('.$startTime.')'; + $criteria['created__gte'] = $startTime; + } - if($endTime) + if($endTime) { $where.=' AND ticket.created<=FROM_UNIXTIME('.$endTime.')'; + $criteria['created__lte'] = $startTime; + } //Query $joins = array(); if($req['query']) { - $queryterm=db_real_escape($req['query'], false); - // Setup sets of joins and queries if ($s = $ost->searcher) - $ids = $s->find($req['query'], null, 'Ticket'); - - if (!$ids) - return array(); - - $joins[] = array( - 'from' => '', - 'where' => 'ticket.ticket_id IN (' . implode(',', $ids) . ')' - ); + return $s->find($req['query'], $criteria, 'Ticket'); } // Dynamic fields diff --git a/include/class.search.php b/include/class.search.php index 7d06abb4e3593534241b9f4d6b33b4f28cf98860..6c410dad17bee4a641d2940be0b1d4fa1bdbd8a8 100644 --- a/include/class.search.php +++ b/include/class.search.php @@ -291,8 +291,16 @@ class MysqlSearchBackend extends SearchBackend { case 'staff_id': case 'dept_id': case 'user_id': + case 'isanswered': + case 'isoverdue': $where[] = sprintf('A1.%s = %s', $name, db_input($value)); break; + case 'created__gte': + $where[] = sprintf('A1.created >= %s', db_input($value)); + break; + case 'created__lte': + $where[] = sprintf('A1.created <= %s', db_input($value)); + break; case 'email': case 'org_id': case 'form_id': @@ -357,8 +365,6 @@ class MysqlSearchBackend extends SearchBackend { * not index in the _search table and add it to the index. */ function IndexOldStuff() { - print 'Indexing old stuff!'; - $class = get_class(); $auto_create = function($db_error) use ($class) {