init
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Esun3d\LanguageUrlStoreResolver\Model;
|
||||
|
||||
use Magento\Framework\App\Config\ScopeConfigInterface;
|
||||
use Magento\Store\Model\ScopeInterface;
|
||||
|
||||
class Config
|
||||
{
|
||||
private const XML_PATH_ENABLED = 'language_url_store_resolver/general/enabled';
|
||||
private const XML_PATH_MARKET_COOKIE_NAME = 'language_url_store_resolver/general/market_cookie_name';
|
||||
private const XML_PATH_MARKET_COOKIE_LIFETIME = 'language_url_store_resolver/general/market_cookie_lifetime';
|
||||
|
||||
private const DEFAULT_COOKIE_NAME = 'market';
|
||||
private const DEFAULT_COOKIE_LIFETIME = 2592000;
|
||||
|
||||
/**
|
||||
* @var string[]
|
||||
*/
|
||||
private $skipPrefixes = [
|
||||
'admin',
|
||||
'rest',
|
||||
'graphql',
|
||||
'soap',
|
||||
'static',
|
||||
'media',
|
||||
'pub',
|
||||
'stores/store',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var ScopeConfigInterface
|
||||
*/
|
||||
private $scopeConfig;
|
||||
|
||||
public function __construct(ScopeConfigInterface $scopeConfig)
|
||||
{
|
||||
$this->scopeConfig = $scopeConfig;
|
||||
}
|
||||
|
||||
public function isEnabled(): bool
|
||||
{
|
||||
return $this->scopeConfig->isSetFlag(self::XML_PATH_ENABLED, ScopeInterface::SCOPE_STORE);
|
||||
}
|
||||
|
||||
public function getMarketCookieName(): string
|
||||
{
|
||||
$cookieName = trim((string)$this->scopeConfig->getValue(
|
||||
self::XML_PATH_MARKET_COOKIE_NAME,
|
||||
ScopeInterface::SCOPE_STORE
|
||||
));
|
||||
|
||||
return $cookieName !== '' ? $cookieName : self::DEFAULT_COOKIE_NAME;
|
||||
}
|
||||
|
||||
public function getMarketCookieLifetime(): int
|
||||
{
|
||||
$lifetime = (int)$this->scopeConfig->getValue(
|
||||
self::XML_PATH_MARKET_COOKIE_LIFETIME,
|
||||
ScopeInterface::SCOPE_STORE
|
||||
);
|
||||
|
||||
return $lifetime > 0 ? $lifetime : self::DEFAULT_COOKIE_LIFETIME;
|
||||
}
|
||||
|
||||
public function shouldSkipPath(string $path): bool
|
||||
{
|
||||
$path = strtolower(trim($path, '/'));
|
||||
|
||||
foreach ($this->skipPrefixes as $prefix) {
|
||||
if ($path === $prefix || strpos($path, $prefix . '/') === 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user