diff options
Diffstat (limited to 'extensions/RequestNagger/lib')
-rw-r--r-- | extensions/RequestNagger/lib/Bug.pm | 34 | ||||
-rw-r--r-- | extensions/RequestNagger/lib/Constants.pm | 69 | ||||
-rw-r--r-- | extensions/RequestNagger/lib/Settings.pm | 75 |
3 files changed, 86 insertions, 92 deletions
diff --git a/extensions/RequestNagger/lib/Bug.pm b/extensions/RequestNagger/lib/Bug.pm index 974a688ea..dc510d486 100644 --- a/extensions/RequestNagger/lib/Bug.pm +++ b/extensions/RequestNagger/lib/Bug.pm @@ -17,29 +17,29 @@ use feature 'state'; use Bugzilla::User; sub short_desc { - my ($self) = @_; - return $self->{sanitise_bug} ? '(Secure bug)' : $self->SUPER::short_desc; + my ($self) = @_; + return $self->{sanitise_bug} ? '(Secure bug)' : $self->SUPER::short_desc; } sub is_private { - my ($self) = @_; - if (!exists $self->{is_private}) { - state $default_user //= Bugzilla::User->new(); - $self->{is_private} = !$default_user->can_see_bug($self); - } - return $self->{is_private}; + my ($self) = @_; + if (!exists $self->{is_private}) { + state $default_user //= Bugzilla::User->new(); + $self->{is_private} = !$default_user->can_see_bug($self); + } + return $self->{is_private}; } sub tooltip { - my ($self) = @_; - my $tooltip = $self->bug_status; - if ($self->bug_status eq 'RESOLVED') { - $tooltip .= '/' . $self->resolution; - } - if (!$self->{sanitise_bug}) { - $tooltip .= ' ' . $self->product . ' :: ' . $self->component; - } - return $tooltip; + my ($self) = @_; + my $tooltip = $self->bug_status; + if ($self->bug_status eq 'RESOLVED') { + $tooltip .= '/' . $self->resolution; + } + if (!$self->{sanitise_bug}) { + $tooltip .= ' ' . $self->product . ' :: ' . $self->component; + } + return $tooltip; } 1; diff --git a/extensions/RequestNagger/lib/Constants.pm b/extensions/RequestNagger/lib/Constants.pm index bc6cf3371..1309e06c9 100644 --- a/extensions/RequestNagger/lib/Constants.pm +++ b/extensions/RequestNagger/lib/Constants.pm @@ -14,13 +14,13 @@ use warnings; use base qw(Exporter); our @EXPORT = qw( - MAX_SETTER_COUNT - MAX_REQUEST_AGE - FLAG_TYPES - REQUESTEE_NAG_SQL - SETTER_NAG_SQL - WATCHING_REQUESTEE_NAG_SQL - WATCHING_SETTER_NAG_SQL + MAX_SETTER_COUNT + MAX_REQUEST_AGE + FLAG_TYPES + REQUESTEE_NAG_SQL + SETTER_NAG_SQL + WATCHING_REQUESTEE_NAG_SQL + WATCHING_SETTER_NAG_SQL ); # if there are more than this many requests that a user is waiting on, show a @@ -29,33 +29,24 @@ use constant MAX_SETTER_COUNT => 7; # ignore any request older than this many days in the requestee emails # massively overdue requests will still be included in the 'watching' emails -use constant MAX_REQUEST_AGE => 90; # about three months +use constant MAX_REQUEST_AGE => 90; # about three months # the order of this array determines the order used in email use constant FLAG_TYPES => ( - { - type => 'review', # flag_type.name - group => 'everyone', # the user must be a member of this group to receive reminders - }, - { - type => 'superview', - group => 'everyone', - }, - { - type => 'feedback', - group => 'everyone', - }, - { - type => 'needinfo', - group => 'editbugs', - }, + { + type => 'review', # flag_type.name + group => 'everyone', # the user must be a member of this group to receive reminders + }, + {type => 'superview', group => 'everyone',}, + {type => 'feedback', group => 'everyone',}, + {type => 'needinfo', group => 'editbugs',}, ); sub REQUESTEE_NAG_SQL { - my $dbh = Bugzilla->dbh; - my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; + my $dbh = Bugzilla->dbh; + my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; - return " + return " SELECT flagtypes.name AS flag_type, flags.id AS flag_id, @@ -84,7 +75,8 @@ sub REQUESTEE_NAG_SQL { AND flags.status = '?' AND products.nag_interval != 0 AND TIMESTAMPDIFF(HOUR, flags.modification_date, CURRENT_DATE()) >= products.nag_interval - AND TIMESTAMPDIFF(DAY, flags.modification_date, CURRENT_DATE()) <= " . MAX_REQUEST_AGE . " + AND TIMESTAMPDIFF(DAY, flags.modification_date, CURRENT_DATE()) <= " + . MAX_REQUEST_AGE . " AND (profile_setting.setting_value IS NULL OR profile_setting.setting_value = 'on') AND requestee.disable_mail = 0 AND nag_defer.id IS NULL @@ -96,10 +88,10 @@ sub REQUESTEE_NAG_SQL { } sub SETTER_NAG_SQL { - my $dbh = Bugzilla->dbh; - my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; + my $dbh = Bugzilla->dbh; + my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; - return " + return " SELECT flagtypes.name AS flag_type, flags.id AS flag_id, @@ -128,7 +120,8 @@ sub SETTER_NAG_SQL { AND flags.status = '?' AND products.nag_interval != 0 AND TIMESTAMPDIFF(HOUR, flags.modification_date, CURRENT_DATE()) >= products.nag_interval - AND TIMESTAMPDIFF(DAY, flags.modification_date, CURRENT_DATE()) <= " . MAX_REQUEST_AGE . " + AND TIMESTAMPDIFF(DAY, flags.modification_date, CURRENT_DATE()) <= " + . MAX_REQUEST_AGE . " AND (profile_setting.setting_value IS NULL OR profile_setting.setting_value = 'on') AND setter.disable_mail = 0 AND nag_defer.id IS NULL @@ -140,10 +133,10 @@ sub SETTER_NAG_SQL { } sub WATCHING_REQUESTEE_NAG_SQL { - my $dbh = Bugzilla->dbh; - my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; + my $dbh = Bugzilla->dbh; + my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; - return " + return " SELECT nag_watch.watcher_id, flagtypes.name AS flag_type, @@ -192,10 +185,10 @@ sub WATCHING_REQUESTEE_NAG_SQL { } sub WATCHING_SETTER_NAG_SQL { - my $dbh = Bugzilla->dbh; - my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; + my $dbh = Bugzilla->dbh; + my @flag_types_sql = map { $dbh->quote($_->{type}) } FLAG_TYPES; - return " + return " SELECT nag_watch.watcher_id, flagtypes.name AS flag_type, diff --git a/extensions/RequestNagger/lib/Settings.pm b/extensions/RequestNagger/lib/Settings.pm index 393d224ba..839c37485 100644 --- a/extensions/RequestNagger/lib/Settings.pm +++ b/extensions/RequestNagger/lib/Settings.pm @@ -17,47 +17,48 @@ use List::MoreUtils qw( any ); use constant FIELDS => qw( reviews_only extended_period no_encryption ); sub new { - my ($class, $user_id) = @_; - - my $dbh = Bugzilla->dbh; - my $self = { user_id => $user_id }; - foreach my $row (@{ $dbh->selectall_arrayref( - "SELECT setting_name,setting_value FROM nag_settings WHERE user_id = ?", - { Slice => {} }, - $user_id - ) }) { - $self->{$row->{setting_name}} = $row->{setting_value}; - } - - return bless($self, $class); + my ($class, $user_id) = @_; + + my $dbh = Bugzilla->dbh; + my $self = {user_id => $user_id}; + foreach my $row (@{ + $dbh->selectall_arrayref( + "SELECT setting_name,setting_value FROM nag_settings WHERE user_id = ?", + {Slice => {}}, $user_id) + }) + { + $self->{$row->{setting_name}} = $row->{setting_value}; + } + + return bless($self, $class); } -sub reviews_only { exists $_[0]->{reviews_only} ? $_[0]->{reviews_only} : 0 } -sub extended_period { exists $_[0]->{extended_period} ? $_[0]->{extended_period} : 0 } -sub no_encryption { exists $_[0]->{no_encryption} ? $_[0]->{no_encryption} : 0 } +sub reviews_only { exists $_[0]->{reviews_only} ? $_[0]->{reviews_only} : 0 } + +sub extended_period { + exists $_[0]->{extended_period} ? $_[0]->{extended_period} : 0; +} +sub no_encryption { exists $_[0]->{no_encryption} ? $_[0]->{no_encryption} : 0 } sub set { - my ($self, $field, $value) = @_; - return unless any { $_ eq $field } FIELDS; - $value = $value ? 1 : 0; - - my $dbh = Bugzilla->dbh; - if (exists $self->{$field}) { - $dbh->do( - "UPDATE nag_settings SET setting_value=? WHERE user_id=? AND setting_name=?", - undef, - $value, $self->{user_id}, $field - ); - } - else { - $dbh->do( - "INSERT INTO nag_settings(user_id, setting_name, setting_value) VALUES (?, ?, ?)", - undef, - $self->{user_id}, $field, $value - ); - } - - $self->{$field} = $value; + my ($self, $field, $value) = @_; + return unless any { $_ eq $field } FIELDS; + $value = $value ? 1 : 0; + + my $dbh = Bugzilla->dbh; + if (exists $self->{$field}) { + $dbh->do( + "UPDATE nag_settings SET setting_value=? WHERE user_id=? AND setting_name=?", + undef, $value, $self->{user_id}, $field); + } + else { + $dbh->do( + "INSERT INTO nag_settings(user_id, setting_name, setting_value) VALUES (?, ?, ?)", + undef, $self->{user_id}, $field, $value + ); + } + + $self->{$field} = $value; } 1; |