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

电子政务应用

开发平台:

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: escalate.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.7 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Ticket auto-escalation
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL ^ E_NOTICE);
  22. cron_check();
  23. //////////////////// RUN ESCALATIONS ////////////////////
  24. $db->query("SELECT * FROM escalate");
  25. while ($result = $db->row_array()) {
  26. if (!$result[dayswaiting] AND !$result[daysopen]) {
  27. // If it's a nonsensical escalation, don't continue
  28. continue;
  29. }
  30. // category change
  31. if ($result[category]) {
  32. $sql = " category = $result[category]";
  33. $i = 1;
  34. }
  35. // priority change
  36. if ($result[priority]) {
  37. $sql .= iff($i, ', ') . " priority = $result[priority]";
  38. $i = 1;
  39. }
  40. // tech owner
  41. if ($result[tech]) {
  42. $sql .= iff($i, ', ') . " tech = $result[tech]";
  43. }
  44. if ($sql) {
  45. if ($result[dayswaiting]) {
  46. $waiting_time = mktime() - (60 * 60 * 24 * $result[dayswaiting]);
  47. }
  48. if ($result[daysopen]) {
  49. $open_time = mktime() - (60 * 60 * 24 * $result[daysopen]);
  50. }
  51. if ($sql) {
  52. // First find all affected tickets
  53. $tickets = $db2->query_return_array("SELECT * FROM ticket WHERE
  54. " . iff($result[dayswaiting], " date_lastreply_tech > $waiting_time ") . "
  55. " . iff($result[daysopen], " date_opened > $open_time "));
  56. if ($db2->num_rows()) {
  57. // If there are tickets to escalate, log the changes and notify
  58. // technicians if needed.
  59. foreach ($tickets AS $ticket) {
  60. $userdata = $db2->query_return("SELECT * FROM tech WHERE id = '$ticket[tech]'");
  61. ticketlog($ticket[id], "escalate");
  62. if ($result[category]) {
  63. ticketlog($ticket[id], "category", $ticket[category], $result[category]);
  64. }
  65. if ($result[priority]) {
  66. ticketlog($ticket[id], "priority", $ticket[priority], $result[priority]);
  67. }
  68. if ($result[tech]) {
  69. ticketlog($ticket[id], "tech", $ticket[tech], $result[tech]);
  70. notify_technicians('assigned', $ticket, $userdata);
  71. }
  72. }
  73. $db2->query("
  74. UPDATE ticket SET $sql WHERE 
  75. " . iff($result[dayswaiting], " date_lastreply_tech > $waiting_time ") . "
  76. " . iff($result[daysopen], " date_opened > $open_time ") . "
  77. ");
  78. }
  79. }
  80. }
  81. }