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

Bug 342121: Remove usage of Config qw(:locations) in favor of Constants::bz_locations()

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave
parent 38b17a8f
......@@ -47,9 +47,10 @@ that users upload to the Bugzilla server.
=cut
use Bugzilla::Constants;
use Bugzilla::Error;
use Bugzilla::Flag;
use Bugzilla::Config qw(:locations Param);
use Bugzilla::Config;
use Bugzilla::User;
use Bugzilla::Util qw(trick_taint);
......@@ -384,7 +385,7 @@ sub _get_local_filename {
my $self = shift;
my $hash = ($self->id % 100) + 100;
$hash =~ s/.*(\d\d)$/group.$1/;
return "$attachdir/$hash/attachment." . $self->id;
return bz_locations()->{'attachdir'} . "/$hash/attachment." . $self->id;
}
sub _validate_filename {
......@@ -700,6 +701,7 @@ sub insert_attachment_for_bug {
# If the file is to be stored locally, stream the file from the webserver
# to the local file without reading it into a local variable.
if ($cgi->param('bigfile')) {
my $attachdir = bz_locations()->{'attachdir'};
my $fh = $cgi->upload('data');
my $hash = ($attachid % 100) + 100;
$hash =~ s/.*(\d\d)$/group.$1/;
......
......@@ -35,7 +35,7 @@ package Bugzilla::BugMail;
use Bugzilla::Error;
use Bugzilla::User;
use Bugzilla::Constants;
use Bugzilla::Config qw(:DEFAULT $datadir);
use Bugzilla::Config;
use Bugzilla::Util;
use Bugzilla::Bug;
use Bugzilla::Product;
......@@ -62,7 +62,7 @@ my %rel_names = (REL_ASSIGNEE , "AssignedTo",
my %nomail;
# This is run when we load the package
if (open(NOMAIL, '<', "$datadir/nomail")) {
if (open(NOMAIL, '<', bz_locations->{'datadir'} . "/nomail")) {
while (<NOMAIL>) {
$nomail{trim($_)} = 1;
}
......
......@@ -33,43 +33,7 @@ package Bugzilla::Config;
use strict;
use base qw(Exporter);
# Under mod_perl, get this from a .htaccess config variable,
# and/or default from the current 'real' dir
# At some stage after this, it may be possible for these dir locations
# to go into localconfig. localconfig can't be specified in a config file,
# except possibly with mod_perl. If you move localconfig, you need to change
# the define here.
# $libpath is really only for mod_perl; its not yet possible to move the
# .pms elsewhere.
# $webdotdir must be in the webtree somewhere. Even if you use a local dot,
# we output images to there. Also, if $webdot dir is not relative to the
# bugzilla root directory, you'll need to change showdependencygraph.cgi to
# set image_url to the correct location.
# The script should really generate these graphs directly...
# Note that if $libpath is changed, some stuff will break, notably dependency
# graphs (since the path will be wrong in the HTML). This will be fixed at
# some point.
# constant paths
our $libpath = '.';
our $templatedir = "$libpath/template";
# variable paths
our $project;
our $localconfig;
our $datadir;
if ($ENV{'PROJECT'} && $ENV{'PROJECT'} =~ /^(\w+)$/) {
$project = $1;
$localconfig = "$libpath/localconfig.$project";
$datadir = "$libpath/data/$project";
} else {
$localconfig = "$libpath/localconfig";
$datadir = "$libpath/data";
}
our $attachdir = "$datadir/attachments";
our $webdotdir = "$datadir/webdot";
our $extensionsdir = "$libpath/extensions";
use Bugzilla::Constants;
our @parampanels = ();
......@@ -84,11 +48,9 @@ our @parampanels = ();
admin => [qw(UpdateParams SetParam WriteParams)],
db => [qw($db_driver $db_host $db_port $db_name $db_user $db_pass $db_sock)],
localconfig => [qw($cvsbin $interdiffbin $diffpath $webservergroup)],
locations => [qw($libpath $localconfig $attachdir $datadir $templatedir
$webdotdir $project $extensionsdir)],
params => [qw(@parampanels)],
);
Exporter::export_ok_tags('admin', 'db', 'localconfig', 'locations', 'params');
Exporter::export_ok_tags('admin', 'db', 'localconfig', 'params');
# Bugzilla version
$Bugzilla::Config::VERSION = "2.23.1+";
......@@ -106,10 +68,13 @@ use vars qw(@param_list);
}
# INITIALISATION CODE
# Perl throws a warning if we use bz_locations() directly after do.
my $localconfig = bz_locations()->{'localconfig'};
do $localconfig;
my %params;
# Load in the param definitions
sub _load_params {
my $libpath = bz_locations()->{'libpath'};
foreach my $item ((glob "$libpath/Bugzilla/Config/*.pm")) {
$item =~ m#/([^/]+)\.pm$#;
my $module = $1;
......@@ -265,6 +230,7 @@ sub UpdateParams {
sub WriteParams {
require Data::Dumper;
my $datadir = bz_locations()->{'datadir'};
# This only has an affect for Data::Dumper >= 2.12 (ie perl >= 5.8.0)
# Its just cosmetic, though, so that doesn't matter
......@@ -294,7 +260,7 @@ sub WriteParams {
sub ChmodDataFile {
my ($file, $mask) = @_;
my $perm = 0770;
if ((stat($datadir))[2] & 0002) {
if ((stat(bz_locations()->{'datadir'}))[2] & 0002) {
$perm = 0777;
}
$perm = $perm & $mask;
......
......@@ -22,6 +22,7 @@
package Bugzilla::Hook;
use Bugzilla::Constants;
use Bugzilla::Util;
use Bugzilla::Error;
......@@ -32,7 +33,7 @@ sub process {
trick_taint($name);
# get a list of all extensions
my @extensions = glob($Bugzilla::Config::extensionsdir."/*");
my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*");
# check each extension to see if it uses the hook
# if so, invoke the extension source file:
......
......@@ -37,7 +37,7 @@ use base qw(Exporter);
@Bugzilla::Mailer::EXPORT = qw(MessageToMTA);
use Bugzilla::Constants;
use Bugzilla::Config qw(:DEFAULT $datadir);
use Bugzilla::Config;
use Bugzilla::Util;
use Mail::Header;
......@@ -99,7 +99,8 @@ sub MessageToMTA {
}
my $mailer = new Mail::Mailer Param("mail_delivery_method"), @args;
if (Param("mail_delivery_method") eq "testfile") {
$Mail::Mailer::testfile::config{outfile} = "$datadir/mailer.testfile";
$Mail::Mailer::testfile::config{outfile} =
bz_locations()->{'datadir'} . '/mailer.testfile';
}
$mailer->open($headers->header_hashref);
......
......@@ -35,7 +35,7 @@ package Bugzilla::Template;
use strict;
use Bugzilla::Constants;
use Bugzilla::Config qw(:DEFAULT $templatedir $datadir $project);
use Bugzilla::Config;
use Bugzilla::Util;
use Bugzilla::User;
use Bugzilla::Error;
......@@ -110,6 +110,9 @@ sub getTemplateIncludePath {
if ($template_include_path) {
return $template_include_path;
}
my $templatedir = bz_locations()->{'templatedir'};
my $project = bz_locations()->{'project'};
my $languages = trim(Param('languages'));
if (not ($languages =~ /,/)) {
if ($project) {
......@@ -159,7 +162,7 @@ sub getTemplateIncludePath {
}
# add in extension template directories:
my @extensions = glob($Bugzilla::Config::extensionsdir."/*");
my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*");
foreach my $extension (@extensions) {
trick_taint($extension); # since this comes right from the filesystem
# we have bigger issues if it is insecure
......@@ -533,7 +536,7 @@ sub create {
PRE_CHOMP => 1,
TRIM => 1,
COMPILE_DIR => "$datadir/template",
COMPILE_DIR => bz_locations()->{'datadir'} . "/template",
# Initialize templates (f.e. by loading plugins like Hook).
PRE_PROCESS => "global/initialize.none.tmpl",
......
......@@ -26,6 +26,7 @@ package Bugzilla::Template::Plugin::Hook;
use strict;
use Bugzilla::Config;
use Bugzilla::Constants;
use Bugzilla::Template;
use Bugzilla::Util;
use Bugzilla::Error;
......@@ -64,7 +65,7 @@ sub process {
my $type = $2;
# munge the filename to create the extension hook filename:
my $extensiontemplate = $subpath.'/'.$templatename.'-'.$hook_name.'.'.$type.'.tmpl';
my @extensions = glob($Bugzilla::Config::extensionsdir."/*");
my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*");
my @usedlanguages = getLanguages();
foreach my $extension (@extensions) {
foreach my $language (@usedlanguages) {
......
......@@ -18,10 +18,10 @@ package Bugzilla::Update;
use strict;
use Bugzilla::Config qw($datadir);
use Bugzilla::Constants;
use constant REMOTE_FILE => 'http://updates.bugzilla.org/bugzilla-update.xml';
use constant LOCAL_FILE => "/bugzilla-update.xml"; # Relative to $datadir.
use constant LOCAL_FILE => "/bugzilla-update.xml"; # Relative to datadir.
use constant TIME_INTERVAL => 604800; # Default is one week, in seconds.
use constant TIMEOUT => 5; # Number of seconds before timeout.
......@@ -34,7 +34,7 @@ sub get_notifications {
eval("require XML::Twig");
return if $@;
my $local_file = $datadir . LOCAL_FILE;
my $local_file = bz_locations()->{'datadir'} . LOCAL_FILE;
# Update the local XML file if this one doesn't exist or if
# the last modification time (stat[9]) is older than TIME_INTERVAL.
if (!-e $local_file || (time() - (stat($local_file))[9] > TIME_INTERVAL)) {
......@@ -127,7 +127,7 @@ sub _synchronize_data {
eval("require LWP::UserAgent");
return if $@;
my $local_file = $datadir . LOCAL_FILE;
my $local_file = bz_locations()->{'datadir'} . LOCAL_FILE;
my $ua = LWP::UserAgent->new();
$ua->timeout(TIMEOUT);
......
......@@ -510,7 +510,7 @@ BEGIN {
$::ENV{'PATH'} = $env;
require Bugzilla::Config;
import Bugzilla::Config qw(:DEFAULT :admin :locations);
import Bugzilla::Config qw(:DEFAULT :admin);
}
# 12/17/00 justdave@syndicomm.com - removed declarations of the localconfig
......@@ -550,6 +550,7 @@ BEGIN {
print "Checking user setup ...\n" unless $silent;
$@ = undef;
my $localconfig = bz_locations()->{'localconfig'};
do $localconfig;
if ($@) { # capture errors in localconfig, bug 97290
print STDERR <<EOT;
......@@ -582,7 +583,7 @@ sub LocalVar
my ($name, $definition) = @_;
return if LocalVarExists($name); # if localconfig declared it, we're done.
$newstuff .= " " . $name;
open FILE, '>>', $localconfig;
open FILE, '>>', bz_locations()->{'localconfig'};
print FILE ($answer{$name} or $definition), "\n\n";
close FILE;
}
......@@ -803,7 +804,8 @@ if (LocalVarExists('mysqlpath')) {
if ($newstuff ne "") {
print "\nThis version of Bugzilla contains some variables that you may \n",
"want to change and adapt to your local settings. Please edit the\n",
"file '$localconfig' and rerun checksetup.pl\n\n",
"file " . bz_locations()->{'localconfig'} ." and rerun ",
"checksetup.pl\n\n",
"The following variables are new to localconfig since you last ran\n",
"checksetup.pl: $newstuff\n\n";
exit;
......@@ -938,6 +940,7 @@ if ($my_db_check) {
# Try to create the DB, and if we fail print an error.
if (!eval { $dbh->do("CREATE DATABASE $my_db_name") }) {
my $error = $dbh->errstr;
my $localconfig = bz_locations()->{'localconfig'};
die <<"EOF"
The '$my_db_name' database could not be created. The error returned was:
......@@ -1048,7 +1051,7 @@ while (my ($table, $values) = each %$enum_values) {
#
# Create initial --DATA-- directory and make the initial empty files there:
#
my $datadir = bz_locations()->{'datadir'};
unless (-d $datadir && -e "$datadir/nomail") {
print "Creating data directory ($datadir) ...\n";
# permissions for non-webservergroup are fixed later on
......@@ -1058,13 +1061,14 @@ unless (-d $datadir && -e "$datadir/nomail") {
open FILE, '>>', "$datadir/mail"; close FILE;
}
my $attachdir = bz_locations->{'attachdir'};
unless (-d $attachdir) {
print "Creating local attachments directory ...\n";
# permissions for non-webservergroup are fixed later on
mkdir $attachdir, 0770;
}
my $extensionsdir = bz_locations->{'extensionsdir'};
# ZLL: 2005-08-20 Create extensions/ if it does not already exist:
unless (-d $extensionsdir) {
print "Creating extensions directory ($extensionsdir) ...\n";
......@@ -1161,6 +1165,7 @@ unless (-d "$datadir/mining") {
mkdir "$datadir/mining", 0700;
}
my $webdotdir = bz_locations()->{'webdotdir'};
unless (-d "$webdotdir") {
# perms/ownership are fixed up later
mkdir "$webdotdir", 0700;
......@@ -1277,6 +1282,7 @@ END
chmod $fileperm, "$datadir/.htaccess";
}
# Ditto for the template dir
my $templatedir = bz_locations()->{'templatedir'};
if (!-e "$templatedir/.htaccess") {
print "Creating $templatedir/.htaccess...\n";
open HTACCESS, '>', "$templatedir/.htaccess";
......@@ -1344,11 +1350,7 @@ END
}
}
# Just to be sure ...
unlink "$datadir/versioncache";
# Check for a new install
my $newinstall = !-e "$datadir/params";
# Remove parameters from the params file that no longer exist in Bugzilla,
......@@ -1405,6 +1407,7 @@ if ($newinstall) {
# WriteParams will only write out still-valid entries
WriteParams();
my $templatedir = bz_locations()->{'templatedir'};
unless ($switch{'no_templates'}) {
if (-e "$datadir/template") {
print "Removing existing compiled templates ...\n" unless $silent;
......@@ -1579,7 +1582,8 @@ if ($^O !~ /MSWin32/i) {
fixPerms("$datadir/duplicates", $<, $webservergid, 027, 1);
fixPerms("$datadir/mining", $<, $webservergid, 027, 1);
fixPerms("$datadir/template", $<, $webservergid, 007, 1); # webserver will write to these
fixPerms($attachdir, $<, $webservergid, 007, 1); # webserver will write to these
# webserver will write to attachdir.
fixPerms(bz_locations()->{'attachdir'}, $<, $webservergid, 007, 1);
fixPerms($webdotdir, $<, $webservergid, 007, 1);
fixPerms("$webdotdir/.htaccess", $<, $webservergid, 027);
fixPerms("$datadir/params", $<, $webservergid, 017);
......@@ -4352,6 +4356,11 @@ EOF
NOTNULL => 1});
}
if (-e "$datadir/versioncache") {
print "Removing versioncache...\n";
unlink "$datadir/versioncache";
}
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.
......@@ -4778,8 +4787,6 @@ $dbh->do("UPDATE components " .
"SET initialowner = $adminuid " .
"WHERE initialowner = 0");
unlink "$datadir/versioncache";
# Check if the default parameter for urlbase is still set, and if so, give
# notification that they should go and visit editparams.cgi
......
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