From 1e9b1d8fe751cf307ac353c44d571d38ff466ebe Mon Sep 17 00:00:00 2001
From: Tomas Cohen Arazi <tomascohen@gmail.com>
Date: Fri, 5 Jun 2015 10:56:56 -0300
Subject: [PATCH] [PASSED QA] Bug 14339: C4::Context->preference should return
 undef if DB is not populated

The current behaviour for C4::Context->preference when the DB is not still
populated with tables is to return undef. This is used by C4::Auth to identify
the need of running the installer.

This behaviour got broken by bug 13967, which lets DB errors to escalate and
thus Koha gets broken instead of prompting for install.

This patch wraps Koha::Config::Sysprefs->find inside an eval and sets undef if needed.

To test:
- In current master, drop the DB
- Load OPAC and Intranet
=> FAIL: notice an ugly software error.
- Apply the patch
- Load the OPAC
=> SUCCESS: Maintenance mode screen is shown
- Load Intranet
=> SUCCESS: You are prompted the DB credentials to run the web installer.
- Sign off :-D

Tomas

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
---
 C4/Context.pm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/C4/Context.pm b/C4/Context.pm
index 099ddaf..3e3f00c 100644
--- a/C4/Context.pm
+++ b/C4/Context.pm
@@ -527,7 +527,8 @@ sub preference {
     if ( defined $ENV{"OVERRIDE_SYSPREF_$var"} ) {
         $value = $ENV{"OVERRIDE_SYSPREF_$var"};
     } else {
-        my $syspref = Koha::Config::SysPrefs->find( lc $var );
+        my $syspref;
+        eval { $syspref = Koha::Config::SysPrefs->find( lc $var ) };
         $value = $syspref ? $syspref->value() : undef;
     }
 
-- 
1.9.1