From 7111c53be539ed237af624297cfbecd6c3f055d6 Mon Sep 17 00:00:00 2001
From: Alexander Purr <purr@ub.uni-leipzig.de>
Date: Thu, 4 Aug 2022 16:30:57 +0200
Subject: [PATCH] refs #22148 [fid_adlr] vf6 changelog

* remove static factories for record drivers, see also 21615
* additional: remove factory entries in module.config for not explicit overridden record drivers
* feedback form url error
** create policy back url by using route
** not vf6-upgrade specific

* add UBL internal docker mailer for ALPHA configuration
** easier testing
** all vufind mails will be send and redirect to itself (docker.ub.intern.uni-leipzig.de)
---
 fid_adlr/alpha/config/vufind/config.ini       |  6 +-
 module/fid_adlr/config/module.config.php      | 12 +---
 ... RecordDriverWithSearchServiceFactory.php} | 57 +++++++++----------
 themes/fid_adlr/templates/feedback/form.phtml |  2 +-
 4 files changed, 34 insertions(+), 43 deletions(-)
 rename module/fid_adlr/src/RecordDriver/{Factory.php => RecordDriverWithSearchServiceFactory.php} (53%)

diff --git a/fid_adlr/alpha/config/vufind/config.ini b/fid_adlr/alpha/config/vufind/config.ini
index 8a8920a698c..aedf53a6c31 100644
--- a/fid_adlr/alpha/config/vufind/config.ini
+++ b/fid_adlr/alpha/config/vufind/config.ini
@@ -43,4 +43,8 @@ method = fid
 recover_password = true
 
 [Database]
