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

电子政务应用

开发平台:

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: modifyticket.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.24 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Ticket modification handler (fields, etc.)
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. $template_cache = templatecache('HF_header,HF_footer,VIEW_edit');
  25. // globalise variables
  26. $global = array (
  27. array('ticketref')
  28. );
  29. rg($global);
  30. // default do
  31. $_REQUEST['do'] = trim($_REQUEST['do']);
  32. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  33. $_REQUEST['do'] = "start";
  34. }
  35. check_user();
  36. // check ticket ref
  37. if (!ticketref) {
  38. error("error_noticket");
  39. }
  40. ############################### UPDATE TICKET ###############################
  41. if ($_REQUEST['do'] == "submit") {
  42. //////////////// categories ////////////////
  43. if ($settings[category_user_viewable] AND $settings[category_user_editable]) {
  44. $db->query(" SELECT * FROM ticket_cat 
  45. WHERE user_view
  46. AND user_select
  47. ORDER by cat_order
  48. ");
  49. while ($cat = $db->row_array()) {
  50. $cats[] = $cat[id];
  51. }
  52. // only valid categories
  53. if (!(in_array($_REQUEST[category], $cats))) {
  54. unset($_REQUEST[category]);
  55. }
  56. // category required
  57. if ($settings[category_require_selection] AND !$_REQUEST[category]) {
  58. $stop = 1;
  59. $error_category = 1;
  60. }
  61. }
  62. //////////////// priorities ////////////////
  63. if (!$settings[priority_disable] AND $settings[priority_user_viewable] AND $settings[priority_user_editable]) {
  64. $db->query(" SELECT * FROM ticket_pri 
  65. WHERE user_view
  66. AND user_select
  67. ORDER by pri_order
  68. ");
  69. while ($pri = $db->row_array()) {
  70. $pris[] = $pri[id];
  71. }
  72. // only valid priorities
  73. if (!(in_array($_REQUEST[priority], $pris))) {
  74. unset($_REQUEST[priority]);
  75. }
  76. // priority required
  77. if ($priority_settings[require_selection] AND !$_REQUEST[priority]) {
  78. $stop = 1;
  79. $error_priority = 1;
  80. }
  81. }
  82. //////////////// custom fields ////////////////
  83. $custom = array();
  84. $custom_error = array();
  85. $db->query("SELECT * from ticket_def WHERE user_editable");
  86. $terms = array();
  87. while ($result = $db->row_array()) {
  88. $data = field_def_val($result, $_REQUEST[custom_fields][$result[name]], $_REQUEST[custom_fields]["extra" . $result[name]]);
  89. if ($data === NULL) {
  90. $tmp = unserialize($result[error_message]);
  91. $error_message = $tmp[$session[language]];
  92. // form errors;
  93. $custom_error[] = array('error' => $error_message);
  94. // for form design
  95. $custom_errors[] = $result[name];
  96. $stop = 1;
  97. } else {
  98. $terms[] = " $result[name] = '" . mysql_escape_string($data) . "' ";
  99. }
  100. }
  101. if ($stop) {
  102. $_REQUEST['do'] = 'start';
  103. } else {
  104. if (count($terms)) {
  105. $query2 = ', ' . join(', ', $terms);
  106. }
  107. $db->query("
  108. UPDATE ticket 
  109. SET priority = '" . mysql_escape_string($_REQUEST[priority]) . "',
  110. category = '" .  mysql_escape_string($_REQUEST[category]) . "'
  111. $query2
  112. WHERE ref = '" . mysql_escape_string($ticketref) ."'
  113. ");
  114. jump("view.php?ticketref=$ticketref", 'redirect_updated_ticket');
  115. }
  116. }
  117. ############################### DISPLAY FORM ###############################
  118. if ($_REQUEST['do'] == "start") {
  119. $ticket = $db->query_return("
  120. SELECT ticket.*, ticket_cat.name AS catname, ticket_pri.name AS priname
  121. FROM ticket
  122. LEFT JOIN ticket_cat ON (ticket.category = ticket_cat.id)
  123. LEFT JOIN ticket_pri ON (ticket.priority = ticket_pri.id)
  124. WHERE ticket.ref = '" . mysql_escape_string($ticketref) . "' AND
  125. ticket.userid = '$session[userid]'
  126. ");
  127. // no ticket
  128. if (!$db->num_rows()) {
  129. error("NEW_error_modify");
  130. }
  131. // ticket closed
  132. if ($ticket[is_open] == "0") {
  133. error("REPLY_error_ticket_closed");
  134. }
  135. // categories
  136. $categories = user_category_array('edit');
  137. if (is_array($categories)) {
  138. $category_html = form_select('category', $categories, $ticket['category']);
  139. }
  140. // priorities
  141. $priorities = user_priority_array('edit');
  142. if (is_array($priorities)) {
  143. $priority_html = form_select('priority', $priorities, $ticket['priority']);
  144. }
  145. // get rest of ticket data
  146. $db->query(
  147. "SELECT * from ticket_def
  148. WHERE user_editable
  149. ORDER by displayorder"
  150. );
  151. while ($result = $db->row_array()) {
  152. unset($name, $description, $error, $html);
  153. $tmp = unserialize($result[display_name]);
  154. $name = $tmp[$session[language]];
  155. $tmp = unserialize($result[description]);
  156. $description = $tmp[$session[language]];
  157. if ($stop) {
  158. $html = field_def($result, 1, $ticket[custom_fields][$result[name]], $ticket[custom_fields]["extra" . $result[name]]);
  159. } else {
  160. $html = field_def($result, 'edit', '', '', $ticket[$result[name]]);
  161. }
  162. $tmp = unserialize($result[error_message]);
  163. $error = $tmp[$session[language]];
  164. // two arrays, one for loop and one to allow custom form design
  165. $custom[] = array(
  166. 'name' => $name,
  167. 'description' => $description,
  168. 'html' => $html,
  169. 'error' => iff(@in_array($result[name], $custom_errors), $error, '')
  170. );
  171. ${$result[name]} = array(
  172. 'name' => $name,
  173. 'description' => $description,
  174. 'html' => $html,
  175. 'error' => iff(@in_array($result[name], $custom_errors), $error, '')
  176. );
  177. }
  178. eval(makeeval('header', 'HF_header'));
  179. eval(makeeval('footer', 'HF_footer'));
  180. eval(makeeval('echo', 'VIEW_edit'));
  181. }
  182. ?>