* @author Timo Hund */ class AbstractWidgetController extends CoreAbstractWidgetController { /** * @var array */ protected $supportedRequestTypes = [WidgetRequest::class]; /** * @var ConfigurationManager */ private $meilisearchConfigurationManager; /** * @var \WapplerSystems\Meilisearch\Mvc\Controller\MeilisearchControllerContext */ protected $controllerContext; /** * @param \WapplerSystems\Meilisearch\System\Configuration\ConfigurationManager */ public function injectMeilisearchConfigurationManager(ConfigurationManager $configurationManager) { $this->meilisearchConfigurationManager = $configurationManager; } /** * Initialize the controller context * * @return \WapplerSystems\Meilisearch\Mvc\Controller\MeilisearchControllerContext ControllerContext to be passed to the view * @api */ protected function buildControllerContext() { /** @var $controllerContext \WapplerSystems\Meilisearch\Mvc\Controller\MeilisearchControllerContext */ $controllerContext = $this->objectManager->get(MeilisearchControllerContext::class); $controllerContext->setRequest($this->request); $controllerContext->setResponse($this->response); if ($this->arguments !== null) { $controllerContext->setArguments($this->arguments); } $controllerContext->setUriBuilder($this->uriBuilder); $typoScriptConfiguration = $this->meilisearchConfigurationManager->getTypoScriptConfiguration(); $controllerContext->setTypoScriptConfiguration($typoScriptConfiguration); $this->setActiveSearchResultSet($controllerContext); return $controllerContext; } /** * @param \WapplerSystems\Meilisearch\Mvc\Controller\MeilisearchControllerContext $controllerContext * @return \WapplerSystems\Meilisearch\Mvc\Controller\MeilisearchControllerContext */ protected function setActiveSearchResultSet($controllerContext) { $resultSetService = $this->initializeSearch($controllerContext->getTypoScriptConfiguration()); $lastResult = $resultSetService->getLastResultSet(); if (!is_null($lastResult)) { $controllerContext->setSearchResultSet($lastResult); } return $controllerContext; } /** * @param TypoScriptConfiguration $typoScriptConfiguration * @return SearchResultSetService */ protected function initializeSearch(TypoScriptConfiguration $typoScriptConfiguration) { /** @var \WapplerSystems\Meilisearch\ConnectionManager $meilisearchConnection */ $meilisearchConnection = GeneralUtility::makeInstance(ConnectionManager::class)->getConnectionByPageId($GLOBALS['TSFE']->id, Util::getLanguageUid(), $GLOBALS['TSFE']->MP); $search = GeneralUtility::makeInstance(Search::class, /** @scrutinizer ignore-type */ $meilisearchConnection); return GeneralUtility::makeInstance( SearchResultSetService::class, /** @scrutinizer ignore-type */ $typoScriptConfiguration, /** @scrutinizer ignore-type */ $search ); } }