-database = "mysql://vufind_adlr_link:8RKfWChHvJu2dtVhmOm5@localhost/vufind_adlr_link"
\ No newline at end of file
+database = "mysql://vufind_adlr_link:8RKfWChHvJu2dtVhmOm5@localhost/vufind_adlr_link"
+
+[Mail]
+host            = docker.ub.intern.uni-leipzig.de
+port            = 25
\ No newline at end of file
diff --git a/module/fid_adlr/config/module.config.php b/module/fid_adlr/config/module.config.php
index 25068d76986..da3910a05bd 100644
--- a/module/fid_adlr/config/module.config.php
+++ b/module/fid_adlr/config/module.config.php
@@ -98,16 +98,8 @@ $config = [
         'plugin_managers'              => [
             'recorddriver' => [
                 'factories' => [
-                    'fid_adlr\RecordDriver\SolrDefault' => 'fid_adlr\RecordDriver\Factory::getSolrDefault',
-                    'fid_adlr\RecordDriver\SolrMarcFinc'       => 'fid_adlr\RecordDriver\Factory::getSolrMarcFinc',
-                    'solrmarc'           => 'finc\RecordDriver\Factory::getSolrMarc',
-                    'solrmarcfincpda'    => 'finc\RecordDriver\Factory::getSolrMarcFincPDA',
-                    'solrmarcremote'     => 'finc\RecordDriver\Factory::getSolrMarcRemote',
-                    'solrmarcremotefinc' => 'finc\RecordDriver\Factory::getSolrMarcRemoteFinc',
-                    'solrai'             => 'finc\RecordDriver\Factory::getSolrAI',
-                    'solris'             => 'finc\RecordDriver\Factory::getSolrIS',
-                    'solrlido'           => 'finc\RecordDriver\Factory::getSolrLido',
-                    'solrlidondl'        => 'finc\RecordDriver\Factory::getSolrLidoNdl'
+                    'fid_adlr\RecordDriver\SolrDefault' => 'fid_adlr\RecordDriver\RecordDriverWithSearchServiceFactory',
+                    'fid_adlr\RecordDriver\SolrMarcFinc'       => 'fid_adlr\RecordDriver\RecordDriverWithSearchServiceFactory',
                 ],
                 'aliases' => [
                     'VuFind\RecordDriver\SolrDefault' => 'fid_adlr\RecordDriver\SolrDefault',
diff --git a/module/fid_adlr/src/RecordDriver/Factory.php b/module/fid_adlr/src/RecordDriver/RecordDriverWithSearchServiceFactory.php
similarity index 53%
rename from module/fid_adlr/src/RecordDriver/Factory.php
rename to module/fid_adlr/src/RecordDriver/RecordDriverWithSearchServiceFactory.php
index 1065cc0e2d4..791903d12a5 100644
--- a/module/fid_adlr/src/RecordDriver/Factory.php
+++ b/module/fid_adlr/src/RecordDriver/RecordDriverWithSearchServiceFactory.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Record Driver Factory Class
+ * Factory for solr record driver with search service
  *
  * PHP version 7
  *
@@ -21,54 +21,49 @@
  *
  * @category VuFind
  * @package  RecordDrivers
- * @author   Robert Lange <lange@ub.uni-leipzig.de>
+ * @author   Alexander Purr <purr@ub.uni-leipzig.de>
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
- * @link     https://vufind.org/wiki/development:plugins:hierarchy_components Wiki
+ * @link     https://vufind.org/wiki/development Wiki
  */
 namespace fid_adlr\RecordDriver;
 
-use fid_adlr\RecordDriver\SolrDefault;
 use Interop\Container\ContainerInterface;
+use Zend\ServiceManager\Factory\FactoryInterface;
 
 /**
- * Record Driver Factory Class
+ * Factory for solr record driver with search service
  *
  * @category VuFind
  * @package  RecordDrivers
- * @author   Robert Lange <lange@ub.uni-leipzig.de>
+ * @author   Alexander Purr <purr@ub.uni-leipzig.de>
  * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
- * @link     https://vufind.org/wiki/development:plugins:hierarchy_components Wiki
+ * @link     https://vufind.org/wiki/development Wiki
  */
-class Factory
+class RecordDriverWithSearchServiceFactory implements FactoryInterface
 {
     /**
-     * Factory for SolrDefault record driver.
+     * Create an record driver object
      *
-     * @param ContainerInterface $container Service manager.
+     * @param ContainerInterface $container     Service manager
+     * @param string             $requestedName Service being created
+     * @param null|array         $options       Extra options (optional)
      *
-     * @return SolrDefault
-     */
-    public static function getSolrDefault(ContainerInterface $container)
-    {
-        $driver = new SolrDefault(
-            $container->get('VuFind\Config')->get('config'),
-            null,
-            $container->get('VuFind\Config')->get('searches')
-        );
-        $driver->attachSearchService($container->get('VuFind\Search'));
-        return $driver;
-    }
-
-    /**
-     * Factory for SolrMarcFinc record driver.
-     *
-     * @param ContainerInterface $container Service manager.
+     * @return object
      *
-     * @return SolrMarcFinc
+     * @throws ServiceNotFoundException if unable to resolve the service.
+     * @throws ServiceNotCreatedException if an exception is raised when
+     * creating a service.
+     * @throws ContainerException if any other error occurs
      */
-    public static function getSolrMarcFinc(ContainerInterface $container)
-    {
-        $driver = new SolrMarcFinc(
+    public function __invoke(
+        ContainerInterface $container,
+        $requestedName,
+        array $options = null
+    ) {
+        if ($options !== null) {
+            throw new \Exception('Unexpected options sent to factory!');
+        }
+        $driver = new $requestedName(
             $container->get('VuFind\Config')->get('config'),
             null,
             $container->get('VuFind\Config')->get('searches')
diff --git a/themes/fid_adlr/templates/feedback/form.phtml b/themes/fid_adlr/templates/feedback/form.phtml
index c96e9391945..e9242e7813b 100644
--- a/themes/fid_adlr/templates/feedback/form.phtml
+++ b/themes/fid_adlr/templates/feedback/form.phtml
@@ -107,7 +107,7 @@ $helpPost = isset($help['post']) ? $this->translate($help['post']) : null;
             <?=
             $this->translate(
                 'email_contact_policy',
-                ['%%policy_link%%' => '<a target="_blank" href="'. $this->url('fid/user/policy') . '?backUrl=' . rawurlencode($this->url()) . '">' . $this->transEsc('fid::policy') . '</a>']
+                ['%%policy_link%%' => '<a target="_blank" href="'. $this->url('fid/user/policy') . '?backUrl=' . rawurlencode($this->url('feedback-form',['id'=>'PreselectSite'])) . '">' . $this->transEsc('fid::policy') . '</a>']
             );
             ?>*
         </label>
-- 
GitLab