summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authorbbaetz%acm.org <>2003-11-22 12:50:36 +0100
committerbbaetz%acm.org <>2003-11-22 12:50:36 +0100
commitda857afa089e79ad16fb833dd1ffe397055fd892 (patch)
tree4582f630aa59c35fdb25aa30fd71c617977e0a86 /Bugzilla
parent63790559f094b702688365ed12242526ce3ff969 (diff)
downloadbugzilla-da857afa089e79ad16fb833dd1ffe397055fd892.tar.gz
bugzilla-da857afa089e79ad16fb833dd1ffe397055fd892.tar.xz
Bug 208604 - Make data/template dir locations configurable
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/BugMail.pm4
-rw-r--r--Bugzilla/Config.pm54
-rw-r--r--Bugzilla/DB.pm4
-rw-r--r--Bugzilla/Template.pm15
-rw-r--r--Bugzilla/Util.pm2
5 files changed, 55 insertions, 24 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index 7937fe176..7fdf44980 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -32,6 +32,8 @@ package Bugzilla::BugMail;
use RelationSet;
+use Bugzilla::Config qw(:DEFAULT $datadir);
+
# This code is really ugly. It was a commandline interface, then it was moved
# There are package-global variables which we rely on ProcessOneBug to clean
# up each time, and other sorts of fun.
@@ -66,7 +68,7 @@ sub AUTOLOAD {
}
# This is run when we load the package
-if (open(NOMAIL, "<data/nomail")) {
+if (open(NOMAIL, '<', "$datadir/nomail")) {
while (<NOMAIL>) {
$nomail{trim($_)} = 1;
}
diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm
index f0d64e5ac..f639b4a44 100644
--- a/Bugzilla/Config.pm
+++ b/Bugzilla/Config.pm
@@ -34,6 +34,29 @@ use base qw(Exporter);
use Bugzilla::Util;
+# 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 showdependancygraph.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 dependancy
+# graphs (since the path will be wrong in the HTML). This will be fixed at
+# some point.
+
+our $libpath = '.';
+our $localconfig = "$libpath/localconfig";
+our $datadir = "$libpath/data";
+our $templatedir = "$libpath/template";
+our $webdotdir = "$datadir/webdot";
+
# Module stuff
@Bugzilla::Config::EXPORT = qw(Param);
@@ -42,13 +65,15 @@ use Bugzilla::Util;
# when it shouldn't
# ChmodDataFile is here until that stuff all moves out of globals.pl
# into this file
-@Bugzilla::Config::EXPORT_OK = qw($contenttypes ChmodDataFile);
+@Bugzilla::Config::EXPORT_OK = qw(ChmodDataFile);
+
%Bugzilla::Config::EXPORT_TAGS =
(
admin => [qw(GetParamList UpdateParams SetParam WriteParams)],
db => [qw($db_host $db_port $db_name $db_user $db_pass $db_sock)],
+ locations => [qw($libpath $localconfig $datadir $templatedir $webdotdir)],
);
-Exporter::export_ok_tags('admin', 'db');
+Exporter::export_ok_tags('admin', 'db', 'locations');
# Bugzilla version
$Bugzilla::Config::VERSION = "2.17.6";
@@ -74,23 +99,24 @@ my %param;
# XXX - mod_perl - need to register Apache init handler for params
sub _load_datafiles {
# read in localconfig variables
- do 'localconfig';
+ do $localconfig;
- if (-e 'data/params') {
+ if (-e "$datadir/params") {
# Handle reading old param files by munging the symbol table
# Don't have to do this if we use safe mode, since its evaled
# in a sandbox where $foo is in the same module as $::foo
#local *::param = \%param;
- # Note that checksetup.pl sets file permissions on 'data/params'
+ # Note that checksetup.pl sets file permissions on '$datadir/params'
# Using Safe mode is _not_ a guarantee of safety if someone does
# manage to write to the file. However, it won't hurt...
# See bug 165144 for not needing to eval this at all
my $s = new Safe;
- $s->rdo('data/params');
- die "Error evaluating data/params: $@" if $@;
+ $s->rdo("$datadir/params");
+ die "Error reading $datadir/params: $!" if $!;
+ die "Error evaluating $datadir/params: $@" if $@;
# Now read the param back out from the sandbox
%param = %{$s->varglob('param')};
@@ -226,17 +252,17 @@ sub WriteParams {
require File::Temp;
my ($fh, $tmpname) = File::Temp::tempfile('params.XXXXX',
- DIR => 'data' );
+ DIR => $datadir );
print $fh (Data::Dumper->Dump([ \%param ], [ '*param' ]))
|| die "Can't write param file: $!";
close $fh;
- rename $tmpname, "data/params"
- || die "Can't rename $tmpname to data/params: $!";
+ rename $tmpname, "$datadir/params"
+ || die "Can't rename $tmpname to $datadir/params: $!";
- ChmodDataFile('data/params', 0666);
+ ChmodDataFile("$datadir/params", 0666);
}
# Some files in the data directory must be world readable iff we don't have
@@ -248,7 +274,7 @@ sub WriteParams {
sub ChmodDataFile {
my ($file, $mask) = @_;
my $perm = 0770;
- if ((stat('data'))[2] & 0002) {
+ if ((stat($datadir))[2] & 0002) {
$perm = 0777;
}
$perm = $perm & $mask;
@@ -321,10 +347,6 @@ Bugzilla::Config - Configuration parameters for Bugzilla
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.
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index 1d2e96614..a747aebd6 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -135,9 +135,9 @@ sub connect_shadow {
}
sub connect_main {
- my $dsn = "DBI:mysql:host=$::db_host;database=$::db_name;port=$::db_port";
+ my $dsn = "DBI:mysql:host=$db_host;database=$db_name;port=$db_port";
- $dsn .= ";mysql_socket=$::db_sock" if $::db_sock;
+ $dsn .= ";mysql_socket=$db_sock" if $db_sock;
return _connect($dsn);
}
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index f9342e11f..d981c7a59 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -29,7 +29,7 @@ package Bugzilla::Template;
use strict;
-use Bugzilla::Config;
+use Bugzilla::Config qw(:DEFAULT $templatedir $datadir);
use Bugzilla::Util;
# for time2str - replace by TT Date plugin??
@@ -37,6 +37,7 @@ use Date::Format ();
use base qw(Template);
+# XXX - mod_perl
my $template_include_path;
# Make an ordered list out of a HTTP Accept-Language header see RFC 2616, 14.4
@@ -69,13 +70,16 @@ sub sortAcceptLanguage {
# If no Accept-Language is present it uses the defined default
sub getTemplateIncludePath () {
# Return cached value if available
+
+ # XXXX - mod_perl!
if ($template_include_path) {
return $template_include_path;
}
my $languages = trim(Param('languages'));
if (not ($languages =~ /,/)) {
return $template_include_path =
- ["template/$languages/custom", "template/$languages/default"];
+ ["$templatedir/$languages/custom",
+ "$templatedir/$languages/default"];
}
my @languages = sortAcceptLanguage($languages);
my @accept_language = sortAcceptLanguage($ENV{'HTTP_ACCEPT_LANGUAGE'} || "" );
@@ -92,7 +96,9 @@ sub getTemplateIncludePath () {
}
push(@usedlanguages, Param('defaultlanguage'));
return $template_include_path =
- [map(("template/$_/custom", "template/$_/default"), @usedlanguages)];
+ [map(("$templatedir/$_/custom",
+ "$templatedir/$_/default"),
+ @usedlanguages)];
}
@@ -177,7 +183,7 @@ sub create {
PRE_CHOMP => 1,
TRIM => 1,
- COMPILE_DIR => 'data/',
+ COMPILE_DIR => "$datadir/template",
# Functions for processing text within templates in various ways.
# IMPORTANT! When adding a filter here that does not override a
@@ -321,4 +327,3 @@ C<Bugzilla-E<gt>instance-E<gt>template> to get an already created module.
=head1 SEE ALSO
L<Bugzilla>, L<Template>
-
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm
index c0d671744..4660b374d 100644
--- a/Bugzilla/Util.pm
+++ b/Bugzilla/Util.pm
@@ -47,6 +47,8 @@ sub is_tainted {
}
sub trick_taint {
+ require Carp;
+ Carp::confess("Undef to trick_taint") unless defined $_[0];
$_[0] =~ /^(.*)$/s;
$_[0] = $1;
return (defined($_[0]));