Automatically exported from code.google.com/p/planningalerts
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

application_mailer.php 6.0 KiB

17年前
17年前
17年前
16年前
17年前
17年前
17年前
17年前
17年前
17年前
17年前
17年前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. require_once('tools_ini.php');
  3. require_once('application.php');
  4. require_once('DB.php');
  5. //initialise
  6. $application_mailer = new application_mailer();
  7. $application_mailer->run();
  8. //class
  9. class application_mailer {
  10. //Properties
  11. var $log = array();
  12. var $application_count = 0;
  13. var $email_count = 0;
  14. //Run
  15. function run (){
  16. $db = DB::connect(DB_CONNECTION_STRING);
  17. //Grab all the users
  18. $sql = "select user_id, email, postcode, bottom_left_x, bottom_left_y, top_right_x, top_right_y, alert_area_size, confirm_id
  19. from user
  20. where confirmed = 1 and last_sent < " . $db->quote(mysql_date(time() - (20 * 60 * 60)));
  21. $this->store_log("Grabbing users");
  22. $user_results = $db->getAll($sql);
  23. $this->store_log("Found " . sizeof($user_results) . " who havnt been checked since " . mysql_date(time() - (20 * 60 * 60)));
  24. if(sizeof($user_results) > 0){
  25. //Loop though users
  26. for ($i=0; $i < sizeof($user_results); $i++){
  27. //Find applications for that user
  28. $sql = "select distinct council_reference, address,
  29. postcode, description, info_tinyurl,
  30. comment_tinyurl, map_url, full_name
  31. from application
  32. inner join authority on application.authority_id = authority.authority_id
  33. where date_scraped > " . $db->quote(mysql_date(time() - (24 * 60 * 60))) .
  34. " and (application.x > " . $user_results[$i][3] . " and application.x < " . $user_results[$i][5] . ")
  35. and (application.y > " . $user_results[$i][4] . " and application.y < " . $user_results[$i][6] . ") and (application.y <> 0 and application.y <> 0 )";
  36. $application_results = $db->getAll($sql);
  37. //Send email if we have any
  38. if(sizeof($application_results) > 0){
  39. //Setup applications array (bit pikey this)
  40. $applications = array();
  41. for ($ii=0; $ii < sizeof($application_results); $ii++){
  42. $application = new application();
  43. $application->council_reference = $application_results[$ii][0];
  44. $application->address = $application_results[$ii][1];
  45. $application->postcode = $application_results[$ii][2];
  46. $application->description= $application_results[$ii][3];
  47. $application->info_tinyurl= $application_results[$ii][4];
  48. $application->comment_tinyurl= $application_results[$ii][5];
  49. $application->map_url = $application_results[$ii][6];
  50. $application->authority_name = $application_results[$ii][7];
  51. array_push($applications, $application);
  52. }
  53. $this->application_count += sizeof($applications);
  54. //Smarty template
  55. $smarty = new Smarty;
  56. $smarty->force_compile = true;
  57. $smarty->compile_dir = SMARTY_COMPILE_DIRECTORY;
  58. $smarty->assign("applications", $applications);
  59. $smarty->assign("base_url", BASE_URL);
  60. $smarty->assign("confirm_id", $user_results[$i][8]);
  61. $smarty->assign("alert_area_size", $user_results[$i][7]);
  62. $smarty->assign("alert_postcode", $user_results[$i][2]);
  63. //Get the email text
  64. $email_text = $smarty->fetch(SMARTY_TEMPLATE_DIRECTORY . 'alert_email_text.tpl');
  65. //Send the email
  66. if($email_text !=""){
  67. send_text_email($user_results[$i][1], EMAIL_FROM_NAME, EMAIL_FROM_ADDRESS, "Planning applications near " . strtoupper($user_results[$i][2]), $email_text);
  68. $this->email_count +=1;
  69. }else{
  70. $this->store_log("BLANK EMAIL TEXT !!! EMAIL NOT SENT");
  71. }
  72. //Update last sent
  73. $sql = "update user set last_sent = " . $db->quote(mysql_date(time())) . " where user_id = " . $user_results[$i][0];
  74. $db->query($sql);
  75. $this->store_log("Updating last checked date/time");
  76. }
  77. }
  78. }
  79. $this->store_log("Sent " . $this->application_count . " applications to " . $this->email_count . " people!");
  80. //update the number of apps sent
  81. $sql = "select `key`, `value` from stats";
  82. $stats_results = $db->getAll($sql);
  83. $new_application_total = 0;
  84. $new_email_total = 0;
  85. for ($i=0; $i < sizeof($stats_results); $i++){
  86. if($stats_results[$i][0] == 'applications_sent'){
  87. $new_application_total = $stats_results[$i][1] + $this->application_count;
  88. $new_email_total = $stats_results[$i][1] + $this->email_count;
  89. }
  90. }
  91. //add stats to email
  92. $this->store_log("Total applications ever sent: " . $new_application_total);
  93. $this->store_log("Total emails ever sent: " . $new_email_total);
  94. //update stats in DB
  95. $sql = "update stats set `value` = " . $new_application_total . " where `key` = 'applications_sent'";
  96. $db->query($sql);
  97. $sql = "update stats set `value` = " . $new_email_total . " where `key` = 'emails_sent'";
  98. $db->query($sql);
  99. //Send the log
  100. send_text_email(LOG_EMAIL, "mailer@" . DOMAIN, "mailer@" . DOMAIN, "Planning mailer log", print_r($this->log, true));
  101. }
  102. function store_log($text){
  103. array_push($this->log, $text);
  104. print $text . "\n\n";
  105. }
  106. }
  107. ?>