From d50ef02309580ca61d12c808e82b609c2bd8a41f Mon Sep 17 00:00:00 2001 From: Fabian Gassen Date: Wed, 5 Jun 2024 13:55:20 +0200 Subject: [PATCH] Fix #1: Could not find a Solr connection for root page [1] and language [0] -> make default Language configurable --- Classes/IndexQueue/Indexer.php | 6 +++++- Classes/System/Configuration/ExtensionConfiguration.php | 9 +++++++++ ext_conf_template.txt | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Classes/IndexQueue/Indexer.php b/Classes/IndexQueue/Indexer.php index 562d98e883..0b6f807ed4 100644 --- a/Classes/IndexQueue/Indexer.php +++ b/Classes/IndexQueue/Indexer.php @@ -30,6 +30,7 @@ use ApacheSolrForTypo3\Solr\FrontendEnvironment\Tsfe; use ApacheSolrForTypo3\Solr\IndexQueue\Exception\IndexingException; use ApacheSolrForTypo3\Solr\NoSolrConnectionFoundException; +use ApacheSolrForTypo3\Solr\System\Configuration\ExtensionConfiguration; use ApacheSolrForTypo3\Solr\System\Logging\SolrLogManager; use ApacheSolrForTypo3\Solr\System\Records\Pages\PagesRepository; use ApacheSolrForTypo3\Solr\System\Solr\Document\Document; @@ -81,6 +82,8 @@ class Indexer extends AbstractIndexer protected SolrLogManager $logger; protected EventDispatcherInterface $eventDispatcher; + protected ExtensionConfiguration $extensionConfiguration; + public function __construct( array $options = [], PagesRepository $pagesRepository = null, @@ -97,6 +100,7 @@ public function __construct( $this->frontendEnvironment = $frontendEnvironment ?? GeneralUtility::makeInstance(FrontendEnvironment::class); $this->logger = $logger ?? GeneralUtility::makeInstance(SolrLogManager::class, __CLASS__); $this->eventDispatcher = $eventDispatcher ?? GeneralUtility::makeInstance(EventDispatcherInterface::class); + $this->extensionConfiguration = GeneralUtility::makeInstance(ExtensionConfiguration::class); } /** @@ -610,7 +614,7 @@ protected function getFallbackOrder(Site $site, int $languageId): array */ protected function getDefaultLanguageUid(Item $item, array $rootPageRecord, array $siteLanguages): int { - $defaultLanguageUid = 0; + $defaultLanguageUid = $this->extensionConfiguration->getDefaultLanguageUid(); if (($rootPageRecord['l18n_cfg'] & 1) == 1 && count($siteLanguages) == 1 && $siteLanguages[min(array_keys($siteLanguages))] > 0) { $defaultLanguageUid = $siteLanguages[min(array_keys($siteLanguages))]; } elseif (($rootPageRecord['l18n_cfg'] & 1) == 1 && count($siteLanguages) > 1) { diff --git a/Classes/System/Configuration/ExtensionConfiguration.php b/Classes/System/Configuration/ExtensionConfiguration.php index d59f5b1b4a..b09eba34e8 100644 --- a/Classes/System/Configuration/ExtensionConfiguration.php +++ b/Classes/System/Configuration/ExtensionConfiguration.php @@ -161,4 +161,13 @@ protected function getConfigurationOrDefaultValue(string $key, mixed $defaultVal { return $this->configuration[$key] ?? $defaultValue; } + + /** + * Returns the desired default language uid + * @return int + */ + public function getDefaultLanguageId(): int + { + return (int)$this->getConfigurationOrDefaultValue('defaultLanguageUid', 0); + } } diff --git a/ext_conf_template.txt b/ext_conf_template.txt index 328442545e..91d03b13c6 100644 --- a/ext_conf_template.txt +++ b/ext_conf_template.txt @@ -10,6 +10,9 @@ includeGlobalQParameterInCacheHash = 0 # cat=basic/enable/b1; type=boolean; label=LLL:EXT:solr/Resources/Private/Language/locallang_be.xlf:extConf.useConfigurationFromClosestTemplate useConfigurationFromClosestTemplate = 0 +# cat=basic/enable/60; type=int+; label=Default Language Uid +defaultLanguageUid = 0 + # cat=Monitoring/enable/c1; type=boolean; label=LLL:EXT:solr/Resources/Private/Language/locallang_be.xlf:extConf.useConfigurationTrackRecordsOutsideSiteroot useConfigurationTrackRecordsOutsideSiteroot = 1 @@ -23,4 +26,5 @@ monitoringType = 0 enableRouteEnhancer = 0 # cat=advanced/enable/e; type=boolean; label=LLL:EXT:solr/Resources/Private/Language/locallang_be.xlf:extConf.allowSelfSignedCertificates -allowSelfSignedCertificates = 0 \ No newline at end of file +allowSelfSignedCertificates = 0 +