Bug 25961: Add hooks for plugins to inject variables to OPAC XSLT
[koha-equinox.git] / opac / opac-detail.pl
index ce091b7..66a12d8 100755 (executable)
@@ -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,