diff options
-rw-r--r-- | Bugzilla.pm | 18 | ||||
-rw-r--r-- | CGI.pl | 4 | ||||
-rw-r--r-- | globals.pl | 2 |
3 files changed, 20 insertions, 4 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm index a45c5ca0f..56d1f24cc 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -46,7 +46,6 @@ sub cgi { my $_dbh; my $_dbh_main; my $_dbh_shadow; - sub dbh { my $class = shift; @@ -58,6 +57,17 @@ sub dbh { return $_dbh; } +sub dbwritesallowed { + my $class = shift; + + # We can write if we are connected to the main database. + # Note that if we don't have a shadowdb, then we claim that its ok + # to write even if we're nominally connected to the shadowdb. + # This is OK because this method is only used to test if misc + # updates can be done, rather than anything complicated. + return $class->dbh == $_dbh_main; +} + sub switch_to_shadow_db { my $class = shift; @@ -175,6 +185,12 @@ method for those scripts/templates which are only use via CGI, though. The current database handle. See L<DBI>. +=item C<dbwritesallowed> + +Determines if writes to the database are permitted. This is usually used to +determine if some general cleanup needs to occur (such as clearing the token +table) + =item C<switch_to_shadow_db> Switch from using the main database to using the shadow database. @@ -611,7 +611,7 @@ Content-type: text/html # This seems like as good as time as any to get rid of old # crufty junk in the logincookies table. Get rid of any entry # that hasn't been used in a month. - if ($::dbwritesallowed) { + if (Bugzilla->dbwritesallowed) { SendSQL("DELETE FROM logincookies " . "WHERE TO_DAYS(NOW()) - TO_DAYS(lastused) > 30"); } @@ -620,7 +620,7 @@ Content-type: text/html } # Update the timestamp on our logincookie, so it'll keep on working. - if ($::dbwritesallowed) { + if (Bugzilla->dbwritesallowed) { SendSQL("UPDATE logincookies SET lastused = null " . "WHERE cookie = $::COOKIE{'Bugzilla_logincookie'}"); } diff --git a/globals.pl b/globals.pl index 1aee0bd02..62fc1d633 100644 --- a/globals.pl +++ b/globals.pl @@ -352,7 +352,7 @@ sub GetVersionTable { } if (time() - $mtime > 3600) { use Token; - Token::CleanTokenTable() if $::dbwritesallowed; + Token::CleanTokenTable() if Bugzilla->dbwritesallowed; GenerateVersionTable(); } require 'data/versioncache'; |