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