use CGI qw ( -utf8 );
use DateTime::TimeZone;
use File::Slurp qw( read_file );
+use IPC::Cmd qw(can_run);
use List::MoreUtils qw( any );
use Module::Load::Conditional qw( can_load );
use Config qw( %Config );
use Koha;
use Koha::DateUtils qw( dt_from_string output_pref );
use Koha::Acquisition::Currencies;
+use Koha::Authorities;
use Koha::BackgroundJob;
use Koha::BiblioFrameworks;
+use Koha::Biblios;
use Koha::Email;
use Koha::Patron::Categories;
use Koha::Patrons;
my $zebraVersion = `zebraidx -V`;
# Check running PSGI env
-if ( any { /(^psgi\.|^plack\.)/i } keys %ENV ) {
+if ( C4::Context->psgi_env ) {
$template->param(
is_psgi => 1,
psgi_server => ($ENV{ PLACK_ENV }) ? "Plack ($ENV{PLACK_ENV})" :
}
my $prefAutoCreateAuthorities = C4::Context->preference('AutoCreateAuthorities');
-my $prefBiblioAddsAuthorities = C4::Context->preference('BiblioAddsAuthorities');
-my $warnPrefBiblioAddsAuthorities = ( $prefAutoCreateAuthorities && ( !$prefBiblioAddsAuthorities) );
+my $prefRequireChoosingExistingAuthority = C4::Context->preference('RequireChoosingExistingAuthority');
+my $warnPrefRequireChoosingExistingAuthority = ( !$prefAutoCreateAuthorities && ( !$prefRequireChoosingExistingAuthority) );
my $prefEasyAnalyticalRecords = C4::Context->preference('EasyAnalyticalRecords');
my $prefUseControlNumber = C4::Context->preference('UseControlNumber');
my $warnPrefAnonymousPatronOPACPrivacy_PatronDoesNotExist = ( not $anonymous_patron and Koha::Patrons->search({ privacy => 2 })->count );
-my $warnPrefKohaAdminEmailAddress = not Email::Valid->address(C4::Context->preference('KohaAdminEmailAddress'));
+my $warnPrefKohaAdminEmailAddress = !Koha::Email->is_valid(C4::Context->preference('KohaAdminEmailAddress'));
my $c = Koha::Items->filter_by_visible_in_opac->count;
my @warnings = C4::Context->dbh->selectrow_array('SHOW WARNINGS');
}
}
+if( ! C4::Context->config('encryption_key') ) {
+ push @xml_config_warnings, { error => 'encryption_key_missing' };
+}
+
# Test Zebra facets configuration
if ( !defined C4::Context->config('use_zebra_facets') ) {
push @xml_config_warnings, { error => 'use_zebra_facets_entry_missing' };
$template->param( warnILLConfiguration => $warnILLConfiguration );
}
+unless ( can_run('weasyprint') ) {
+ $template->param( weasyprint_missing => 1 );
+}
+
+{
+ # XSLT sysprefs
+ my @xslt_prefs = qw(
+ OPACXSLTDetailsDisplay
+ OPACXSLTListsDisplay
+ OPACXSLTResultsDisplay
+ XSLTDetailsDisplay
+ XSLTListsDisplay
+ XSLTResultsDisplay
+ );
+ my @warnXSLT;
+ for my $p ( @xslt_prefs ) {
+ my $xsl_filename = C4::XSLT::get_xsl_filename( $p );
+ next if -e $xsl_filename;
+ push @warnXSLT,
+ {
+ syspref => $p,
+ value => C4::Context->preference("$p"),
+ filename => $xsl_filename
+ };
+ }
+
+ $template->param( warnXSLT => \@warnXSLT ) if @warnXSLT;
+}
if ( C4::Context->preference('SearchEngine') eq 'Elasticsearch' ) {
# Check ES configuration health and runtime status
my $es_status;
my $es_config_error;
my $es_running = 1;
+ my $es_has_missing = 0;
my $es_conf;
try {
my $es_status->{version} = $es->info->{version}->{number};
foreach my $index ( @indexes ) {
- my $count;
+ my $index_count;
try {
- $count = $es->indices->stats( index => $index )
+ $index_count = $es->indices->stats( index => $index )
->{_all}{primaries}{docs}{count};
}
catch {
if ( ref($_) eq 'Search::Elasticsearch::Error::Missing' ) {
push @{ $es_status->{errors} }, "Index not found ($index)";
- $count = -1;
+ $index_count = -1;
}
elsif ( ref($_) eq 'Search::Elasticsearch::Error::NoNodes' ) {
$es_running = 0;
}
};
+ my $db_count = -1;
+ my $missing_count = 0;
+ if ( $index eq $biblios_index_name ) {
+ $db_count = Koha::Biblios->search->count;
+ } elsif ( $index eq $authorities_index_name ) {
+ $db_count = Koha::Authorities->search->count;
+ }
+ if ( $db_count != -1 && $index_count != -1 ) {
+ $missing_count = $db_count - $index_count;
+ $es_has_missing = 1 if $missing_count > 0;
+ }
push @{ $es_status->{indexes} },
{
- index_name => $index,
- count => $count
+ index_name => $index,
+ index_count => $index_count,
+ db_count => $db_count,
+ missing_count => $missing_count,
};
}
$es_status->{running} = $es_running;
- $template->param( elasticsearch_status => $es_status );
+ $template->param(
+ elasticsearch_status => $es_status,
+ elasticsearch_has_missing => $es_has_missing,
+ );
}
}
my @frameworkcodes = Koha::BiblioFrameworks->search->get_column('frameworkcode');
my @hidden_biblionumbers;
push @frameworkcodes, ""; # it's not in the biblio_frameworks table!
+ my $no_FA_framework = 1;
for my $frameworkcode ( @frameworkcodes ) {
+ $no_FA_framework = 0 if $frameworkcode eq 'FA';
my $shouldhidemarc_opac = Koha::Filter::MARC::ViewPolicy->should_hide_marc(
{
frameworkcode => $frameworkcode,
if $shouldhidemarc_intranet->{biblionumber};
}
$template->param( warnHiddenBiblionumbers => \@hidden_biblionumbers );
+ $template->param( warnFastCataloging => $no_FA_framework );
}
{
mysqlVersion => $versions{'mysqlVersion'},
apacheVersion => $versions{'apacheVersion'},
zebraVersion => $zebraVersion,
- prefBiblioAddsAuthorities => $prefBiblioAddsAuthorities,
+ prefRequireChoosingExistingAuthority => $prefRequireChoosingExistingAuthority,
prefAutoCreateAuthorities => $prefAutoCreateAuthorities,
- warnPrefBiblioAddsAuthorities => $warnPrefBiblioAddsAuthorities,
+ warnPrefRequireChoosingExistingAuthority => $warnPrefRequireChoosingExistingAuthority,
warnPrefEasyAnalyticalRecords => $warnPrefEasyAnalyticalRecords,
warnPrefAnonymousPatronOPACPrivacy => $warnPrefAnonymousPatronOPACPrivacy,
warnPrefAnonymousPatronAnonSuggestions => $warnPrefAnonymousPatronAnonSuggestions,
my $short_version = substr($versions{'kohaVersion'},0,5);
my $minor = substr($versions{'kohaVersion'},3,2);
my $development_version = ( $minor eq '05' || $minor eq '11' ) ? 0 : 1;
+my $codename;
$template->param( short_version => $short_version );
$template->param( development_version => $development_version );
}
}
}
- elsif ( $role ne 'release_date' ) {
+ elsif ( $role eq 'release_date' ) {
+ $teams->{team}->{$version}->{$role} = DateTime->from_epoch( epoch => $teams->{team}->{$version}->{$role});
+ }
+ elsif ( $role eq 'codename' ) {
+ if ( $version == $short_version ) {
+ $codename = $teams->{team}->{$version}->{$role};
+ }
+ next;
+ }
+ else {
my $name = $teams->{team}->{$version}->{$role}->{name};
# Add role to contributors
push @{ $contributors->{$name}->{roles}->{$normalized_role} },
$contributors->{$name}->{openhub};
}
}
- else {
- $teams->{team}->{$version}->{$role} = DateTime->from_epoch( epoch => $teams->{team}->{$version}->{$role});
- }
}
}
lc($a2last||"") cmp lc($b2last||"");
} keys %$contributors;
+$template->param( kohaCodename => $codename);
$template->param( contributors => \@people );
$template->param( maintenance_team => $teams->{team}->{$dev_team} );
$template->param( release_team => $teams->{team}->{$short_version} );