📄 ticketsearch.php
字号:
<?php
// +-------------------------------------------------------------+
// | DeskPRO v [2.0.1 Production]
// | Copyright (C) 2001 - 2004 Headstart Solutions Limited
// | Supplied by WTN-WDYL
// | Nullified by WTN-WDYL
// | Distribution via WebForum, ForumRU and associated file dumps
// +-------------------------------------------------------------+
// | DESKPRO IS NOT FREE SOFTWARE
// +-------------------------------------------------------------+
// | License ID : Full Enterprise License =) ...
// | License Owner : WTN-WDYL Team
// +-------------------------------------------------------------+
// | $RCSfile: ticketsearch.php,v $
// | $Date: 2004/02/13 01:58:34 $
// | $Revision: 1.112 $
// +-------------------------------------------------------------+
// | File Details:
// | - Ticket search forms and engine.
// +-------------------------------------------------------------+
error_reporting(E_ALL ^ E_NOTICE);
/*
nodisplay field:
1 : Spam
2 : User must validate themselves
3 : Tech must validate users
*/
include "./../global.php";
if (!$_REQUEST['Jump']) {
tech_nav('Tickets', 'Ticket Search');
}
################################# GLOBAL SECTIONS #####################################
////////////////////////// SORT OUT INFORMATION //////////////////////////
if ($_REQUEST[variables]) {
$_REQUEST = array_merge(unserialize($_REQUEST[variables]), $_REQUEST);
}
// searchtype
if (!$_REQUEST['searchtype']) {
$_REQUEST['searchtype'] = "simple";
}
################################# SORT OUT FOOTER_SEARCH #####################################
if ($user['cats_user']) {
if (@in_array(-3, $_REQUEST['category'])) {
$_REQUEST['category'] = split(',', $user['cats_user']);
}
}
################################# SORT OUT FOOTER_SELECT #####################################
if (is_array($_REQUEST['unassigned_category'])) {
$_REQUEST['category'] = $_REQUEST['unassigned_category'];
$_REQUEST['tech'] = -1;
$footer_select = true;
}
if (is_array($_REQUEST['other_category'])) {
$_REQUEST['category'] = $_REQUEST['other_category'];
$_REQUEST['tech'] = 'assigned';
$footer_select = true;
}
if (is_array($_REQUEST['your_category'])) {
$_REQUEST['category'] = $_REQUEST['your_category'];
$_REQUEST['tech'] = $user[id];
$footer_select = true;
}
if (is_array($_REQUEST['unassigned_priority'])) {
$_REQUEST['priority'] = $_REQUEST['unassigned_priority'];
$_REQUEST['tech'] = -1;
$footer_select = true;
}
if (is_array($_REQUEST['other_priority'])) {
$_REQUEST['priority'] = $_REQUEST['other_priority'];
$footer_select = true;
$_REQUEST['tech'] = 'assigned';
}
if (is_array($_REQUEST['your_priority'])) {
$_REQUEST['priority'] = $_REQUEST['your_priority'];
$footer_select = true;
$_REQUEST['tech'] = $user[id];
}
if (is_array($_REQUEST['other_tech'])) {
$_REQUEST['tech'] = $_REQUEST['other_tech'];
$footer_select = true;
$_REQUEST['tech'] = 'assigned';
}
if ($footer_select) {
$_REQUEST['do'] = 'search';
$_REQUEST['awaiting_tech'] = 1;
$_REQUEST['unresolved'] = 1;
}
////////////////////////// SAVED SEARCH/RESULT ///////////////////////////
if ($_REQUEST['save_search_op']) {
$save_items = array('greater', 'lessthan', 'user_owner', 'subject', 'subjectoption',
'message', 'messageoption', 'messageowner', 'tech',
'ddate_started_start', 'mdate_started_start', 'ydate_started_start',
'ddate_started_end', 'mdate_started_end', 'ydate_started_end',
'ddate_resolved_start', 'mdate_resolved_start', 'ydate_resolved_start',
'ddate_resolved_end', 'mdate_resolved_end', 'ydate_resolved_end',
'ddate_activity_start', 'mdate_activity_start', 'ydate_activity_start',
'ddate_activity_end', 'mdate_activity_end', 'ydate_activity_end',
'resolved', 'unresolved', 'awaiting_tech', 'awaiting_user', 'category', 'priority',
'nodisplay');
foreach ($save_items AS $key => $val) {
$data[$val] = $_REQUEST[$val];
}
}
if ($_REQUEST['save_search_op'] == 'Save') {
if ($_REQUEST['saved_search']) {
$data['custom_fields'] = serialize($_REQUEST['custom_fields']);
$data = mysql_escape_string(serialize($data));
$db->query("UPDATE tech_ticket_search
set data = '$data' WHERE id = '$_REQUEST[saved_search]'
AND techid = '$user[id]'");
$message = "Search criteria updated.";
} else {
$message = "You must select a valid search to update. [Changes not saved]";
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
}
}
if ($_REQUEST['save_search_op'] == 'Save As') {
if ($_REQUEST['save_search_name']) {
$data['custom_fields'] = serialize($_REQUEST['custom_fields']);
$data = mysql_escape_string(serialize($data));
$db->query("INSERT INTO tech_ticket_search (techid, save_name, save_type, data)
VALUES ('$user[id]', '$_REQUEST[save_search_name]', 'search', '$data')");
$message = "Search criteria saved as $_REQUEST[save_search_name].";
} else {
$message = "You must enter a name to assign to this search. [Search not saved]";
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
}
}
if ($_REQUEST['save_search_op'] == 'Edit') {
if ($_REQUEST['saved_search']) {
$db->query("SELECT data FROM tech_ticket_search WHERE id = '$_REQUEST[saved_search]' AND techid = '$user[id]'");
$data = $db->row_array();
$data = unserialize($data[data]);
$_REQUEST['custom_fields'] = unserialize($data['custom_fields']);
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
foreach ($save_items AS $key => $val) {
$_REQUEST[$val] = $data[$val];
}
} else {
$message = "You must specify a valid search to edit.";
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
}
}
if ($_REQUEST['save_search_op'] == 'Delete') {
if ($_REQUEST[saved_search]) {
$db->query("DELETE FROM tech_ticket_search WHERE id = '$_REQUEST[saved_search]' AND techid = '$user[id]'");
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
$message = "Search deleted.";
} else {
$message = "You must specify a valid search to delete.";
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
}
}
if ($_REQUEST['save_search_op'] == 'Run') {
if ($_REQUEST['saved_search']) {
$db->query("SELECT data FROM tech_ticket_search WHERE id = '$_REQUEST[saved_search]' AND techid = '$user[id]'");
$data = $db->row_array();
$data = unserialize($data[data]);
foreach ($save_items AS $key => $val) {
$_REQUEST[$val] = $data[$val];
}
$_REQUEST['custom_fields'] = unserialize($data['custom_fields']);
$_REQUEST['do'] = 'search';
$_REQUEST['searchtype'] = 'advanced';
} else {
$_REQUEST['do'] = '';
$_REQUEST['searchtype'] = 'advanced';
$message = "You must specify a valid search to run.";
}
}
// Handle requests from tech/home/ticket_select.php
if ($_REQUEST['do'] == 'listown') {
$_REQUEST['tech'] = $user['id'];
$_REQUEST['do'] = 'search';
$_REQUEST['unresolved'] = 1;
$_REQUEST['resolved'] = 0;
$_REQUEST['awaiting_tech'] = 1;
$_REQUEST['awaiting_user'] = 0;
} elseif ($_REQUEST['do'] == 'listnew') {
$_REQUEST['tech'] = '-1';
$_REQUEST['do'] = 'search';
$_REQUEST['unresolved'] = 1;
$_REQUEST['resolved'] = 0;
$_REQUEST['awaiting_tech'] = 1;
$_REQUEST['awaiting_user'] = 0;
} elseif ($_REQUEST['do'] == 'listothers') {
$_REQUEST['tech'] = 'assigned';
$_REQUEST['do'] = 'search';
$_REQUEST['unresolved'] = 1;
$_REQUEST['resolved'] = 0;
$_REQUEST['awaiting_tech'] = 1;
$_REQUEST['awaiting_user'] = 0;
}
////////////////////////// GET TECH/CATEGORY/PRIORITY INFORMATION //////////////////////////
// if edit ticket
$cat_array[-2] = 'Any';
$cat_array[-1] = 'None';
$db->query("SELECT * FROM ticket_cat ORDER BY cat_order");
while ($cat = $db->row_array()) {
$cat_array[$cat[id]] = $cat[name];
// for select menus
$html .= "new Array(true,\"category|Change Category\",\"$cat[id]|$cat[name]\"),\n";
}
// if edit + assign to tech
$tech_array[-2] = 'Any';
$tech_array[-1] = 'Unassigned';
$db->query("SELECT * FROM tech ORDER BY username");
while ($tech = $db->row_array()) {
$tech_array[$tech[id]] = $tech[username];
$html .= "new Array(true,\"tech|Assign to tech\",\"$tech[id]|$tech[username]\"),";
}
// if edit ticket
$pri_array[-2] = 'Any';
$pri_array[-1] = 'None';
$db->query("SELECT * FROM ticket_pri ORDER BY pri_order");
while ($pri = $db->row_array()) {
$pri_array[$pri[id]] = $pri[name];
$html .= "new Array(true,\"priority|Change Priority\",\"$pri[id]|$pri[name]\"),\n";
}
###################################### BASIC TICKET SEARCH FORM #################################
if ($message) {
alert($message);
}
if ($_REQUEST['searchtype'] == "simple" AND !$_REQUEST['Jump']) {
$help1 = table_thelp('<B>Is Resolved</B>', 'Tickets - Searching', 'Is Resolved');
$help2 = table_thelp('<B>Awaiting Tech</B>', 'Tickets - Searching', 'Awaiting Tech');
$help3 = table_thelp('<B>Categories</B>', 'Tickets - Searching', 'Categories');
$help4 = table_thelp('<B>Priorities</B>', 'Tickets - Searching', 'Priorities');
$help5 = table_thelp('<B>Tech Owner</B>', 'Tickets - Searching', 'Tech Owner Resolved');
$help6 = table_thelp('<B>User Owner</B>', 'Tickets - Searching', 'User Owner');
$help7 = table_thelp('<B>Match Subject</B>', 'Tickets - Searching', 'Match Subject');
$help8 = table_thelp('<B>Match Message</B>', 'Tickets - Searching', 'Match Message');
$table[] = array($help1, $help2, $help3, $help4, $help5, $help6);
$table[] = array(
'<table border="0"><tr><td>Resolved</td><td>' . form_checkbox_single('resolved', 1, $_REQUEST['resolved']) . '</td></tr><tr><td>Unresolved</td><td>' . form_checkbox_single('unresolved', 1, $_REQUEST['unresolved']) . "</td></tr></table>",
'<table border="0"><tr><td>Awaiting Tech</td><td>' . form_checkbox_single('awaiting_tech', 1, $_REQUEST['awaiting_tech']) . '</td></tr><tr><td>Awaiting User</td><td>' . form_checkbox_single('awaiting_user', 1, $_REQUEST['awaiting_user']) . "</td></tr></table>",
form_select('category', $cat_array, '', $_REQUEST['category'], '', '', 5),
form_select('priority', $pri_array, '', $_REQUEST['priority'], '', '', 5),
form_select('tech', $tech_array, '', $_REQUEST['tech'], '', '', 5),
' username or email<br />' . form_input('user_owner', $_REQUEST['user_owner'], 15) . " <a onClick=\"openWindow('./../users/quickfind.php?name=searchform.user_owner', 450, 600, 'userfind')\">".html_image('tech/pribut040.gif')."</a>"
);
$table[] = array(
"<table border=\"0\"><tr><td>$help7</td><td>" .
form_input('subject', $_REQUEST['subject'], 30) .
' ' .
form_select('subjectoption', array('OR', 'AND', 'PHRASE'), NULL, $_REQUEST['subjectoption'], 1) .
" (use % for wildcard)</td></tr><tr><td>$help8</td><td>" .
form_input('message', $_REQUEST['message'], 30) .
' ' .
form_select('messageoption', array('OR', 'AND', 'PHRASE'), NULL, $_REQUEST['messageoption'], 1) .
' ' .
form_select('messageowner', array('EITHER', 'TECH', 'USER'), NULL, $_REQUEST['messageowner'], 1) .
' (use % for wildcard)</td></tr></table>'
);
table_header('Search for Tickets', 'ticketsearch.php', array('do' => 'search'), '', 'searchform');
table_content('', $table);
table_footer('Search');
unset($columns, $table);
}
####################################### ADVANCED TICKET SEARCH FORM ####################################
if ($_REQUEST['searchtype'] == "advanced" AND !$_REQUEST['Jump']) {
$table[] = table_midheader('Ticket Properties');
// resolved
$bit = 'Resolved ' . form_checkbox_single('resolved', 1, $_REQUEST['resolved']) . ' Unresolved ' . form_checkbox_single('unresolved', 1, $_REQUEST['unresolved']);
$table[] = array(table_thelp('<B>Is Resolved</B>', 'Tickets - Searching', 'Is Resolved'), $bit);
// awaiting whom
$bit = 'Awaiting Tech ' . form_checkbox_single('awaiting_tech', 1, $_REQUEST['awaiting_tech']) . ' Awaiting User ' . form_checkbox_single('awaiting_user', 1, $_REQUEST['awaiting_user']);
$table[] = array(table_thelp('<b>Awaiting Tech Response<b>', 'Tickets - Searching', 'Awaiting Tech'), $bit);
// Spam or not?
$bit = 'Spam' . form_checkbox_single('nodisplay', 1, $_REQUEST['nodisplay']);
$table[] = array(table_thelp('<b>Hidden Tickets<b>', 'Tickets - Searches', 'Hidden Tickets'), $bit);
// id range
$bit = form_input('greater', $_REQUEST['greater'], 3) . " < <b>ID</b> > " . form_input('lessthan', $_REQUEST['lessthan'], 3);
$table[] = array(table_thelp('<b>Ticket ID Range</b>', 'Tickets - Searches', 'Ticket ID Range'), $bit);
// cats/pri/techowner
$table[] = array(table_thelp('<b>Categories</b>', 'Tickets - Searches', 'Categories'), form_select('category', $cat_array, '', $_REQUEST['category'], '', '', 3));
$table[] = array(table_thelp('<b>Priorities</b>', 'Tickets - Searches', 'Priorities'), form_select('priority', $pri_array, '', $_REQUEST['priority'], '', '', 3));
$table[] = array(table_thelp('<b>Tech Owner</b>', 'Tickets - Searches', 'Tech Owner'), form_select('tech', $tech_array, '', $_REQUEST['tech'], '', '', 3));
// user owner
$bit = form_input('user_owner', $_REQUEST['user_owner'], 30) . " <a onClick=\"openWindow('./../users/quickfind.php?name=searchform.user_owner', 450, 600, 'userfind')\">".html_image('tech/bul084.gif')."</a>";
$table[] = array(table_thelp('<b>Username or E-mail</b>', 'Tickets - Searches', 'User Owner'), $bit);
$table[] = table_midheader('Search Words');
// subject
$bit = form_input('subject', $_REQUEST['subject'], 30) . ' ' . form_select('subjectoption', array('AND', 'OR', 'PHRASE'), '', $_REQUEST['subjectoption'], 1);
$table[] = array(table_thelp('<b>Match Subject</b>', 'Tickets - Searches', 'Match Subject'), $bit);
// message
$bit = form_input('message', $_REQUEST['message'], 30) . ' ' . form_select('messageoption', array('AND', 'OR', 'PHRASE'), '', $_REQUEST['messageoption'], 1) . ' ' . form_select('messageowner', array('EITHER', 'TECH', 'USER'), '', $_REQUEST['messageowner'], 1);
$table[] = array(table_thelp('<b>Match Message</b>', 'Tickets - Searches', 'Match Message'), $bit);
$table[] = table_midheader('Dates');
// started
if ($_REQUEST['ydate_started_start']) {
$date = @strtotime("$_REQUEST[ydate_started_start]-$_REQUEST[mdate_started_start]-$_REQUEST[ddate_started_start]");
} else {
$date = NULL;
}
if ($_REQUEST['ydate_started_end']) {
$date2 = @strtotime("$_REQUEST[ydate_started_end]-$_REQUEST[mdate_started_end]-$_REQUEST[ddate_started_end]");
} else {
$date2 = NULL;
}
$bit = 'From ' . form_date('date_started_start', '', $date, '', 1) .
"<a onClick=\"datePop('searchform','date_started_start')\">".html_image('tech/bul102.gif')."</a> To " . form_date('date_started_end', '', $date2, '', 1) .
"<a onClick=\"datePop('searchform', 'date_started_end')\">".html_image('tech/bul102.gif')."</a>";
$table[] = array(table_thelp('<b>Date Started</b>', 'Tickets - Searches', 'Date Started'), $bit);
unset($date, $date2);
// resolved
if ($_REQUEST['ydate_resolved_start']) {
$date = @strtotime("$_REQUEST[ydate_resolved_start]-$_REQUEST[mdate_resolved_start]-$_REQUEST[ddate_resolved_start]");
} else {
$date = NULL;
}
if ($_REQUEST['ydate_resolved_end']) {
$date2 = @strtotime("$_REQUEST[ydate_resolved_end]-$_REQUEST[mdate_resolved_end]-$_REQUEST[ddate_resolved_end]");
} else {
$date2 = NULL;
}
$bit = 'From ' . form_date('date_resolved_start', '', $date, '', 1) .
"<a onClick=\"datePop('searchform', 'date_resolved_start')\">".html_image('tech/bul102.gif')."</a> To " . form_date('date_resolved_end', '', $date2, '', 1) .
"<a onClick=\"datePop('searchform', 'date_resolved_end')\">".html_image('tech/bul102.gif')."</a>";
$table[] = array(table_thelp('<b>Date Resolved</b>', 'Tickets - Searches', 'Date Resolved'), $bit);
unset($date, $date2);
// last activity
$date = @strtotime("$_REQUEST[ydate_activity_start]-$_REQUEST[mdate_activity_start]-$_REQUEST[ddate_activity_start]");
$date2 = @strtotime("$_REQUEST[ydate_activity_end]-$_REQUEST[mdate_activity_end]-$_REQUEST[ddate_activity_end]");
if ($_REQUEST['ydate_resolved_start']) {
$date = @strtotime("$_REQUEST[ydate_resolved_start]-$_REQUEST[mdate_resolved_start]-$_REQUEST[ddate_resolved_start]");
} else {
$date = NULL;
}
if ($_REQUEST['ydate_resolved_end']) {
$date2 = @strtotime("$_REQUEST[ydate_resolved_end]-$_REQUEST[mdate_resolved_end]-$_REQUEST[ddate_resolved_end]");
} else {
$date2 = NULL;
}
$bit = 'From ' . form_date('date_activity_start', '', $date, '', 1) .
"<a onClick=\"datePop('searchform', 'date_activity_start')\">".html_image('tech/bul102.gif')."</a> To " . form_date('date_activity_end', '', $date2, '', 1) .
"<a onClick=\"datePop('searchform', 'date_activity_end')\">".html_image('tech/bul102.gif')."</a>";
$table[] = array(table_thelp('<b>Date of Last Activity</b>', 'Tickets - Searches', 'Date of Last Activity'), $bit);
unset($date, $date2);
$db->query("SELECT * FROM ticket_def WHERE tech_viewable");
if ($db->num_rows()) {
$table[] = table_midheader('Custom Ticket Fields');
}
while ($ticket_data = $db->row_array()) {
$bit = field_def($ticket_data, 'redo', $_REQUEST['custom_fields'][$ticket_data['name']], $_REQUEST['custom_fields']["extra" . $ticket_data['name']], '', 'custom_fields', 1, $_REQUEST['custom_fields'][$ticket_data['name'].'_match'], $_REQUEST['custom_fields'][$ticket_data['name'].'_not']);
$name = unserialize($ticket_data[display_name]);
$name = $name[$settings[default_language]];
$ticket_fields_array[$ticket_data[id]] = array(
'display_name' => $name,
'name' => $ticket_data[name]
);
$table[] = array("<b>$name</b>", $bit);
}
$table[] = table_midheader('Named Searches and Results');
$db->query("SELECT id, save_name, save_type FROM tech_ticket_search WHERE techid = '$user[id]' ORDER BY save_type, save_name");
$saved_searches = array();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -