Commit ea256303 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 509045: Make "use_keywords" a global template variable instead of having to…

Bug 509045: Make "use_keywords" a global template variable instead of having to pass it to templates all the time Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit
parent 918a8c24
...@@ -74,12 +74,6 @@ sub set_description { $_[0]->set('description', $_[1]); } ...@@ -74,12 +74,6 @@ sub set_description { $_[0]->set('description', $_[1]); }
#### Subroutines ###### #### Subroutines ######
############################### ###############################
sub keyword_count {
my ($count) =
Bugzilla->dbh->selectrow_array('SELECT COUNT(*) FROM keyworddefs');
return $count;
}
sub get_all_with_bug_count { sub get_all_with_bug_count {
my $class = shift; my $class = shift;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
...@@ -145,8 +139,6 @@ Bugzilla::Keyword - A Keyword that can be added to a bug. ...@@ -145,8 +139,6 @@ Bugzilla::Keyword - A Keyword that can be added to a bug.
use Bugzilla::Keyword; use Bugzilla::Keyword;
my $count = Bugzilla::Keyword::keyword_count;
my $description = $keyword->description; my $description = $keyword->description;
my $keywords = Bugzilla::Keyword->get_all_with_bug_count(); my $keywords = Bugzilla::Keyword->get_all_with_bug_count();
...@@ -166,14 +158,6 @@ implements. ...@@ -166,14 +158,6 @@ implements.
=over =over
=item C<keyword_count()>
Description: A utility function to get the total number
of keywords defined. Mostly used to see
if there are any keywords defined at all.
Params: none
Returns: An integer, the count of keywords.
=item C<get_all_with_bug_count()> =item C<get_all_with_bug_count()>
Description: Returns all defined keywords. This is an efficient way Description: Returns all defined keywords. This is an efficient way
......
...@@ -170,14 +170,16 @@ sub match { ...@@ -170,14 +170,16 @@ sub match {
elsif ( $field eq 'WHERE' ) { elsif ( $field eq 'WHERE' ) {
# the WHERE value is a hashref where the keys are # the WHERE value is a hashref where the keys are
# "column_name operator ?" and values are the placeholder's # "column_name operator ?" and values are the placeholder's
# value. # value (either a scalar or an array of values).
foreach my $k (keys( %$value )) { foreach my $k (keys %$value) {
push( @terms, $k ); push(@terms, $k);
push( @values, $value->{$k} ); my @this_value = ref($value->{$k}) ? @{ $value->{$k} }
: ($value->{$k});
push(@values, @this_value);
} }
next; next;
} }
if (ref $value eq 'ARRAY') { if (ref $value eq 'ARRAY') {
# IN () is invalid SQL, and if we have an empty list # IN () is invalid SQL, and if we have an empty list
# to match against, we're just returning an empty # to match against, we're just returning an empty
...@@ -335,6 +337,15 @@ sub remove_from_db { ...@@ -335,6 +337,15 @@ sub remove_from_db {
#### Subroutines ###### #### Subroutines ######
############################### ###############################
sub any_exist {
my $class = shift;
my $table = $class->DB_TABLE;
my $dbh = Bugzilla->dbh;
my $any_exist = $dbh->selectrow_array(
"SELECT 1 FROM $table " . $dbh->sql_limit(1));
return $any_exist ? 1 : 0;
}
sub create { sub create {
my ($class, $params) = @_; my ($class, $params) = @_;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
...@@ -880,6 +891,11 @@ Returns C<1> if the passed-in value is true, C<0> otherwise. ...@@ -880,6 +891,11 @@ Returns C<1> if the passed-in value is true, C<0> otherwise.
=over =over
=item C<any_exist>
Returns C<1> if there are any of these objects in the database,
C<0> otherwise.
=item C<get_all> =item C<get_all>
Description: Returns all objects in this table from the database. Description: Returns all objects in this table from the database.
......
...@@ -37,7 +37,9 @@ use strict; ...@@ -37,7 +37,9 @@ use strict;
use Bugzilla::Bug; use Bugzilla::Bug;
use Bugzilla::Constants; use Bugzilla::Constants;
use Bugzilla::Install::Requirements; use Bugzilla::Install::Requirements;
use Bugzilla::Install::Util qw(install_string template_include_path include_languages); use Bugzilla::Install::Util qw(install_string template_include_path
include_languages);
use Bugzilla::Keyword;
use Bugzilla::Util; use Bugzilla::Util;
use Bugzilla::User; use Bugzilla::User;
use Bugzilla::Error; use Bugzilla::Error;
...@@ -752,6 +754,10 @@ sub create { ...@@ -752,6 +754,10 @@ sub create {
return $cache->{template_bug_fields}; return $cache->{template_bug_fields};
}, },
# Whether or not keywords are enabled, in this Bugzilla.
'use_keywords' => sub { return Bugzilla::Keyword->any_exist; },
# These don't work as normal constants. # These don't work as normal constants.
DB_MODULE => \&Bugzilla::Constants::DB_MODULE, DB_MODULE => \&Bugzilla::Constants::DB_MODULE,
REQUIRED_MODULES => REQUIRED_MODULES =>
......
...@@ -523,7 +523,6 @@ sub insert { ...@@ -523,7 +523,6 @@ sub insert {
$vars->{'bugs'} = [new Bugzilla::Bug($bugid)]; $vars->{'bugs'} = [new Bugzilla::Bug($bugid)];
$vars->{'header_done'} = 1; $vars->{'header_done'} = 1;
$vars->{'contenttypemethod'} = $cgi->param('contenttypemethod'); $vars->{'contenttypemethod'} = $cgi->param('contenttypemethod');
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
print $cgi->header(); print $cgi->header();
# Generate and return the UI (HTML page) from the appropriate template. # Generate and return the UI (HTML page) from the appropriate template.
...@@ -644,7 +643,6 @@ sub update { ...@@ -644,7 +643,6 @@ sub update {
$vars->{'attachment'} = $attachment; $vars->{'attachment'} = $attachment;
$vars->{'bugs'} = [$bug]; $vars->{'bugs'} = [$bug];
$vars->{'header_done'} = 1; $vars->{'header_done'} = 1;
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
print $cgi->header(); print $cgi->header();
...@@ -716,7 +714,6 @@ sub delete_attachment { ...@@ -716,7 +714,6 @@ sub delete_attachment {
# Required to display the bug the deleted attachment belongs to. # Required to display the bug the deleted attachment belongs to.
$vars->{'bugs'} = [$bug]; $vars->{'bugs'} = [$bug];
$vars->{'header_done'} = 1; $vars->{'header_done'} = 1;
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
$template->process("attachment/updated.html.tmpl", $vars) $template->process("attachment/updated.html.tmpl", $vars)
|| ThrowTemplateError($template->error()); || ThrowTemplateError($template->error());
......
...@@ -575,7 +575,10 @@ elsif (($cmdtype eq "doit") && defined $cgi->param('remtype')) { ...@@ -575,7 +575,10 @@ elsif (($cmdtype eq "doit") && defined $cgi->param('remtype')) {
# exists, add/remove bugs to it, else create it. But if we are # exists, add/remove bugs to it, else create it. But if we are
# considering an existing tag, then it has to exist and we throw # considering an existing tag, then it has to exist and we throw
# an error if it doesn't (hence the usage of !$is_new_name). # an error if it doesn't (hence the usage of !$is_new_name).
if (my $old_query = LookupNamedQuery($query_name, undef, LIST_OF_BUGS, !$is_new_name)) { my ($old_query, $query_id) =
LookupNamedQuery($query_name, undef, LIST_OF_BUGS, !$is_new_name);
if ($old_query) {
# We get the encoded query. We need to decode it. # We get the encoded query. We need to decode it.
my $old_cgi = new Bugzilla::CGI($old_query); my $old_cgi = new Bugzilla::CGI($old_query);
foreach my $bug_id (split /[\s,]+/, scalar $old_cgi->param('bug_id')) { foreach my $bug_id (split /[\s,]+/, scalar $old_cgi->param('bug_id')) {
...@@ -599,9 +602,10 @@ elsif (($cmdtype eq "doit") && defined $cgi->param('remtype')) { ...@@ -599,9 +602,10 @@ elsif (($cmdtype eq "doit") && defined $cgi->param('remtype')) {
# Only keep bug IDs we want to add/keep. Disregard deleted ones. # Only keep bug IDs we want to add/keep. Disregard deleted ones.
my @bug_ids = grep { $bug_ids{$_} == 1 } keys %bug_ids; my @bug_ids = grep { $bug_ids{$_} == 1 } keys %bug_ids;
# If the list is now empty, we could as well delete it completely. # If the list is now empty, we could as well delete it completely.
ThrowUserError('no_bugs_in_list', {'tag' => $query_name}) if (!scalar @bug_ids) {
unless scalar(@bug_ids); ThrowUserError('no_bugs_in_list', {name => $query_name,
query_id => $query_id});
}
$new_query = "bug_id=" . join(',', sort {$a <=> $b} @bug_ids); $new_query = "bug_id=" . join(',', sort {$a <=> $b} @bug_ids);
$query_type = LIST_OF_BUGS; $query_type = LIST_OF_BUGS;
} }
...@@ -1135,7 +1139,6 @@ if ($dotweak && scalar @bugs) { ...@@ -1135,7 +1139,6 @@ if ($dotweak && scalar @bugs) {
object => 'multiple_bugs'}); object => 'multiple_bugs'});
} }
$vars->{'dotweak'} = 1; $vars->{'dotweak'} = 1;
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
# issue_session_token needs to write to the master DB. # issue_session_token needs to write to the master DB.
Bugzilla->switch_to_main_db(); Bugzilla->switch_to_main_db();
......
...@@ -71,7 +71,7 @@ if (Bugzilla->params->{"useqacontact"}) { ...@@ -71,7 +71,7 @@ if (Bugzilla->params->{"useqacontact"}) {
if (Bugzilla->params->{"usestatuswhiteboard"}) { if (Bugzilla->params->{"usestatuswhiteboard"}) {
push(@masterlist, "status_whiteboard"); push(@masterlist, "status_whiteboard");
} }
if (Bugzilla::Keyword::keyword_count()) { if (Bugzilla::Keyword->any_exist) {
push(@masterlist, "keywords"); push(@masterlist, "keywords");
} }
......
...@@ -380,8 +380,6 @@ $vars->{'bug_severity'} = get_legal_field_values('bug_severity'); ...@@ -380,8 +380,6 @@ $vars->{'bug_severity'} = get_legal_field_values('bug_severity');
$vars->{'rep_platform'} = get_legal_field_values('rep_platform'); $vars->{'rep_platform'} = get_legal_field_values('rep_platform');
$vars->{'op_sys'} = get_legal_field_values('op_sys'); $vars->{'op_sys'} = get_legal_field_values('op_sys');
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
$vars->{'assigned_to'} = formvalue('assigned_to'); $vars->{'assigned_to'} = formvalue('assigned_to');
$vars->{'assigned_to_disabled'} = !$has_editbugs; $vars->{'assigned_to_disabled'} = !$has_editbugs;
$vars->{'cc_disabled'} = 0; $vars->{'cc_disabled'} = 0;
......
...@@ -279,7 +279,6 @@ if ($cgi->cookie("BUGLIST")) { ...@@ -279,7 +279,6 @@ if ($cgi->cookie("BUGLIST")) {
@bug_list = split(/:/, $cgi->cookie("BUGLIST")); @bug_list = split(/:/, $cgi->cookie("BUGLIST"));
} }
$vars->{'bug_list'} = \@bug_list; $vars->{'bug_list'} = \@bug_list;
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
if ($token) { if ($token) {
trick_taint($token); trick_taint($token);
......
...@@ -69,7 +69,6 @@ my $cgi = Bugzilla->cgi; ...@@ -69,7 +69,6 @@ my $cgi = Bugzilla->cgi;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
my $template = Bugzilla->template; my $template = Bugzilla->template;
my $vars = {}; my $vars = {};
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
###################################################################### ######################################################################
# Subroutines # Subroutines
......
...@@ -230,8 +230,6 @@ if (Bugzilla->params->{'usetargetmilestone'}) { ...@@ -230,8 +230,6 @@ if (Bugzilla->params->{'usetargetmilestone'}) {
$vars->{'target_milestone'} = \@milestones; $vars->{'target_milestone'} = \@milestones;
} }
$vars->{'have_keywords'} = Bugzilla::Keyword::keyword_count();
my @chfields; my @chfields;
push @chfields, "[Bug creation]"; push @chfields, "[Bug creation]";
......
...@@ -99,7 +99,6 @@ eval { ...@@ -99,7 +99,6 @@ eval {
$vars->{'bugs'} = \@bugs; $vars->{'bugs'} = \@bugs;
$vars->{'marks'} = \%marks; $vars->{'marks'} = \%marks;
$vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
my @bugids = map {$_->bug_id} grep {!$_->error} @bugs; my @bugids = map {$_->bug_id} grep {!$_->error} @bugs;
$vars->{'bugids'} = join(", ", @bugids); $vars->{'bugids'} = join(", ", @bugids);
......
...@@ -285,7 +285,7 @@ function doOnSelectProduct(selectmode) { ...@@ -285,7 +285,7 @@ function doOnSelectProduct(selectmode) {
[% END %] [% END %]
[% END %] [% END %]
[% IF have_keywords %] [% IF use_keywords %]
<tr> <tr>
<th align="right"> <th align="right">
<label for="keywords" accesskey="k"><a href="describekeywords.cgi"><u>K</u>eywords</a></label>: <label for="keywords" accesskey="k"><a href="describekeywords.cgi"><u>K</u>eywords</a></label>:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment