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
85bb266e
Commit
85bb266e
authored
Feb 07, 2003
by
bbaetz%acm.org
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 191863 - Clean up Bugzilla.pm
r=gerv, justdave a=justdave
parent
7407cb30
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
67 additions
and
106 deletions
+67
-106
Bugzilla.pm
Bugzilla.pm
+44
-92
DB.pm
Bugzilla/DB.pm
+2
-2
Bugzilla.pm
Bugzilla/Template/Plugin/Bugzilla.pm
+12
-1
CGI.pl
CGI.pl
+1
-1
buglist.cgi
buglist.cgi
+1
-1
collectstats.pl
collectstats.pl
+1
-1
duplicates.cgi
duplicates.cgi
+1
-1
globals.pl
globals.pl
+1
-3
report.cgi
report.cgi
+1
-1
reports.cgi
reports.cgi
+1
-1
showdependencygraph.cgi
showdependencygraph.cgi
+1
-1
showdependencytree.cgi
showdependencytree.cgi
+1
-1
No files found.
Bugzilla.pm
View file @
85bb266e
...
...
@@ -29,103 +29,71 @@ use Bugzilla::Config;
use
Bugzilla::
DB
;
use
Bugzilla::
Template
;
sub
create
{
my
$_template
;
sub
template
{
my
$class
=
shift
;
my
$B
=
$class
->
instance
;
# And set up the vars for this request
$B
->
_init_transient
;
$_template
||=
Bugzilla::
Template
->
create
();
return
$_template
;
}
return
$B
;
my
$_cgi
;
sub
cgi
{
my
$class
=
shift
;
$_cgi
||=
new
Bugzilla::
CGI
();
return
$_cgi
;
}
# We don't use Class::Singleton, because theres no need. However, I'm keeping
# the same interface in case we do change in the future
my
$_dbh
;
my
$_dbh_main
;
my
$_dbh_shadow
;
my
$_instance
;
sub
instance
{
sub
dbh
{
my
$class
=
shift
;
$_instance
=
$class
->
_new_instance
unless
(
$_instance
);
# If we're not connected, then we must want the main db
if
(
!
$_dbh
)
{
$_dbh
=
$_dbh_main
=
Bugzilla::DB::
connect_main
();
}
return
$_
instance
;
return
$_
dbh
;
}
sub
template
{
return
$_
[
0
]
->
{
_template
};
}
sub
cgi
{
return
$_
[
0
]
->
{
_cgi
};
}
sub
dbh
{
return
$_
[
0
]
->
{
_dbh
};
}
sub
switch_to_shadow_db
{
my
$
self
=
shift
;
my
$
class
=
shift
;
if
(
!
$
self
->
{
_dbh_shadow
}
)
{
if
(
!
$
_dbh_shadow
)
{
if
(
Param
(
'shadowdb'
))
{
$
self
->
{
_dbh_shadow
}
=
Bugzilla::DB::
connect_shadow
();
$
_dbh_shadow
=
Bugzilla::DB::
connect_shadow
();
}
else
{
$
self
->
{
_dbh_shadow
}
=
$self
->
{
_dbh_main
}
;
$
_dbh_shadow
=
$_dbh_main
;
}
}
$
self
->
{
_dbh
}
=
$self
->
{
_dbh_shadow
}
;
$
_dbh
=
$_dbh_shadow
;
}
sub
switch_to_main_db
{
my
$self
=
shift
;
$self
->
{
_dbh
}
=
$self
->
{
_dbh_main
};
}
# PRIVATE methods below here
# Called from instance
sub
_new_instance
{
my
$class
=
shift
;
my
$self
=
{
};
bless
(
$self
,
$class
);
$self
->
_init_persistent
;
return
$self
;
}
# Initialise persistent items
sub
_init_persistent
{
my
$self
=
shift
;
# We're always going to use the main db, so connect now
$self
->
{
_dbh
}
=
$self
->
{
_dbh_main
}
=
Bugzilla::DB::
connect_main
();
# Set up the template
$self
->
{
_template
}
=
Bugzilla::
Template
->
create
();
$_dbh
=
$_dbh_main
;
}
# Initialise transient (per-request) items
sub
_init_transient
{
my
$self
=
shift
;
# Private methods
$self
->
{
_cgi
}
=
new
Bugzilla::
CGI
if
exists
$::ENV
{
'GATEWAY_INTERFACE'
};
}
# Clean up transient items such as database handles
# Per process cleanup
sub
_cleanup
{
my
$self
=
shift
;
delete
$self
->
{
_cgi
};
undef
$_cgi
;
# When we support transactions, need to ->rollback here
$_dbh_main
->
disconnect
if
$_dbh_main
;
$_dbh_shadow
->
disconnect
if
$_dbh_shadow
and
Param
(
"shadowdb"
);
undef
$_dbh_main
;
undef
$_dbh_shadow
;
undef
$_dbh
;
}
sub
DESTROY
{
my
$self
=
shift
;
# Clean up transient items. We can't just let perl handle removing
# stuff from the $self hash because some stuff (eg database handles)
# may need special casing
# under a persistent environment (ie mod_perl)
$self
->
_cleanup
;
# Now clean up the persistent items
$self
->
{
_dbh_main
}
->
disconnect
if
$self
->
{
_dbh_main
};
$self
->
{
_dbh_shadow
}
->
disconnect
if
$self
->
{
_dbh_shadow
}
and
Param
(
"shadowdb"
)
sub
END
{
_cleanup
();
}
1
;
...
...
@@ -141,11 +109,9 @@ and modules
use Bugzilla;
Bugzilla->create;
sub someModulesSub {
my $B = Bugzilla->instance
;
$B
->template->process(...);
Bugzilla->dbh->prepare(...)
;
Bugzilla
->template->process(...);
}
=head1 DESCRIPTION
...
...
@@ -180,32 +146,18 @@ templates), whilst destroying those which are only valid for a single request
=back
Note that items accessible via this object may be loaded when the Bugzilla
object is created, or may be demand-loaded when requested.
Note that items accessible via this object are demand-loaded when requested.
For something to be added to this object, it should either be able to benefit
from persistence when run under mod_perl (such as the a C<template> object),
or should be something which is globally required by a large ammount of code
(such as the current C<user> object).
=head1 CREATION
=over 4
=item C<create>
Creates the C<Bugzilla> object, and initialises any per-request data
=item C<instance>
Returns the current C<Bugzilla> instance. If one doesn't exist, then it will
be created, but no per-request data will be set. The only use this method has
for creating the object is from a mod_perl init script. (Its also what
L<Class::Singleton> does, and I'm trying to keep that interface for this)
=back
=head1 METHODS
=head1 FUNCTIONS
Note that all C<Bugzilla> functionailty is method based; use C<Bugzilla->dbh>
rather than C<Bugzilla::dbh>. Nothing cares about this now, but don't rely on
that.
=over 4
...
...
Bugzilla/DB.pm
View file @
85bb266e
...
...
@@ -60,7 +60,7 @@ sub SendSQL {
require
Bugzilla
;
$_current_sth
=
Bugzilla
->
instance
->
dbh
->
prepare
(
$str
);
$_current_sth
=
Bugzilla
->
dbh
->
prepare
(
$str
);
return
$_current_sth
->
execute
;
}
...
...
@@ -73,7 +73,7 @@ sub SqlQuote {
require
Bugzilla
;
my
$res
=
Bugzilla
->
instance
->
dbh
->
quote
(
$str
);
my
$res
=
Bugzilla
->
dbh
->
quote
(
$str
);
trick_taint
(
$res
);
...
...
Bugzilla/Template/Plugin/Bugzilla.pm
View file @
85bb266e
...
...
@@ -31,7 +31,18 @@ use Bugzilla;
sub
new
{
my
(
$class
,
$context
)
=
@_
;
return
Bugzilla
->
instance
;
return
bless
{},
$class
;
}
sub
AUTOLOAD
{
my
$class
=
shift
;
our
$AUTOLOAD
;
$AUTOLOAD
=~
s/^.*:://
;
return
if
$AUTOLOAD
eq
'DESTROY'
;
return
Bugzilla
->
$AUTOLOAD
(
@_
);
}
1
;
...
...
CGI.pl
View file @
85bb266e
...
...
@@ -896,7 +896,7 @@ sub GetBugActivity {
use
Bugzilla
;
# XXX - mod_perl - reset this between runs
$::cgi
=
Bugzilla
->
instance
->
cgi
;
$::cgi
=
Bugzilla
->
cgi
;
# Set up stuff for compatibility with the old CGI.pl code
# This code will be removed as soon as possible, in favour of
...
...
buglist.cgi
View file @
85bb266e
...
...
@@ -629,7 +629,7 @@ if ($serverpush) {
# Connect to the shadow database if this installation is using one to improve
# query performance.
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
# Normally, we ignore SIGTERM and SIGPIPE (see globals.pl) but we need to
# respond to them here to prevent someone DOSing us by reloading a query
...
...
collectstats.pl
View file @
85bb266e
...
...
@@ -43,7 +43,7 @@ if (chdir("graphs")) {
ConnectToDatabase
();
GetVersionTable
();
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
my
@myproducts
;
push
(
@myproducts
,
"-All-"
,
@::legal_product
);
...
...
duplicates.cgi
View file @
85bb266e
...
...
@@ -56,7 +56,7 @@ GetVersionTable();
quietly_check_login
();
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
use
vars
qw (%FORM
$userid
@legal_product
);
...
...
globals.pl
View file @
85bb266e
...
...
@@ -1517,9 +1517,7 @@ sub GetFormat {
use
Bugzilla
;
$::BZ
=
Bugzilla
->
create
();
$::template
=
$::BZ
->
template
();
$::template
=
Bugzilla
->
template
();
$::vars
=
{};
...
...
report.cgi
View file @
85bb266e
...
...
@@ -46,7 +46,7 @@ GetVersionTable();
confirm_login
();
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
my
$action
=
$cgi
->
param
(
'action'
)
||
'menu'
;
...
...
reports.cgi
View file @
85bb266e
...
...
@@ -60,7 +60,7 @@ quietly_check_login();
GetVersionTable
();
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
# We only want those products that the user has permissions for.
my
@myproducts
;
...
...
showdependencygraph.cgi
View file @
85bb266e
...
...
@@ -33,7 +33,7 @@ quietly_check_login();
# Connect to the shadow database if this installation is using one to improve
# performance.
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
use
vars
qw($template $vars $userid)
;
...
...
showdependencytree.cgi
View file @
85bb266e
...
...
@@ -39,7 +39,7 @@ quietly_check_login();
# Connect to the shadow database if this installation is using one to improve
# performance.
Bugzilla
->
instance
->
switch_to_shadow_db
();
Bugzilla
->
switch_to_shadow_db
();
# More warning suppression silliness.
$::userid
=
$::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