summaryrefslogtreecommitdiffstats
path: root/extensions/RequestNagger/lib/Settings.pm
diff options
context:
space:
mode:
authorByron Jones <glob@mozilla.com>2015-05-27 08:32:13 +0200
committerByron Jones <glob@mozilla.com>2015-05-27 08:32:13 +0200
commitb03427e7ee68f39b715d921354bfc23a2e6af37a (patch)
treea4f6e3011cc013cc7f09364252b2ed93fad02b4c /extensions/RequestNagger/lib/Settings.pm
parent776ee55030257105efd7df2196d9aee01e8281ad (diff)
downloadbugzilla-b03427e7ee68f39b715d921354bfc23a2e6af37a.tar.gz
bugzilla-b03427e7ee68f39b715d921354bfc23a2e6af37a.tar.xz
Bug 1164850: add preferences to request nagging watching facility (reviews only, extended period, and skip encryption)
Diffstat (limited to 'extensions/RequestNagger/lib/Settings.pm')
-rw-r--r--extensions/RequestNagger/lib/Settings.pm61
1 files changed, 61 insertions, 0 deletions
diff --git a/extensions/RequestNagger/lib/Settings.pm b/extensions/RequestNagger/lib/Settings.pm
new file mode 100644
index 000000000..5407eac1d
--- /dev/null
+++ b/extensions/RequestNagger/lib/Settings.pm
@@ -0,0 +1,61 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::Extension::RequestNagger::Settings;
+use strict;
+use warnings;
+
+use Bugzilla;
+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);
+}
+
+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;
+}
+
+1;