calendar.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: calendar.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.11 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Send calendar reminders
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL ^ E_NOTICE);
  22. cron_check();
  23. require_once(INCLUDE_PATH.'/functions/calendar_functions.php');
  24. // Starting date is today
  25. $startdate = date('Y-m-d', time());
  26. $startdate_ts = strtotime($startdate);
  27. $enddate = $date;
  28. // Find the maximum range of dates we must consider.
  29. $max = $db->query_return('SELECT MAX(email_before1) AS b1, MAX(email_before2) AS b2 FROM calendar_task_tech');
  30. if ($max['b1'] > $max['b2']) {
  31. $max = $max['b1'];
  32. } else {
  33. $max = $max['b2'];
  34. }
  35. // Ending date is the current date plus $max days
  36. if ($max) {
  37. $enddate = date('Y-m-d', strtotime("$enddate + $max days"));
  38. }
  39. // Get a list of all active techs
  40. $db->query("SELECT id FROM tech WHERE !disabled");
  41. while ($res = $db->row_array()) {
  42. $techs[] = $res['id'];
  43. }
  44. // Now list all tasks due between now and the maximum time we have to notify for
  45. $tasks = cachetasks($startdate, $enddate, NULL, NULL, NULL, NULL, $techs, 0);
  46. // For every task in the list returned by cachetasks, decide whether to notify or not.
  47. if (is_array($tasks)) {
  48. foreach($tasks as $key => $var) {
  49. $date_ts = strtotime($key);
  50. if (is_array($var)) {
  51. foreach($var AS $key2 => $var2) {
  52. if ((($var2[9]['email_due']) AND ($date_ts == $startdate_ts)) 
  53. OR (($var2[9]['email_before1'] AND (strtotime("$key -" . $var2[9]['email_before1'] . " days") == $startdate_ts))) 
  54. OR (($var2[9]['email_before2'] AND (strtotime("$key -" . $var2[9]['email_before2'] . " days") == $startdate_ts)))) {
  55. $notifies[$var2[0]]['title'] = $var2[1];
  56. $notifies[$var2[0]]['description'] = $var2[2];
  57. $ids[] = $var2[0];
  58. }
  59. }
  60. }
  61. }
  62. }
  63. if (is_array($ids)) {
  64. if (count($ids)) { // Now, pile up a list of usernames and e-mails to send mail to.
  65. $db->query("SELECT email, username, eventid FROM tech, calendar_task_tech WHERE calendar_task_tech.eventid in " . array2sql($ids). " AND tech.id = calendar_task_tech.techid");
  66. while ($res = $db->row_array()) {
  67. $notifies[$res[eventid]][users][$res['username']] = $res['email'];
  68. }
  69. }
  70. // Send e-mails
  71. foreach($notifies AS $key => $val) {
  72. $task = $db->query_return("SELECT * FROM calendar_task WHERE id = $key");
  73. if (is_array($val[users])) {
  74. foreach($val[users] AS $username => $email) {
  75. eval(makeemaileval('message', 'TECHBODY_task_reminder', $subject));
  76. dp_mail($email, $subject, $message);
  77. }
  78. }
  79. }
  80. }