From 3769f8227ee772996c65c115de56d4180a8e484e Mon Sep 17 00:00:00 2001
From: Alexander Purr <purr@ub.uni-leipzig.de>
Date: Thu, 9 Jan 2020 15:23:20 +0100
Subject: [PATCH] refs #16669 [fid_adlr] add LiberoId into feedback mail if
 user is logged in

* get LiberoId via Client
* add FeedbackControllerDelegatorFactory
---
 module/fid_adlr/config/module.config.php      |  4 ++++
 .../src/Controller/FeedbackController.php     | 21 +++++++++++++++++++
 .../FeedbackControllerDelegatorFactory.php    | 18 ++++++++++++++++
 3 files changed, 43 insertions(+)
 create mode 100644 module/fid_adlr/src/Controller/FeedbackControllerDelegatorFactory.php

diff --git a/module/fid_adlr/config/module.config.php b/module/fid_adlr/config/module.config.php
index 675d65eccf7..17ab0e16121 100644
--- a/module/fid_adlr/config/module.config.php
+++ b/module/fid_adlr/config/module.config.php
@@ -23,6 +23,7 @@
 use fid\Controller\RecordControllerDelegatorFactory;
 use fid\FormModel\PasswordChangeModel;
 use fid_adlr\Controller\FeedbackController;
+use fid_adlr\Controller\FeedbackControllerDelegatorFactory;
 use fid_adlr\Controller\MyResearchController;
 use fid_adlr\Controller\MyResearchControllerFactory;
 use fid_adlr\Controller\RecordController;
@@ -55,6 +56,9 @@ $config = [
             RecordController::class => [
                 RecordControllerDelegatorFactory::class,
             ],
+            FeedbackController::class => [
+                FeedbackControllerDelegatorFactory::class,
+            ],
         ],
     ],
     'view_helpers' => [
diff --git a/module/fid_adlr/src/Controller/FeedbackController.php b/module/fid_adlr/src/Controller/FeedbackController.php
index 17e347f2add..6c9395a37bb 100644
--- a/module/fid_adlr/src/Controller/FeedbackController.php
+++ b/module/fid_adlr/src/Controller/FeedbackController.php
@@ -21,6 +21,7 @@
 
 namespace fid_adlr\Controller;
 
+use fid\Service\Client;
 use VuFind\Controller\FeedbackController as BaseFeedbackController;
 use Zend\View\Model\ViewModel;
 
@@ -37,6 +38,19 @@ use Zend\View\Model\ViewModel;
  */
 class FeedbackController extends BaseFeedbackController
 {
+    /**
+     * @var Client
+     */
+    protected $client;
+
+    /**
+     * @param Client $client
+     */
+    public function setClient(Client $client): void
+    {
+        $this->client = $client;
+    }
+
     /**
      * Display Feedback form.
      *
@@ -150,6 +164,13 @@ class FeedbackController extends BaseFeedbackController
     protected function sendFeedback($form, $postParams): array
     {
         list($messageParams, $template) = $form->formatEmailMessage($postParams);
+        if (!empty($this->getUser()) && $user = $this->client->requestUserDetails())
+        {
+            $messageParams["LiberoID"] = [
+                "type" => "text",
+                "value" => $user->getLiberoId()
+            ];
+        }
         $emailMessage = $this->getViewRenderer()->partial($template, ['fields' => $messageParams]);
 
         list($senderName, $senderEmail) = $this->getSender();
diff --git a/module/fid_adlr/src/Controller/FeedbackControllerDelegatorFactory.php b/module/fid_adlr/src/Controller/FeedbackControllerDelegatorFactory.php
new file mode 100644
index 00000000000..c23a126f5d9
--- /dev/null
+++ b/module/fid_adlr/src/Controller/FeedbackControllerDelegatorFactory.php
@@ -0,0 +1,18 @@
+<?php
+namespace fid_adlr\Controller;
+
+use fid\Service\Client;
+use Interop\Container\ContainerInterface;
+use Zend\ServiceManager\Factory\DelegatorFactoryInterface;
+
+class FeedbackControllerDelegatorFactory implements DelegatorFactoryInterface
+{
+    public function __invoke(ContainerInterface $container, $name, callable $callback, array $options = null)
+    {
+        /** @var FeedbackController $instance */
+        $instance = call_user_func($callback);
+        $instance->setClient($container->get(Client::class));
+
+        return $instance;
+    }
+}
\ No newline at end of file
-- 
GitLab