diff options
author | Dave Lawrence <dlawrence@mozilla.com> | 2012-01-12 00:09:34 +0100 |
---|---|---|
committer | Dave Lawrence <dlawrence@mozilla.com> | 2012-01-12 00:09:34 +0100 |
commit | c39392747857dae64e90e174af7393e002dafad1 (patch) | |
tree | 9d1336ae72f3cc0aad2d31923e71708011c37c39 /extensions/FlagTypeComment/Extension.pm | |
parent | e75d8cf78f93434f9f3394ab215e6eb5a28248ba (diff) | |
download | bugzilla-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.pm | 37 |
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++; } } |