Skip to content

Commit 2075ba8

Browse files
Construct helper via factory
1 parent 6d31212 commit 2075ba8

File tree

4 files changed

+87
-2
lines changed

4 files changed

+87
-2
lines changed

module/VuFind/config/module.config.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,7 @@
530530
'VuFind\RateLimiter\Turnstile\Turnstile' => 'VuFind\RateLimiter\Turnstile\TurnstileFactory',
531531
'VuFind\Ratings\RatingsService' => 'VuFind\Ratings\RatingsServiceFactory',
532532
'VuFind\Recommend\PluginManager' => 'VuFind\ServiceManager\AbstractPluginManagerFactory',
533+
'VuFind\Recommend\Helper\Between' => 'Laminas\ServiceManager\Factory\InvokableFactory',
533534
'VuFind\Record\Cache' => 'VuFind\Record\CacheFactory',
534535
'VuFind\Record\FallbackLoader\PluginManager' => 'VuFind\ServiceManager\AbstractPluginManagerFactory',
535536
'VuFind\Record\Loader' => 'VuFind\Record\LoaderFactory',

module/VuFind/src/VuFind/View/Helper/Root/Recommend.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,15 @@ class Recommend extends \Laminas\View\Helper\AbstractHelper
4545
{
4646
use ClassBasedTemplateRendererTrait;
4747

48+
/**
49+
* Constructor
50+
*
51+
* @param Between $between Between helper
52+
*/
53+
public function __construct(protected Between $between)
54+
{
55+
}
56+
4857
/**
4958
* Render the output of a recommendation module.
5059
*
@@ -81,6 +90,6 @@ public function __invoke(
8190
*/
8291
public function getBetweenHelper()
8392
{
84-
return new Between();
93+
return $this->between;
8594
}
8695
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
3+
/**
4+
* Recommend helper factory.
5+
*
6+
* PHP version 8
7+
*
8+
* Copyright (C) Villanova University 2025.
9+
*
10+
* This program is free software; you can redistribute it and/or modify
11+
* it under the terms of the GNU General Public License version 2,
12+
* as published by the Free Software Foundation.
13+
*
14+
* This program is distributed in the hope that it will be useful,
15+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17+
* GNU General Public License for more details.
18+
*
19+
* You should have received a copy of the GNU General Public License
20+
* along with this program; if not, see
21+
* <https://www.gnu.org/licenses/>.
22+
*
23+
* @category VuFind
24+
* @package View_Helpers
25+
* @author Maccabee Levine <msl321@lehigh.edu>
26+
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
27+
* @link https://vufind.org/wiki/development Wiki
28+
*/
29+
30+
namespace VuFind\View\Helper\Root;
31+
32+
use Laminas\ServiceManager\Exception\ServiceNotCreatedException;
33+
use Laminas\ServiceManager\Exception\ServiceNotFoundException;
34+
use Laminas\ServiceManager\Factory\FactoryInterface;
35+
use Psr\Container\ContainerExceptionInterface as ContainerException;
36+
use Psr\Container\ContainerInterface;
37+
38+
/**
39+
* Recommend helper factory.
40+
*
41+
* @category VuFind
42+
* @package View_Helpers
43+
* @author Maccabee Levine <msl321@lehigh.edu>
44+
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License
45+
* @link https://vufind.org/wiki/development Wiki
46+
*/
47+
class RecommendFactory implements FactoryInterface
48+
{
49+
/**
50+
* Create an object
51+
*
52+
* @param ContainerInterface $container Service manager
53+
* @param string $requestedName Service being created
54+
* @param null|array $options Extra options (optional)
55+
*
56+
* @return object
57+
*
58+
* @throws ServiceNotFoundException if unable to resolve the service.
59+
* @throws ServiceNotCreatedException if an exception is raised when
60+
* creating a service.
61+
* @throws ContainerException&\Throwable if any other error occurs
62+
*/
63+
public function __invoke(
64+
ContainerInterface $container,
65+
$requestedName,
66+
?array $options = null
67+
) {
68+
if (!empty($options)) {
69+
throw new \Exception('Unexpected options passed to factory.');
70+
}
71+
return new $requestedName(
72+
$container->get(\VuFind\Recommend\Helper\Between::class),
73+
);
74+
}
75+
}

themes/root/theme.config.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
'VuFind\View\Helper\Root\Printms' => 'Laminas\ServiceManager\Factory\InvokableFactory',
7070
'VuFind\View\Helper\Root\ProxyUrl' => 'VuFind\View\Helper\Root\ProxyUrlFactory',
7171
'VuFind\View\Helper\Root\Ratings' => 'VuFind\View\Helper\Root\RatingsFactory',
72-
'VuFind\View\Helper\Root\Recommend' => 'Laminas\ServiceManager\Factory\InvokableFactory',
72+
'VuFind\View\Helper\Root\Recommend' => 'VuFind\View\Helper\Root\RecommendFactory',
7373
'VuFind\View\Helper\Root\Record' => 'VuFind\View\Helper\Root\RecordFactory',
7474
'VuFind\View\Helper\Root\RecordDataFormatter' => 'VuFind\View\Helper\Root\RecordDataFormatterFactory',
7575
'VuFind\View\Helper\Root\RecordLinker' => 'VuFind\View\Helper\Root\RecordLinkerFactory',

0 commit comments

Comments
 (0)