diff options
-rwxr-xr-x | extensions/RequestNagger/bin/send-request-nags.pl | 14 | ||||
-rw-r--r-- | extensions/RequestNagger/lib/Constants.pm | 16 |
2 files changed, 25 insertions, 5 deletions
diff --git a/extensions/RequestNagger/bin/send-request-nags.pl b/extensions/RequestNagger/bin/send-request-nags.pl index 885a82ff1..03ff8b4ea 100755 --- a/extensions/RequestNagger/bin/send-request-nags.pl +++ b/extensions/RequestNagger/bin/send-request-nags.pl @@ -26,7 +26,7 @@ use Bugzilla::Extension::RequestNagger::Bug; use Bugzilla::Extension::RequestNagger::Settings; use Bugzilla::Mailer; use Bugzilla::User; -use Bugzilla::Util qw(format_time); +use Bugzilla::Util qw(format_time datetime_from); use Email::MIME; use File::Slurp qw(read_file); use File::Temp qw(tempfile); @@ -45,6 +45,7 @@ if (my $filename = shift @ARGV) { my $dbh = Bugzilla->dbh; my $date = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); +my $now = datetime_from($date)->truncate( to => 'day' ); $date = format_time($date, '%a, %d %b %Y %T %z', 'UTC'); # delete expired defers @@ -179,6 +180,17 @@ sub _include_request { return 0 if $attachment->isprivate && !$recipient->is_insider; } + # exclude weekends and re-check nag-interval + my $date = datetime_from($request->{modification_date}); + my $hours = 0; + $hours += 24 - $date->hour if $date->day_of_week <= 5; + $date->add( days => 1 )->truncate( to => 'day' ); + while ($date < $now) { + $hours += 24 if $date->day_of_week <= 5; + $date->add( days => 1 ); + } + return 0 if $hours < ($request->{extended_period} ? $request->{nag_interval} + 24 : $request->{nag_interval}); + return 1; } diff --git a/extensions/RequestNagger/lib/Constants.pm b/extensions/RequestNagger/lib/Constants.pm index 9f1b0ba98..435c0b167 100644 --- a/extensions/RequestNagger/lib/Constants.pm +++ b/extensions/RequestNagger/lib/Constants.pm @@ -62,7 +62,9 @@ sub REQUESTEE_NAG_SQL { setter.userid AS setter_id, requestee.userid AS requestee_id, flags.requestee_id AS recipient_id, - flags.requestee_id AS target_id + flags.requestee_id AS target_id, + products.nag_interval, + 0 AS extended_period FROM flags INNER JOIN flagtypes ON flagtypes.id = flags.type_id @@ -104,7 +106,9 @@ sub SETTER_NAG_SQL { setter.userid AS setter_id, requestee.userid AS requestee_id, flags.setter_id AS recipient_id, - flags.setter_id AS target_id + flags.setter_id AS target_id, + products.nag_interval, + 0 AS extended_period FROM flags INNER JOIN flagtypes ON flagtypes.id = flags.type_id @@ -147,7 +151,9 @@ sub WATCHING_REQUESTEE_NAG_SQL { setter.userid AS setter_id, requestee.userid AS requestee_id, nag_watch.watcher_id AS recipient_id, - requestee.userid AS target_id + requestee.userid AS target_id, + products.nag_interval, + COALESCE(extended_period.setting_value, 0) AS extended_period FROM flags INNER JOIN flagtypes ON flagtypes.id = flags.type_id @@ -197,7 +203,9 @@ sub WATCHING_SETTER_NAG_SQL { setter.userid AS setter_id, requestee.userid AS requestee_id, nag_watch.watcher_id AS recipient_id, - setter.userid AS target_id + setter.userid AS target_id, + products.nag_interval, + COALESCE(extended_period.setting_value, 0) AS extended_period FROM flags INNER JOIN flagtypes ON flagtypes.id = flags.type_id |