*/ class ConfigurationManager implements SingletonInterface { /** * TypoScript Configurations * * @var array */ protected $typoScriptConfigurations = []; /** * Resets the state of the configuration manager. * * @return void */ public function reset() { $this->typoScriptConfigurations = []; } /** * Retrieves the TypoScriptConfiguration object from an configuration array, pageId, languageId and TypoScript * path that is used in in the current context. * * @param array $configurationArray * @param int $contextPageId * @param int $contextLanguageId * @param string $contextTypoScriptPath * @return TypoScriptConfiguration */ public function getTypoScriptConfiguration(array $configurationArray = null, $contextPageId = null, $contextLanguageId = 0, $contextTypoScriptPath = '') { if ($configurationArray == null) { if (isset($this->typoScriptConfigurations['default'])) { $configurationArray = $this->typoScriptConfigurations['default']; } else { if (!empty($GLOBALS['TSFE']->tmpl->setup) && is_array($GLOBALS['TSFE']->tmpl->setup)) { $configurationArray = $GLOBALS['TSFE']->tmpl->setup; $this->typoScriptConfigurations['default'] = $configurationArray; } } } if (!is_array($configurationArray)) { $configurationArray = []; } if (!isset($configurationArray['plugin.']['tx_meilisearch.'])) { $configurationArray['plugin.']['tx_meilisearch.'] = []; } if ($contextPageId === null && !empty($GLOBALS['TSFE']->id)) { $contextPageId = $GLOBALS['TSFE']->id; } $hash = md5(serialize($configurationArray)) . '-' . $contextPageId . '-' . $contextLanguageId . '-' . $contextTypoScriptPath; if (isset($this->typoScriptConfigurations[$hash])) { return $this->typoScriptConfigurations[$hash]; } $this->typoScriptConfigurations[$hash] = $this->getTypoScriptConfigurationInstance($configurationArray, $contextPageId); return $this->typoScriptConfigurations[$hash]; } /** * This method is used to build the TypoScriptConfiguration. * * @param array $configurationArray * @param int|null $contextPageId * @return object */ protected function getTypoScriptConfigurationInstance(array $configurationArray = null, $contextPageId = null) { return GeneralUtility::makeInstance( TypoScriptConfiguration::class, /** @scrutinizer ignore-type */ $configurationArray, /** @scrutinizer ignore-type */ $contextPageId ); } }