From 9676f537a448d50770c90d9d5a8b420a1f302444 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 8 Jul 2020 16:54:51 -0300 Subject: [PATCH] Bug 25961: Add hooks for plugins to inject variables to OPAC XSLT This patch adds the following plugin hooks: - opac_results_xslt_variables - opac_detail_xslt_variables This hooks will inject variables returned by the plugin in the form of a hashref, into the ones that are passed to the XSLT processing code. To test: 1. Apply the 'DO NOT PUSH' commit 2. Install the Kitchensink plugin 3. Restart all 4. Search biblios in the OPAC => SUCCESS: A text is injected in front of the biblio title 5. Enter the detail page of any of the results => SUCCESS: A text is injected in front of the biblio title 6. Sign off :-D Signed-off-by: Tomas Cohen Arazi Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize Signed-off-by: Jonathan Druart --- opac/opac-detail.pl | 28 ++++++++++++++++++++++++++++ opac/opac-search.pl | 25 +++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index ce091b78fb..66a12d8ccb 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -59,9 +59,12 @@ use Koha::ItemTypes; use Koha::Acquisition::Orders; use Koha::Virtualshelves; use Koha::Patrons; +use Koha::Plugins; use Koha::Ratings; use Koha::Reviews; +use Try::Tiny; + my $query = CGI->new(); my $biblionumber = $query->param('biblionumber') || $query->param('bib') || 0; @@ -182,6 +185,31 @@ if ( $xslfile ) { anonymous_session => ($borrowernumber) ? 0 : 1 }; + if ( C4::Context->config("enable_plugins") ) { + + my @plugins = Koha::Plugins->new->GetPlugins({ + method => 'opac_detail_xslt_variables', + }); + + if (@plugins) { + foreach my $plugin ( @plugins ) { + try { + my $plugin_variables = $plugin->opac_detail_xslt_variables( + { + biblio_id => $biblionumber, + lang => $lang, + patron_id => $borrowernumber + } + ); + $variables = { %$variables, %$plugin_variables }; + } + catch { + warn "$_"; + }; + } + } + } + $template->param( XSLTBloc => XSLTParse4Display( $biblionumber, $record, "OPACXSLTDetailsDisplay", 1, undef, diff --git a/opac/opac-search.pl b/opac/opac-search.pl index 2f2043e77c..3a512f830b 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -29,6 +29,7 @@ use Modern::Perl; ## load Koha modules use C4::Context; use List::MoreUtils q/any/; +use Try::Tiny; use Data::Dumper; # TODO remove @@ -60,6 +61,7 @@ use Koha::Ratings; use Koha::Virtualshelves; use Koha::Library::Groups; use Koha::Patrons; +use Koha::Plugins; use Koha::SearchFields; use POSIX qw(ceil floor strftime); @@ -647,6 +649,29 @@ if (C4::Context->preference('OpacHiddenItemsExceptions')){ } my $variables = { anonymous_session => ($borrowernumber) ? 0 : 1 }; +if ( C4::Context->config("enable_plugins") ) { + + my @plugins = Koha::Plugins->new->GetPlugins({ + method => 'opac_results_xslt_variables', + }); + + if (@plugins) { + foreach my $plugin ( @plugins ) { + try { + my $plugin_variables = $plugin->opac_results_xslt_variables( + { + lang => $lang, + patron_id => $borrowernumber + } + ); + $variables = { %$variables, %$plugin_variables }; + } + catch { + warn "$_"; + }; + } + } +} for (my $i=0;$i<@servers;$i++) { my $server = $servers[$i]; -- 2.39.5