summaryrefslogtreecommitdiffstats
path: root/extensions/FlagTypeComment/Extension.pm
diff options
context:
space:
mode:
authorDave Lawrence <dlawrence@mozilla.com>2012-01-12 00:09:34 +0100
committerDave Lawrence <dlawrence@mozilla.com>2012-01-12 00:09:34 +0100
commitc39392747857dae64e90e174af7393e002dafad1 (patch)
tree9d1336ae72f3cc0aad2d31923e71708011c37c39 /extensions/FlagTypeComment/Extension.pm
parente75d8cf78f93434f9f3394ab215e6eb5a28248ba (diff)
downloadbugzilla-c39392747857dae64e90e174af7393e002dafad1.tar.gz
bugzilla-c39392747857dae64e90e174af7393e002dafad1.tar.xz
Bug 714786: The FlagTypeComment extension should allow more than one flag to
have have comment text associated with it r=glob
Diffstat (limited to 'extensions/FlagTypeComment/Extension.pm')
-rw-r--r--extensions/FlagTypeComment/Extension.pm37
1 files changed, 18 insertions, 19 deletions
diff --git a/extensions/FlagTypeComment/Extension.pm b/extensions/FlagTypeComment/Extension.pm
index caa41adf0..b3089e993 100644
--- a/extensions/FlagTypeComment/Extension.pm
+++ b/extensions/FlagTypeComment/Extension.pm
@@ -80,7 +80,8 @@ sub _set_ftc_states {
my ($file, $vars) = @_;
my $dbh = Bugzilla->dbh;
- my $db_states;
+ my $ftc_flags;
+ my $db_result;
if ($file =~ /^admin\//) {
# admin
my $type = $vars->{'type'} || return;
@@ -96,11 +97,11 @@ sub _set_ftc_states {
} else {
return unless FLAGTYPE_COMMENT_ATTACHMENT_FLAGS;
}
- $db_states = $dbh->selectall_hashref(
+ $db_result = $dbh->selectall_arrayref(
"SELECT type_id AS flagtype, on_status AS state, comment AS text
- FROM flagtype_comments WHERE type_id=?",
- 'state',
- undef,
+ FROM flagtype_comments
+ WHERE type_id = ?",
+ { Slice => {} },
$id);
} else {
@@ -123,21 +124,21 @@ sub _set_ftc_states {
});
my $types = join(',', map { $_->id } @$flag_types);
- $db_states = $dbh->selectall_hashref(
+ my $states = "'" . join("','", FLAGTYPE_COMMENT_STATES) . "'";
+ $db_result = $dbh->selectall_arrayref(
"SELECT type_id AS flagtype, on_status AS state, comment AS text
- FROM flagtype_comments WHERE type_id IN ($types)",
- 'state');
+ FROM flagtype_comments
+ WHERE type_id IN ($types) AND on_status IN ($states)",
+ { Slice => {} });
}
- my @edit_states;
- foreach my $state (FLAGTYPE_COMMENT_STATES) {
- if (exists $db_states->{$state}) {
- push @edit_states, $db_states->{$state};
- } else {
- push @edit_states, { state => $state, text => '' };
- }
+ foreach my $row (@$db_result) {
+ $ftc_flags->{$row->{'flagtype'}} ||= {};
+ $ftc_flags->{$row->{'flagtype'}}{$row->{'state'}} = $row->{text};
}
- $vars->{'ftc_states'} = \@edit_states;
+
+ $vars->{'ftc_states'} = [ FLAGTYPE_COMMENT_STATES ];
+ $vars->{'ftc_flags'} = $ftc_flags;
}
#########
@@ -159,9 +160,8 @@ sub _set_flagtypes {
my $input = Bugzilla->input_params;
my $dbh = Bugzilla->dbh;
- my $i = 0;
foreach my $state (FLAGTYPE_COMMENT_STATES) {
- my $text = $input->{"ftc_text_$i"} || '';
+ my $text = $input->{"ftc_${flagtype_id}_$state"} || '';
$text =~ s/\r\n/\n/g;
trick_taint($text);
@@ -190,7 +190,6 @@ sub _set_flagtypes {
undef,
$flagtype_id, $state);
}
- $i++;
}
}