Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 22
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
BasemapConfig
0.00% covered (danger)
0.00%
0 / 22
0.00% covered (danger)
0.00%
0 / 4
90
0.00% covered (danger)
0.00%
0 / 1
 getDefaultOptions
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 getBasemap
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
20
 getMapSelectionBasemap
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 getMapTabBasemap
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3/**
4 * Basemap Configuration Module
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  GeoFeatures
25 * @author   Leila Gonzales <lmg@agiweb.org>
26 * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
27 * @link     https://vufind.org/wiki/development:plugins:recommendation_modules Wiki
28 */
29
30namespace VuFind\GeoFeatures;
31
32/**
33 * Basemap Configuration Class
34 *
35 * @category VuFind
36 * @package  GeoFeatures
37 * @author   Leila Gonzales <lmg@agiweb.org>
38 * @license  http://opensource.org/licenses/gpl-2.0.php GNU General Public License
39 * @link     https://vufind.org/wiki/development:plugins:hierarchy_components Wiki
40 */
41class BasemapConfig extends AbstractConfig
42{
43    /**
44     * Request origin
45     *
46     * @var string
47     */
48    protected $requestOrigin;
49
50    /**
51     * Valid options to retrieve from configuration
52     *
53     * @var string[]
54     */
55    protected $options = ['basemap_url', 'basemap_attribution'];
56
57    /**
58     * Set default options
59     *
60     * @return array
61     */
62    protected function getDefaultOptions()
63    {
64        return [
65            'basemap_url' => 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png',
66            'basemap_attribution' => '<a href="https://wikimediafoundation.org/'
67                . 'wiki/Maps_Terms_of_Use">Wikimedia</a> | &copy; <a '
68                . 'href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
69        ];
70    }
71
72    /**
73     * Get the basemap configuration settings.
74     *
75     * @param string $origin Origin of request MapTab or MapSelection
76     *
77     * @return array
78     */
79    public function getBasemap($origin)
80    {
81        $options = [];
82        if ($origin == 'MapSelection') {
83            $options = $this->getMapSelectionBasemap();
84        } elseif ($origin == 'MapTab') {
85            $options = $this->getMapTabBasemap();
86        }
87        // Fail over to geofeatures.ini [Basemap] if no other settings found:
88        if (empty($options)) {
89            $options = $this->getOptions('geofeatures', 'Basemap', $this->options);
90        }
91        // Fill in any missing defaults:
92        return $options + $this->getDefaultOptions();
93    }
94
95    /**
96     * Get the basemap configuration settings for MapSelection.
97     *
98     * @return array
99     */
100    protected function getMapSelectionBasemap()
101    {
102        // Check geofeatures.ini [MapSelection]
103        $options = $this->getOptions('geofeatures', 'MapSelection', $this->options);
104
105        // Fail over to legacy configuration if empty
106        return empty($options)
107            ? $this->getOptions('searches', 'MapSelection', $this->options)
108            : $options;
109    }
110
111    /**
112     * Get the basemap configuration settings for MapTab.
113     *
114     * @return array
115     */
116    protected function getMapTabBasemap()
117    {
118        // Check geofeatures.ini [MapTab]
119        $options = $this->getOptions('geofeatures', 'MapTab', $this->options);
120
121        // Fail over to legacy configuration if empty
122        return empty($options)
123            ? $this->getOptions('config', 'Content', $this->options)
124            : $options;
125    }
126}