Passed
Push — master ( 6ccdbd...5b2198 )
by Matthew
03:01
created

getClusterImageFromPath()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 8
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 17
ccs 0
cts 9
cp 0
crap 20
rs 10
1
<?php
2
3
namespace Dynamic\Locator\React\Extensions;
4
5
use Dynamic\SilverStripeGeocoder\AddressDataExtension;
6
use Dynamic\SilverStripeGeocoder\GoogleGeocoder;
7
use SilverStripe\Admin\LeftAndMain;
8
use SilverStripe\Control\Director;
9
use SilverStripe\Control\HTTPResponse;
10
use SilverStripe\Core\Config\Config;
11
use SilverStripe\Core\Convert;
12
use SilverStripe\Core\Extension;
13
use SilverStripe\Core\Injector\Injector;
14
use SilverStripe\Core\Manifest\ModuleResourceLoader;
15
use SilverStripe\Forms\Schema\FormSchema;
16
use SilverStripe\Security\SecurityToken;
17
use SilverStripe\View\Requirements;
18
use SilverStripe\View\SSViewer;
19
use SilverStripe\View\ThemeResourceLoader;
20
21
/**
22
 * Class LocatorControllerExtension
23
 * @package Dynamic\Locator\React\Extensions
24
 *
25
 * @property \Dynamic\Locator\LocatorController|LocatorControllerExtension|LocatorExtension $owner
26
 */
