sendunsentbugmail.pl 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/env perl -wT
  2. # -*- Mode: perl; indent-tabs-mode: nil -*-
  3. #
  4. # The contents of this file are subject to the Mozilla Public
  5. # License Version 1.1 (the "License"); you may not use this file
  6. # except in compliance with the License. You may obtain a copy of
  7. # the License at http://www.mozilla.org/MPL/
  8. #
  9. # Software distributed under the License is distributed on an "AS
  10. # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  11. # implied. See the License for the specific language governing
  12. # rights and limitations under the License.
  13. #
  14. # The Original Code is the Bugzilla Bug Tracking System.
  15. #
  16. # The Initial Developer of the Original Code is Netscape Communications
  17. # Corporation. Portions created by Netscape are
  18. # Copyright (C) 1998 Netscape Communications Corporation. All
  19. # Rights Reserved.
  20. #
  21. # Contributor(s): Dave Miller <justdave@bugzilla.org>
  22. # Myk Melez <myk@mozilla.org>
  23. use strict;
  24. use lib qw(. lib);
  25. use Bugzilla;
  26. use Bugzilla::Constants;
  27. use Bugzilla::BugMail;
  28. my $dbh = Bugzilla->dbh;
  29. my $list = $dbh->selectcol_arrayref(
  30. 'SELECT bug_id FROM bugs
  31. WHERE lastdiffed IS NULL
  32. OR lastdiffed < delta_ts
  33. AND delta_ts < NOW() - ' . $dbh->sql_interval(30, 'MINUTE') .
  34. ' ORDER BY bug_id');
  35. if (scalar(@$list) > 0) {
  36. print "OK, now attempting to send unsent mail\n";
  37. print scalar(@$list) . " bugs found with possibly unsent mail.\n\n";
  38. foreach my $bugid (@$list) {
  39. my $start_time = time;
  40. print "Sending mail for bug $bugid...\n";
  41. my $outputref = Bugzilla::BugMail::Send($bugid);
  42. if ($ARGV[0] && $ARGV[0] eq "--report") {
  43. print "Mail sent to:\n";
  44. foreach (sort @{$outputref->{sent}}) {
  45. print $_ . "\n";
  46. }
  47. print "Excluded:\n";
  48. foreach (sort @{$outputref->{excluded}}) {
  49. print $_ . "\n";
  50. }
  51. }
  52. else {
  53. my ($sent, $excluded) = (scalar(@{$outputref->{sent}}),scalar(@{$outputref->{excluded}}));
  54. print "$sent mails sent, $excluded people excluded.\n";
  55. print "Took " . (time - $start_time) . " seconds.\n\n";
  56. }
  57. }
  58. print "Unsent mail has been sent.\n";
  59. }