Skip to content

Commit

Permalink
[FEATURE] Support stdWrap for: facets.*.dateRange|numericRange->start…
Browse files Browse the repository at this point in the history
…|end|gap

This feture allows the stdWrap functions on facets.*.dateRange|numericRange
* start
* end
* gap


Relates: TYPO3-Solr#2712
  • Loading branch information
dkd-kaehm authored and dkd-friedrich committed Mar 7, 2024
1 parent 6db55f1 commit 6d16a09
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

use ApacheSolrForTypo3\Solr\Domain\Search\ResultSet\Facets\FacetQueryBuilderInterface;
use ApacheSolrForTypo3\Solr\System\Configuration\TypoScriptConfiguration;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;

class DateRangeFacetQueryBuilder implements FacetQueryBuilderInterface
{
Expand All @@ -40,18 +42,39 @@ public function build(string $facetName, TypoScriptConfiguration $configuration)
if (!empty($facetConfiguration['dateRange.']['start'])) {
$start = $facetConfiguration['dateRange.']['start'];
}
if ($facetConfiguration['dateRange.']['start.'] ?? false) {
$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$start = $cObj->stdWrap(
$facetConfiguration['dateRange.']['start'],
$facetConfiguration['dateRange.']['start.']
);
}
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.start'] = $start;

$end = 'NOW/DAY+1YEAR';
if (!empty($facetConfiguration['dateRange.']['end'])) {
$end = $facetConfiguration['dateRange.']['end'];
}
if ($facetConfiguration['dateRange.']['end.'] ?? false) {
$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$end = $cObj->stdWrap(
$facetConfiguration['dateRange.']['end'],
$facetConfiguration['dateRange.']['end.']
);
}
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.end'] = $end;

$gap = '+1DAY';
if (!empty($facetConfiguration['dateRange.']['gap'])) {
$gap = $facetConfiguration['dateRange.']['gap'];
}
if ($facetConfiguration['dateRange.']['gap.'] ?? false) {
$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$gap = $cObj->stdWrap(
$facetConfiguration['dateRange.']['gap'],
$facetConfiguration['dateRange.']['gap.']
);
}
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.gap'] = $gap;

return $facetParameters;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

use ApacheSolrForTypo3\Solr\Domain\Search\ResultSet\Facets\FacetQueryBuilderInterface;
use ApacheSolrForTypo3\Solr\System\Configuration\TypoScriptConfiguration;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;

class NumericRangeFacetQueryBuilder implements FacetQueryBuilderInterface
{
Expand All @@ -36,9 +38,35 @@ public function build(string $facetName, TypoScriptConfiguration $configuration)
}
$facetParameters['facet.range'][] = $tag . $facetConfiguration['field'];

$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.start'] = $facetConfiguration['numericRange.']['start'];
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.end'] = $facetConfiguration['numericRange.']['end'];
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.gap'] = $facetConfiguration['numericRange.']['gap'];
$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);

$start = $facetConfiguration['numericRange.']['start'];
if ($facetConfiguration['numericRange.']['start.'] ?? false) {
$start = $cObj->stdWrap(
$facetConfiguration['numericRange.']['start'],
$facetConfiguration['numericRange.']['start.']
);
}

$end = $facetConfiguration['numericRange.']['end'];
if ($facetConfiguration['numericRange.']['end.'] ?? false) {
$end = $cObj->stdWrap(
$facetConfiguration['numericRange.']['end'],
$facetConfiguration['numericRange.']['end.']
);
}

$gap = $facetConfiguration['numericRange.']['gap'];
if ($facetConfiguration['numericRange.']['gap.'] ?? false) {
$gap = $cObj->stdWrap(
$facetConfiguration['numericRange.']['gap'],
$facetConfiguration['numericRange.']['gap.']
);
}

$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.start'] = $start;
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.end'] = $end;
$facetParameters['f.' . $facetConfiguration['field'] . '.facet.range.gap'] = $gap;

return $facetParameters;
}
Expand Down

0 comments on commit 6d16a09

Please sign in to comment.