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>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Tomás Cohen Arazi 2015-06-05 10:56:56 -03:00 committed by Tomas Cohen Arazi
parent 3ef7bfc6cf
commit c671784321

View file

@ -527,7 +527,8 @@ sub preference {
if ( defined $ENV{"OVERRIDE_SYSPREF_$var"} ) { if ( defined $ENV{"OVERRIDE_SYSPREF_$var"} ) {
$value = $ENV{"OVERRIDE_SYSPREF_$var"}; $value = $ENV{"OVERRIDE_SYSPREF_$var"};
} else { } else {
my $syspref = Koha::Config::SysPrefs->find( lc $var ); my $syspref;
eval { $syspref = Koha::Config::SysPrefs->find( lc $var ) };
$value = $syspref ? $syspref->value() : undef; $value = $syspref ? $syspref->value() : undef;
} }