From c671784321b1ebcf9aca18c061ec30bed3e89a58 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Fri, 5 Jun 2015 10:56:56 -0300 Subject: [PATCH] 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 Signed-off-by: Kyle M Hall Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi --- C4/Context.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/C4/Context.pm b/C4/Context.pm index 099ddaf6e6..3e3f00c491 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; } -- 2.20.1