Browse Source

Bug 10582: Koha OPAC URL shows Perl error message before web installer was run

This patch makes opac/ run smoothly when the DB hasn't
been populated yet. It does so, by using C4::Templates::gettemplate
instead of C4::Auth::get_user_and_template as the maintenance page doesn't
need authentication checks at all, it should happen *before* any attempt
to check credentials.

To test:
- Backup and DROP your database
- Point your browser to the OPAC page
=> FAIL: An error is shown: "Cant's use an undefined value as an ARRAY..."
- Apply the patch
- Relad the page
=> SUCCESS: The maintenance page correctly shows.
We should now check the rest of the script's behaviour remains untouched:
- Reload your backed up DB
- Change your DB version number by hand to one version lower, like in:
  > UPDATE systempreferences SET value="3.1700042" WHERE variable LIKE '%version%';
- Go to the OPAC
=> SUCCESS: Maintenance page shows as expected
- Recover the right  version number, like in:
  > UPDATE systempreferences SET value="3.1700043" WHERE variable LIKE '%version%';
- Set OpacMaintenance to Show on the staff client
- Reload the OPAC
=> SUCCESS: Maintenance page shows as expected
- Set OpacMaintenance to 'Don't show' on the staff client
- Reload the OPAC
=> SUCCESS: Normal OPAC shows
- Sign off :-D


Sponsored-by: Universidad Nacional de Cordoba

Signed-off-by: Katrin Fischer <>
Works as described, fixes long existing bug.

Signed-off-by: Martin Renvoize <>
Signed-off-by: Tomas Cohen Arazi <>
Tomás Cohen Arazi 8 years ago
  1. 37


@ -15,36 +15,29 @@
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
use warnings;
# FIXME - Generates a warning from C4/ (uninitilized value).
use Modern::Perl;
use CGI;
use C4::Auth;
use C4::Output;
use C4::Templates qw/gettemplate/;
my $input = new CGI;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
template_name => "",
type => "opac",
query => $input,
authnotrequired => 1,
flagsrequired => { borrow => 1 },
my $query = new CGI;
my $template = C4::Templates::gettemplate( '', 'opac', $query, 0 );
my $koha_db_version = C4::Context->preference('Version');
my $kohaversion = C4::Context::KOHAVERSION;
$kohaversion =~ s/(.*\..*)\.(.*)\.(.*)/$1$2$3/;
#warn "db: $koha_db_version, koha: $kohaversion";
if ( $kohaversion > $koha_db_version or C4::Context->preference('OpacMaintenance') ) {
output_html_with_http_headers $input, '', $template->output;
# Strip dots from version
$kohaversion =~ s/\.//g if defined $kohaversion;
$koha_db_version =~ s/\.//g if defined $koha_db_version;
if ( !defined $koha_db_version || # DB not populated
$kohaversion > $koha_db_version || # Update needed
C4::Context->preference('OpacMaintenance') ) { # Maintenance mode enabled
output_html_with_http_headers $query, '', $template->output;
else {
print $input->redirect("/cgi-bin/koha/");
print $query->redirect("/cgi-bin/koha/");