Finished up search filter... I think

This commit is contained in:
Mike Koch 2016-08-08 13:10:31 -04:00
parent 601da6de92
commit 93dac37532
2 changed files with 95 additions and 2 deletions

View File

@ -54,8 +54,25 @@ define('PAGE_TITLE', 'ADMIN_HOME');
/* Print header */ /* Print header */
require_once(HESK_PATH . 'inc/header_new_admin.inc.php'); 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 . '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(); hesk_handle_messages();
?> ?>
@ -67,7 +84,7 @@ hesk_handle_messages();
</h1> </h1>
<div class="box-tools pull-right"> <div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"> <button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fa fa-minus" data-toggle="tooltip" title="Collapse"></i> <i class="fa fa-minus"></i>
</button> </button>
</div> </div>
</div> </div>

View File

@ -34,6 +34,64 @@ function get_tickets($search_filter, $hesk_settings) {
// --> TICKET ASSIGNMENT // --> TICKET ASSIGNMENT
$sql = handle_ticket_assignments($search_filter, $sql); $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) { function handle_ticket_assignments($search_filter, $sql) {
@ -87,3 +145,21 @@ function handle_ticket_assignments($search_filter, $sql) {
return $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;
}