[Koha-patches] [PATCH] Bug 12745: Add a sanity check for QueryParser configuration on about.pl

Tomas Cohen Arazi tomascohen at gmail.com
Mon Aug 11 18:00:11 CEST 2014


Currently there's no way for the user to know he has a bad QueryParser configuration.
Koha would just fallback to not using it.

This patch adds a check for QueryParser configuration sanity in about.pl

To test:
- Have UseQueryParser = "Don't try"
- Go to More > About Koha > System information
- No QueryParser-related warnings
- Set UseQueryParser = "Try"
- Go to More > About Koha > System information
- On a normal setup you shouldn't have any QueryParser-related warnings
- Edit your koha-conf.xml file and change the queryparser_config entry to a
  non-existent filename.
- Reload More > About Koha > System information
=> SUCCESS: a warning message tells you the filename used, and says it failed.
- Now just delete the entry in koha-conf.xml
- Reload More > About Koha > System information
=> SUCCESS: a warning message tells you don't have the queryparser_entry in
  your koha-conf.xml file.
  Subtest:
  a - The file /etc/koha/searchengine/queryparser.yaml exists:
    => SUCCESS: a warning saying it used a fallback is shown
  b - The file doesn't exist
    => SUCCESS: Missing entry warning, plus a failure message for the fallback.
- Sign off :-D

Regards
To+

Sponsored-by: Universidad Nacional de Cordoba
---
 about.pl                                         | 29 ++++++++++++++++++++++++
 koha-tmpl/intranet-tmpl/prog/en/modules/about.tt | 23 ++++++++++++++++++-
 2 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/about.pl b/about.pl
index 8b9c1e7..b197cd3 100755
--- a/about.pl
+++ b/about.pl
@@ -92,6 +92,35 @@ if ( ! defined C4::Context->config('zebra_auth_index_mode') ) {
     };
 }
 
+# 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
+            };
+        }
+    }
+}
+
 $template->param(
     kohaVersion   => $kohaVersion,
     osVersion     => $osVersion,
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt
index d434624..23b3bb0 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/about.tt
@@ -104,7 +104,8 @@
             <p>Please log in instead with a regular staff account. To create a staff account, create a library, a patron category 'Staff' and add a new patron. Then give this patron permissions from 'More' in the toolbar.</p>
         [% END %]
             <h2>Warnings regarding the system configuration</h2>
-        [% IF warnPrefBiblioAddsAuthorities || warnPrefEasyAnalyticalRecords || warnPrefAnonymousPatron || warnNoActiveCurrency %]
+        [% IF warnPrefBiblioAddsAuthorities || warnPrefEasyAnalyticalRecords || warnPrefAnonymousPatron ||
+              warnNoActiveCurrency || QueryParserError %]
         <table>
             <caption>Preferences and parameters</caption>
             [% IF (warnPrefBiblioAddsAuthorities) %]
@@ -119,6 +120,19 @@
             [% IF warnNoActiveCurrency %]
                 <tr><th scope="row"><b>Warning</b> </th><td>No active currency is defined. Please go to <a href="/cgi-bin/koha/admin/currency.pl">Administration > Currencies and exchange rates</a> and mark one currency as active.</td></tr>
             [% END %]
+            [% IF QueryParserError %]
+                <tr><th scope="row"><b>Warning</b> </th><td>
+                    You have set UseQueryParser but there was a problem inititializing QueryParser.
+                [% IF QueryParserError.fallback %]
+                    The 'queryparser_config' entry is missing in your configuration file.
+                    <strong>[% QueryParserError.file %]</strong> was used instead without success.
+                [% ELSE %]
+                    The following configuration file was used without success: <strong>[% QueryParserError.file %]</strong>.
+                [% END %]
+                    </td>
+                </tr>
+            [% END %]
+
         </table>
         [% END %]
         [% IF xml_config_warnings.size %]
@@ -129,6 +143,13 @@
             <tr><th scope="row"><b>Warning</b> </th><td>The <zebra_bib_index_mode> entry is missing in your configuration file. It should be set to <strong>dom</strong> or <strong>grs1</strong>. It will default to <strong>grs1</strong> but this could change in the future.</td></tr>
             [% ELSIF config_entry.error == 'zebra_auth_index_mode_warn' %]
             <tr><th scope="row"><b>Warning</b> </th><td>The <zebra_auth_index_mode> entry is missing in your configuration file. It should be set to <strong>dom</strong> or <strong>grs1</strong>. It will default to <strong>dom</strong> but this could change in the future.</td></tr>
+            [% ELSIF config_entry.error == 'queryparser_entry_missing' %]
+            <tr>
+                <th scope="row"><b>Warning</b></th>
+                <td>You have set UseQueryParser but the 'queryparser_config' entry is missing in your configuration
+                    file. <strong>[% config_entry.file %]</strong> is used as a fallback.
+                </td>
+            </tr>
             [% END %]
         [% END %]
         </table>
-- 
1.9.1



More information about the Koha-patches mailing list