ticketedit.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:8k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: ticketedit.php,v $
  15. // | $Date: 2004/02/10 01:34:31 $
  16. // | $Revision: 1.34 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Ticket attribute editing handler.
  20. // +-------------------------------------------------------------+
  21. // start file
  22. require("./../global.php");
  23. // globalise variables
  24. $global = array (
  25. array('id') // ticketid
  26. );
  27. rg($global);
  28. $ticket = $db->query_return("SELECT * FROM ticket WHERE id = '$id'");
  29. if (!$db->num_rows()) {
  30. jump('../home/', 'Invalid ticket specified.');
  31. exit;
  32. }
  33. if (!(p_ticket('edit'))) {
  34. jump("ticketview.php?id=$id", 'You don't have permission to edit this ticket.');
  35. exit;
  36. }
  37. $now = time();
  38. if ($_REQUEST['do'] == 'reminder') {
  39. if ($_REQUEST['remind1']) {
  40. $date = strtotime("$_REQUEST[ydate]-$_REQUEST[mdate]-$_REQUEST[ddate] + $days days");
  41. } else {
  42. $date = strtotime("$_REQUEST[ydate]-$_REQUEST[mdate]-$_REQUEST[ddate]");
  43. }
  44. if ($date < strtotime(date('Y-m-d'))) {
  45. mistake("An invalid date was specified. $date " . date('%r', $date));
  46. } elseif (!$_REQUEST[tech]) {
  47. mistake('No technician specified for the reminder.');
  48. } else {
  49. $date = date('Y-m-d', $date);
  50. $now_ = mktime();
  51. $db->query("INSERT INTO tech_ticket_watch (ticketid, created, datetodo, completed, techid)
  52. VALUES ('$_REQUEST[id]', '$now_', '$date', '0', '$_REQUEST[tech]')");
  53. }
  54. jump("ticketview.php?id=$_REQUEST[id]", 'Reminder set.');
  55. exit;
  56. }
  57. if ($_REQUEST['do'] == 'remindertoggle') {
  58. if ($_REQUEST['watchid']) {
  59. $db->query("UPDATE tech_ticket_watch SET completed = !completed AND techid = '$user[id]' AND id = '$_REQUEST[watchid]'");
  60. jump("ticketview.php?id=$_REQUEST[id]", 'Reminder status toggled.');
  61. exit;
  62. }
  63. }
  64. if ($_REQUEST['do'] == 'updatebillingpaid') {
  65. if ($_REQUEST['billid']) {
  66. $db->query('UPDATE user_bill SET paid = '' . iff($_REQUEST['paid'], 1, 0) . "' WHERE id = '$_REQUEST[billid]'");
  67. if ($db->affected_rows()) {
  68. $data = $db->query_return("SELECT * FROM user_bill WHERE id = '$_REQUEST[billid]'");
  69. $details = array(
  70. 'charge' => $data['charge'],
  71. 'time' => $data['time'],
  72. 'billable' => $data['billable'],
  73. 'paid' => $data['paid']
  74. );
  75. ticketlog($_REQUEST['id'], 'billing_changed', NULL, NULL, NULL, NULL, serialize($details));
  76. }
  77. jump("ticketview.php?id=$_REQUEST[id]", 'Billing details updated.');
  78. exit;
  79. } else {
  80. mistake('No billing entry ID was provided.');
  81. }
  82. }
  83. if ($_REQUEST['do'] == 'updatebillingbillable') {
  84. if ($_REQUEST['billid']) {
  85. $db->query('UPDATE user_bill SET billable = '' . iff($_REQUEST['billable'], 1, 0) . "' WHERE id = '$_REQUEST[billid]'");
  86. if ($db->affected_rows()) {
  87. $data = $db->query_return("SELECT * FROM user_bill WHERE id = '$_REQUEST[billid]'");
  88. $details = array(
  89. 'charge' => $data['charge'],
  90. 'time' => $data['time'],
  91. 'billable' => $data['billable'],
  92. 'paid' => $data['paid']
  93. );
  94. ticketlog($_REQUEST['id'], 'billing_changed', NULL, NULL, NULL, NULL, serialize($details));
  95. }
  96. jump("ticketview.php?id=$_REQUEST[id]", 'Billing details updated.');
  97. exit;
  98. } else {
  99. mistake('No billing entry ID was provided.');
  100. }
  101. }
  102. if ($_REQUEST['do'] == 'deletebilling') {
  103. if ($_REQUEST['billid']) {
  104. $data = $db->query_return("SELECT * FROM user_bill WHERE id = '$_REQUEST[billid]'");
  105. $db->query("DELETE FROM user_bill WHERE id = '$_REQUEST[billid]'");
  106. if ($db->affected_rows()) {
  107. $details = array(
  108. 'charge' => $data['charge'],
  109. 'time' => $data['time'],
  110. 'billable' => $data['billable'],
  111. 'paid' => $data['paid']
  112. );
  113. ticketlog($_REQUEST['id'], 'billing_deleted', NULL, NULL, NULL, NULL, serialize($details));
  114. }
  115. jump("ticketview.php?id=$_REQUEST[id]", 'Billing entry deleted.');
  116. exit;
  117. } else {
  118. mistake('No billing entry ID was provided.');
  119. }
  120. }
  121. if ($_REQUEST['do'] == 'charge' AND $_REQUEST['userid']) {
  122. if ($settings['default_billable']) {
  123. $billable = 1;
  124. } else { 
  125. $billable = 0;
  126. }
  127. if ($_REQUEST['charge1']) {
  128. if ($_REQUEST['charge'] > 0) {
  129. $charge = mysql_escape_string($_REQUEST['charge']);
  130. $db->query("INSERT INTO user_bill (userid, techid, ticketid, time, paid, billable, charge, stamp)
  131. VALUES ('$_REQUEST[userid]', '$user[id]', '$id', '0', '0', '$billable', '$charge', '$now')");
  132. }
  133. $done = 1;
  134. }
  135. if ($_REQUEST['charge2']) {
  136. if ($charge = ((int)$_REQUEST['hours'] * 3600) + ((int)$_REQUEST['minutes'] * 60) + (int)$_REQUEST['seconds']) {
  137. $db->query("INSERT INTO user_bill (userid, techid, ticketid, time, paid, billable, charge, stamp)
  138. VALUES ('$_REQUEST[userid]', '$user[id]', '$id', '$charge', '0', '$billable', '0.0', '$now')");
  139. }
  140. $done = 1;
  141. }
  142. }
  143. if ($done) {
  144. jump("ticketview.php?id=$id", 'Ticket billing updated');
  145. exit;
  146. }
  147. // category
  148. if ($_REQUEST['category'] != NULL AND ($_REQUEST['category'] != $ticket['category'])) {
  149. $ticketlog[] = array($id, 'category', $ticket[category], $_REQUEST['category']);
  150. $query .= " category = '" . mysql_escape_string($_REQUEST['category']) . "', ";
  151. }
  152. // priority
  153. if ($_REQUEST['priority'] != NULL AND ($_REQUEST['priority'] != $ticket['priority'])) {
  154. $ticketlog[] = array($id, 'priority', $ticket[priority], $_REQUEST['priority']);
  155. $query .= " priority = '" . mysql_escape_string($_REQUEST['priority']) . "', ";
  156. }
  157. // tech owner
  158. if ($_REQUEST['tech'] != NULL AND ($_REQUEST['tech'] != $ticket['tech'])) {
  159. $ticketlog[] = array($id, 'tech', $ticket[tech], $_REQUEST['tech']);
  160. $query .= " tech = '" . mysql_escape_string($_REQUEST['tech']) . "', ";
  161. if ($_REQUEST['awaiting_tech']) {
  162. $ticketlog[] = array($id, 'awaiting_tech');
  163. $query .= " awaiting_tech = '1', ";
  164. }
  165. // notify tech (update ticket details first)
  166. if ($_REQUEST['tech'] != '0') {
  167. $ticket[tech] = $_REQUEST['tech'];
  168. notify_technicians('assigned', $ticket, $user);
  169. }
  170. }
  171. // subject
  172. if ($_REQUEST['subject'] AND ($_REQUEST['subject'] != $ticket['subject'])) {
  173. $subject = xss_check($_REQUEST['subject'], 'tech');
  174. $ticketlog[] = array($id, 'subject', '', '', $ticket[subject], $_REQUEST['subject']);
  175. $query .= " subject = '" . mysql_escape_string($subject) . "', ";
  176. }
  177. // custom fields
  178. $db->query("SELECT * FROM ticket_def WHERE tech_editable");
  179. while ($result = $db->row_array()) {
  180. $data = field_def_val($result, $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]]);
  181. if ($data != $ticket[$result[name]]) { // if there is a change
  182. $ticketlog[] = array($id, 'custom', '', '', mysql_escape_string($ticket[$result[name]]), mysql_escape_string($data), $result[name]);
  183. $query .= " $result[name] = '" . mysql_escape_string($data) . "', ";
  184. }
  185. }
  186. // have made changes
  187. if ($query) { 
  188. $query = substr($query,0,-2);
  189. $query = "UPDATE ticket SET $query WHERE id = '$id'";
  190. ticketlog_array($ticketlog);
  191. $db->query($query);
  192. if (!$db->affected_rows()) {
  193. $message = "No changes specified; ticket unchanged.";
  194. } else {
  195. $message = "Ticket details updated";
  196. }
  197. if (isset($_REQUEST['searchid']) AND isset($_REQUEST['num'])) {
  198. if ($_REQUEST['searchid'] AND $_REQUEST['num']) {
  199. jump("load_results.php?id=$id&searchid=$_REQUEST[searchid]&advance=1&num=".($_REQUEST['num']+1)."" target="footer", $message);
  200. } else {
  201. jump("ticketview.php?id=$id", $message);
  202. }
  203. } else {
  204. jump("ticketview.php?id=$id", $message);
  205. }
  206. } else {
  207. jump("ticketview.php?id=$id", "No changes specified; ticket unchanged.");
  208. }