+# Additional system information for warnings
+my $prefAutoCreateAuthorities = C4::Context->preference('AutoCreateAuthorities');
+my $prefBiblioAddsAuthorities = C4::Context->preference('BiblioAddsAuthorities');
+my $warnPrefBiblioAddsAuthorities = ( $prefAutoCreateAuthorities && ( !$prefBiblioAddsAuthorities) );
+
+my $prefEasyAnalyticalRecords = C4::Context->preference('EasyAnalyticalRecords');
+my $prefUseControlNumber = C4::Context->preference('UseControlNumber');
+my $warnPrefEasyAnalyticalRecords = ( $prefEasyAnalyticalRecords && $prefUseControlNumber );
+my $warnPrefAnonymousPatron = (
+ C4::Context->preference('OPACPrivacy')
+ and not C4::Context->preference('AnonymousPatron')
+);
+
+my $errZebraConnection = C4::Context->Zconn("biblioserver",0)->errcode();
+
+my $warnIsRootUser = (! $loggedinuser);
+
+my $warnNoActiveCurrency = (! defined C4::Budgets->GetCurrency());
+my @xml_config_warnings;
+
+if ( ! defined C4::Context->config('zebra_bib_index_mode') ) {
+ push @xml_config_warnings, {
+ error => 'zebra_bib_index_mode_warn'
+ };
+} else {
+ push @xml_config_warnings, { error => 'zebra_bib_grs_warn' }
+ if C4::Context->config('zebra_bib_index_mode') eq 'grs1';
+}
+
+if ( ! defined C4::Context->config('zebra_auth_index_mode') ) {
+ push @xml_config_warnings, {
+ error => 'zebra_auth_index_mode_warn'
+ };
+} else {
+ push @xml_config_warnings, { error => 'zebra_auth_grs_warn' }
+ if C4::Context->config('zebra_auth_index_mode') eq 'grs1';
+}
+
+# Test QueryParser configuration sanity
+if ( C4::Context->preference( 'UseQueryParser' ) ) {
+ # Get the QueryParser configuration file name
+ my $queryparser_file = C4::Context->config( 'queryparser_config' );
+ my $queryparser_fallback_file = '/etc/koha/searchengine/queryparser.yaml';
+ # Check QueryParser is functional
+ my $QParser = C4::Context->queryparser();
+ my $queryparser_error = {};
+ if ( ! defined $QParser || ref($QParser) ne 'Koha::QueryParser::Driver::PQF' ) {
+ # Error initializing the QueryParser object
+ # Get the used queryparser.yaml file path to report the user
+ $queryparser_error->{ fallback } = ( defined $queryparser_file ) ? 0 : 1;
+ $queryparser_error->{ file } = ( defined $queryparser_file )
+ ? $queryparser_file
+ : $queryparser_fallback_file;
+ # Report error data to the template
+ $template->param( QueryParserError => $queryparser_error );
+ } else {
+ # Check for an absent queryparser_config entry in koha-conf.xml
+ if ( ! defined $queryparser_file ) {
+ # Not an error but a warning for the missing entry in koha-conf-xml
+ push @xml_config_warnings, {
+ error => 'queryparser_entry_missing',
+ file => $queryparser_fallback_file
+ };
+ }
+ }
+}
+
+# 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' ;
+ }
+}
+