/** * 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 canGetAdditionalWhereClause() { $fakeConfigurationArray['plugin.']['tx_solr.'] = array('index.' => array('queue.' => array('pages' => 1, 'pages.' => array(), 'custom.' => array('additionalWhereClause' => '1=1')))); $configuration = new TypoScriptConfiguration($fakeConfigurationArray); $this->assertEquals('', $configuration->getIndexQueueAdditionalWhereClauseByConfigurationName('pages')); $this->assertEquals(' AND 1=1', $configuration->getIndexQueueAdditionalWhereClauseByConfigurationName('custom')); $this->assertEquals('', $configuration->getIndexQueueAdditionalWhereClauseByConfigurationName('notconfigured')); }