Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
4c1922a6
Commit
4c1922a6
authored
Aug 29, 2002
by
bbaetz%student.usyd.edu.au
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 163829 - move pref code into a separate package
r=joel, preed
parent
90c042db
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
557 additions
and
311 deletions
+557
-311
Bug.pm
Bug.pm
+6
-5
Bug.pm
Bugzilla/Bug.pm
+6
-5
Config.pm
Bugzilla/Config.pm
+379
-0
Search.pm
Bugzilla/Search.pm
+2
-1
Token.pm
Bugzilla/Token.pm
+8
-6
Util.pm
Bugzilla/Util.pm
+2
-0
CGI.pl
CGI.pl
+1
-0
Token.pm
Token.pm
+8
-6
checksetup.pl
checksetup.pl
+23
-42
defparams.pl
defparams.pl
+0
-0
doeditparams.cgi
doeditparams.cgi
+41
-48
editparams.cgi
editparams.cgi
+30
-37
globals.pl
globals.pl
+37
-151
move.pl
move.pl
+1
-1
syncshadowdb
syncshadowdb
+11
-7
banner.html.tmpl
template/en/default/global/banner.html.tmpl
+1
-1
xml.cgi
xml.cgi
+1
-1
No files found.
Bug.pm
View file @
4c1922a6
...
@@ -32,6 +32,7 @@ package Bug;
...
@@ -32,6 +32,7 @@ package Bug;
use
CGI::
Carp
qw(fatalsToBrowser)
;
use
CGI::
Carp
qw(fatalsToBrowser)
;
my
%
ok_field
;
my
%
ok_field
;
use
Bugzilla::
Config
;
use
Bugzilla::
Util
;
use
Bugzilla::
Util
;
for
my
$key
(
qw (bug_id
alias
product
version
rep_platform
op_sys
bug_status
for
my
$key
(
qw (bug_id
alias
product
version
rep_platform
op_sys
bug_status
...
@@ -165,7 +166,7 @@ sub initBug {
...
@@ -165,7 +166,7 @@ sub initBug {
$self
->
{
'cc'
}
=
\
@cc
;
$self
->
{
'cc'
}
=
\
@cc
;
}
}
if
(
&::
Param
(
"useqacontact"
)
&&
(
defined
$self
->
{
'qa_contact'
})
)
{
if
(
Param
(
"useqacontact"
)
&&
(
defined
$self
->
{
'qa_contact'
})
)
{
my
$name
=
$self
->
{
'qa_contact'
}
>
0
?
&::
DBID_to_name
(
$self
->
{
'qa_contact'
})
:
""
;
my
$name
=
$self
->
{
'qa_contact'
}
>
0
?
&::
DBID_to_name
(
$self
->
{
'qa_contact'
})
:
""
;
if
(
$name
)
{
if
(
$name
)
{
$self
->
{
'qa_contact'
}
=
$name
;
$self
->
{
'qa_contact'
}
=
$name
;
...
@@ -273,8 +274,8 @@ sub emitXML {
...
@@ -273,8 +274,8 @@ sub emitXML {
if
(
defined
$self
->
{
'longdescs'
})
{
if
(
defined
$self
->
{
'longdescs'
})
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'longdescs'
}}
;
$i
++
)
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'longdescs'
}}
;
$i
++
)
{
next
if
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'isprivate'
}
next
if
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'isprivate'
}
&&
&::
Param
(
"insidergroup"
)
&&
Param
(
"insidergroup"
)
&&
!&::
UserInGroup
(
&::
Param
(
"insidergroup"
)));
&&
!&::
UserInGroup
(
Param
(
"insidergroup"
)));
$xml
.=
" <long_desc>\n"
;
$xml
.=
" <long_desc>\n"
;
$xml
.=
" <who>"
.
&::
DBID_to_name
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'who'
})
$xml
.=
" <who>"
.
&::
DBID_to_name
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'who'
})
.
"</who>\n"
;
.
"</who>\n"
;
...
@@ -289,8 +290,8 @@ sub emitXML {
...
@@ -289,8 +290,8 @@ sub emitXML {
if
(
defined
$self
->
{
'attachments'
})
{
if
(
defined
$self
->
{
'attachments'
})
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'attachments'
}}
;
$i
++
)
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'attachments'
}}
;
$i
++
)
{
next
if
(
$self
->
{
'attachments'
}[
$i
]
->
{
'isprivate'
}
next
if
(
$self
->
{
'attachments'
}[
$i
]
->
{
'isprivate'
}
&&
&::
Param
(
"insidergroup"
)
&&
Param
(
"insidergroup"
)
&&
!&::
UserInGroup
(
&::
Param
(
"insidergroup"
)));
&&
!&::
UserInGroup
(
Param
(
"insidergroup"
)));
$xml
.=
" <attachment>\n"
;
$xml
.=
" <attachment>\n"
;
$xml
.=
" <attachid>"
.
$self
->
{
'attachments'
}[
$i
]
->
{
'attachid'
}
$xml
.=
" <attachid>"
.
$self
->
{
'attachments'
}[
$i
]
->
{
'attachid'
}
.
"</attachid>\n"
;
.
"</attachid>\n"
;
...
...
Bugzilla/Bug.pm
View file @
4c1922a6
...
@@ -32,6 +32,7 @@ package Bug;
...
@@ -32,6 +32,7 @@ package Bug;
use
CGI::
Carp
qw(fatalsToBrowser)
;
use
CGI::
Carp
qw(fatalsToBrowser)
;
my
%
ok_field
;
my
%
ok_field
;
use
Bugzilla::
Config
;
use
Bugzilla::
Util
;
use
Bugzilla::
Util
;
for
my
$key
(
qw (bug_id
alias
product
version
rep_platform
op_sys
bug_status
for
my
$key
(
qw (bug_id
alias
product
version
rep_platform
op_sys
bug_status
...
@@ -165,7 +166,7 @@ sub initBug {
...
@@ -165,7 +166,7 @@ sub initBug {
$self
->
{
'cc'
}
=
\
@cc
;
$self
->
{
'cc'
}
=
\
@cc
;
}
}
if
(
&::
Param
(
"useqacontact"
)
&&
(
defined
$self
->
{
'qa_contact'
})
)
{
if
(
Param
(
"useqacontact"
)
&&
(
defined
$self
->
{
'qa_contact'
})
)
{
my
$name
=
$self
->
{
'qa_contact'
}
>
0
?
&::
DBID_to_name
(
$self
->
{
'qa_contact'
})
:
""
;
my
$name
=
$self
->
{
'qa_contact'
}
>
0
?
&::
DBID_to_name
(
$self
->
{
'qa_contact'
})
:
""
;
if
(
$name
)
{
if
(
$name
)
{
$self
->
{
'qa_contact'
}
=
$name
;
$self
->
{
'qa_contact'
}
=
$name
;
...
@@ -273,8 +274,8 @@ sub emitXML {
...
@@ -273,8 +274,8 @@ sub emitXML {
if
(
defined
$self
->
{
'longdescs'
})
{
if
(
defined
$self
->
{
'longdescs'
})
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'longdescs'
}}
;
$i
++
)
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'longdescs'
}}
;
$i
++
)
{
next
if
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'isprivate'
}
next
if
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'isprivate'
}
&&
&::
Param
(
"insidergroup"
)
&&
Param
(
"insidergroup"
)
&&
!&::
UserInGroup
(
&::
Param
(
"insidergroup"
)));
&&
!&::
UserInGroup
(
Param
(
"insidergroup"
)));
$xml
.=
" <long_desc>\n"
;
$xml
.=
" <long_desc>\n"
;
$xml
.=
" <who>"
.
&::
DBID_to_name
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'who'
})
$xml
.=
" <who>"
.
&::
DBID_to_name
(
$self
->
{
'longdescs'
}[
$i
]
->
{
'who'
})
.
"</who>\n"
;
.
"</who>\n"
;
...
@@ -289,8 +290,8 @@ sub emitXML {
...
@@ -289,8 +290,8 @@ sub emitXML {
if
(
defined
$self
->
{
'attachments'
})
{
if
(
defined
$self
->
{
'attachments'
})
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'attachments'
}}
;
$i
++
)
{
for
(
my
$i
=
0
;
$i
<
@
{
$self
->
{
'attachments'
}}
;
$i
++
)
{
next
if
(
$self
->
{
'attachments'
}[
$i
]
->
{
'isprivate'
}
next
if
(
$self
->
{
'attachments'
}[
$i
]
->
{
'isprivate'
}
&&
&::
Param
(
"insidergroup"
)
&&
Param
(
"insidergroup"
)
&&
!&::
UserInGroup
(
&::
Param
(
"insidergroup"
)));
&&
!&::
UserInGroup
(
Param
(
"insidergroup"
)));
$xml
.=
" <attachment>\n"
;
$xml
.=
" <attachment>\n"
;
$xml
.=
" <attachid>"
.
$self
->
{
'attachments'
}[
$i
]
->
{
'attachid'
}
$xml
.=
" <attachid>"
.
$self
->
{
'attachments'
}[
$i
]
->
{
'attachid'
}
.
"</attachid>\n"
;
.
"</attachid>\n"
;
...
...
Bugzilla/Config.pm
0 → 100644
View file @
4c1922a6
# -*- 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): Terry Weissman <terry@mozilla.org>
# Dawn Endico <endico@mozilla.org>
# Dan Mosedale <dmose@mozilla.org>
# Joe Robins <jmrobins@tgix.com>
# Jake <jake@bugzilla.org>
# J. Paul Reed <preed@sigkill.com>
# Bradley Baetz <bbaetz@student.usyd.edu.au>
# Christopher Aillon <christopher@aillon.com>
package
Bugzilla::
Config
;
=head1 NAME
Bugzilla::Config - Configuration paramaters for Bugzilla
=head1 SYNOPSIS
# Getting paramaters
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";
# These variables do not belong in localconfig, and need to go
# somewhere better
use Bugzilla::Config($contenttypes $pages)
=head1 DESCRIPTION
This package contains ways to access Bugzilla configuration parameters.
=cut
use
strict
;
use
base
qw(Exporter)
;
use
Bugzilla::
Util
;
# Module stuff
@
Bugzilla::Config::
EXPORT
=
qw(Param)
;
# Don't export localvars by default - people should have to explicitly
# ask for it, as a (probably futile) attempt to stop code using it
# 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 $pages ChmodDataFile)
;
%
Bugzilla::Config::
EXPORT_TAGS
=
(
admin
=>
[
qw(GetParamList UpdateParams SetParam WriteParams)
],
db
=>
[
qw($db_host $db_port $db_name $db_user $db_pass)
],
);
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)
;
my
%
param
;
# INITIALISATION CODE
# XXX - mod_perl - need to register Apache init handler for params
sub
_load_datafiles
{
# read in localconfig variables
do
'localconfig'
;
if
(
-
e
'data/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'
# 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
$@
;
# Now read the param back out from the sandbox
%
param
=
%
{
$s
->
varglob
(
'param'
)};
}
}
# Load in the datafiles
_load_datafiles
();
# Load in the param defintions
do
'defparams.pl'
;
# Stick the params into a hash
my
%
params
;
foreach
my
$item
(
@param_list
)
{
$params
{
$item
->
{
'name'
}}
=
$item
;
}
# END INIT CODE
# 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
)
=
@_
;
# By this stage, the param must be in the hash
die
"Can't find param named $param"
unless
(
exists
$param
{
$param
});
return
$param
{
$param
};
}
=item C<GetParamList()>
Returns the list of known paramater 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
)
=
@_
;
die
"Unknown param $name"
unless
(
exists
$params
{
$name
});
my
$entry
=
$params
{
$name
};
# sanity check the value
if
(
exists
$entry
->
{
'checker'
})
{
my
$err
=
$entry
->
{
'checker'
}
->
(
$value
,
$entry
);
die
"Param $name is not valid: $err"
unless
$err
eq
''
;
}
$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 ---
# Note that this isn't particuarly 'clean' in terms of separating
# the backend code (ie this) from the actual params.
# We don't care about that, though
# Old bugzilla versions stored the version number in the params file
# We don't want it, so get rid of it
delete
$param
{
'version'
};
# Change from a boolean for quips to multi-state
if
(
exists
$param
{
'usequip'
}
&&
!
exists
$param
{
'allowquips'
})
{
$param
{
'allowquips'
}
=
$param
{
'usequip'
}
?
'on'
:
'off'
;
delete
$param
{
'usequip'
};
}
# --- DEFAULTS FOR NEW PARAMS ---
foreach
my
$item
(
@param_list
)
{
my
$name
=
$item
->
{
'name'
};
$param
{
$name
}
=
$item
->
{
'default'
}
unless
exists
$param
{
$name
};
}
# --- REMOVE OLD PARAMS ---
my
@oldparams
=
();
# Remove any old params
foreach
my
$item
(
keys
%
param
)
{
if
(
!
grep
(
$_
eq
$item
,
map
(
$_
->
{
'name'
},
@param_list
)))
{
local
$
Data::Dumper::
Terse
=
1
;
local
$
Data::Dumper::
Indent
=
0
;
push
(
@oldparams
,
[
$item
,
Data::
Dumper
->
Dump
([
$param
{
$item
}])]);
delete
$param
{
$item
};
}
}
return
@oldparams
;
}
=item C<WriteParams()>
Writes the parameters to disk.
=cut
sub
WriteParams
{
my
(
$fh
,
$tmpname
)
=
File::Temp::
tempfile
(
'params.XXXXX'
,
DIR
=>
'data'
);
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: $!"
;
ChmodDataFile
(
'data/params'
,
0666
);
}
# Some files in the data directory must be world readable iff we don't have
# a webserver group. Call this function to do this.
# This will become a private function once all the datafile handling stuff
# moves into this package
# This sub is not perldoc'd for that reason - noone should know about it
sub
ChmodDataFile
{
my
(
$file
,
$mask
)
=
@_
;
my
$perm
=
0770
;
if
((
stat
(
'data'
))[
2
]
&
0002
)
{
$perm
=
0777
;
}
$perm
=
$perm
&
$mask
;
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
)
=
(
@_
);
if
(
$param
->
{
'type'
}
eq
"s"
)
{
unless
(
lsearch
(
$param
->
{
'choices'
},
$value
)
>=
0
)
{
return
"Invalid choice '$value' for single-select list param '$param'"
;
}
return
""
;
}
elsif
(
$param
->
{
'type'
}
eq
"m"
)
{
foreach
my
$chkParam
(
@$value
)
{
unless
(
lsearch
(
$param
->
{
'choices'
},
$chkParam
)
>=
0
)
{
return
"Invalid choice '$chkParam' for multi-select list param '$param'"
;
}
}
return
""
;
}
else
{
return
"Invalid param type '$param->{'type'}' for check_multi(); "
.
"contact your Bugzilla administrator"
;
}
}
=item C<check_numeric>
Checks that the value is a valid number
=cut
sub
check_numeric
{
my
(
$value
)
=
(
@_
);
if
(
$value
!~
/^[0-9]+$/
)
{
return
"must be a numeric value"
;
}
return
""
;
}
=item C<check_regexp>
Checks that the value is a valid regexp
=cut
sub
check_regexp
{
my
(
$value
)
=
(
@_
);
eval
{
qr/$value/
};
return
$@
;
}
=back
=cut
1
;
Bugzilla/Search.pm
View file @
4c1922a6
...
@@ -34,6 +34,7 @@ use vars qw($userid $usergroupset);
...
@@ -34,6 +34,7 @@ use vars qw($userid $usergroupset);
package
Bugzilla::
Search
;
package
Bugzilla::
Search
;
use
Bugzilla::
Config
;
use
Bugzilla::
Util
;
use
Bugzilla::
Util
;
use
Date::
Format
;
use
Date::
Format
;
...
@@ -314,7 +315,7 @@ sub init {
...
@@ -314,7 +315,7 @@ sub init {
"^long_?desc,"
=>
sub
{
"^long_?desc,"
=>
sub
{
my
$table
=
"longdescs_$chartid"
;
my
$table
=
"longdescs_$chartid"
;
push
(
@supptables
,
"longdescs $table"
);
push
(
@supptables
,
"longdescs $table"
);
if
(
&::
Param
(
"insidergroup"
)
&&
!&::
UserInGroup
(
&::
Param
(
"insidergroup"
)))
{
if
(
Param
(
"insidergroup"
)
&&
!&::
UserInGroup
(
Param
(
"insidergroup"
)))
{
push
(
@wherepart
,
"$table.isprivate < 1"
)
;
push
(
@wherepart
,
"$table.isprivate < 1"
)
;
}
}
push
(
@wherepart
,
"$table.bug_id = bugs.bug_id"
);
push
(
@wherepart
,
"$table.bug_id = bugs.bug_id"
);
...
...
Bugzilla/Token.pm
View file @
4c1922a6
...
@@ -29,6 +29,8 @@ use strict;
...
@@ -29,6 +29,8 @@ use strict;
# Bundle the functions in this file together into the "Token" package.
# Bundle the functions in this file together into the "Token" package.
package
Token
;
package
Token
;
use
Bugzilla::
Config
;
use
Date::
Format
;
use
Date::
Format
;
# This module requires that its caller have said "require CGI.pl" to import
# This module requires that its caller have said "require CGI.pl" to import
...
@@ -75,14 +77,14 @@ sub IssueEmailChangeToken {
...
@@ -75,14 +77,14 @@ sub IssueEmailChangeToken {
my
$template
=
$::template
;
my
$template
=
$::template
;
my
$vars
=
$::vars
;
my
$vars
=
$::vars
;
$vars
->
{
'oldemailaddress'
}
=
$old_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'oldemailaddress'
}
=
$old_email
.
Param
(
'emailsuffix'
);
$vars
->
{
'newemailaddress'
}
=
$new_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'newemailaddress'
}
=
$new_email
.
Param
(
'emailsuffix'
);
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'emailaddress'
}
=
$old_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'emailaddress'
}
=
$old_email
.
Param
(
'emailsuffix'
);
my
$message
;
my
$message
;
$template
->
process
(
"account/email/change-old.txt.tmpl"
,
$vars
,
\
$message
)
$template
->
process
(
"account/email/change-old.txt.tmpl"
,
$vars
,
\
$message
)
...
@@ -93,7 +95,7 @@ sub IssueEmailChangeToken {
...
@@ -93,7 +95,7 @@ sub IssueEmailChangeToken {
close
SENDMAIL
;
close
SENDMAIL
;
$vars
->
{
'token'
}
=
$newtoken
;
$vars
->
{
'token'
}
=
$newtoken
;
$vars
->
{
'emailaddress'
}
=
$new_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'emailaddress'
}
=
$new_email
.
Param
(
'emailsuffix'
);
$message
=
""
;
$message
=
""
;
$template
->
process
(
"account/email/change-new.txt.tmpl"
,
$vars
,
\
$message
)
$template
->
process
(
"account/email/change-new.txt.tmpl"
,
$vars
,
\
$message
)
...
@@ -136,7 +138,7 @@ sub IssuePasswordToken {
...
@@ -136,7 +138,7 @@ sub IssuePasswordToken {
my
$vars
=
$::vars
;
my
$vars
=
$::vars
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'emailaddress'
}
=
$loginname
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'emailaddress'
}
=
$loginname
.
Param
(
'emailsuffix'
);
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
...
@@ -206,7 +208,7 @@ sub Cancel {
...
@@ -206,7 +208,7 @@ sub Cancel {
my
(
$issuedate
,
$tokentype
,
$eventdata
,
$loginname
,
$realname
)
=
&::
FetchSQLData
();
my
(
$issuedate
,
$tokentype
,
$eventdata
,
$loginname
,
$realname
)
=
&::
FetchSQLData
();
# Get the email address of the Bugzilla maintainer.
# Get the email address of the Bugzilla maintainer.
my
$maintainer
=
&::
Param
(
'maintainer'
);
my
$maintainer
=
Param
(
'maintainer'
);
# Format the user's real name and email address into a single string.
# Format the user's real name and email address into a single string.
my
$username
=
$realname
?
$realname
.
" <"
.
$loginname
.
">"
:
$loginname
;
my
$username
=
$realname
?
$realname
.
" <"
.
$loginname
.
">"
:
$loginname
;
...
...
Bugzilla/Util.pm
View file @
4c1922a6
...
@@ -258,3 +258,5 @@ sub trim {
...
@@ -258,3 +258,5 @@ sub trim {
=back
=back
=cut
=cut
1
;
CGI.pl
View file @
4c1922a6
...
@@ -33,6 +33,7 @@ use lib ".";
...
@@ -33,6 +33,7 @@ use lib ".";
# use Carp; # for confess
# use Carp; # for confess
use
Bugzilla::
Util
;
use
Bugzilla::
Util
;
use
Bugzilla::
Config
;
# commented out the following snippet of code. this tosses errors into the
# commented out the following snippet of code. this tosses errors into the
# CGI if you are perl 5.6, and doesn't if you have perl 5.003.
# CGI if you are perl 5.6, and doesn't if you have perl 5.003.
...
...
Token.pm
View file @
4c1922a6
...
@@ -29,6 +29,8 @@ use strict;
...
@@ -29,6 +29,8 @@ use strict;
# Bundle the functions in this file together into the "Token" package.
# Bundle the functions in this file together into the "Token" package.
package
Token
;
package
Token
;
use
Bugzilla::
Config
;
use
Date::
Format
;
use
Date::
Format
;
# This module requires that its caller have said "require CGI.pl" to import
# This module requires that its caller have said "require CGI.pl" to import
...
@@ -75,14 +77,14 @@ sub IssueEmailChangeToken {
...
@@ -75,14 +77,14 @@ sub IssueEmailChangeToken {
my
$template
=
$::template
;
my
$template
=
$::template
;
my
$vars
=
$::vars
;
my
$vars
=
$::vars
;
$vars
->
{
'oldemailaddress'
}
=
$old_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'oldemailaddress'
}
=
$old_email
.
Param
(
'emailsuffix'
);
$vars
->
{
'newemailaddress'
}
=
$new_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'newemailaddress'
}
=
$new_email
.
Param
(
'emailsuffix'
);
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'emailaddress'
}
=
$old_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'emailaddress'
}
=
$old_email
.
Param
(
'emailsuffix'
);
my
$message
;
my
$message
;
$template
->
process
(
"account/email/change-old.txt.tmpl"
,
$vars
,
\
$message
)
$template
->
process
(
"account/email/change-old.txt.tmpl"
,
$vars
,
\
$message
)
...
@@ -93,7 +95,7 @@ sub IssueEmailChangeToken {
...
@@ -93,7 +95,7 @@ sub IssueEmailChangeToken {
close
SENDMAIL
;
close
SENDMAIL
;
$vars
->
{
'token'
}
=
$newtoken
;
$vars
->
{
'token'
}
=
$newtoken
;
$vars
->
{
'emailaddress'
}
=
$new_email
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'emailaddress'
}
=
$new_email
.
Param
(
'emailsuffix'
);
$message
=
""
;
$message
=
""
;
$template
->
process
(
"account/email/change-new.txt.tmpl"
,
$vars
,
\
$message
)
$template
->
process
(
"account/email/change-new.txt.tmpl"
,
$vars
,
\
$message
)
...
@@ -136,7 +138,7 @@ sub IssuePasswordToken {
...
@@ -136,7 +138,7 @@ sub IssuePasswordToken {
my
$vars
=
$::vars
;
my
$vars
=
$::vars
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'token'
}
=
$token
;
$vars
->
{
'emailaddress'
}
=
$loginname
.
&::
Param
(
'emailsuffix'
);
$vars
->
{
'emailaddress'
}
=
$loginname
.
Param
(
'emailsuffix'
);
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'max_token_age'
}
=
$maxtokenage
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
$vars
->
{
'token_ts'
}
=
$token_ts
;
...
@@ -206,7 +208,7 @@ sub Cancel {
...
@@ -206,7 +208,7 @@ sub Cancel {
my
(
$issuedate
,
$tokentype
,
$eventdata
,
$loginname
,
$realname
)
=
&::
FetchSQLData
();
my
(
$issuedate
,
$tokentype
,
$eventdata
,
$loginname
,
$realname
)
=
&::
FetchSQLData
();
# Get the email address of the Bugzilla maintainer.
# Get the email address of the Bugzilla maintainer.
my
$maintainer
=
&::
Param
(
'maintainer'
);
my
$maintainer
=
Param
(
'maintainer'
);
# Format the user's real name and email address into a single string.
# Format the user's real name and email address into a single string.
my
$username
=
$realname
?
$realname
.
" <"
.
$loginname
.
">"
:
$loginname
;
my
$username
=
$realname
?
$realname
.
" <"
.
$loginname
.
">"
:
$loginname
;
...
...
checksetup.pl
View file @
4c1922a6
...
@@ -96,6 +96,8 @@
...
@@ -96,6 +96,8 @@
use
strict
;
use
strict
;
use
Bugzilla::
Config
qw(:DEFAULT :admin)
;
# 12/17/00 justdave@syndicomm.com - removed declarations of the localconfig
# 12/17/00 justdave@syndicomm.com - removed declarations of the localconfig
# variables from this location. We don't want these declared here. They'll
# variables from this location. We don't want these declared here. They'll
# automatically get declared in the process of reading in localconfig, and
# automatically get declared in the process of reading in localconfig, and
...
@@ -970,36 +972,33 @@ END
...
@@ -970,36 +972,33 @@ END
# Just to be sure ...
# Just to be sure ...
unlink
"data/versioncache"
;
unlink
"data/versioncache"
;
# Remove parameters from the data/params file that no longer exist in Bugzilla.
# Remove parameters from the data/params file that no longer exist in Bugzilla,
if
(
-
e
"data/params"
)
{
# and set the defaults for new ones
require
"data/params"
;
require
"defparams.pl"
;
my
@oldparams
=
UpdateParams
();
use
vars
@::param_list
;
my
@oldparams
;
if
(
@oldparams
)
{
open
(
PARAMFILE
,
">>old-params.txt"
)
open
(
PARAMFILE
,
">>old-params.txt"
)
||
die
"$0: Can't open old-params.txt for writing: $!\n"
;
||
die
"$0: Can't open old-params.txt for writing: $!\n"
;
foreach
my
$item
(
keys
%::
param
)
{
if
(
!
grep
(
$_
eq
$item
,
@::param_list
)
&&
$item
ne
"version"
)
{
push
(
@oldparams
,
$item
);
print
PARAMFILE
"\n\n$item:\n$::param{$item}\n"
;
delete
$::param
{
$item
};
}
}
if
(
@oldparams
)
{
print
"The following parameters are no longer used in Bugzilla, "
.
print
"The following parameters are no longer used in Bugzilla, "
.
"and so have been\nremoved from your parameters file and "
.
"and so have been\nremoved from your parameters file and "
.
"appended to old-params.txt:\n"
;
"appended to old-params.txt:\n"
;
print
join
(
", "
,
@oldparams
)
.
"\n\n"
;
}
foreach
my
$p
(
@oldparams
)
{
my
(
$item
,
$value
)
=
@
{
$p
};
print
PARAMFILE
"\n\n$item:\n$value\n"
;
print
$item
;
print
", "
unless
$item
eq
$oldparams
[
$#oldparams
]
->
[
0
];
}
print
"\n"
;
close
PARAMFILE
;
close
PARAMFILE
;
WriteParams
();
}
}
# WriteParams will only write out still-valid entries
WriteParams
();
###########################################################################
###########################################################################
# Set proper rights
# Set proper rights
...
@@ -1239,14 +1238,12 @@ END { $dbh->disconnect if $dbh }
...
@@ -1239,14 +1238,12 @@ END { $dbh->disconnect if $dbh }
# and that the generated images are accessible.
# and that the generated images are accessible.
#
#
if
(
-
e
"data/params"
)
{
if
(
Param
(
'webdotbase'
)
&&
Param
(
'webdotbase'
)
!~
/^https?:/
)
{
require
"data/params"
;
if
(
$::param
{
'webdotbase'
}
&&
$::param
{
'webdotbase'
}
!~
/^https?:/
)
{
printf
(
"Checking for %15s %-9s "
,
"GraphViz"
,
"(any)"
);
printf
(
"Checking for %15s %-9s "
,
"GraphViz"
,
"(any)"
);
if
(
-
x
$::param
{
'webdotbase'
}
)
{
if
(
-
x
Param
(
'webdotbase'
)
)
{
print
"ok: found\n"
;
print
"ok: found\n"
;
}
else
{
}
else
{
print
"not a valid executable: $::param{'webdotbase'}
\n"
;
print
"not a valid executable: "
.
Param
{
'webdotbase'
}
.
"
\n"
;
}
}
# Check .htaccess allows access to generated images
# Check .htaccess allows access to generated images
...
@@ -1258,7 +1255,6 @@ if(-e "data/params") {
...
@@ -1258,7 +1255,6 @@ if(-e "data/params") {
}
}
close
HTACCESS
;
close
HTACCESS
;
}
}
}
}
}
print
"\n"
;
print
"\n"
;
...
@@ -1948,23 +1944,8 @@ if ($sth->rows == 0) {
...
@@ -1948,23 +1944,8 @@ if ($sth->rows == 0) {
my
$pass2
=
"*"
;
my
$pass2
=
"*"
;
my
$admin_ok
=
0
;
my
$admin_ok
=
0
;
my
$admin_create
=
1
;
my
$admin_create
=
1
;
my
$mailcheckexp
=
""
;
my
$mailcheckexp
=
Param
(
'emailregexp'
);
my
$mailcheck
=
""
;
my
$mailcheck
=
Param
(
'emailregexpdesc'
);
# Here we look to see what the emailregexp is set to so we can
# check the email addy they enter. Bug 96675. If they have no
# params (likely but not always the case), we use the default.
if
(
-
e
"data/params"
)
{
require
"data/params"
;
# if they have a params file, use that
}
if
(
$::param
{
emailregexp
})
{
$mailcheckexp
=
$::param
{
emailregexp
};
$mailcheck
=
$::param
{
emailregexpdesc
};
}
else
{
$mailcheckexp
=
'^[^@]+@[^@]+\\.[^@]+$'
;
$mailcheck
=
'A legal address must contain exactly one \'@\',
and at least one \'.\' after the @.'
;
}
print
"\nLooks like we don't have an administrator set up yet. Either this is your\n"
;
print
"\nLooks like we don't have an administrator set up yet. Either this is your\n"
;
print
"first time using Bugzilla, or your administrator's privs might have accidently\n"
;
print
"first time using Bugzilla, or your administrator's privs might have accidently\n"
;
...
...
defparams.pl
View file @
4c1922a6
This diff is collapsed.
Click to expand it.
doeditparams.cgi
View file @
4c1922a6
...
@@ -25,13 +25,11 @@ use strict;
...
@@ -25,13 +25,11 @@ use strict;
use
lib
qw(.)
;
use
lib
qw(.)
;
use
Bugzilla::
Config
qw(:DEFAULT :admin)
;
require
"CGI.pl"
;
require
"CGI.pl"
;
require
"defparams.pl"
;
# Shut up misguided -w warnings about "used only once":
use
vars
%::
MFORM
;
use
vars
%::
param
,
%::
param_default
,
@::param_list
;
ConnectToDatabase
();
ConnectToDatabase
();
confirm_login
();
confirm_login
();
...
@@ -45,62 +43,57 @@ if (!UserInGroup("tweakparams")) {
...
@@ -45,62 +43,57 @@ if (!UserInGroup("tweakparams")) {
exit
;
exit
;
}
}
PutHeader
(
"Saving new parameters"
);
PutHeader
(
"Saving new parameters"
);
foreach
my
$i
(
@::param_list
)
{
foreach
my
$i
(
GetParamList
())
{
# print "Processing $i...<BR>\n";
my
$name
=
$i
->
{
'name'
};
if
(
exists
$::FORM
{
"reset-$i"
})
{
my
$value
=
$::FORM
{
$name
};
if
(
$::param_type
{
$i
}
eq
"s"
)
{
if
(
exists
$::FORM
{
"reset-$name"
})
{
my
$index
=
get_select_param_index
(
$i
,
$::param_default
{
$i
}
->
[
1
]);
$value
=
$i
->
{
'default'
};
die
"Param not found for '$i'"
if
(
$index
eq
undef
);
}
else
{
$::FORM
{
$i
}
=
$index
;
if
(
$i
->
{
'type'
}
eq
'm'
)
{
# This simplifies the code below
$value
=
\
@
{
$::MFORM
{
$name
}};
}
else
{
# Get rid of windows/mac-style line endings.
$value
=~
s/\r\n?/\n/g
;
# assume single linefeed is an empty string
$value
=~
s/^\n$//
;
}
}
elsif
(
$::param_type
{
$i
}
eq
"m"
)
{
# For 'multi' selects, default is the 2nd anon array of the default
@
{
$::MFORM
{
$i
}}
=
();
foreach
my
$defaultPrm
(
@
{
$::param_default
{
$i
}
->
[
1
]})
{
my
$index
=
get_select_param_index
(
$i
,
$defaultPrm
);
die
"Param not found for '$i'"
if
(
$index
eq
undef
);
push
(
@
{
$::MFORM
{
$i
}},
$index
);
}
}
my
$changed
;
if
(
$i
->
{
'type'
}
eq
'm'
)
{
my
@old
=
sort
@
{
Param
(
$name
)};
my
@new
=
sort
@$value
;
if
(
scalar
(
@old
)
!=
scalar
(
@new
))
{
$changed
=
1
;
}
else
{
$changed
=
0
;
# Assume not changed...
for
(
my
$cnt
=
0
;
$cnt
<
scalar
(
@old
);
++
$cnt
)
{
if
(
$old
[
$cnt
]
ne
$new
[
$cnt
])
{
# entry is different, therefore changed
$changed
=
1
;
last
;
}
}
else
{
$::FORM
{
$i
}
=
$::param_default
{
$i
};
}
}
}
}
$::FORM
{
$i
}
=~
s/\r\n?/\n/g
;
# Get rid of windows/mac-style line endings.
}
else
{
$::FORM
{
$i
}
=~
s/^\n$//
;
# assume single linefeed is an empty string
$changed
=
(
$value
eq
Param
(
$name
)
?
0
:
1
);
if
(
$::FORM
{
$i
}
ne
Param
(
$i
))
{
}
if
(
defined
$::param_checker
{
$i
}
)
{
if
(
$changed
)
{
my
$ref
=
$::param_checker
{
$i
};
if
(
exists
$i
->
{
'checker'
})
{
my
$ok
=
&
$ref
(
$::FORM
{
$i
}
,
$i
);
my
$ok
=
$i
->
{
'checker'
}
->
(
$value
,
$i
);
if
(
$ok
ne
""
)
{
if
(
$ok
ne
""
)
{
print
"New value for $i is invalid: $ok<p>\n"
;
print
"New value for "
.
html_quote
(
$name
)
.
" is invalid: $ok<p>\n"
;
print
"Please hit <b>Back</b> and try again.\n"
;
print
"Please hit <b>Back</b> and try again.\n"
;
PutFooter
();
PutFooter
();
exit
;
exit
;
}
}
}
}
print
"Changed $i.<br>\n"
;
print
"Changed "
.
html_quote
(
$name
)
.
"<br>\n"
;
# print "Old: '" . url_quote(Param($i)) . "'<BR>\n";
SetParam
(
$name
,
$value
);
# print "New: '" . url_quote($::FORM{$i}) . "'<BR>\n";
if
(
$::param_type
{
$i
}
eq
"s"
)
{
$::param
{
$i
}
=
$::param_default
{
$i
}
->
[
0
]
->
[
$::FORM
{
$i
}];
}
elsif
(
$::param_type
{
$i
}
eq
"m"
)
{
my
$multiParamStr
=
"[ "
;
foreach
my
$chosenParam
(
@
{
$::MFORM
{
$i
}})
{
$multiParamStr
.=
"'$::param_default{$i}->[0]->[$chosenParam]', "
;
}
$multiParamStr
.=
" ]"
;
$::param
{
$i
}
=
$multiParamStr
;
}
else
{
$::param
{
$i
}
=
$::FORM
{
$i
};
}
}
}
}
}
...
...
editparams.cgi
View file @
4c1922a6
...
@@ -25,13 +25,9 @@
...
@@ -25,13 +25,9 @@
use
strict
;
use
strict
;
use
lib
"."
;
use
lib
"."
;
require
"CGI.pl"
;
use
Bugzilla::
Config
qw(:DEFAULT :admin)
;
require
"defparams.pl"
;
# Shut up misguided -w warnings about "used only once":
require
"CGI.pl"
;
use
vars
@::param_desc
,
@::param_list
,
@::param_default
;
ConnectToDatabase
();
ConnectToDatabase
();
confirm_login
();
confirm_login
();
...
@@ -59,18 +55,19 @@ print "<form method=post action=doeditparams.cgi><table>\n";
...
@@ -59,18 +55,19 @@ print "<form method=post action=doeditparams.cgi><table>\n";
my
$rowbreak
=
"<tr><td colspan=2><hr></td></tr>"
;
my
$rowbreak
=
"<tr><td colspan=2><hr></td></tr>"
;
print
$rowbreak
;
print
$rowbreak
;
foreach
my
$i
(
@::param_list
)
{
foreach
my
$i
(
GetParamList
())
{
print
"<tr><th align=right valign=top>$i:</th><td>$::param_desc{$i}</td></tr>\n"
;
my
$name
=
$i
->
{
'name'
};
print
"<tr><td valign=top><input type=checkbox name=reset-$i>Reset</td><td>\n"
;
my
$value
=
Param
(
$name
);
my
$value
=
Param
(
$i
);
print
"<tr><th align=right valign=top>$name:</th><td>$i->{'desc'}</td></tr>\n"
;
SWITCH:
for
(
$::param_type
{
$i
})
{
print
"<tr><td valign=top><input type=checkbox name=reset-$name>Reset</td><td>\n"
;
SWITCH:
for
(
$i
->
{
'type'
})
{
/^t$/
&&
do
{
/^t$/
&&
do
{
print
"<input size=80 name=$
i
value=\""
.
print
"<input size=80 name=$
name
value=\""
.
value_quote
(
$value
)
.
"\">\n"
;
value_quote
(
$value
)
.
"\">\n"
;
last
SWITCH
;
last
SWITCH
;
};
};
/^l$/
&&
do
{
/^l$/
&&
do
{
print
"<textarea wrap=hard name=$
i
rows=10 cols=80>"
.
print
"<textarea wrap=hard name=$
name
rows=10 cols=80>"
.
value_quote
(
$value
)
.
"</textarea>\n"
;
value_quote
(
$value
)
.
"</textarea>\n"
;
last
SWITCH
;
last
SWITCH
;
};
};
...
@@ -84,64 +81,60 @@ foreach my $i (@::param_list) {
...
@@ -84,64 +81,60 @@ foreach my $i (@::param_list) {
$on
=
""
;
$on
=
""
;
$off
=
"checked"
;
$off
=
"checked"
;
}
}
print
"<input type=radio name=$
i
value=1 $on>On\n"
;
print
"<input type=radio name=$
name
value=1 $on>On\n"
;
print
"<input type=radio name=$
i
value=0 $off>Off\n"
;
print
"<input type=radio name=$
name
value=0 $off>Off\n"
;
last
SWITCH
;
last
SWITCH
;
};
};
/^m$/
&&
do
{
/^m$/
&&
do
{
my
$optList
=
$::param_default
{
$i
}
->
[
0
];
#'cause we use it so much
my
@choices
=
@
{
$i
->
{
'choices'
}};
## showing 5 options seems like a nice round number; this should
## showing 5 options seems like a nice round number; this should
## probably be configurable; if you care, file a bug ;-)
## probably be configurable; if you care, file a bug ;-)
my
$boxSize
=
scalar
(
@
{
$optList
})
<
5
?
scalar
(
@
{
$optList
}
)
:
5
;
my
$boxSize
=
scalar
(
@
choices
)
<
5
?
scalar
(
@choices
)
:
5
;
print
"<select multiple size=\"$boxSize\" name=\"$
i
\">\n"
;
print
"<select multiple size=\"$boxSize\" name=\"$
name
\">\n"
;
for
(
my
$optNum
=
0
;
$optNum
<
scalar
(
@
{
$optList
});
$optNum
++
)
{
for
each
my
$item
(
@choices
)
{
my
$selected
=
""
;
my
$selected
=
""
;
foreach
my
$selectedVal
(
@
{
$value
})
{
if
(
lsearch
(
$value
,
$item
)
>=
0
)
{
if
(
$selectedVal
eq
$optList
->
[
$optNum
])
{
$selected
=
"selected"
;
$selected
=
"selected"
;
last
;
}
}
}
print
"<option $selected value=\"
$optNum
\">"
.
print
"<option $selected value=\"
"
.
html_quote
(
$item
)
.
"
\">"
.
"$optList->[$optNum]
</option>\n"
;
html_quote
(
$item
)
.
"
</option>\n"
;
}
}
print
"</select>\n"
;
print
"</select>\n"
;
last
SWITCH
;
last
SWITCH
;
};
};
/^s$/
&&
do
{
/^s$/
&&
do
{
print
"<select name=\"$i\">\n"
;
print
"<select name=\"$name\">\n"
;
#'cause we use it so much below
my
@choices
=
@
{
$i
->
{
'choices'
}};
my
$optList
=
$::param_default
{
$i
}
->
[
0
];
for
(
my
$optNum
=
0
;
$optNum
<
scalar
(
@
{
$optList
});
$optNum
++
)
{
for
each
my
$item
(
@choices
)
{
my
$selected
=
""
;
my
$selected
=
""
;
if
(
$value
eq
$optList
->
[
$optNum
])
{
if
(
$value
eq
$item
)
{
$selected
=
"selected"
;
$selected
=
"selected"
;
}
}
print
"<option $selected value=\"$optNum\">"
.
print
"<option $selected value=\""
.
html_quote
(
$item
)
.
"\">"
.
"$optList->[$optNum]</option>\n"
;
html_quote
(
$item
)
.
"</option>\n"
;
}
}
print
"</select>\n"
;
print
"</select>\n"
;
last
SWITCH
;
last
SWITCH
;
};
};
# DEFAULT
# DEFAULT
print
"<font color=red><blink>Unknown param type $
::param_type{$i
}!!!</blink></font>\n"
;
print
"<font color=red><blink>Unknown param type $
i->{'type'
}!!!</blink></font>\n"
;
}
}
print
"</td></tr>\n"
;
print
"</td></tr>\n"
;
print
$rowbreak
;
print
$rowbreak
;
}
}
print
"<tr><th align=right valign=top>version:</th><td>
print
"<tr><th align=right valign=top>version:</th><td>
What version of Bugzilla this is. This can't be modified here, but
What version of Bugzilla this is. This can't be modified.
<tt>%version%</tt> can be used as a parameter in places that understand
<tr><td></td><td>"
.
$
Bugzilla::Config::
VERSION
.
"</td></tr>"
;
such parameters</td></tr>
<tr><td></td><td>"
.
Param
(
'version'
)
.
"</td></tr>"
;
print
"</table>\n"
;
print
"</table>\n"
;
...
...
globals.pl
View file @
4c1922a6
...
@@ -28,6 +28,8 @@
...
@@ -28,6 +28,8 @@
use
strict
;
use
strict
;
use
Bugzilla::
Util
;
use
Bugzilla::
Util
;
# Bring ChmodDataFile in until this is all moved to the module
use
Bugzilla::
Config
qw(:DEFAULT ChmodDataFile)
;
# Shut up misguided -w warnings about "used only once". For some reason,
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
# "use vars" chokes on me when I try it here.
...
@@ -53,7 +55,6 @@ sub globals_pl_sillyness {
...
@@ -53,7 +55,6 @@ sub globals_pl_sillyness {
$zz
=
@
main::
legal_target_milestone
;
$zz
=
@
main::
legal_target_milestone
;
$zz
=
@
main::
legal_versions
;
$zz
=
@
main::
legal_versions
;
$zz
=
@
main::
milestoneurl
;
$zz
=
@
main::
milestoneurl
;
$zz
=
%
main::
param_type
;
$zz
=
%
main::
proddesc
;
$zz
=
%
main::
proddesc
;
$zz
=
@
main::
prodmaxvotes
;
$zz
=
@
main::
prodmaxvotes
;
$zz
=
$
main::
superusergroupset
;
$zz
=
$
main::
superusergroupset
;
...
@@ -67,12 +68,8 @@ sub globals_pl_sillyness {
...
@@ -67,12 +68,8 @@ sub globals_pl_sillyness {
# here
# here
#
#
$::db_host
=
"localhost"
;
# XXX - Move this to Bugzilla::Config once code which uses these has moved out
$::db_port
=
3306
;
# of globals.pl
$::db_name
=
"bugs"
;
$::db_user
=
"bugs"
;
$::db_pass
=
""
;
do
'localconfig'
;
do
'localconfig'
;
use
DBI
;
use
DBI
;
...
@@ -99,9 +96,6 @@ $::ENV{'PATH'} = '';
...
@@ -99,9 +96,6 @@ $::ENV{'PATH'} = '';
$::SIG
{
TERM
}
=
'IGNORE'
;
$::SIG
{
TERM
}
=
'IGNORE'
;
$::SIG
{
PIPE
}
=
'IGNORE'
;
$::SIG
{
PIPE
}
=
'IGNORE'
;
# Contains the version string for the current running Bugzilla.
$::param
{
'version'
}
=
'2.17'
;
$::dontchange
=
"--do_not_change--"
;
$::dontchange
=
"--do_not_change--"
;
$::chooseone
=
"--Choose_one:--"
;
$::chooseone
=
"--Choose_one:--"
;
$::defaultqueryname
=
"(Default query)"
;
$::defaultqueryname
=
"(Default query)"
;
...
@@ -119,18 +113,6 @@ $::superusergroupset = "9223372036854775807";
...
@@ -119,18 +113,6 @@ $::superusergroupset = "9223372036854775807";
#}
#}
#$::SIG{__DIE__} = \&die_with_dignity;
#$::SIG{__DIE__} = \&die_with_dignity;
# Some files in the data directory must be world readable iff we don't have
# a webserver group. Call this function to do this.
sub
ChmodDataFile
($$)
{
my
(
$file
,
$mask
)
=
@_
;
my
$perm
=
0770
;
if
((
stat
(
'data'
))[
2
]
&
0002
)
{
$perm
=
0777
;
}
$perm
=
$perm
&
$mask
;
chmod
$perm
,
$file
;
}
sub
ConnectToDatabase
{
sub
ConnectToDatabase
{
my
(
$useshadow
)
=
(
@_
);
my
(
$useshadow
)
=
(
@_
);
if
(
!
defined
$::db
)
{
if
(
!
defined
$::db
)
{
...
@@ -346,70 +328,7 @@ sub GetFieldID {
...
@@ -346,70 +328,7 @@ sub GetFieldID {
return
$fieldid
;
return
$fieldid
;
}
}
# Generate a string which, when later interpreted by the Perl compiler, will
# XXXX - this needs to go away
# be the same as the given string.
sub
PerlQuote
{
my
(
$str
)
=
(
@_
);
return
SqlQuote
(
$str
);
# The below was my first attempt, but I think just using SqlQuote makes more
# sense...
# $result = "'";
# $length = length($str);
# for (my $i=0 ; $i<$length ; $i++) {
# my $c = substr($str, $i, 1);
# if ($c eq "'" || $c eq '\\') {
# $result .= '\\';
# }
# $result .= $c;
# }
# $result .= "'";
# return $result;
}
# Given the name of a global variable, generate Perl code that, if later
# executed, would restore the variable to its current value.
sub
GenerateCode
{
my
(
$name
)
=
(
@_
);
my
$result
=
$name
.
" = "
;
if
(
$name
=~
/^\$/
)
{
my
$value
=
eval
(
$name
);
if
(
ref
(
$value
)
eq
"ARRAY"
)
{
$result
.=
"["
.
GenerateArrayCode
(
$value
)
.
"]"
;
}
else
{
$result
.=
PerlQuote
(
eval
(
$name
));
}
}
elsif
(
$name
=~
/^@/
)
{
my
@value
=
eval
(
$name
);
$result
.=
"("
.
GenerateArrayCode
(
\
@value
)
.
")"
;
}
elsif
(
$name
=~
'%'
)
{
$result
=
""
;
foreach
my
$k
(
sort
{
uc
(
$a
)
cmp
uc
(
$b
)}
eval
(
"keys $name"
))
{
$result
.=
GenerateCode
(
"\$"
.
substr
(
$name
,
1
)
.
"{"
.
PerlQuote
(
$k
)
.
"}"
);
}
return
$result
;
}
else
{
die
"Can't do $name -- unacceptable variable type."
;
}
$result
.=
";\n"
;
return
$result
;
}
sub
GenerateArrayCode
{
my
(
$ref
)
=
(
@_
);
my
@list
;
foreach
my
$i
(
@$ref
)
{
push
@list
,
PerlQuote
(
$i
);
}
return
join
(
','
,
@list
);
}
sub
GenerateVersionTable
{
sub
GenerateVersionTable
{
SendSQL
(
"SELECT versions.value, products.name "
.
SendSQL
(
"SELECT versions.value, products.name "
.
"FROM versions, products "
.
"FROM versions, products "
.
...
@@ -505,8 +424,9 @@ sub GenerateVersionTable {
...
@@ -505,8 +424,9 @@ sub GenerateVersionTable {
print
FID
"# Any changes you make will be overwritten.\n"
;
print
FID
"# Any changes you make will be overwritten.\n"
;
print
FID
"#\n"
;
print
FID
"#\n"
;
print
FID
GenerateCode
(
'@::log_columns'
);
use
Data::
Dumper
;
print
FID
GenerateCode
(
'%::versions'
);
print
FID
Data::
Dumper
->
Dump
([
\
@::log_columns
,
\%::
versions
],
[
'*::log_columns'
,
'*::versions'
]);
foreach
my
$i
(
@list
)
{
foreach
my
$i
(
@list
)
{
if
(
!
defined
$::components
{
$i
})
{
if
(
!
defined
$::components
{
$i
})
{
...
@@ -514,18 +434,23 @@ sub GenerateVersionTable {
...
@@ -514,18 +434,23 @@ sub GenerateVersionTable {
}
}
}
}
@::legal_versions
=
sort
{
uc
(
$a
)
cmp
uc
(
$b
)}
keys
(
%
varray
);
@::legal_versions
=
sort
{
uc
(
$a
)
cmp
uc
(
$b
)}
keys
(
%
varray
);
print
FID
GenerateCode
(
'@::legal_versions'
);
print
FID
Data::
Dumper
->
Dump
([
\
@::legal_versions
,
\%::
components
],
print
FID
GenerateCode
(
'%::components'
);
[
'*::legal_versions'
,
'*::components'
]
);
@::legal_components
=
sort
{
uc
(
$a
)
cmp
uc
(
$b
)}
keys
(
%
carray
);
@::legal_components
=
sort
{
uc
(
$a
)
cmp
uc
(
$b
)}
keys
(
%
carray
);
print
FID
GenerateCode
(
'@::legal_components'
);
foreach
my
$i
(
'product'
,
'priority'
,
'severity'
,
'platform'
,
'opsys'
,
print
FID
Data::
Dumper
->
Dump
([
\
@::legal_components
,
\
@::legal_product
,
'bug_status'
,
'resolution'
)
{
\
@::legal_priority
,
\
@::legal_severity
,
print
FID
GenerateCode
(
'@::legal_'
.
$i
);
\
@::legal_platform
,
\
@::legal_opsys
,
}
\
@::legal_bug_status
,
\
@::legal_resolution
],
print
FID
GenerateCode
(
'@::settable_resolution'
);
[
'*::legal_components'
,
'*::legal_product'
,
print
FID
GenerateCode
(
'%::proddesc'
);
'*::legal_priority'
,
'*::legal_severity'
,
print
FID
GenerateCode
(
'@::enterable_products'
);
'*::legal_platform'
,
'*::legal_opsys'
,
print
FID
GenerateCode
(
'%::prodmaxvotes'
);
'*::legal_bug_status'
,
'*::legal_resolution'
]);
print
FID
Data::
Dumper
->
Dump
([
\
@::settable_resolution
,
\%::
proddesc
,
\
@::enterable_products
,
\%::
prodmaxvotes
],
[
'*::settable_resolution'
,
'*::proddesc'
,
'*::enterable_products'
,
'*::prodmaxvotes'
]);
if
(
$dotargetmilestone
)
{
if
(
$dotargetmilestone
)
{
# reading target milestones in from the database - matthew@zeroknowledge.com
# reading target milestones in from the database - matthew@zeroknowledge.com
...
@@ -548,9 +473,12 @@ sub GenerateVersionTable {
...
@@ -548,9 +473,12 @@ sub GenerateVersionTable {
}
}
}
}
print
FID
GenerateCode
(
'%::target_milestone'
);
print
FID
Data::
Dumper
->
Dump
([
\%::
target_milestone
,
print
FID
GenerateCode
(
'@::legal_target_milestone'
);
\
@::legal_target_milestone
,
print
FID
GenerateCode
(
'%::milestoneurl'
);
\%::
milestoneurl
],
[
'*::target_milestone'
,
'*::legal_target_milestone'
,
'*::milestoneurl'
]);
}
}
SendSQL
(
"SELECT id, name FROM keyworddefs ORDER BY name"
);
SendSQL
(
"SELECT id, name FROM keyworddefs ORDER BY name"
);
...
@@ -560,11 +488,13 @@ sub GenerateVersionTable {
...
@@ -560,11 +488,13 @@ sub GenerateVersionTable {
$name
=
lc
(
$name
);
$name
=
lc
(
$name
);
$::keywordsbyname
{
$name
}
=
$id
;
$::keywordsbyname
{
$name
}
=
$id
;
}
}
print
FID
GenerateCode
(
'@::legal_keywords'
);
print
FID
GenerateCode
(
'%::keywordsbyname'
);
print
FID
Data::
Dumper
->
Dump
([
\
@::legal_keywords
,
\%::
keywordsbyname
],
[
'*::legal_keywords'
,
'*::keywordsbyname'
]);
print
FID
"1;\n"
;
print
FID
"1;\n"
;
close
FID
;
close
FID
;
rename
$tmpname
,
"data/versioncache"
||
die
"Can't rename $tmpname to versioncache"
;
rename
$tmpname
,
"data/versioncache"
||
die
"Can't rename $tmpname to versioncache"
;
ChmodDataFile
(
'data/versioncache'
,
0666
);
ChmodDataFile
(
'data/versioncache'
,
0666
);
}
}
...
@@ -589,10 +519,6 @@ sub ModTime {
...
@@ -589,10 +519,6 @@ sub ModTime {
return
$mtime
;
return
$mtime
;
}
}
# This proc must be called before using legal_product or the versions array.
$::VersionTableLoaded
=
0
;
$::VersionTableLoaded
=
0
;
sub
GetVersionTable
{
sub
GetVersionTable
{
return
if
$::VersionTableLoaded
;
return
if
$::VersionTableLoaded
;
...
@@ -617,7 +543,6 @@ sub GetVersionTable {
...
@@ -617,7 +543,6 @@ sub GetVersionTable {
$::VersionTableLoaded
=
1
;
$::VersionTableLoaded
=
1
;
}
}
# Validates a given username as a new username
# Validates a given username as a new username
# returns 1 if valid, 0 if invalid
# returns 1 if valid, 0 if invalid
sub
ValidateNewUser
{
sub
ValidateNewUser
{
...
@@ -1429,48 +1354,6 @@ sub RemoveVotes {
...
@@ -1429,48 +1354,6 @@ sub RemoveVotes {
}
}
}
}
sub
Param
($)
{
my
(
$value
)
=
(
@_
);
if
(
!
defined
$::param
{
$value
})
{
# Um, maybe we haven't sourced in the params at all yet.
if
(
stat
(
"data/params"
))
{
# Write down and restore the version # here. That way, we get
# around anyone who maliciously tries to tweak the version number
# by editing the params file. Not to mention that in 2.0, there
# was a bug that wrote the version number out to the params file...
my
$v
=
$::param
{
'version'
};
require
"data/params"
;
$::param
{
'version'
}
=
$v
;
}
}
if
(
!
defined
$::param
{
$value
})
{
# Well, that didn't help. Maybe it's a new param, and the user
# hasn't defined anything for it. Try and load a default value
# for it.
require
"defparams.pl"
;
WriteParams
();
}
# If it's still not defined, we're pimped.
die
"Can't find param named $value"
if
(
!
defined
$::param
{
$value
});
## Check to make sure the entry in $::param_type is there; if we don't, we
## get 'use of uninitialized constant' errors (see bug 162217).
## Interestingly enough, placing this check in the die above causes
## deaths on some params (the "languages" param?) because they don't have
## a type? Odd... seems like a bug to me... but what do I know? -jpr
if
(
defined
$::param_type
{
$value
}
&&
$::param_type
{
$value
}
eq
"m"
)
{
my
$valueList
=
eval
(
$::param
{
$value
});
return
$valueList
if
(
!
(
$@
)
&&
ref
(
$valueList
)
eq
"ARRAY"
);
die
"Multi-list param '$value' eval() failure ('$@'); data/params is horked"
;
}
else
{
return
$::param
{
$value
};
}
}
# Take two comma or space separated strings and return what
# Take two comma or space separated strings and return what
# values were removed from or added to the new one.
# values were removed from or added to the new one.
sub
DiffStrings
{
sub
DiffStrings
{
...
@@ -1768,6 +1651,9 @@ $::vars =
...
@@ -1768,6 +1651,9 @@ $::vars =
# User Agent - useful for detecting in templates
# User Agent - useful for detecting in templates
'user_agent'
=>
$ENV
{
'HTTP_USER_AGENT'
}
,
'user_agent'
=>
$ENV
{
'HTTP_USER_AGENT'
}
,
# Bugzilla version
'VERSION'
=>
$
Bugzilla::Config::
VERSION
,
};
};
1
;
1
;
move.pl
View file @
4c1922a6
...
@@ -93,7 +93,7 @@ unless ($exporter =~ /($movers)/) {
...
@@ -93,7 +93,7 @@ unless ($exporter =~ /($movers)/) {
}
}
my
$xml
=
""
;
my
$xml
=
""
;
$xml
.=
Bug::
XML_Header
(
Param
(
"urlbase"
),
$
::param
{
'version'
}
,
$xml
.=
Bug::
XML_Header
(
Param
(
"urlbase"
),
$
Bugzilla::Config::
VERSION
,
Param
(
"maintainer"
),
$exporter
);
Param
(
"maintainer"
),
$exporter
);
print
"<P>\n"
;
print
"<P>\n"
;
foreach
my
$id
(
split
(
/:/
,
$::FORM
{
'buglist'
}))
{
foreach
my
$id
(
split
(
/:/
,
$::FORM
{
'buglist'
}))
{
...
...
syncshadowdb
View file @
4c1922a6
...
@@ -23,6 +23,10 @@
...
@@ -23,6 +23,10 @@
use
strict
;
use
strict
;
use
lib
qw(.)
;
use
Bugzilla::
Config
qw(:DEFAULT :admin)
;
require
"globals.pl"
;
require
"globals.pl"
;
require
"defparams.pl"
;
require
"defparams.pl"
;
...
@@ -106,7 +110,7 @@ if ($shutdown) {
...
@@ -106,7 +110,7 @@ if ($shutdown) {
# Record the old shutdownhtml so it can be restored at the end (this will
# Record the old shutdownhtml so it can be restored at the end (this will
# only be an issue if we are called using the -force command line param)
# only be an issue if we are called using the -force command line param)
$wasshutdown
=
Param
(
"shutdownhtml"
);
$wasshutdown
=
Param
(
"shutdownhtml"
);
$::param
{
'shutdownhtml'
}
=
$shutdown_msg
;
SetParam
(
'shutdownhtml'
,
$shutdown_msg
)
;
WriteParams
();
WriteParams
();
# Now we need to wait for existing connections to this database to clear. We
# Now we need to wait for existing connections to this database to clear. We
# do this by looking for connections to the main or shadow database using
# do this by looking for connections to the main or shadow database using
...
@@ -143,7 +147,7 @@ if ($shutdown) {
...
@@ -143,7 +147,7 @@ if ($shutdown) {
# this happening.
# this happening.
Verbose
(
"*** Waited for 10 minutes and there were still active \n"
.
Verbose
(
"*** Waited for 10 minutes and there were still active \n"
.
" connections to the bugzilla database. Giving up."
);
" connections to the bugzilla database. Giving up."
);
$::param
{
'shutdownhtml'
}
=
$wasshutdown
;
SetParam
(
'shutdownhtml'
,
$wasshutdown
)
;
WriteParams
();
WriteParams
();
exit
;
exit
;
}
}
...
@@ -153,7 +157,7 @@ if ($shutdown) {
...
@@ -153,7 +157,7 @@ if ($shutdown) {
my
$wasusing
=
Param
(
"queryagainstshadowdb"
);
my
$wasusing
=
Param
(
"queryagainstshadowdb"
);
$::param
{
'queryagainstshadowdb'
}
=
1
;
# Force us to be able to use the
SetParam
(
'queryagainstshadowdb'
,
1
);
# Force us to be able to use the
# shadowdb, even if other processes
# shadowdb, even if other processes
# are not supposed to.
# are not supposed to.
...
@@ -185,13 +189,13 @@ if (!$syncall) {
...
@@ -185,13 +189,13 @@ if (!$syncall) {
if
(
$syncall
)
{
if
(
$syncall
)
{
Verbose
(
"Syncing up the shadow database by copying entire database in."
);
Verbose
(
"Syncing up the shadow database by copying entire database in."
);
if
(
$wasusing
)
{
if
(
$wasusing
)
{
$::param
{
'queryagainstshadowdb'
}
=
0
;
SetParam
(
'queryagainstshadowdb'
,
0
)
;
WriteParams
();
WriteParams
();
if
(
!
$shutdown
)
{
if
(
!
$shutdown
)
{
Verbose
(
"Disabled reading from the shadowdb. Sleeping 10 seconds to let other procs catch up."
);
Verbose
(
"Disabled reading from the shadowdb. Sleeping 10 seconds to let other procs catch up."
);
sleep
(
10
);
sleep
(
10
);
}
}
$::param
{
'queryagainstshadowdb'
}
=
1
;
SetParam
(
'queryagainstshadowdb'
,
1
)
;
}
}
my
@tables
;
my
@tables
;
SendSQL
(
"SHOW TABLES"
);
SendSQL
(
"SHOW TABLES"
);
...
@@ -271,12 +275,12 @@ if ($syncall) {
...
@@ -271,12 +275,12 @@ if ($syncall) {
SendSQL
(
"UNLOCK TABLES"
);
SendSQL
(
"UNLOCK TABLES"
);
if
(
$wasusing
)
{
if
(
$wasusing
)
{
Verbose
(
"Reenabling other processes to read from the shadow db"
);
Verbose
(
"Reenabling other processes to read from the shadow db"
);
$::param
{
'queryagainstshadowdb'
}
=
1
;
SetParam
(
'queryagainstshadowdb'
,
1
)
;
WriteParams
();
WriteParams
();
}
}
if
(
$shutdown
)
{
if
(
$shutdown
)
{
Verbose
(
"Restoring the original shutdown message (if any)"
);
Verbose
(
"Restoring the original shutdown message (if any)"
);
$::param
{
'shutdownhtml'
}
=
$wasshutdown
;
SetParam
(
'shutdownhtml'
,
$wasshutdown
)
;
WriteParams
();
WriteParams
();
}
}
Verbose
(
"OK, done."
);
Verbose
(
"OK, done."
);
...
...
template/en/default/global/banner.html.tmpl
View file @
4c1922a6
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
<tr>
<tr>
<td>
<td>
<font color="#FFFFFF" size="8"><center>
<font color="#FFFFFF" size="8"><center>
Bugzilla Version [%
Param("version")
%]
Bugzilla Version [%
VERSION
%]
</center></font>
</center></font>
</td>
</td>
</tr>
</tr>
...
...
xml.cgi
View file @
4c1922a6
...
@@ -46,7 +46,7 @@ my $exporter = $::COOKIE{"Bugzilla_login"} || undef;
...
@@ -46,7 +46,7 @@ my $exporter = $::COOKIE{"Bugzilla_login"} || undef;
my
@ids
=
split
(
/[, ]+/
,
$::FORM
{
'id'
});
my
@ids
=
split
(
/[, ]+/
,
$::FORM
{
'id'
});
print
"Content-type: text/xml\n\n"
;
print
"Content-type: text/xml\n\n"
;
print
Bug::
XML_Header
(
Param
(
"urlbase"
),
$
::param
{
'version'
}
,
print
Bug::
XML_Header
(
Param
(
"urlbase"
),
$
Bugzilla::Config::
VERSION
,
Param
(
"maintainer"
),
$exporter
);
Param
(
"maintainer"
),
$exporter
);
foreach
my
$id
(
@ids
)
{
foreach
my
$id
(
@ids
)
{
my
$bug
=
new
Bug
(
trim
(
$id
),
$::userid
);
my
$bug
=
new
Bug
(
trim
(
$id
),
$::userid
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment