config = $config; } /** * Remove index dependency, if it needed, on run reindexing by specifics indexes. * * @param Provider $provider * @param array $dependencies * @param string $indexerId * @return array * @see \Magento\Indexer\Console\Command\IndexerReindexCommand::getIndexers() * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterGetIndexerIdsToRunBefore(Provider $provider, array $dependencies, string $indexerId): array { if ($this->isFilteringNeeded($indexerId, CatalogSearchFulltextIndexer::INDEXER_ID)) { $dependencies = array_diff($dependencies, [CatalogInventoryStockIndexer::INDEXER_ID]); } return $dependencies; } /** * Remove index dependency, if it needed, on reindex triggers. * * @param Provider $provider * @param array $dependencies * @param string $indexerId * @return array * @see \Magento\Indexer\Model\Indexer\DependencyDecorator * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterGetIndexerIdsToRunAfter(Provider $provider, array $dependencies, string $indexerId): array { if ($this->isFilteringNeeded($indexerId, CatalogInventoryStockIndexer::INDEXER_ID)) { $dependencies = array_diff($dependencies, [CatalogSearchFulltextIndexer::INDEXER_ID]); } return $dependencies; } /** * @param string $currentIndexerId * @param string $targetIndexerId * @return bool */ private function isFilteringNeeded(string $currentIndexerId, string $targetIndexerId): bool { return (!$this->config->isElasticsearchEnabled() && $targetIndexerId === $currentIndexerId); } }