From 93dac3753213aca441e34602cceb95b22f4eb57a Mon Sep 17 00:00:00 2001 From: Mike Koch Date: Mon, 8 Aug 2016 13:10:31 -0400 Subject: [PATCH] Finished up search filter... I think --- admin/admin_new_main.php | 21 +++++++++- inc/ticket/get_tickets.inc.php | 76 ++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/admin/admin_new_main.php b/admin/admin_new_main.php index 4cf5c53c..0b6edbd0 100644 --- a/admin/admin_new_main.php +++ b/admin/admin_new_main.php @@ -54,8 +54,25 @@ define('PAGE_TITLE', 'ADMIN_HOME'); /* Print header */ require_once(HESK_PATH . 'inc/header_new_admin.inc.php'); - require_once(HESK_PATH . 'inc/new_admin_header_and_sidebar.inc.php'); +require_once(HESK_PATH . 'hesk_settings.inc.php'); +require_once(HESK_PATH . 'inc/common.inc.php'); +require_once(HESK_PATH . 'inc/admin_functions.inc.php'); +require_once(HESK_PATH . 'inc/status_functions.inc.php'); +require_once(HESK_PATH . 'inc/ticket/get_tickets.inc.php'); + +$statuses = mfh_getAllStatuses(); +$search_filter = get_empty_filter(); +$search_filter['status'] = array(); +foreach ($statuses as $status) { + if (!$status['IsClosed']) { + $search_filter['status'][] = $status['ID']; + } +} +$search_filter['critical_on_top'] = true; + +get_tickets($search_filter, $hesk_settings); + hesk_handle_messages(); ?> @@ -67,7 +84,7 @@ hesk_handle_messages();
diff --git a/inc/ticket/get_tickets.inc.php b/inc/ticket/get_tickets.inc.php index 0a651747..776b8d98 100644 --- a/inc/ticket/get_tickets.inc.php +++ b/inc/ticket/get_tickets.inc.php @@ -34,6 +34,64 @@ function get_tickets($search_filter, $hesk_settings) { // --> TICKET ASSIGNMENT $sql = handle_ticket_assignments($search_filter, $sql); + + // --> TICKET STATUS + $statuses = $search_filter['status']; + if (count($statuses) > 0) { + $sql .= " AND `status` IN ('" . implode("','", $statuses) . "') "; + } + + // --> TICKET PRIORITY + $priorities = $search_filter['priority']; + + if (count($priorities) > 0) { + $sql .= " AND `priority` IN ('" . implode("','", array_keys($priority)) . "') "; + } + + // Sorting + $sql .= " ORDER BY "; + + // --> PUSH TO TOP + $force_to_top = $search_filter['force_to_top']; + $direction = $search_filter['force_direction']; + if ($force_to_top != NULL) { + if ($force_to_top == 'owner') { + $sql .= " CASE WHEN `owner` = '".intval($_SESSION['id'])."' THEN 1 ELSE 0 END DESC, `owner` ASC, "; + } else { + $sql .= ' `'.hesk_dbEscape($force_to_top).'` '; + $sql .= $direction == 'ascending' ? 'ASC, ' : 'DESC, '; + } + } + + // --> CRITICAL ON TOP + $critical_on_top = $search_filter['critical_on_top']; + if ($critical_on_top) { + $sql .= " CASE WHEN `priority` = '0' THEN 1 ELSE 0 END DESC , "; + } + + // --> SORT BY + $sort_by = $search_filter['sort_by']; + $sort_direction = $search_filter['sort_direction']; + + if ($sort_by) { + $sql .= $sort_by == 'lastreplier' + ? " CASE WHEN `lastreplier` = '0' THEN 0 ELSE 1 END DESC, COALESCE(`replierid`, NULLIF(`lastreplier`, '0'), `name`) " + : ' `'.hesk_dbEscape($sort_by).'` '; + } else { + $sql .= ' `status` '; + $sort_by = 'status'; + } + + $sql .= $sort_direction == 'ascending' + ? ' ASC ' + : ' DESC '; + + if ($sort_by != 'priority') { + $sql .= ' , `priority` ASC '; + } + + //Uncomment for debugging purposes + // echo "SQL: $sql"; } function handle_ticket_assignments($search_filter, $sql) { @@ -86,4 +144,22 @@ function handle_ticket_assignments($search_filter, $sql) { } return $sql; +} + +function get_empty_filter() { + $search_filter['category'] = NULL; + $search_filter['tagged'] = NULL; + $search_filter['status'] = NULL; + $search_filter['priority'] = NULL; + $search_filter['force_to_top'] = NULL; + $search_filter['force_direction'] = NULL; + $search_filter['critical_on_top'] = NULL; + $search_filter['sort_by'] = NULL; + $search_filter['sort_direction'] = NULL; + $search_filter['assignment'] = array(); + $search_filter['assignment']['self'] = 0; + $search_filter['assignment']['others'] = 0; + $search_filter['assignment']['no_one'] = 0; + + return $search_filter; } \ No newline at end of file