27
class LocatorControllerExtension extends Extension
28
{
29
30
    /**
31
     * @var array
32
     */
33
    private static $allowed_actions = [
0 ignored issues
show
introduced by
The private property $allowed_actions is not used, and could be removed.
Loading history...
34
        'schema',
35
    ];
36
37
    /**
38
     * @var array
39
     */
40
    private static $dependencies = [
0 ignored issues
show
introduced by
The private property $dependencies is not used, and could be removed.
Loading history...
41
        'FormSchema' => '%$' . FormSchema::class,
42
    ];
43
44
    /**
45
     * Current form schema helper
46
     *
47
     * @var FormSchema
48
     */
49
    protected $schema = null;
50
51
    /**
52
     * Get form schema helper
53
     *
54
     * @return FormSchema
55
     */
56 3
    public function getFormSchema()
57
    {
58 3
        return $this->schema;
59
    }
60
61
    /**
62
     * Set form schema helper for this controller
63
     *
64
     * @param FormSchema $schema
65
     * @return $this
66
     */
67 3
    public function setFormSchema(FormSchema $schema)
68
    {
69 3
        $this->schema = $schema;
70 3
        return $this;
71
    }
72
73
    /**
74
     *
75
     */
76 1
    public function onBeforeInit()
77
    {
78
        // stops script from loading
79 1
        Requirements::block('jquery-locator');
80
81
        // require i18n translation stuff
82 1
        Requirements::javascript('silverstripe/admin: client/dist/js/i18n.js');
83 1
        Requirements::add_i18n_javascript('dynamic/silverstripe-locator-react: client/lang');
0 ignored issues
show
Deprecated Code introduced by
The function SilverStripe\View\Requir...::add_i18n_javascript() has been deprecated. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

83
        /** @scrutinizer ignore-deprecated */ Requirements::add_i18n_javascript('dynamic/silverstripe-locator-react: client/lang');
Loading history...
84
85
        // because we need another library when using autocomplete
86 1
        if ($this->owner->Autocomplete) {
0 ignored issues
show
Bug Best Practice introduced by
The property Autocomplete does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
87
            // google maps api key
88 1
            $key = Config::inst()->get(GoogleGeocoder::class, 'map_api_key');
89 1
            Requirements::block("https://maps.google.com/maps/api/js?key={$key}");
90 1
            Requirements::javascript("https://maps.google.com/maps/api/js?key={$key}&libraries=places");
91
        }
92
93 1
        Requirements::customScript("
94
            window.ss = window.ss || {};
95 1
            window.ss.config = " . $this->owner->getClientConfig() . ";
0 ignored issues
show
Bug introduced by
The method getClientConfig() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

95
            window.ss.config = " . $this->owner->/** @scrutinizer ignore-call */ getClientConfig() . ";

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
96
        ");
97
98 1
        $this->owner->customScript();
0 ignored issues
show
Bug introduced by
The method customScript() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

98
        $this->owner->/** @scrutinizer ignore-call */ 
99
                      customScript();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
99
    }
100
101
    /**
102
     * Generates the custom script for settings
103
     */
104 2
    public function customScript()
105
    {
106 2
        $radii = $this->owner->getShowRadius() ? $this->owner->getRadii() : [];
0 ignored issues
show
Bug introduced by
The method getShowRadius() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

106
        $radii = $this->owner->/** @scrutinizer ignore-call */ getShowRadius() ? $this->owner->getRadii() : [];

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getShowRadius() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

106
        $radii = $this->owner->/** @scrutinizer ignore-call */ getShowRadius() ? $this->owner->getRadii() : [];

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getRadii() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

106
        $radii = $this->owner->getShowRadius() ? $this->owner->/** @scrutinizer ignore-call */ getRadii() : [];

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getRadii() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

106
        $radii = $this->owner->getShowRadius() ? $this->owner->/** @scrutinizer ignore-call */ getRadii() : [];

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
107 2
        $radiiString = json_encode($radii);
108
109 2
        $categories = $this->owner->getUsedCategories();
0 ignored issues
show
Bug introduced by
The method getUsedCategories() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

109
        /** @scrutinizer ignore-call */ 
110
        $categories = $this->owner->getUsedCategories();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getUsedCategories() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

109
        /** @scrutinizer ignore-call */ 
110
        $categories = $this->owner->getUsedCategories();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
110 2
        $categoriesString = $this->owner->categoriesString($categories);
0 ignored issues
show
Bug introduced by
The method categoriesString() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

110
        /** @scrutinizer ignore-call */ 
111
        $categoriesString = $this->owner->categoriesString($categories);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
111
112 2
        $unit = $this->owner->Unit ? $this->owner->Unit : 'm';
0 ignored issues
show
Bug introduced by
The property Unit does not seem to exist on Dynamic\Locator\React\Extensions\LocatorExtension.
Loading history...
Bug Best Practice introduced by
The property Unit does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
113
        // otherwise this is 0 or 1
114 2
        $clusters = $this->owner->Clusters ? 'true' : 'false';
0 ignored issues
show
Bug Best Practice introduced by
The property Clusters does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
115 2
        $autocomplete = $this->owner->Autocomplete ? 'true' : 'false';
0 ignored issues
show
Bug Best Practice introduced by
The property Autocomplete does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
116
117 2
        $stylePath = ModuleResourceLoader::singleton()->resolveURL(
118 2
            $this->owner->getMapStyle()
0 ignored issues
show
Bug introduced by
The method getMapStyle() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

118
            $this->owner->/** @scrutinizer ignore-call */ 
119
                          getMapStyle()

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getMapStyle() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

118
            $this->owner->/** @scrutinizer ignore-call */ 
119
                          getMapStyle()

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
119
        );
120 2
        $searchMarkerIconPath = $this->owner->getSearchIconImage();
0 ignored issues
show
Bug introduced by
The method getSearchIconImage() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

120
        /** @scrutinizer ignore-call */ 
121
        $searchMarkerIconPath = $this->owner->getSearchIconImage();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
121 2
        $markerIconPath = AddressDataExtension::getIconImage(true);
122
123 2
        if ($this->owner->SearchMarkerImageID) {
0 ignored issues
show
Bug Best Practice introduced by
The property SearchMarkerImageID does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
124
            $searchMarkerIconPath = $this->owner->SearchMarkerImage()->URL;
0 ignored issues
show
Bug introduced by
The method SearchMarkerImage() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

124
            $searchMarkerIconPath = $this->owner->/** @scrutinizer ignore-call */ SearchMarkerImage()->URL;

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
125
        }
126 2
        if ($this->owner->DefaultMarkerImageID) {
0 ignored issues
show
Bug Best Practice introduced by
The property DefaultMarkerImageID does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
127
            $markerIconPath = $this->owner->DefaultMarkerImage()->URL;
0 ignored issues
show
Bug introduced by
The method DefaultMarkerImage() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

127
            $markerIconPath = $this->owner->/** @scrutinizer ignore-call */ DefaultMarkerImage()->URL;

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
128
        }
129
130 2
        $clusterImages = json_encode($this->getClusterImages());
131
132
        // force to float
133 2
        $defaultLat = (float)$this->owner->DefaultLat;
0 ignored issues
show
Bug Best Practice introduced by
The property DefaultLat does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
134 2
        $defaultLng = (float)$this->owner->DefaultLng;
0 ignored issues
show
Bug Best Practice introduced by
The property DefaultLng does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. Did you maybe forget to declare it?
Loading history...
135
136 2
        Requirements::customScript("
137
            window.dynamic_locator = {
138 2
                'radii': {$radiiString},
139 2
                'categories': {$categoriesString},
140 2
                'unit': '{$unit}',
141 2
                'limit': {$this->owner->getLimit()},
0 ignored issues
show
Bug introduced by
The method getLimit() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

141
                'limit': {$this->owner->/** @scrutinizer ignore-call */ getLimit()},

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getLimit() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

141
                'limit': {$this->owner->/** @scrutinizer ignore-call */ getLimit()},

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
142 2
                'clusters': {$clusters},
143 2
                'mapStylePath': '{$stylePath}',
144 2
                'searchMarkerImagePath': '{$searchMarkerIconPath}',
145 2
                'markerImagePath': '{$markerIconPath}',
146 2
                'clusterImages': {$clusterImages},
147
                'defaultCenter': {
148 2
                    'lat': {$defaultLat},
149 2
                    'lng': {$defaultLng}
150
                },
151 2
                'autocomplete': {$autocomplete}
152
            };
153 2
        ", 'react-locator');
154
    }
155
156
    /**
157
     * Gets the maker icon image
158
     * @return null|string
159
     * @var boolean $svg if svgs should be included
160
     */
161 2
    public static function getSearchIconImage($svg = true)
162
    {
163
        $folders = [
164 2
            'client/dist/img/',
165
            'client/dist/images/',
166
            'dist/img/',
167
            'dist/images/',
168
            'img/',
169
            'images/',
170
        ];
171
172
        $extensions = [
173 2
            'png',
174
            'jpg',
175
            'jpeg',
176
            'gif',
177
        ];
178
179 2
        if ($svg === true) {
180 2
            array_unshift($extensions, 'svg');
181
        }
182
183 2
        $file = 'mapSearchIcon';
184
185 2
        foreach ($folders as $folder) {
186 2
            foreach ($extensions as $extension) {
187 2
                if ($icon = ThemeResourceLoader::inst()->findThemedResource(
188 2
                    "{$folder}{$file}.{$extension}",
189 2
                    SSViewer::get_themes()
190
                )) {
191 2
                    return ModuleResourceLoader::resourceURL($icon);
192
                }
193
            }
194
        }
195
196 2
        return false;
0 ignored issues
show
Bug Best Practice introduced by
The expression return false returns the type false which is incompatible with the documented return type null|string.
Loading history...
197
    }
198
199
    /**
200
     * @param string $path
201
     * @return bool
202
     */
203
    protected function isResourcePath($path)
204
    {
205
        $path = ltrim($path, '/');
206
        return substr($path, 0, strlen(RESOURCES_DIR)) === RESOURCES_DIR;
207
    }
208
209
    /**
210
     * @param string $path
211
     * @return bool|string
212
     */
213
    protected function getClusterImageFromPath($path)
214
    {
215
        // valid full url
216
        if (filter_var($path, FILTER_VALIDATE_URL)) {
217
            return $path;
218
        }
219
220
        if ($this->owner->isResourcePath($path)) {
0 ignored issues
show
Bug introduced by
The method isResourcePath() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

220
        if ($this->owner->/** @scrutinizer ignore-call */ isResourcePath($path)) {

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
221
            return $path;
222
        }
223
224
        $icon = ThemeResourceLoader::inst()->findThemedResource($path, SSViewer::get_themes());
225
        if ($icon) {
226
            return ModuleResourceLoader::resourceURL($icon);
227
        }
228
229
        return false;
230
    }
231
232
    /**
233
     * @return array|bool
234
     */
235 2
    public function getClusterImages()
236
    {
237 2
        $iconPaths = $this->owner->getFailover()->config()->get('ClusterImages');
0 ignored issues
show
Bug introduced by
The method getFailover() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

237
        $iconPaths = $this->owner->/** @scrutinizer ignore-call */ getFailover()->config()->get('ClusterImages');

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getFailover() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

237
        $iconPaths = $this->owner->/** @scrutinizer ignore-call */ getFailover()->config()->get('ClusterImages');

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
238 2
        $icons = [];
239 2
        if (!$iconPaths) {
240 2
            return $icons;
241
        }
242
243
        foreach ($iconPaths as $path) {
244
            $iconPath = $this->owner->getClusterImageFromPath($path);
0 ignored issues
show
Bug introduced by
The method getClusterImageFromPath() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

244
            /** @scrutinizer ignore-call */ 
245
            $iconPath = $this->owner->getClusterImageFromPath($path);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
245
            if ($iconPath) {
246
                $icons[] = $iconPath;
247
            }
248
        }
249
250
        return $icons;
251
    }
252
253
    /**
254
     * @param $categories
255
     *
256
     * @return string
257
     */
258 3
    public function categoriesString($categories)
259
    {
260 3
        $string = '[';
261 3
        for ($i = 0; $i < $categories->count(); $i++) {
262 1
            $cat = $categories[$i];
263 1
            $ID = $cat->ID;
264 1
            $Name = $cat->Name;
265
            $string .= "{
266 1
                'ID': {$ID},
267 1
                'Name': '{$Name}'
268
            }";
269
270 1
            if ($i !== $categories->count() - 1) {
271 1
                $string .= ',';
272
            }
273
        }
274 3
        $string .= ']';
275
276 3
        return $string;
277
    }
278
279
    /**
280
     * @return string
281
     */
282 1
    public function getClientConfig()
283
    {
284 1
        $token = SecurityToken::inst();
285
286
        $clientConfig = [
287 1
            'name' => get_class($this->owner),
288 1
            'url' => trim($this->owner->Link(), '/'),
0 ignored issues
show
Bug introduced by
The method Link() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

288
            'url' => trim($this->owner->/** @scrutinizer ignore-call */ Link(), '/'),

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method Link() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

288
            'url' => trim($this->owner->/** @scrutinizer ignore-call */ Link(), '/'),

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
289 1
            'baseUrl' => Director::baseURL(),
290 1
            'absoluteBaseUrl' => Director::absoluteBaseURL(),
291 1
            $token->getName() => $token->getValue(),
292
            'sections' => [],
293 1
            'debugging' => $this->owner->config()->get('debugging'),
0 ignored issues
show
Bug introduced by
The method config() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

293
            'debugging' => $this->owner->/** @scrutinizer ignore-call */ config()->get('debugging'),

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method config() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

293
            'debugging' => $this->owner->/** @scrutinizer ignore-call */ config()->get('debugging'),

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
294
        ];
295
296 1
        $clientConfig['sections'][] = Injector::inst()->get(LeftAndMain::class)->getClientConfig();
297
298 1
        $this->owner->extend('updateClientConfig', $clientConfig);
0 ignored issues
show
Bug introduced by
The method extend() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

298
        $this->owner->/** @scrutinizer ignore-call */ 
299
                      extend('updateClientConfig', $clientConfig);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method extend() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

298
        $this->owner->/** @scrutinizer ignore-call */ 
299
                      extend('updateClientConfig', $clientConfig);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
299
300 1
        return Convert::raw2json($clientConfig);
0 ignored issues
show
Deprecated Code introduced by
The function SilverStripe\Core\Convert::raw2json() has been deprecated: 4.4.0:5.0.0 Use json_encode() instead ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

300
        return /** @scrutinizer ignore-deprecated */ Convert::raw2json($clientConfig);

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
301
    }
302
303
    /**
304
     * Gets a JSON schema representing the search form.
305
     *
306
     * @param HTTPRequest $request
0 ignored issues
show
Bug introduced by
The type Dynamic\Locator\React\Extensions\HTTPRequest was not found. Did you mean HTTPRequest? If so, make sure to prefix the type with \.
Loading history...
307
     * @return HTTPResponse
308
     */
309
    public function schema($request)
0 ignored issues
show
Unused Code introduced by
The parameter $request is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

309
    public function schema(/** @scrutinizer ignore-unused */ $request)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
310
    {
311
        return $this->getSchemaResponse("Locator.SearchForm", $this->owner->LocationSearch());
0 ignored issues
show
Bug introduced by
The method LocationSearch() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

311
        return $this->getSchemaResponse("Locator.SearchForm", $this->owner->/** @scrutinizer ignore-call */ LocationSearch());

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method LocationSearch() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

311
        return $this->getSchemaResponse("Locator.SearchForm", $this->owner->/** @scrutinizer ignore-call */ LocationSearch());

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
312
    }
313
314
    /**
315
     * Check if the current request has a X-Formschema-Request header set.
316
     * Used by conditional logic that responds to validation results
317
     *
318
     * @return bool
319
     */
320
    protected function getSchemaRequested()
321
    {
322
        $parts = $this->owner->getRequest()->getHeader(LeftAndMain::SCHEMA_HEADER);
0 ignored issues
show
Bug introduced by
The method getRequest() does not exist on Dynamic\Locator\React\Extensions\LocatorExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

322
        $parts = $this->owner->/** @scrutinizer ignore-call */ getRequest()->getHeader(LeftAndMain::SCHEMA_HEADER);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
Bug introduced by
The method getRequest() does not exist on Dynamic\Locator\React\Ex...atorControllerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

322
        $parts = $this->owner->/** @scrutinizer ignore-call */ getRequest()->getHeader(LeftAndMain::SCHEMA_HEADER);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
323
        return !empty($parts);
324
    }
325
326
    /**
327
     * Generate schema for the given form based on the X-Formschema-Request header value
328
     *
329
     * @param string $schemaID ID for this schema. Required.
330
     * @param Form $form Required for 'state' or 'schema' response
0 ignored issues
show
Bug introduced by
The type Dynamic\Locator\React\Extensions\Form was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
331
     * @param ValidationResult $errors Required for 'error' response
332
     * @param array $extraData Any extra data to be merged with the schema response
333
     * @return HTTPResponse
334
     */
335
    protected function getSchemaResponse($schemaID, $form = null, ValidationResult $errors = null, $extraData = [])
0 ignored issues
show
Bug introduced by
The type Dynamic\Locator\React\Extensions\ValidationResult was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
336
    {
337
        $parts = $this->owner->getRequest()->getHeader(LeftAndMain::SCHEMA_HEADER);
338
        $data = $this
339
            ->getFormSchema()
340
            ->getMultipartSchema($parts, $schemaID, $form, $errors);
341
342
        if ($extraData) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $extraData of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
343
            $data = array_merge($data, $extraData);
344
        }
345
346
        $response = new HTTPResponse(Convert::raw2json($data));
0 ignored issues
show
Deprecated Code introduced by
The function SilverStripe\Core\Convert::raw2json() has been deprecated: 4.4.0:5.0.0 Use json_encode() instead ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

346
        $response = new HTTPResponse(/** @scrutinizer ignore-deprecated */ Convert::raw2json($data));

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
347
        $response->addHeader('Content-Type', 'application/json');
348
        return $response;
349
    }
350
}
351