123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backend\Model\Locale;
- /**
- * Backend locale model
- * @api
- * @since 100.0.2
- */
- class Resolver extends \Magento\Framework\Locale\Resolver
- {
- /**
- * @var \Magento\Backend\Model\Session
- */
- protected $_session;
- /**
- * @var \Magento\Backend\Model\Locale\Manager
- */
- protected $_localeManager;
- /**
- * @var \Magento\Framework\App\RequestInterface
- */
- protected $_request;
- /**
- * @var \Magento\Framework\Validator\Locale
- */
- protected $_localeValidator;
- /**
- * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
- * @param string $defaultLocalePath
- * @param string $scopeType
- * @param \Magento\Backend\Model\Session $session
- * @param Manager $localeManager
- * @param \Magento\Framework\App\RequestInterface $request
- * @param \Magento\Framework\Validator\Locale $localeValidator
- * @param null $locale
- * @SuppressWarnings(PHPMD.ExcessiveParameterList)
- */
- public function __construct(
- \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
- $defaultLocalePath,
- $scopeType,
- \Magento\Backend\Model\Session $session,
- \Magento\Backend\Model\Locale\Manager $localeManager,
- \Magento\Framework\App\RequestInterface $request,
- \Magento\Framework\Validator\Locale $localeValidator,
- $locale = null
- ) {
- $this->_session = $session;
- $this->_localeManager = $localeManager;
- $this->_request = $request;
- $this->_localeValidator = $localeValidator;
- parent::__construct($scopeConfig, $defaultLocalePath, $scopeType, $locale);
- }
- /**
- * Set locale
- *
- * @param string $locale
- * @return $this
- */
- public function setLocale($locale = null)
- {
- $forceLocale = $this->_request->getParam('locale', null);
- if (!$this->_localeValidator->isValid($forceLocale)) {
- $forceLocale = false;
- }
- $sessionLocale = $this->_session->getSessionLocale();
- $userLocale = $this->_localeManager->getUserInterfaceLocale();
- $localeCodes = array_filter([$forceLocale, $sessionLocale, $userLocale]);
- if (count($localeCodes)) {
- $locale = reset($localeCodes);
- }
- return parent::setLocale($locale);
- }
- }
|