Skip to content

Commit 1707562

Browse files
committed
Add array key existence checks to prevent loads of PHP warnings
1 parent 4c5529a commit 1707562

File tree

1 file changed

+31
-21
lines changed

1 file changed

+31
-21
lines changed

Classes/Service/SolrServiceProvider.php

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ public function isExtendedSearch()
165165
$result = ((bool) $this->requestArguments['extended']);
166166
} elseif (array_key_exists('q', $this->requestArguments)) {
167167
foreach ($this->settings['queryFields'] as $fieldInfo) {
168-
if ($fieldInfo['extended']
168+
if (array_key_exists('extended', $fieldInfo)
169169
&& array_key_exists($fieldInfo['id'], $this->requestArguments['q'])
170170
&& $this->requestArguments['q'][$fieldInfo['id']]
171171
) {
@@ -354,7 +354,7 @@ protected function addFacetQueries(): void
354354
}
355355
}
356356

357-
if (1 === (int) $facet['excludeOwnFilter']) {
357+
if (array_key_exists('excludeOwnFilter', $facet) && 1 === (int) $facet['excludeOwnFilter']) {
358358
$queryForFacet->addExclude($this->tagForFacet($facetID));
359359
}
360360
} else {
@@ -365,11 +365,11 @@ protected function addFacetQueries(): void
365365
->setSort($facet['sortOrder']);
366366
}
367367

368-
if (1 == $facet['excludeOwnFilter']) {
368+
if (array_key_exists('excludeOwnFilter', $facet) && 1 === $facet['excludeOwnFilter']) {
369369
$queryForFacet->addExclude($this->tagForFacet($facetID));
370370
}
371371

372-
if (1 === $facet['showMissing']) {
372+
if (array_key_exists('showMissing', $facet) && 1 === $facet['showMissing']) {
373373
$queryForFacet->setMissing(true);
374374
}
375375
} else {
@@ -389,7 +389,7 @@ protected function addFacetQueries(): void
389389

390390
protected function addFeatures(): void
391391
{
392-
if ($this->settings['features']['eDisMax']) {
392+
if (array_key_exists('features', $this->settings) && $this->settings['features']['eDisMax']) {
393393
$this->addEDisMax();
394394
}
395395
}
@@ -410,7 +410,7 @@ protected function addHighlighting(array $arguments): void
410410
$highlight = $this->query->getHighlighting();
411411

412412
// Configure highlight queries.
413-
if ($highlightConfig['query']) {
413+
if (array_key_exists('query', $highlightConfig) && $highlightConfig['query']) {
414414
$queryWords = [];
415415
if ($highlightConfig['useQueryTerms'] && array_key_exists('q', $arguments)) {
416416
$queryParameters = $arguments['q'];
@@ -420,9 +420,9 @@ protected function addHighlighting(array $arguments): void
420420
$queryArguments = $queryParameters[$fieldID];
421421
$queryTerms = null;
422422
if (is_array($queryArguments) && array_key_exists(
423-
'alternate',
424-
$queryArguments
425-
) && array_key_exists('queryAlternate', $fieldInfo)
423+
'alternate',
424+
$queryArguments
425+
) && array_key_exists('queryAlternate', $fieldInfo)
426426
) {
427427
if (array_key_exists('term', $queryArguments)) {
428428
$queryTerms = $queryArguments['term'];
@@ -474,10 +474,12 @@ protected function addHighlighting(array $arguments): void
474474
$highlight->addFields(implode(',', $highlightConfig['fields']));
475475

476476
// Configure the fragment length.
477-
$highlight->setFragSize((int) $highlightConfig['fragsize']);
477+
if (array_key_exists('fragsize', $highlightConfig)) {
478+
$highlight->setFragSize((int)$highlightConfig['fragsize']);
479+
}
478480

479481
// Set up alternative fields.
480-
if ($highlightConfig['alternateFields']) {
482+
if (array_key_exists('alternateFields', $highlightConfig) && $highlightConfig['alternateFields']) {
481483
foreach ($highlightConfig['alternateFields'] as $fieldName => $alternateFieldName) {
482484
$highlightField = $highlight->getField($fieldName);
483485
if ($highlightField instanceof Field) {
@@ -569,10 +571,12 @@ protected function addSortOrdersToTemplate(array $arguments): void
569571
}
570572
}
571573

572-
if ($arguments['sort'] && array_key_exists($arguments['sort'], $sortOptions['menu'])) {
574+
if (array_key_exists('sort', $arguments) && array_key_exists($arguments['sort'], $sortOptions['menu']) && $arguments['sort']) {
573575
$sortOptions['selected'] = $arguments['sort'];
574-
} else {
576+
} else if (array_key_exists('default', $sortOptions)) {
575577
$sortOptions['selected'] = $sortOptions['default'];
578+
} else {
579+
$sortOptions['selected'] = 'is asc';
576580
}
577581
}
578582

@@ -971,7 +975,7 @@ protected function queryComponentsForQueryParameters(array $queryParameters): ar
971975
$queryFields = $this->settings['queryFields'];
972976
foreach ($queryFields as $fieldInfo) {
973977
$fieldID = $fieldInfo['id'];
974-
if ($fieldID && $queryParameters[$fieldID]) {
978+
if ($fieldID && array_key_exists($fieldID, $queryParameters) && null !== $queryParameters[$fieldID]) {
975979
// Extract array of query terms from the different structures:
976980
// a) just a single string (e.g. text field)
977981
// b) array of strings (e.g. date range field)
@@ -993,8 +997,10 @@ protected function queryComponentsForQueryParameters(array $queryParameters): ar
993997
}
994998

995999
// Fill in pre-configured default values if they exist and the field is empty.
996-
$defaults = $fieldInfo['default'];
997-
if ($defaults) {
1000+
if (array_key_exists('default', $fieldInfo)) {
1001+
$defaults = $fieldInfo['default'];
1002+
}
1003+
if (isset($defaults)) {
9981004
if (!is_array($defaults)) {
9991005
$defaults = [$defaults];
10001006
}
@@ -1118,19 +1124,23 @@ protected function setFields(array $arguments): void
11181124
// Use field list from query parameters or from defaults.
11191125
if (array_key_exists('data-fields', $arguments) && $arguments['data-fields']) {
11201126
$fields = explode(',', $arguments['data-fields']);
1121-
} elseif ($fieldsConfig['default']) {
1127+
} elseif (array_key_exists('default', $arguments) && $fieldsConfig['default']) {
11221128
$fields = array_values($fieldsConfig['default']);
11231129
}
11241130

11251131
// If allowed fields are configured, keep only those.
1126-
$allowedFields = $fieldsConfig['allow'];
1127-
if ($allowedFields) {
1132+
if (array_key_exists('allow', $fieldsConfig) && $fieldsConfig['allow']) {
1133+
$allowedFields = $fieldsConfig['allow'];
1134+
}
1135+
if (isset($allowedFields)) {
11281136
$fields = array_intersect($fields, $allowedFields);
11291137
}
11301138

11311139
// If disallowed fields are configured, remove those.
1132-
$disallowedFields = $fieldsConfig['disallow'];
1133-
if ($disallowedFields) {
1140+
if (array_key_exists('disallow', $fieldsConfig) && $fieldsConfig['disallow']) {
1141+
$disallowedFields = $fieldsConfig['disallow'];
1142+
}
1143+
if (isset($disallowedFields)) {
11341144
$fields = array_diff($fields, $disallowedFields);
11351145
}
11361146

0 commit comments

Comments
 (0)