use Modern::Perl;
use CGI qw ( -utf8 );
+use DateTime::TimeZone;
+use File::Spec;
use List::MoreUtils qw/ any /;
use LWP::Simple;
+use Module::Load::Conditional qw(can_load);
use XML::Simple;
use Config;
use Search::Elasticsearch;
use C4::Installer;
use Koha;
+use Koha::DateUtils qw(dt_from_string output_pref);
use Koha::Acquisition::Currencies;
use Koha::Patron::Categories;
use Koha::Patrons;
}
);
+my $config_timezone = C4::Context->config('timezone') // '';
+my $config_invalid = !DateTime::TimeZone->is_valid_name( $config_timezone );
+my $env_timezone = $ENV{TZ} // '';
+my $env_invalid = !DateTime::TimeZone->is_valid_name( $env_timezone );
+my $actual_bad_tz_fallback = 0;
+
+if ( $config_timezone ne '' &&
+ $config_invalid ) {
+ # Bad config
+ $actual_bad_tz_fallback = 1;
+}
+elsif ( $config_timezone eq '' &&
+ $env_timezone ne '' &&
+ $env_invalid ) {
+ # No config, but bad ENV{TZ}
+ $actual_bad_tz_fallback = 1;
+}
+
+my $time_zone = {
+ actual => C4::Context->tz->name,
+ actual_bad_tz_fallback => $actual_bad_tz_fallback,
+ config => $config_timezone,
+ config_invalid => $config_invalid,
+ environment => $env_timezone,
+ environment_invalid => $env_invalid
+};
+
+$template->param(
+ time_zone => $time_zone,
+ current_date_and_time => output_pref({ dt => dt_from_string(), dateformat => 'iso' })
+);
+
my $perl_path = $^X;
if ($^O ne 'VMS') {
$perl_path .= $Config{_exe} unless $perl_path =~ m/$Config{_exe}$/i;
my $context = new C4::Context;
-if ( ! defined C4::Context->config('zebra_bib_index_mode') ) {
- push @xml_config_warnings, {
- error => 'zebra_bib_index_mode_warn'
- };
- if ($context->{'server'}->{'biblioserver'}->{'config'} !~ /zebra-biblios-dom.cfg/) {
- push @xml_config_warnings, {
- error => 'zebra_bib_mode_seems_grs1'
- };
- }
- else {
- push @xml_config_warnings, {
- error => 'zebra_bib_mode_seems_dom'
- };
- }
-} else {
- push @xml_config_warnings, { error => 'zebra_bib_grs_warn' }
- if C4::Context->config('zebra_bib_index_mode') eq 'grs1';
-}
-
-if ( (C4::Context->config('zebra_bib_index_mode') eq 'dom') &&
- ($context->{'server'}->{'biblioserver'}->{'config'} !~ /zebra-biblios-dom.cfg/) ) {
-
- push @xml_config_warnings, {
- error => 'zebra_bib_index_mode_mismatch_warn'
- };
-}
-
-if ( (C4::Context->config('zebra_bib_index_mode') eq 'grs1') &&
- ($context->{'server'}->{'biblioserver'}->{'config'} =~ /zebra-biblios-dom.cfg/) ) {
-
- push @xml_config_warnings, {
- error => 'zebra_bib_index_mode_mismatch_warn'
- };
+if ( C4::Context->config('zebra_bib_index_mode')
+ and C4::Context->config('zebra_bib_index_mode') eq 'grs1' )
+{
+ push @xml_config_warnings, { error => 'zebra_bib_index_mode_is_grs1' };
}
-if ( ! defined C4::Context->config('zebra_auth_index_mode') ) {
- push @xml_config_warnings, {
- error => 'zebra_auth_index_mode_warn'
- };
- if ($context->{'server'}->{'authorityserver'}->{'config'} !~ /zebra-authorities-dom.cfg/) {
- push @xml_config_warnings, {
- error => 'zebra_auth_mode_seems_grs1'
- };
- }
- else {
- push @xml_config_warnings, {
- error => 'zebra_auth_mode_seems_dom'
- };
- }
-} else {
- push @xml_config_warnings, { error => 'zebra_auth_grs_warn' }
- if C4::Context->config('zebra_auth_index_mode') eq 'grs1';
+if ( C4::Context->config('zebra_auth_index_mode')
+ and C4::Context->config('zebra_auth_index_mode') eq 'grs1' )
+{
+ push @xml_config_warnings, { error => 'zebra_auth_index_mode_is_grs1' };
}
if ( (C4::Context->config('zebra_auth_index_mode') eq 'dom') && ($context->{'server'}->{'authorityserver'}->{'config'} !~ /zebra-authorities-dom.cfg/) ) {
};
}
-if ( (C4::Context->config('zebra_auth_index_mode') eq 'grs1') && ($context->{'server'}->{'authorityserver'}->{'config'} =~ /zebra-authorities-dom.cfg/) ) {
- push @xml_config_warnings, {
- error => 'zebra_auth_index_mode_mismatch_warn'
- };
-}
-
if ( ! defined C4::Context->config('log4perl_conf') ) {
push @xml_config_warnings, {
error => 'log4perl_entry_missing'
}
}
+if ( ! C4::Context->config('tmp_path') ) {
+ my $temporary_directory = C4::Context::temporary_directory;
+ push @xml_config_warnings, {
+ error => 'tmp_path_missing',
+ effective_tmp_dir => $temporary_directory,
+ }
+}
+
# Test QueryParser configuration sanity
if ( C4::Context->preference( 'UseQueryParser' ) ) {
# Get the QueryParser configuration file name
# Test Zebra facets configuration
if ( !defined C4::Context->config('use_zebra_facets') ) {
push @xml_config_warnings, { error => 'use_zebra_facets_entry_missing' };
-} else {
- if ( C4::Context->config('use_zebra_facets') &&
- C4::Context->config('zebra_bib_index_mode') ) {
- # use_zebra_facets works with DOM
- push @xml_config_warnings, {
- error => 'use_zebra_facets_needs_dom'
- } if C4::Context->config('zebra_bib_index_mode') ne 'dom' ;
- }
}
# ILL module checks
$warnILLConfiguration = 1;
}
+
+ if ( !$ill_config_from_file->{branch} ) {
+ # branch not defined
+ $template->param( ill_branch_not_defined => 1 );
+ $warnILLConfiguration = 1;
+ }
+
$template->param( warnILLConfiguration => $warnILLConfiguration );
}
}
}
+if ( C4::Context->preference('RESTOAuth2ClientCredentials') ) {
+ # Do we have the required deps?
+ unless ( can_load( modules => { 'Net::OAuth2::AuthorizationServer' => undef }) ) {
+ $template->param( oauth2_missing_deps => 1 );
+ }
+}
+
# Sco Patron should not contain any other perms than circulate => self_checkout
if ( C4::Context->preference('WebBasedSelfCheck')
and C4::Context->preference('AutoSelfCheckAllowed')
my $all_permissions = C4::Auth::get_user_subpermissions( $userid );
my ( $has_self_checkout_perm, $has_other_permissions );
while ( my ( $module, $permissions ) = each %$all_permissions ) {
- if ( $module eq 'circulate' ) {
+ if ( $module eq 'self_check' ) {
while ( my ( $permission, $flag ) = each %$permissions ) {
- if ( $permission eq 'self_checkout' ) {
+ if ( $permission eq 'self_checkout_module' ) {
$has_self_checkout_perm = 1;
} else {
$has_other_permissions = 1;