b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / Mirasvit / SearchElasticNative / Model / Index /
Filename/home/Mirasvit/SearchElasticNative/Model/Index/IndexNameResolver.php
Size3.97 kb
Permissionrw-r--r--
Ownerroot : root
Create time01-Jul-2024 20:52
Last modified06-Apr-2021 18:06
Last accessed22-Aug-2025 07:27
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Mirasvit
*
* This source file is subject to the Mirasvit Software License, which is available at https://mirasvit.com/license/.
* Do not edit or add to this file if you wish to upgrade the to newer versions in the future.
* If you wish to customize this module for your needs.
* Please refer to http://www.magentocommerce.com for more information.
*
* @category Mirasvit
* @package mirasvit/module-search
* @version 1.0.151
* @copyright Copyright (C) 2020 Mirasvit (https://mirasvit.com/)
*/



namespace Mirasvit\SearchElasticNative\Model\Index;

use Magento\Framework\Search\Request\Dimension;
use Magento\Elasticsearch\Model\Adapter\Index\IndexNameResolver as ElasticIndexNameResolver;
use Magento\Elasticsearch\SearchAdapter\ConnectionManager;
use Magento\Elasticsearch\Model\Config;
use Psr\Log\LoggerInterface;
use Mirasvit\Core\Service\CompatibilityService;

class IndexNameResolver extends ElasticIndexNameResolver
{
/**
* @var \Magento\CatalogSearch\Model\Indexer\Scope\ScopeProxy
*/
private $indexScopeResolver;

/**
* {@inheritDoc}
*/
public function __construct(
ConnectionManager $connectionManager,
Config $clientConfig,
LoggerInterface $logger,
$options = []
) {
parent::__construct($connectionManager, $clientConfig, $logger, $options);
$this->indexScopeResolver = CompatibilityService::getObjectManager()
->create('Magento\CatalogSearch\Model\Indexer\Scope\ScopeProxy');
}

/**
* {@inheritDoc}
* Added support for indexer level to @param array $preparedIndex
*/
public function getIndexName($storeId, $mappedIndexerId, array $preparedIndex)
{
if (isset($preparedIndex[$storeId][$mappedIndexerId])) {
return $preparedIndex[$storeId][$mappedIndexerId];
} else {
$indexName = $this->getIndexFromAlias($storeId, $mappedIndexerId);
if (empty($indexName)) {
$indexName = $this->getIndexPattern($storeId, $mappedIndexerId) . 1;
}
}
return $indexName;
}

/**
* {@inheritDoc}
*/
public function getIndexNameForAlias($storeId, $mappedIndexerId)
{
if ($mappedIndexerId == Config::ELASTICSEARCH_TYPE_DEFAULT) {
return parent::getIndexNameForAlias($storeId, $mappedIndexerId);
} else {
$dimension = new Dimension('scope', $storeId);
$indexName = $this->indexScopeResolver->resolve($mappedIndexerId, [$dimension]);
return $this->getIndexNamespace() . '_' . $indexName;
}
}

/**
* {@inheritDoc}
*/
public function getIndexPattern($storeId, $mappedIndexerId)
{
if ($mappedIndexerId == Config::ELASTICSEARCH_TYPE_DEFAULT) {
return parent::getIndexPattern($storeId, $mappedIndexerId);
} else {
$dimension = new Dimension('scope', $storeId);
$indexName = $this->indexScopeResolver->resolve($mappedIndexerId, [$dimension]);
return $this->getIndexNamespace() . '_' . $indexName . '_v';
}
}

/**
* {@inheritDoc}
*/
public function getIndexFromAlias($storeId, $mappedIndexerId)
{
if ($mappedIndexerId == Config::ELASTICSEARCH_TYPE_DEFAULT) {
return parent::getIndexFromAlias($storeId, $mappedIndexerId);
} else {
$storeIndex = '';
$indexPattern = $this->getIndexPattern($storeId, $mappedIndexerId);
$namespace = $this->getIndexNameForAlias($storeId, $mappedIndexerId);
if ($this->client->existsAlias($namespace)) {
$alias = $this->client->getAlias($namespace);
$indices = array_keys($alias);
foreach ($indices as $index) {
if (strpos($index, $indexPattern) === 0) {
$storeIndex = $index;
break;
}
}
}
return $storeIndex;
}
}
}