/** * Retrieves the name of the Indexing Queue Configuration for a record * * @param string $recordTable Table to read from * @param int $recordUid Id of the record * @return string Name of indexing configuration */ protected function getIndexingConfigurationName($recordTable, $recordUid) { $name = $recordTable; $indexingConfigurations = $this->solrConfiguration->getEnabledIndexQueueConfigurationNames(); foreach ($indexingConfigurations as $indexingConfigurationName) { if (!$this->solrConfiguration->getIndexQueueConfigurationIsEnabled($indexingConfigurationName)) { // ignore disabled indexing configurations continue; } $tableToIndex = $this->solrConfiguration->getIndexQueueTableNameOrFallbackToConfigurationName($indexingConfigurationName); if ($tableToIndex === $recordTable) { $recordWhereClause = $this->solrConfiguration->getIndexQueueAdditionalWhereClauseByConfigurationName($indexingConfigurationName); $record = BackendUtility::getRecord($recordTable, $recordUid, '*', $recordWhereClause); if (!empty($record)) { // we found a record which matches the conditions $name = $indexingConfigurationName; // FIXME currently returns after the first configuration match break; } } } return $name; }
/** * @test */ public function canGetIndexQueueTableOrFallbackToConfigurationName() { $fakeConfigurationArray['plugin.']['tx_solr.'] = array('index.' => array('queue.' => array('pages.' => array(), 'custom.' => array('table' => 'tx_model_custom')))); $configuration = new TypoScriptConfiguration($fakeConfigurationArray); $customTableExpected = $configuration->getIndexQueueTableNameOrFallbackToConfigurationName('pages'); $this->assertSame($customTableExpected, 'pages', 'Can not fallback to configurationName'); $customTableExpected = $configuration->getIndexQueueTableNameOrFallbackToConfigurationName('custom'); $this->assertSame($customTableExpected, 'tx_model_custom', 'Usage of custom table tx_model_custom was expected'); }