Bug 10582: Koha OPAC URL shows Perl error message before web installer was run
authorTomas Cohen Arazi <tomascohen@gmail.com>
Fri, 31 Oct 2014 15:50:37 +0000 (12:50 -0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Thu, 6 Nov 2014 16:51:37 +0000 (13:51 -0300)
This patch makes opac/maintenance.pl 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

Regards

Sponsored-by: Universidad Nacional de Cordoba
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Works as described, fixes long existing bug.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
opac/maintenance.pl

index 9c2d9b0..53394cb 100755 (executable)
 # 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/Context.pm (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   => "maintenance.tt",
-        type            => "opac",
-        query           => $input,
-        authnotrequired => 1,
-        flagsrequired   => { borrow => 1 },
-    }
-);
+my $query = new CGI;
+my $template = C4::Templates::gettemplate( 'maintenance.tt', '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/opac-main.pl");
+    print $query->redirect("/cgi-bin/koha/opac-main.pl");
 }
+
+1;
\ No newline at end of file