diff --git a/include/class.search.php b/include/class.search.php index 7f39725668c970e8fd57e69ac7f2afd381a7c625..2e05d9445ed1e5195cd96dd04469986579d55e39 100755 --- a/include/class.search.php +++ b/include/class.search.php @@ -900,7 +900,7 @@ class SavedQueue extends CustomQueue { $counts = array(); $query = Ticket::objects(); // Apply tickets visibility for the agent - $query = $agent->applyVisibility($query); + $query = $agent->applyVisibility($query, true); // Aggregate constraints foreach ($queues as $queue) { $Q = $queue->getBasicQuery(); diff --git a/include/class.staff.php b/include/class.staff.php index 2b0471a4cabca3f7c254482ce1f0fcd878e1b0c9..4083bf9e79f2e5012cb59767b7fa1e0cd5672feb 100644 --- a/include/class.staff.php +++ b/include/class.staff.php @@ -584,7 +584,7 @@ implements AuthenticatedUser, EmailContact, TemplateVariable, Searchable { return $this->_teams; } - function getTicketsVisibility() { + function getTicketsVisibility($exclude_archived=false) { // -- Open and assigned to me $assigned = Q::any(array( @@ -607,15 +607,26 @@ implements AuthenticatedUser, EmailContact, TemplateVariable, Searchable { // -- Routed to a department of mine if (($depts=$this->getDepts()) && count($depts)) { - $visibility->add(array('dept_id__in' => $depts)); - $visibility->add(array('thread__referrals__dept__id__in' => $depts)); + $in_dept = Q::any(array( + 'dept_id__in' => $depts, + 'thread__referrals__dept__id__in' => $depts, + )); + + if ($exclude_archived) { + $in_dept = Q::all(array( + 'status__state__in' => ['open', 'closed'], + $in_dept, + )); + } + + $visibility->add($in_dept); } return $visibility; } - function applyVisibility($query) { - return $query->filter($this->getTicketsVisibility()); + function applyVisibility($query, $exclude_archived=false) { + return $query->filter($this->getTicketsVisibility($exclude_archived)); } /* stats */ diff --git a/include/staff/templates/queue-tickets.tmpl.php b/include/staff/templates/queue-tickets.tmpl.php index d6e6307c1d8c3a0ab4f5f9e820a397c7ead872e5..49a8eb2461becec6470e55dc755cc42ee42aae31 100644 --- a/include/staff/templates/queue-tickets.tmpl.php +++ b/include/staff/templates/queue-tickets.tmpl.php @@ -6,7 +6,11 @@ // Impose visibility constraints // ------------------------------------------------------------ -if (!$queue->ignoreVisibilityConstraints($thisstaff)) +//filter if limited visibility or if unlimited visibility and in a queue +$ignoreVisibility = $queue->ignoreVisibilityConstraints($thisstaff); +if (!$ignoreVisibility || //limited visibility + ($ignoreVisibility && ($queue->isAQueue() || $queue->isASubQueue())) //unlimited visibility + not a search +) $tickets->filter($thisstaff->getTicketsVisibility()); // Make sure the cdata materialized view is available