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

电子政务应用

开发平台:

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 Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: view.php,v $
  15. // | $Date: 2004/02/11 20:32:12 $
  16. // | $Revision: 1.34 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Ticket detailed view page.
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL & ~E_NOTICE);
  22. require_once('./global.php');
  23. //Nullify WTN-WDYL Team
  24. $template_cache = templatecache('VIEW_main,VIEW_print,HF_footer,HF_header');
  25. // default do
  26. $_REQUEST['do'] = trim($_REQUEST['do']);
  27. if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
  28. $_REQUEST['do'] = "view";
  29. }
  30. // globalise variables
  31. $global = array (
  32. array('ticketref')
  33. );
  34. rg($global);
  35. ############################### SET UP PERMISSIONS ###############################
  36. // check ticket ref
  37. if (!$ticketref) {
  38. error("error_noticket");
  39. }
  40. // either should be logged in or have encrypted password
  41. if (!$_REQUEST['pass']) {
  42. // check user
  43. check_user();
  44. } else {
  45. $user = $db->query_return("
  46. SELECT * FROM user 
  47. WHERE password_url = '" . mysql_escape_string($_REQUEST['pass']) . "'
  48. ");
  49. // check they have a correct ticketid (this is like the test on username)
  50. $db->query("SELECT userid FROM ticket WHERE userid = '$user[id]'");
  51. // if the above query matched we have a valid user. Update session and send cookies
  52. if ($db->num_rows()) {
  53. $session = update_session('user', $user[id]);
  54. $session = update_session('language', $user[language]);
  55. dp_setcookie('dp_user_sessionid', $session[sessionid]);
  56. } else {
  57. // ticket does not exist or not owned by the user with the url_password submitted
  58. unset($user);
  59. check_user();
  60. }
  61. }
  62. ############################### CATEGORY / PRIORITY INFORMATION ###############################
  63. // categories
  64. $category_cache = user_category_array('view');
  65. // priorities
  66. $priority_cache = user_priority_array('view');
  67. ############################### TICKET DATA ###############################
  68. if ($_REQUEST['do'] == "view") {
  69. $ticket = $db->query_return("
  70. SELECT ticket.*, tech.username AS techusername
  71. FROM ticket
  72. LEFT JOIN tech ON (ticket.tech = tech.id)
  73. WHERE ticket.ref = '" . addslashes($ticketref) . "'
  74. ");
  75. if (!$db->num_rows()) {
  76. $ticket = $db->query_return("
  77. SELECT * 
  78. FROM ticket_merge 
  79. WHERE old_ref = '" . addslashes($ticketref) . "'
  80. ");
  81. if ($ticket['new_id']) {
  82. $ticket = $db->query_return("
  83. SELECT ticket.*, tech.username AS techusername
  84. FROM ticket
  85. LEFT JOIN tech ON (ticket.tech = tech.id)
  86. WHERE ticket.ref = '$ticket[new_id]'
  87. ");
  88. } else {
  89. error('error_noticket');
  90. }
  91. }
  92. if ($ticket['userid'] != $session['userid']) {
  93. error('error_noticket_permission');
  94. }
  95. ############################### TICKET PROCESSING ###############################
  96. $ticket['date_opened'] = our_date($ticket['date_opened'], 'day');
  97. $closed = $ticket['date_closed'];
  98. $ticket['date_closed'] = our_date($closed, 'day');
  99. $ticket['date_closed_full'] = our_date($closed, 'full');
  100. $ticket['category'] = $category_cache[$ticket['category']];
  101. $ticket['priority'] = $priority_cache[$ticket['priority']];
  102. // get field data
  103. $db->query("
  104. SELECT * from ticket_def 
  105. WHERE user_viewable
  106. ORDER by displayorder
  107. ");
  108. while ($result = $db->row_array()) {
  109. if ($result[user_editable] == 1) { // used for ticket editing
  110. $user_editable = 1;
  111. }
  112. unset($name, $description, $html);
  113. $tmp = unserialize($result[display_name]);
  114. $name = $tmp[$session[language]];
  115. $html = field_display($result, $ticket[$result[name]], 1);
  116. // two arrays, one for loop and one to allow custom form design
  117. $custom[] = array(
  118. 'name' => $name,
  119. 'description' => $description,
  120. 'html' => $html
  121. );
  122. ${$result[name]} = array(
  123. 'name' => $name,
  124. 'description' => $description,
  125. 'html' => $result[html]
  126. );
  127. }
  128. // check ticket is editable
  129. if ($settings[category_user_viewable] AND $settings[category_user_editable]) {
  130. $user_editable = 1;
  131. }
  132. if (!$settings[priority_disable] AND $settings[priority_user_viewable] AND $settings[priority_user_editable]) {
  133. $user_editable = 1;
  134. }
  135. ############################### GET ATTACHMENTS ###############################
  136. // get the attachments
  137. $db->query("SELECT filesize, ticket_attachments.id, filename, tech.username as tech, user.email as usermail
  138. FROM ticket_attachments
  139. LEFT JOIN tech ON ticket_attachments.techid = tech.id
  140. LEFT JOIN user ON ticket_attachments.userid = user.id
  141. WHERE ticketid = '$ticket[id]'
  142. ");
  143. while ($result = $db->row_array()) {
  144. if ($result['tech']) {
  145. $who = $result['tech'];
  146. } elseif ($result['usermail']) {
  147. $who = $result['usermail'];
  148. } else { 
  149. // This shouldn't happen, but is a good safeguard.
  150. $who = "<I>Unknown</I>";
  151. }
  152. $attachment[] = array(
  153. 'filesize' => number_format($result['filesize'] / 1024, 2),
  154. 'id' => $result['id'],
  155. 'filename' => $result['filename'],
  156. 'who' => $who
  157. );
  158. }
  159. ############################### GET TICKET MESSAGES ###############################
  160. $db->query("
  161. SELECT ticket_message.*, tech.username AS techusername, tech.signature
  162. FROM ticket_message
  163. LEFT JOIN tech ON (ticket_message.techid = tech.id)
  164. WHERE ticket_message.ticketid = '$ticket[id]' AND
  165. (ticket_message.techid OR ticket_message.userid)
  166. ORDER BY id
  167. ");
  168. $i = 0;
  169. while ($result = $db->row_array()) {
  170. $i++;
  171. $result[message] = trim($result[message]);
  172. $reply[] = array(
  173. 'id' => $result[id],
  174. 'number' => $i,
  175. 'signature' => dp_code($result[signature]),
  176. 'message' => iff($_REQUEST['print'] == 1, wordwrap($result[message]), dp_code($result[message])),
  177. 'userid' => $result[userid],
  178. 'date' => our_date($result[date], 'full'),
  179. 'techid' => $result[techid],
  180. 'techusername' => $result[techusername]
  181. );
  182. }
  183. ############################### DISPLAY PAGE ###############################
  184. // printable version
  185. if ($_REQUEST['print'] == 1) {
  186. eval(makeeval('echo', 'VIEW_print'));
  187. } else {
  188. eval(makeeval('header', 'HF_header'));
  189. eval(makeeval('footer', 'HF_footer'));
  190. eval(makeeval('echo', 'VIEW_main'));
  191. }
  192. }
  193. ?>