Bug 23122: When searching callnumber in simple search, search option is not retained
[koha-equinox.git] / about.pl
index 6fdb578..dacd39d 100755 (executable)
--- a/about.pl
+++ b/about.pl
@@ -24,6 +24,7 @@ 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);
@@ -31,6 +32,7 @@ use XML::Simple;
 use Config;
 use Search::Elasticsearch;
 use Try::Tiny;
+use YAML qw/LoadFile/;
 
 use C4::Output;
 use C4::Auth;
@@ -46,7 +48,6 @@ use Koha::Caches;
 use Koha::Config::SysPrefs;
 use Koha::Illrequest::Config;
 use Koha::SearchEngine::Elasticsearch;
-use Koha::UploadedFiles;
 
 use C4::Members::Statistics;
 
@@ -176,58 +177,16 @@ my @xml_config_warnings;
 
 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/) ) {
@@ -236,12 +195,6 @@ if ( (C4::Context->config('zebra_auth_index_mode') eq 'dom') && ($context->{'ser
     };
 }
 
-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'
@@ -261,10 +214,11 @@ if ( ! defined C4::Context->config('upload_path') ) {
     }
 }
 
-if ( ! defined C4::Context->config('upload_tmp_path') ) {
+if ( ! C4::Context->config('tmp_path') ) {
+    my $temporary_directory = C4::Context::temporary_directory;
     push @xml_config_warnings, {
-        error                    => 'uploadtmppath_entry_missing',
-        effective_upload_tmp_dir => Koha::UploadedFile->temporary_directory
+        error             => 'tmp_path_missing',
+        effective_tmp_dir => $temporary_directory,
     }
 }
 
@@ -300,14 +254,6 @@ if ( C4::Context->preference( 'UseQueryParser' ) ) {
 # 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
@@ -337,6 +283,13 @@ if ( C4::Context->preference('ILLModule') ) {
         $warnILLConfiguration = 1;
     }
 
+
+    if ( !$ill_config_from_file->{branch} ) {
+        # branch not defined
+        $template->param( ill_branch_not_defined => 1 );
+        $warnILLConfiguration = 1;
+    }
+
     $template->param( warnILLConfiguration => $warnILLConfiguration );
 }
 
@@ -433,6 +386,31 @@ if (  C4::Context->preference('WebBasedSelfCheck')
     );
 }
 
+# Test YAML system preferences
+# FIXME: This is list of current YAML formatted prefs, should by type of preference
+my @yaml_prefs = (
+    "UpdateNotForLoanStatusOnCheckin",
+    "OpacHiddenItems",
+    "BibtexExportAdditionalFields",
+    "RisExportAdditionalFields",
+    "UpdateItemWhenLostFromHoldList",
+    "MarcFieldsToOrder",
+    "MarcItemFieldsToOrder",
+    "UpdateitemLocationOnCheckin",
+    "ItemsDeniedRenewal"
+);
+my @bad_yaml_prefs;
+foreach my $syspref (@yaml_prefs) {
+    my $yaml = C4::Context->preference( $syspref );
+    if ( $yaml ) {
+        eval { YAML::Load( "$yaml\n\n" ); };
+        if ($@) {
+            push @bad_yaml_prefs, $syspref;
+        }
+    }
+}
+$template->param( 'bad_yaml_prefs' => \@bad_yaml_prefs ) if @bad_yaml_prefs;
+
 {
     my $dbh       = C4::Context->dbh;
     my $patrons = $dbh->selectall_arrayref(
@@ -542,9 +520,7 @@ $template->param( table => $table );
 
 
 ## ------------------------------------------
-## Koha time line code
-
-#get file location
+## Koha contributions
 my $docdir;
 if ( defined C4::Context->config('docdir') ) {
     $docdir = C4::Context->config('docdir');
@@ -554,6 +530,70 @@ if ( defined C4::Context->config('docdir') ) {
     $docdir = C4::Context->config('intranetdir') . '/docs';
 }
 
+## Release teams
+my $teams =
+  -e "$docdir" . "/teams.yaml"
+  ? LoadFile( "$docdir" . "/teams.yaml" )
+  : {};
+my $dev_team = (sort {$b <=> $a} (keys %{$teams->{team}}))[0];
+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;
+$template->param( short_version => $short_version );
+$template->param( development_version => $development_version );
+
+## Contributors
+my $contributors =
+  -e "$docdir" . "/contributors.yaml"
+  ? LoadFile( "$docdir" . "/contributors.yaml" )
+  : {};
+for my $version ( sort { $a <=> $b } keys %{$teams->{team}} ) {
+    for my $role ( keys %{ $teams->{team}->{$version} } ) {
+        my $normalized_role = "$role";
+        $normalized_role =~ s/s$//;
+        if ( ref( $teams->{team}->{$version}->{$role} ) eq 'ARRAY' ) {
+            for my $contributor ( @{ $teams->{team}->{$version}->{$role} } ) {
+                my $name = $contributor->{name};
+                # Add role to contributors
+                push @{ $contributors->{$name}->{roles}->{$normalized_role} },
+                  $version;
+                # Add openhub to teams
+                if ( exists( $contributors->{$name}->{openhub} ) ) {
+                    $contributor->{openhub} = $contributors->{$name}->{openhub};
+                }
+            }
+        }
+        elsif ( $role ne 'release_date' ) {
+            my $name = $teams->{team}->{$version}->{$role}->{name};
+            # Add role to contributors
+            push @{ $contributors->{$name}->{roles}->{$normalized_role} },
+              $version;
+            # Add openhub to teams
+            if ( exists( $contributors->{$name}->{openhub} ) ) {
+                $teams->{team}->{$version}->{$role}->{openhub} =
+                  $contributors->{$name}->{openhub};
+            }
+        }
+        else {
+            $teams->{team}->{$version}->{$role} = DateTime->from_epoch( epoch => $teams->{team}->{$version}->{$role});
+        }
+    }
+}
+
+## Create last name ordered array of people from contributors
+my @people = map {
+    { name => $_, ( $contributors->{$_} ? %{ $contributors->{$_} } : () ) }
+} sort {
+    my ($alast) = ( split( /\s/, $a ) )[-1];
+    my ($blast) = ( split( /\s/, $b ) )[-1];
+    lc($alast) cmp lc($blast)
+} keys %{$contributors};
+
+$template->param( contributors => \@people );
+$template->param( maintenance_team => $teams->{team}->{$dev_team} );
+$template->param( release_team => $teams->{team}->{$short_version} );
+
+## Timeline
 if ( open( my $file, "<:encoding(UTF-8)", "$docdir" . "/history.txt" ) ) {
 
     my $i = 0;