diff options
Diffstat (limited to 'Bugzilla/Config.pm')
-rw-r--r-- | Bugzilla/Config.pm | 256 |
1 files changed, 125 insertions, 131 deletions
diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm index 3ebcb91c6..8a5e6c4bf 100644 --- a/Bugzilla/Config.pm +++ b/Bugzilla/Config.pm @@ -28,39 +28,6 @@ package Bugzilla::Config; -=head1 NAME - -Bugzilla::Config - Configuration parameters for Bugzilla - -=head1 SYNOPSIS - - # Getting parameters - use Bugzilla::Config; - - my $fooSetting = Param('foo'); - - # Administration functions - use Bugzilla::Config qw(:admin); - - my @valid_params = GetParamList(); - my @removed_params = UpgradeParams(); - SetParam($param, $value); - WriteParams(); - - # Localconfig variables may also be imported - use Bugzilla::Config qw(:db); - print "Connecting to $db_name as $db_user with $db_pass\n"; - - # This variable does not belong in localconfig, and needs to go - # somewhere better - use Bugzilla::Config($contenttypes) - -=head1 DESCRIPTION - -This package contains ways to access Bugzilla configuration parameters. - -=cut - use strict; use base qw(Exporter); @@ -86,16 +53,20 @@ Exporter::export_ok_tags('admin', 'db'); # Bugzilla version $Bugzilla::Config::VERSION = "2.17"; -use Data::Dumper; - -# This only has an affect for Data::Dumper >= 2.12 (ie perl >= 5.8.0) -# Its just cosmetic, though, so that doesn't matter -$Data::Dumper::Sortkeys = 1; - -use File::Temp; use Safe; use vars qw(@param_list); + +# Data::Dumper is required as needed, below. The problem is that then when +# the code locally sets $Data::Dumper::Foo, this triggers 'used only once' +# warnings. +# We can't predeclare another package's vars, though, so just use them +{ + local $Data::Dumper::Sortkeys; + local $Data::Dumper::Terse; + local $Data::Dumper::Indent; +} + my %param; # INITIALISATION CODE @@ -146,21 +117,6 @@ foreach my $item (@param_list) { # Subroutines go here -=head1 FUNCTIONS - -=head2 Parameters - -Parameters can be set, retrieved, and updated. - -=over 4 - -=item C<Param($name)> - -Returns the Param with the specified name. Either a string, or, in the case -of multiple-choice parameters, an array reference. - -=cut - sub Param { my ($param) = @_; @@ -170,26 +126,10 @@ sub Param { return $param{$param}; } -=item C<GetParamList()> - -Returns the list of known parameter types, from defparams.pl. Users should not -rely on this method; it is intended for editparams/doeditparams only - -The format for the list is specified in defparams.pl - -=cut - sub GetParamList { return @param_list; } -=item C<SetParam($name, $value)> - -Sets the param named $name to $value. Values are checked using the checker -function for the given param if one exists. - -=cut - sub SetParam { my ($name, $value) = @_; @@ -206,18 +146,6 @@ sub SetParam { $param{$name} = $value; } -=item C<UpdateParams()> - -Updates the parameters, by transitioning old params to new formats, setting -defaults for new params, and removing obsolete ones. - -Any removed params are returned in a list, with elements [$item, $oldvalue] -where $item is the entry in the param list. - -This change is not flushed to disk, use L<C<WriteParams()>> for that. - -=cut - sub UpdateParams { # --- PARAM CONVERSION CODE --- @@ -249,6 +177,8 @@ sub UpdateParams { # Remove any old params foreach my $item (keys %param) { if (!grep($_ eq $item, map ($_->{'name'}, @param_list))) { + require Data::Dumper; + local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 0; push (@oldparams, [$item, Data::Dumper->Dump([$param{$item}])]); @@ -259,13 +189,14 @@ sub UpdateParams { return @oldparams; } -=item C<WriteParams()> - -Writes the parameters to disk. +sub WriteParams { + require Data::Dumper; -=cut + # This only has an affect for Data::Dumper >= 2.12 (ie perl >= 5.8.0) + # Its just cosmetic, though, so that doesn't matter + local $Data::Dumper::Sortkeys = 1; -sub WriteParams { + require File::Temp; my ($fh, $tmpname) = File::Temp::tempfile('params.XXXXX', DIR => 'data' ); @@ -296,35 +227,6 @@ sub ChmodDataFile { chmod $perm,$file; } -=back - -=head2 Parameter checking functions - -All parameter checking functions are called with two parameters: - -=over 4 - -=item * - -The new value for the parameter - -=item * - -A reference to the entry in the param list for this parameter - -=back - -Functions should return error text, or the empty string if there was no error. - -=over 4 - -=item C<check_multi> - -Checks that a multi-valued parameter (ie type C<s> or type C<m>) satisfies -its contraints. - -=cut - sub check_multi { my ($value, $param) = (@_); @@ -350,12 +252,6 @@ sub check_multi { } } -=item C<check_numeric> - -Checks that the value is a valid number - -=cut - sub check_numeric { my ($value) = (@_); if ($value !~ /^[0-9]+$/) { @@ -364,20 +260,118 @@ sub check_numeric { return ""; } -=item C<check_regexp> - -Checks that the value is a valid regexp - -=cut - sub check_regexp { my ($value) = (@_); eval { qr/$value/ }; return $@; } +1; + +__END__ + +=head1 NAME + +Bugzilla::Config - Configuration parameters for Bugzilla + +=head1 SYNOPSIS + + # Getting parameters + use Bugzilla::Config; + + my $fooSetting = Param('foo'); + + # Administration functions + use Bugzilla::Config qw(:admin); + + my @valid_params = GetParamList(); + my @removed_params = UpgradeParams(); + SetParam($param, $value); + WriteParams(); + + # Localconfig variables may also be imported + use Bugzilla::Config qw(:db); + print "Connecting to $db_name as $db_user with $db_pass\n"; + + # This variable does not belong in localconfig, and needs to go + # somewhere better + use Bugzilla::Config($contenttypes) + +=head1 DESCRIPTION + +This package contains ways to access Bugzilla configuration parameters. + +=head1 FUNCTIONS + +=head2 Parameters + +Parameters can be set, retrieved, and updated. + +=over 4 + +=item C<Param($name)> + +Returns the Param with the specified name. Either a string, or, in the case +of multiple-choice parameters, an array reference. + +=item C<GetParamList()> + +Returns the list of known parameter types, from defparams.pl. Users should not +rely on this method; it is intended for editparams/doeditparams only + +The format for the list is specified in defparams.pl + +=item C<SetParam($name, $value)> + +Sets the param named $name to $value. Values are checked using the checker +function for the given param if one exists. + +=item C<UpdateParams()> + +Updates the parameters, by transitioning old params to new formats, setting +defaults for new params, and removing obsolete ones. + +Any removed params are returned in a list, with elements [$item, $oldvalue] +where $item is the entry in the param list. + +=item C<WriteParams()> + +Writes the parameters to disk. + =back -=cut +=head2 Parameter checking functions + +All parameter checking functions are called with two parameters: + +=over 4 + +=item * + +The new value for the parameter + +=item * + +A reference to the entry in the param list for this parameter + +=back + +Functions should return error text, or the empty string if there was no error. + +=over 4 + +=item C<check_multi> + +Checks that a multi-valued parameter (ie type C<s> or type C<m>) satisfies +its contraints. + +=item C<check_numeric> + +Checks that the value is a valid number + +=item C<check_regexp> + +Checks that the value is a valid regexp + +=back -1; |