diff --git a/mozilla/webtools/bugzilla/Bugzilla.pm b/mozilla/webtools/bugzilla/Bugzilla.pm index 5267f3dbd6e..86d6e6e70de 100644 --- a/mozilla/webtools/bugzilla/Bugzilla.pm +++ b/mozilla/webtools/bugzilla/Bugzilla.pm @@ -35,7 +35,6 @@ use Bugzilla::Template; use Bugzilla::User; use Bugzilla::Error; use Bugzilla::Util; -use Bugzilla::Field; use File::Basename; @@ -277,17 +276,6 @@ sub switch_to_main_db { return $class->dbh; } -sub get_fields { - my $class = shift; - my $criteria = shift; - return Bugzilla::Field::match($criteria); -} - -sub custom_field_names { - # Get a list of custom fields and convert it into a list of their names. - return map($_->{name}, Bugzilla::Field::match({ custom=>1, obsolete=>0 })); -} - # Private methods # Per process cleanup diff --git a/mozilla/webtools/bugzilla/Bugzilla/Bug.pm b/mozilla/webtools/bugzilla/Bugzilla/Bug.pm index cfa5f49f659..61798f7cb01 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/Bug.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/Bug.pm @@ -90,8 +90,6 @@ sub fields { push @fields, qw(estimated_time remaining_time actual_time deadline); } - push(@fields, Bugzilla->custom_field_names); - return @fields; } @@ -164,11 +162,6 @@ sub initBug { $self->{'who'} = new Bugzilla::User($user_id); - my $custom_fields = ""; - if (length(Bugzilla->custom_field_names) > 0) { - $custom_fields = ", " . join(", ", Bugzilla->custom_field_names); - } - my $query = " SELECT bugs.bug_id, alias, products.classification_id, classifications.name, @@ -182,8 +175,7 @@ sub initBug { delta_ts, COALESCE(SUM(votes.vote_count), 0), reporter_accessible, cclist_accessible, estimated_time, remaining_time, " . - $dbh->sql_date_format('deadline', '%Y-%m-%d') . - $custom_fields . " + $dbh->sql_date_format('deadline', '%Y-%m-%d') . " FROM bugs LEFT JOIN votes ON bugs.bug_id = votes.bug_id @@ -220,8 +212,7 @@ sub initBug { "target_milestone", "qa_contact_id", "status_whiteboard", "creation_ts", "delta_ts", "votes", "reporter_accessible", "cclist_accessible", - "estimated_time", "remaining_time", "deadline", - Bugzilla->custom_field_names) + "estimated_time", "remaining_time", "deadline") { $fields{$field} = shift @row; if (defined $fields{$field}) { diff --git a/mozilla/webtools/bugzilla/Bugzilla/Constants.pm b/mozilla/webtools/bugzilla/Bugzilla/Constants.pm index 6ff7d8fa986..09717486ee6 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/Constants.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/Constants.pm @@ -91,9 +91,6 @@ use base qw(Exporter); ADMIN_GROUP_NAME SENDMAIL_EXE - - FIELD_TYPE_UNKNOWN - FIELD_TYPE_FREETEXT ); @Bugzilla::Constants::EXPORT_OK = qw(contenttypes); @@ -246,14 +243,4 @@ use constant ADMIN_GROUP_NAME => 'admin'; # Path to sendmail.exe (Windows only) use constant SENDMAIL_EXE => '/usr/lib/sendmail.exe'; -# Field types. Match values in fielddefs.type column. These are purposely -# not named after database column types, since Bugzilla fields comprise not -# only storage but also logic. For example, we might add a "user" field type -# whose values are stored in an integer column in the database but for which -# we do more than we would do for a standard integer type (f.e. we might -# display a user picker). - -use constant FIELD_TYPE_UNKNOWN => 0; -use constant FIELD_TYPE_FREETEXT => 1; - 1; diff --git a/mozilla/webtools/bugzilla/Bugzilla/DB/Schema.pm b/mozilla/webtools/bugzilla/Bugzilla/DB/Schema.pm index 3caeba70747..63b19578d04 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/DB/Schema.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/DB/Schema.pm @@ -36,7 +36,6 @@ package Bugzilla::DB::Schema; use strict; use Bugzilla::Error; use Bugzilla::Util; -use Bugzilla::Constants; use Safe; # Historical, needed for SCHEMA_VERSION = '1.00' @@ -454,10 +453,6 @@ use constant ABSTRACT_SCHEMA => { fieldid => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1, PRIMARYKEY => 1}, name => {TYPE => 'varchar(64)', NOTNULL => 1}, - type => {TYPE => 'INT2', NOTNULL => 1, - DEFAULT => FIELD_TYPE_UNKNOWN}, - custom => {TYPE => 'BOOLEAN', NOTNULL => 1, - DEFAULT => 'FALSE'}, description => {TYPE => 'MEDIUMTEXT', NOTNULL => 1}, mailhead => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, diff --git a/mozilla/webtools/bugzilla/Bugzilla/Field.pm b/mozilla/webtools/bugzilla/Bugzilla/Field.pm index 8585ff760fd..09c4731ac84 100644 --- a/mozilla/webtools/bugzilla/Bugzilla/Field.pm +++ b/mozilla/webtools/bugzilla/Bugzilla/Field.pm @@ -14,57 +14,6 @@ # # Contributor(s): Dan Mosedale # Frédéric Buclin -# Myk Melez - -=head1 NAME - -Bugzilla::Field - a particular piece of information about bugs - and useful routines for form field manipulation - -=head1 SYNOPSIS - - use Bugzilla; - use Data::Dumper; - - # Display information about all fields. - print Dumper(Bugzilla->get_fields()); - - # Display information about non-obsolete custom fields. - print Dumper(Bugzilla->get_fields({ obsolete => 1, custom => 1 })); - - # Display a list of the names of non-obsolete custom fields. - print Bugzilla->custom_field_names; - - use Bugzilla::Field; - - # Display information about non-obsolete custom fields. - # Bugzilla->get_fields() is a wrapper around Bugzilla::Field::match(), - # so both methods take the same arguments. - print Dumper(Bugzilla::Field::match({ obsolete => 1, custom => 1 })); - - # Create a custom field. - my $field = Bugzilla::Field::create("hilarity", "Hilarity"); - print "$field->{description} is a custom field\n"; - - # Instantiate a Field object for an existing field. - my $field = new Bugzilla::Field('qacontact_accessible'); - if ($field->{obsolete}) { - print "$field->{description} is obsolete\n"; - } - - # Validation Routines - check_form_field($cgi, $fieldname, \@legal_values); - check_form_field_defined($cgi, $fieldname); - $fieldid = get_field_id($fieldname); - -=head1 DESCRIPTION - -Field.pm defines field objects, which represent the particular pieces -of information that Bugzilla stores about bugs. - -This package also provides functions for dealing with CGI form fields. - -=cut package Bugzilla::Field; @@ -75,234 +24,8 @@ use base qw(Exporter); get_field_id); use Bugzilla::Util; -use Bugzilla::Constants; use Bugzilla::Error; -use constant DB_COLUMNS => ( - 'fieldid AS id', - 'name', - 'description', - 'type', - 'custom', - 'obsolete' -); - -our $columns = join(", ", DB_COLUMNS); - -sub new { - my $invocant = shift; - my $name = shift; - my $self = shift || Bugzilla->dbh->selectrow_hashref( - "SELECT $columns FROM fielddefs WHERE name = ?", - undef, - $name - ); - bless($self, $invocant); - return $self; -} - -=pod - -=head2 Instance Properties - -=over - -=item C - -the unique identifier for the field; - -=back - -=cut - -sub id { return $_[0]->{id} } - -=over - -=item C - -the name of the field in the database; begins with "cf_" if field -is a custom field, but test the value of the boolean "custom" property -to determine if a given field is a custom field; - -=back - -=cut - -sub name { return $_[0]->{name} } - -=over - -=item C - -a short string describing the field; displayed to Bugzilla users -in several places within Bugzilla's UI, f.e. as the form field label -on the "show bug" page; - -=back - -=cut - -sub description { return $_[0]->{description} } - -=over - -=item C - -an integer specifying the kind of field this is; values correspond to -the FIELD_TYPE_* constants in Constants.pm - -=back - -=cut - -sub type { return $_[0]->{type} } - -=over - -=item C - -a boolean specifying whether or not the field is a custom field; -if true, field name should start "cf_", but use this property to determine -which fields are custom fields; - -=back - -=cut - -sub custom { return $_[0]->{custom} } - -=over - -=item C - -a boolean specifying whether or not the field is obsolete; - -=back - -=cut - -sub obsolete { return $_[0]->{obsolete} } - - -=pod - -=head2 Class Methods - -=over - -=item C - -Description: creates a new custom field. - -Params: C<$name> - string - the name of the field; - C<$desc> - string - the field label to display in the UI. - -Returns: a field object. - -=back - -=cut - -sub create { - my ($name, $desc, $custom) = @_; - - # Convert the $custom argument into a DB-compatible value. - $custom = $custom ? 1 : 0; - - my $dbh = Bugzilla->dbh; - - # Some day we'll allow invocants to specify the sort key. - my ($sortkey) = - $dbh->selectrow_array("SELECT MAX(sortkey) + 1 FROM fielddefs"); - - # Some day we'll require invocants to specify the field type. - my $type = FIELD_TYPE_FREETEXT; - - # Create the database column that stores the data for this field. - $dbh->bz_add_column("bugs", $name, { TYPE => 'varchar(255)' }); - - # Add the field to the list of fields at this Bugzilla installation. - my $sth = $dbh->prepare( - "INSERT INTO fielddefs (name, description, sortkey, type, - custom, mailhead) - VALUES (?, ?, ?, ?, ?, 1)" - ); - $sth->execute($name, $desc, $sortkey, $type, $custom); - - return new Bugzilla::Field($name); -} - - -=pod - -=over - -=item C - -Description: returns a list of fields that match the specified criteria. - -Params: C<$criteria> - hash reference - the criteria to match against. - Hash keys represent field properties; hash values represent - their values. All criteria are optional. Valid criteria are - "custom" and "obsolete", and both take boolean values. - - Note: Bugzilla->get_fields() and Bugzilla->custom_field_names - wrap this method for most callers. - -Returns: a list of field objects. - -=back - -=cut - -sub match { - my ($criteria) = @_; - - my @terms; - if (defined $criteria->{name}) { - push(@terms, "name=" . Bugzilla->dbh->quote($criteria->{name})); - } - if (defined $criteria->{custom}) { - push(@terms, "custom=" . ($criteria->{custom} ? "1" : "0")); - } - if (defined $criteria->{obsolete}) { - push(@terms, "obsolete=" . ($criteria->{obsolete} ? "1" : "0")); - } - my $where = (scalar(@terms) > 0) ? "WHERE " . join(" AND ", @terms) : ""; - - my $records = Bugzilla->dbh->selectall_arrayref( - "SELECT $columns FROM fielddefs $where ORDER BY sortkey", - { Slice => {}} - ); - # Generate a array of field objects from the array of field records. - my @fields = map( new Bugzilla::Field(undef, $_), @$records ); - return @fields; -} - -=pod - -=head2 Data Validation - -=over - -=item C - -Description: Makes sure the field $fieldname is defined and its value - is non empty. If @legal_values is defined, this routine - also checks whether its value is one of the legal values - associated with this field. If the test fails, an error - is thrown. - -Params: $cgi - a CGI object - $fieldname - the field name to check - @legal_values - (optional) ref to a list of legal values - -Returns: nothing - -=back - -=cut sub check_form_field { my ($cgi, $fieldname, $legalsRef) = @_; @@ -322,24 +45,6 @@ sub check_form_field { } } -=pod - -=over - -=item C - -Description: Makes sure the field $fieldname is defined and its value - is non empty. Else an error is thrown. - -Params: $cgi - a CGI object - $fieldname - the field name to check - -Returns: nothing - -=back - -=cut - sub check_form_field_defined { my ($cgi, $fieldname) = @_; @@ -348,24 +53,6 @@ sub check_form_field_defined { } } -=pod - -=over - -=item C - -Description: Returns the ID of the specified field name and throws - an error if this field does not exist. - -Params: $name - a field name - -Returns: the corresponding field ID or an error if the field name - does not exist. - -=back - -=cut - sub get_field_id { my ($name) = @_; my $dbh = Bugzilla->dbh; @@ -381,3 +68,64 @@ sub get_field_id { 1; __END__ + +=head1 NAME + +Bugzilla::Field - Useful routines for fields manipulation + +=head1 SYNOPSIS + + use Bugzilla::Field; + + # Validation Routines + check_form_field($cgi, $fieldname, \@legal_values); + check_form_field_defined($cgi, $fieldname); + $fieldid = get_field_id($fieldname); + +=head1 DESCRIPTION + +This package provides functions for dealing with CGI form fields. + +=head1 FUNCTIONS + +This package provides several types of routines: + +=head2 Validation + +=over + +=item C + +Description: Makes sure the field $fieldname is defined and its value + is non empty. If @legal_values is defined, this routine + also checks whether its value is one of the legal values + associated with this field. If the test fails, an error + is thrown. + +Params: $cgi - a CGI object + $fieldname - the field name to check + @legal_values - (optional) ref to a list of legal values + +Returns: nothing + +=item C + +Description: Makes sure the field $fieldname is defined and its value + is non empty. Else an error is thrown. + +Params: $cgi - a CGI object + $fieldname - the field name to check + +Returns: nothing + +=item C + +Description: Returns the ID of the specified field name and throws + an error if this field does not exist. + +Params: $fieldname - a field name + +Returns: the corresponding field ID or an error if the field name + does not exist. + +=back diff --git a/mozilla/webtools/bugzilla/checksetup.pl b/mozilla/webtools/bugzilla/checksetup.pl index fdb678e21af..e8528aee1bb 100755 --- a/mozilla/webtools/bugzilla/checksetup.pl +++ b/mozilla/webtools/bugzilla/checksetup.pl @@ -1305,7 +1305,7 @@ unless ($switch{'no_templates'}) { # These are the files which need to be marked executable my @executable_files = ('whineatnews.pl', 'collectstats.pl', 'checksetup.pl', 'importxml.pl', 'runtests.pl', 'testserver.pl', - 'whine.pl', 'customfield.pl'); + 'whine.pl'); # tell me if a file is executable. All CGI files and those in @executable_files # are executable @@ -4240,13 +4240,6 @@ $dbh->bz_alter_column('logincookies', 'cookie', {TYPE => 'varchar(16)', PRIMARYKEY => 1, NOTNULL => 1}); -# 2005-08-10 Myk Melez bug 287325 -# Record each field's type and whether or not it's a custom field in fielddefs. -$dbh->bz_add_column('fielddefs', 'type', - { TYPE => 'INT2', NOTNULL => 1, DEFAULT => 0 }); -$dbh->bz_add_column('fielddefs', 'custom', - { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE' }); - # If you had to change the --TABLE-- definition in any way, then add your # differential change code *** A B O V E *** this comment. # diff --git a/mozilla/webtools/bugzilla/customfield.pl b/mozilla/webtools/bugzilla/customfield.pl deleted file mode 100755 index 106c60582bd..00000000000 --- a/mozilla/webtools/bugzilla/customfield.pl +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/perl -wT -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Myk Melez - -################################################################################ -# Script Initialization -################################################################################ - -use strict; - -use lib "."; -require "globals.pl"; - -use Bugzilla::Field; -use Getopt::Long; - -my ($name, $desc); -my $result = GetOptions("name=s" => \$name, - "description|desc=s" => \$desc); - -if (!$name or !$desc) { - my $command = - $^O =~ /MSWin32/i ? "perl -T customfield.pl" : "./customfield.pl"; - print < --desc="" - - is the name of the custom field in the database. - The string "cf_" will be prepended to this name to distinguish - the field from standard fields. This name must conform to the - naming rules for the database server you use. - - is a short string describing the field. It will - be displayed to Bugzilla users in several parts of Bugzilla's UI, - for example as the label for the field on the "show bug" page. - -Warning: - - Custom fields can make Bugzilla less usable. See this URL - for alternatives to custom fields: - - http://www.gerv.net/hacking/custom-fields.html - - You should try to implement applicable alternatives before using - this script to add a custom field. -END - - exit; -} - -# Prepend cf_ to the custom field name to distinguish it from standard fields. -$name =~ /^cf_/ - or $name = "cf_" . $name; - -# Exit gracefully if there is already a field with the given name. -if (scalar(Bugzilla::Field::match({ name=>$name })) > 0) { - print "There is already a field named $name. Please choose " . - "a different name.\n"; - exit; -} - - -# Create the field. -print "Creating custom field $name ...\n"; -my $field = Bugzilla::Field::create($name, $desc, 1); -print "Custom field $name created.\n"; diff --git a/mozilla/webtools/bugzilla/editcomponents.cgi b/mozilla/webtools/bugzilla/editcomponents.cgi index 3cbd71a9c50..c65fd316723 100755 --- a/mozilla/webtools/bugzilla/editcomponents.cgi +++ b/mozilla/webtools/bugzilla/editcomponents.cgi @@ -31,7 +31,6 @@ use lib "."; require "globals.pl"; -use Bugzilla; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); use Bugzilla::Series; diff --git a/mozilla/webtools/bugzilla/editmilestones.cgi b/mozilla/webtools/bugzilla/editmilestones.cgi index bb80164ab92..c8782852657 100755 --- a/mozilla/webtools/bugzilla/editmilestones.cgi +++ b/mozilla/webtools/bugzilla/editmilestones.cgi @@ -21,7 +21,6 @@ use lib "."; require "globals.pl"; -use Bugzilla; use Bugzilla::Constants; use Bugzilla::Config qw(:DEFAULT $datadir); use Bugzilla::Product; diff --git a/mozilla/webtools/bugzilla/editproducts.cgi b/mozilla/webtools/bugzilla/editproducts.cgi index d9ebcedd9dd..2b7c5dc5d5b 100755 --- a/mozilla/webtools/bugzilla/editproducts.cgi +++ b/mozilla/webtools/bugzilla/editproducts.cgi @@ -33,7 +33,6 @@ use strict; use lib "."; -use Bugzilla; use Bugzilla::Constants; require "globals.pl"; use Bugzilla::Bug; diff --git a/mozilla/webtools/bugzilla/process_bug.cgi b/mozilla/webtools/bugzilla/process_bug.cgi index fcd6408d39d..77496f2a389 100755 --- a/mozilla/webtools/bugzilla/process_bug.cgi +++ b/mozilla/webtools/bugzilla/process_bug.cgi @@ -855,18 +855,6 @@ foreach my $field ("rep_platform", "priority", "bug_severity", } } -# Add custom fields data to the query that will update the database. -foreach my $field (Bugzilla->custom_field_names) { - if (defined $cgi->param($field) - && (!$cgi->param('dontchange') - || $cgi->param($field) ne $cgi->param('dontchange'))) - { - DoComma(); - $::query .= "$field = " . SqlQuote(trim($cgi->param($field))); - } -} - - my $prod_id; my $prod_changed; my @newprod_ids; diff --git a/mozilla/webtools/bugzilla/show_activity.cgi b/mozilla/webtools/bugzilla/show_activity.cgi index e44bc705431..9b7273a4cd3 100755 --- a/mozilla/webtools/bugzilla/show_activity.cgi +++ b/mozilla/webtools/bugzilla/show_activity.cgi @@ -28,7 +28,6 @@ use lib qw(.); require "globals.pl"; -use Bugzilla; use Bugzilla::Bug; my $cgi = Bugzilla->cgi; diff --git a/mozilla/webtools/bugzilla/showdependencytree.cgi b/mozilla/webtools/bugzilla/showdependencytree.cgi index 03abb272993..d9d71b0abc4 100755 --- a/mozilla/webtools/bugzilla/showdependencytree.cgi +++ b/mozilla/webtools/bugzilla/showdependencytree.cgi @@ -27,7 +27,6 @@ use strict; use lib qw(.); require "globals.pl"; -use Bugzilla; use Bugzilla::User; use Bugzilla::Bug; diff --git a/mozilla/webtools/bugzilla/summarize_time.cgi b/mozilla/webtools/bugzilla/summarize_time.cgi index 0827077e8d2..44c4f8d50d4 100755 --- a/mozilla/webtools/bugzilla/summarize_time.cgi +++ b/mozilla/webtools/bugzilla/summarize_time.cgi @@ -23,7 +23,6 @@ use lib qw(.); use Date::Parse; # strptime use Date::Format; # strftime -use Bugzilla; use Bugzilla::Bug; # EmitDependList use Bugzilla::Util; # trim use Bugzilla::Constants; # LOGIN_* diff --git a/mozilla/webtools/bugzilla/template/en/default/bug/edit.html.tmpl b/mozilla/webtools/bugzilla/template/en/default/bug/edit.html.tmpl index 9768dd3b478..2252528ac39 100644 --- a/mozilla/webtools/bugzilla/template/en/default/bug/edit.html.tmpl +++ b/mozilla/webtools/bugzilla/template/en/default/bug/edit.html.tmpl @@ -497,15 +497,6 @@ [% END %] -[%# *** Custom Fields *** %] - -[% USE Bugzilla %] - - [% FOREACH field = Bugzilla.get_fields({ obsolete => 0, custom => 1 }) %] - [% PROCESS bug/field.html.tmpl value=bug.${field.name} %] - [% END %] -
- [%# *** Attachments *** %] [% PROCESS attachment/list.html.tmpl diff --git a/mozilla/webtools/bugzilla/template/en/default/bug/field.html.tmpl b/mozilla/webtools/bugzilla/template/en/default/bug/field.html.tmpl deleted file mode 100644 index cbde9cf2783..00000000000 --- a/mozilla/webtools/bugzilla/template/en/default/bug/field.html.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -[%# 1.0@bugzilla.org %] -[%# The contents of this file are subject to the Mozilla Public - # License Version 1.1 (the "License"); you may not use this file - # except in compliance with the License. You may obtain a copy of - # the License at http://www.mozilla.org/MPL/ - # - # Software distributed under the License is distributed on an "AS - # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - # implied. See the License for the specific language governing - # rights and limitations under the License. - # - # The Original Code is the Bugzilla Bug Tracking System. - # - # The Initial Developer of the Original Code is Netscape Communications - # Corporation. Portions created by Netscape are - # Copyright (C) 1998 Netscape Communications Corporation. All - # Rights Reserved. - # - # Contributor(s): Myk Melez - #%] - - - [% SWITCH field.type %] - [% CASE constants.FIELD_TYPE_FREETEXT %] - - - - - - - [% END %] -