From d0303ab3ecb54eef2ed1b5e55839eada16748416 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Fri, 22 Jul 2005 03:04:24 +0000 Subject: Bug 301463: Move CheckFormField and CheckFormFieldDefined into Field.pm - Patch by Frédéric Buclin r=mkanat a=justdave MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Field.pm | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 Bugzilla/Field.pm (limited to 'Bugzilla/Field.pm') diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm new file mode 100644 index 000000000..173ff5499 --- /dev/null +++ b/Bugzilla/Field.pm @@ -0,0 +1,106 @@ +# -*- 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. +# +# Contributor(s): Dan Mosedale +# Frédéric Buclin + +package Bugzilla::Field; + +use strict; + +use base qw(Exporter); +@Bugzilla::Field::EXPORT = qw(check_form_field check_form_field_defined); + +use Bugzilla; +use Bugzilla::Util; +use Bugzilla::Error; + + +sub check_form_field ($$;$) { + my ($cgi, $fieldname, $legalsRef) = @_; + my $dbh = Bugzilla->dbh; + + if (!defined $cgi->param($fieldname) + || trim($cgi->param($fieldname)) eq "" + || (defined($legalsRef) + && lsearch($legalsRef, $cgi->param($fieldname)) < 0)) + { + trick_taint($fieldname); + my ($result) = $dbh->selectrow_array("SELECT description FROM fielddefs + WHERE name = ?", undef, $fieldname); + + my $field = $result || $fieldname; + ThrowCodeError("illegal_field", { field => $field }); + } +} + +sub check_form_field_defined ($$) { + my ($cgi, $fieldname) = @_; + + if (!defined $cgi->param($fieldname)) { + ThrowCodeError("undefined_field", { field => $fieldname }); + } +} + +=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); + + +=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 + +=back -- cgit v1.2.3-24-g4f1b