@@ -, +, @@ and UT --- C4/Context.pm | 20 +++++++++++++++++--- t/Context.t | 16 +++++++++++++++- 2 files changed, 32 insertions(+), 4 deletions(-) --- a/C4/Context.pm +++ a/C4/Context.pm @@ -1264,15 +1264,29 @@ sub IsSuperLibrarian { return ($userenv->{flags}//0) % 2; } +=head2 interface + +Sets the current interface for later retrieval in any Perl module + + C4::Context->interface('opac'); + C4::Context->interface('intranet'); + my $interface = C4::Context->interface; + +=cut + sub interface { my ($class, $interface) = @_; if (defined $interface) { - $interface ||= 'opac'; - $context->{interface} = $interface; + $interface = lc $interface; + if ($interface eq 'opac' || $interface eq 'intranet') { + $context->{interface} = $interface; + } else { + warn "invalid interface : '$interface'"; + } } - return $context->{interface}; + return $context->{interface} // 'opac'; } 1; --- a/t/Context.t +++ a/t/Context.t @@ -2,7 +2,7 @@ use Modern::Perl; use DBI; -use Test::More tests => 14; +use Test::More tests => 24; use Test::MockModule; BEGIN { @@ -45,3 +45,17 @@ is(C4::Context::db_scheme2dbi('mysql'), 'mysql', 'ask for mysql, get mysql'); is(C4::Context::db_scheme2dbi('Pg'), 'Pg', 'ask for Pg, get Pg'); is(C4::Context::db_scheme2dbi('xxx'), 'mysql', 'ask for unsupported DBMS, get mysql'); is(C4::Context::db_scheme2dbi(), 'mysql', 'ask for nothing, get mysql'); + +# C4::Context::interface +my $lastwarn; +local $SIG{__WARN__} = sub { $lastwarn = $_[0] }; +is(C4::Context->interface, 'opac'); +is(C4::Context->interface('foobar'), 'opac'); +like($lastwarn, qr/invalid interface : 'foobar'/); +is(C4::Context->interface, 'opac'); +is(C4::Context->interface('intranet'), 'intranet'); +is(C4::Context->interface, 'intranet'); +is(C4::Context->interface('foobar'), 'intranet'); +is(C4::Context->interface, 'intranet'); +is(C4::Context->interface('OPAC'), 'opac'); +is(C4::Context->interface, 'opac'); --