Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
HelpText
100.00% covered (success)
100.00%
18 / 18
100.00% covered (success)
100.00%
3 / 3
6
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getWarnings
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 render
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
1 / 1
4
1<?php
2
3/**
4 * "Load help text" view helper
5 *
6 * PHP version 8
7 *
8 * Copyright (C) Villanova University 2010.
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, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22 *
23 * @category VuFind
24 * @package  View_Helpers
25 * @author   Demian Katz <demian.katz@villanova.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
30namespace VuFind\View\Helper\Root;
31
32/**
33 * "Load help text" view helper
34 *
35 * @category VuFind
36 * @package  View_Helpers
37 * @author   Demian Katz <demian.katz@villanova.edu>
38 * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
39 * @link     https://vufind.org/wiki/development Wiki
40 */
41class HelpText extends \Laminas\View\Helper\AbstractHelper
42{
43    /**
44     * The content view helper
45     *
46     * @var Content
47     */
48    protected $contentHelper;
49
50    /**
51     * Warning messages
52     *
53     * @var array
54     */
55    protected $warnings = [];
56
57    /**
58     * Constructor
59     *
60     * @param Content $content The content view helper
61     */
62    public function __construct(Content $content)
63    {
64        $this->contentHelper = $content;
65    }
66
67    /**
68     * Get warnings generated during rendering (if any).
69     *
70     * @return array
71     */
72    public function getWarnings()
73    {
74        return $this->warnings;
75    }
76
77    /**
78     * Render a help template (or return false if none found).
79     *
80     * @param string $name    Template name to render
81     * @param array  $context Variables needed for rendering template; these will
82     * be temporarily added to the global view context, then reverted after the
83     * template is rendered (default = empty).
84     *
85     * @return string|bool
86     */
87    public function render($name, $context = [])
88    {
89        // Sanitize the template name to include only alphanumeric characters
90        // or underscores.
91        $safeTopic = preg_replace('/[^\w]/', '', $name);
92
93        $this->warnings = [];
94        $html = $this->contentHelper->renderTranslated(
95            $safeTopic,
96            'HelpTranslations',
97            $context,
98            $pageDetails,
99            '%pathPrefix%/%language%/%pageName%',
100        );
101
102        if (!$html) {
103            $this->warnings[] = 'help_page_missing';
104        } elseif (
105            isset($pageDetails['pageLocatorDetails']['matchType'])
106            && $pageDetails['pageLocatorDetails']['matchType'] != 'language'
107        ) {
108            $this->warnings[] = 'Sorry, but the help you requested is '
109                . 'unavailable in your language.';
110        }
111
112        return $html;
113    }
114}