Migrate static search plugin to simpler solution using get parameter

This commit is contained in:
Björn Fromme
2022-03-15 17:25:34 +01:00
parent 4f283eec48
commit 7a8e472cfd
5 changed files with 29 additions and 7 deletions
@@ -87,6 +87,13 @@ class SearchController extends ActionController
public function initializeSearchresultAction()
{
// Process encoded filtersettings from static search result
$encodedFilterSettings = GeneralUtility::_GET('f');
if ($encodedFilterSettings) {
$filterSettingsEncoder = new FilterSettingsEncoder();
$filterSettings = $filterSettingsEncoder->decode($encodedFilterSettings);
$this->request->setArgument('filterSettings', $filterSettings);
}
$forcedConceptUids = GeneralUtility::trimExplode(',', $this->settings['forcedConceptUids'], true);
$this->processFilterSettingsArgument($forcedConceptUids);
}
@@ -34,8 +34,11 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
use TYPO3\CMS\Core\Exception\SiteNotFoundException;
use TYPO3\CMS\Core\Http\NormalizedParams;
use TYPO3\CMS\Core\Http\RedirectResponse;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
@@ -44,7 +47,6 @@ class StaticSearchParamsMiddleware implements MiddlewareInterface
use DbConnectionTrait;
public const PREFIX_PATH_SEGMENT = 'reiseauswahl';
public const SEARCH_RESULT_URI = '/skireisen/suche/ergebnis/';
public const REDIRECT_RESPONSE_CODE = 302;
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
@@ -74,7 +76,7 @@ class StaticSearchParamsMiddleware implements MiddlewareInterface
])
;
$row = $query->execute()->fetch();
$row = $query->execute()->fetchAssociative();
if (!$row) {
return $handler->handle($request);
@@ -88,9 +90,21 @@ class StaticSearchParamsMiddleware implements MiddlewareInterface
$filterSettings = $filterService->getFilterSettingsFromStaticSearchParams($row);
$filterSettingsEncoder = new FilterSettingsEncoder();
$encodedFilterSettings = rawurlencode($filterSettingsEncoder->encode($filterSettings));
$encodedFilterSettings = $filterSettingsEncoder->encode($filterSettings);
$redirectUri = self::SEARCH_RESULT_URI . $encodedFilterSettings . '/';
$searchPageUid = GeneralUtility::makeInstance(ExtensionConfiguration::class)
->get('ep_products', 'searchPageUid');
/** @var SiteFinder $siteFinder */
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
try {
$site = $siteFinder->getSiteByPageId((int)$searchPageUid);
}
catch (SiteNotFoundException $exception) {
return $handler->handle($request);
}
$redirectUri = $site->getRouter()->generateUri($searchPageUid, ['f' => $encodedFilterSettings]);
return new RedirectResponse($redirectUri, self::REDIRECT_RESPONSE_CODE);
}
@@ -0,0 +1,3 @@
# customsubcategory=100=General
# cat=epproducts/100/100; type=int; label=Searchresult PID
searchPageUid = 0
@@ -301,6 +301,7 @@ $boot = function () {
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'tx_epproducts_ajax[months]';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'tx_epproducts_ajax[month]';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'tx_epproducts_ajax[year]';
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'][] = 'f';
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['PassthroughMapper'] =
\EP\EpProducts\Routing\Aspect\PassthroughMapper::class;
@@ -1,3 +0,0 @@
# customsubcategory=100=General
# cat=eptheme/100/100; type=boolean; label=Compress HTML
compressHtml = 0