Bug 19735: Move Perl deps definitions into a cpanfile
[koha-ffzg.git] / about.pl
index 4738c32..fa52ce4 100755 (executable)
--- a/about.pl
+++ b/about.pl
@@ -37,7 +37,7 @@ use YAML qw/LoadFile/;
 use C4::Output;
 use C4::Auth;
 use C4::Context;
-use C4::Installer;
+use C4::Installer::PerlModules;
 
 use Koha;
 use Koha::DateUtils qw(dt_from_string output_pref);
@@ -159,13 +159,21 @@ my $warnPrefBiblioAddsAuthorities = ( $prefAutoCreateAuthorities && ( !$prefBibl
 my $prefEasyAnalyticalRecords  = C4::Context->preference('EasyAnalyticalRecords');
 my $prefUseControlNumber  = C4::Context->preference('UseControlNumber');
 my $warnPrefEasyAnalyticalRecords  = ( $prefEasyAnalyticalRecords  && $prefUseControlNumber );
-my $warnPrefAnonymousPatron = (
+
+my $AnonymousPatron = C4::Context->preference('AnonymousPatron');
+my $warnPrefAnonymousPatronOPACPrivacy = (
     C4::Context->preference('OPACPrivacy')
-        and not C4::Context->preference('AnonymousPatron')
+        and not $AnonymousPatron
+);
+my $warnPrefAnonymousPatronAnonSuggestions = (
+    C4::Context->preference('AnonSuggestions')
+        and not $AnonymousPatron
 );
 
-my $anonymous_patron = Koha::Patrons->find( C4::Context->preference('AnonymousPatron') );
-my $warnPrefAnonymousPatron_PatronDoesNotExist = ( not $anonymous_patron and Koha::Patrons->search({ privacy => 2 })->count );
+my $anonymous_patron = Koha::Patrons->find( $AnonymousPatron );
+my $warnPrefAnonymousPatronAnonSuggestions_PatronDoesNotExist = ( $AnonymousPatron && C4::Context->preference('AnonSuggestions') && not $anonymous_patron );
+
+my $warnPrefAnonymousPatronOPACPrivacy_PatronDoesNotExist = ( not $anonymous_patron and Koha::Patrons->search({ privacy => 2 })->count );
 
 my $errZebraConnection = C4::Context->Zconn("biblioserver",0)->errcode();
 
@@ -448,18 +456,60 @@ $template->param( 'bad_yaml_prefs' => \@bad_yaml_prefs ) if @bad_yaml_prefs;
 # Circ rule warnings
 {
     my $dbh   = C4::Context->dbh;
-    my $units = $dbh->selectall_arrayref(
-        q|SELECT branchcode, categorycode, itemtype, lengthunit FROM issuingrules WHERE lengthunit NOT IN ( 'days', 'hours' ); |,
-        { Slice => {} }
-    );
+    my $units = Koha::CirculationRules->search({ rule_name => 'lengthunit', rule_value => { -not_in => ['days', 'hours'] } });
 
-    if (@$units) {
+    if ( $units->count ) {
         $template->param(
             warnIssuingRules => 1,
             ir_units         => $units,
         );
     }
 }
+
+# Guarantor relationships warnings
+{
+    my $dbh   = C4::Context->dbh;
+    my ($bad_relationships_count) = $dbh->selectall_arrayref(q{
+        SELECT COUNT(*)
+        FROM (
+            SELECT relationship FROM borrower_relationships WHERE relationship='_bad_data'
+            UNION ALL
+            SELECT relationship FROM borrowers WHERE relationship='_bad_data') a
+    });
+
+    $bad_relationships_count = $bad_relationships_count->[0]->[0];
+
+    my $existing_relationships = $dbh->selectall_arrayref(q{
+          SELECT DISTINCT(relationship)
+          FROM (
+              SELECT relationship FROM borrower_relationships WHERE relationship IS NOT NULL
+              UNION ALL
+              SELECT relationship FROM borrowers WHERE relationship IS NOT NULL) a
+    });
+
+    my %valid_relationships = map { $_ => 1 } split( /,|\|/, C4::Context->preference('borrowerRelationship') );
+    $valid_relationships{ _bad_data } = 1; # we handle this case in another way
+
+    my $wrong_relationships = [ grep { !$valid_relationships{ $_->[0] } } @{$existing_relationships} ];
+    if ( @$wrong_relationships or $bad_relationships_count ) {
+
+        $template->param(
+            warnRelationships => 1,
+        );
+
+        if ( $wrong_relationships ) {
+            $template->param(
+                wrong_relationships => $wrong_relationships
+            );
+        }
+        if ($bad_relationships_count) {
+            $template->param(
+                bad_relationships_count => $bad_relationships_count,
+            );
+        }
+    }
+}
+
 my %versions = C4::Context::get_versions();
 
 $template->param(
@@ -475,8 +525,10 @@ $template->param(
     prefAutoCreateAuthorities => $prefAutoCreateAuthorities,
     warnPrefBiblioAddsAuthorities => $warnPrefBiblioAddsAuthorities,
     warnPrefEasyAnalyticalRecords  => $warnPrefEasyAnalyticalRecords,
-    warnPrefAnonymousPatron => $warnPrefAnonymousPatron,
-    warnPrefAnonymousPatron_PatronDoesNotExist => $warnPrefAnonymousPatron_PatronDoesNotExist,
+    warnPrefAnonymousPatronOPACPrivacy        => $warnPrefAnonymousPatronOPACPrivacy,
+    warnPrefAnonymousPatronAnonSuggestions    => $warnPrefAnonymousPatronAnonSuggestions,
+    warnPrefAnonymousPatronOPACPrivacy_PatronDoesNotExist     => $warnPrefAnonymousPatronOPACPrivacy_PatronDoesNotExist,
+    warnPrefAnonymousPatronAnonSuggestions_PatronDoesNotExist => $warnPrefAnonymousPatronAnonSuggestions_PatronDoesNotExist,
     errZebraConnection => $errZebraConnection,
     warnIsRootUser => $warnIsRootUser,
     warnNoActiveCurrency => $warnNoActiveCurrency,