diff options
author | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-06-16 03:40:27 +0200 |
---|---|---|
committer | Max Kanat-Alexander <mkanat@bugzilla.org> | 2010-06-16 03:40:27 +0200 |
commit | fbe9a7a9a22004e3cc23a61b84148da8a0c300e9 (patch) | |
tree | 0fec2fa81dcaac47c45b56c6b696b10a53a27270 /Bugzilla/Util.pm | |
parent | 4291fb9fc4f9210d1ca54ca559d701b5cdca13b5 (diff) | |
download | bugzilla-fbe9a7a9a22004e3cc23a61b84148da8a0c300e9.tar.gz bugzilla-fbe9a7a9a22004e3cc23a61b84148da8a0c300e9.tar.xz |
Bug 24896: Make the First/Last/Prev/Next navigation on bugs work with
multiple buglists at once
r=glob, a=mkanat
Diffstat (limited to 'Bugzilla/Util.pm')
-rw-r--r-- | Bugzilla/Util.pm | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 03826c143..840225fbe 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -37,7 +37,7 @@ use base qw(Exporter); css_class_quote html_light_quote url_decode i_am_cgi correct_urlbase remote_ip do_ssl_redirect_if_required use_attachbase - diff_arrays + diff_arrays on_main_db trim wrap_hard wrap_comment find_wrap_point format_time format_time_decimal validate_date validate_time datetime_from @@ -597,6 +597,14 @@ sub clean_text { return trim($dtext); } +sub on_main_db (&) { + my $code = shift; + my $original_dbh = Bugzilla->dbh; + Bugzilla->request_cache->{dbh} = Bugzilla->dbh_main; + $code->(); + Bugzilla->request_cache->{dbh} = $original_dbh; +} + sub get_text { my ($name, $vars) = @_; my $template = Bugzilla->template_inner; @@ -690,6 +698,11 @@ Bugzilla::Util - Generic utility functions for bugzilla validate_email_syntax($email); validate_date($date); + # DB-related functions + on_main_db { + ... code here ... + }; + =head1 DESCRIPTION This package contains various utility functions which do not belong anywhere @@ -994,3 +1007,20 @@ Make sure the date has the correct format and returns 1 if the check is successful, else returns 0. =back + +=head2 Database + +=over + +=item C<on_main_db> + +Runs a block of code always on the main DB. Useful for when you're inside +a subroutine and need to do some writes to the database, but don't know +if Bugzilla is currently using the shadowdb or not. Used like: + + on_main_db { + my $dbh = Bugzilla->dbh; + $dbh->do("INSERT ..."); + } + +back |