diff --git a/vendor/magento/module-store/Model/App/Emulation.php b/vendor/magento/module-store/Model/App/Emulation.php index fe9df22c2433..07f9fc0b22ef 100644 --- a/vendor/magento/module-store/Model/App/Emulation.php +++ b/vendor/magento/module-store/Model/App/Emulation.php @@ -9,33 +9,44 @@ */ namespace Magento\Store\Model\App; +use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Framework\App\ObjectManager; +use Magento\Framework\Locale\ResolverInterface; +use Magento\Framework\Phrase; +use Magento\Framework\Phrase\RendererInterface; use Magento\Framework\Translate\Inline\ConfigInterface; +use Magento\Framework\Translate\Inline\StateInterface; +use Magento\Framework\TranslateInterface; +use Magento\Framework\View\DesignInterface; +use Magento\Store\Model\StoreManagerInterface; +use Psr\Log\LoggerInterface; /** * @api * @since 100.0.2 + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Emulation extends \Magento\Framework\DataObject { /** - * @var \Magento\Store\Model\StoreManagerInterface + * @var StoreManagerInterface */ protected $_storeManager; /** - * @var \Magento\Framework\TranslateInterface + * @var TranslateInterface */ protected $_translate; /** * Core store config * - * @var \Magento\Framework\App\Config\ScopeConfigInterface + * @var ScopeConfigInterface */ protected $_scopeConfig; /** - * @var \Magento\Framework\Locale\ResolverInterface + * @var ResolverInterface */ protected $_localeResolver; @@ -50,7 +61,7 @@ class Emulation extends \Magento\Framework\DataObject protected $inlineConfig; /** - * @var \Magento\Framework\Translate\Inline\StateInterface + * @var StateInterface */ protected $inlineTranslation; @@ -62,39 +73,46 @@ class Emulation extends \Magento\Framework\DataObject private $initialEnvironmentInfo; /** - * @var \Psr\Log\LoggerInterface + * @var LoggerInterface */ private $logger; /** - * @var \Magento\Framework\View\DesignInterface + * @var DesignInterface */ private $_viewDesign; /** - * @param \Magento\Store\Model\StoreManagerInterface $storeManager - * @param \Magento\Framework\View\DesignInterface $viewDesign + * @var RendererInterface + */ + private $phraseRenderer; + + /** + * @param StoreManagerInterface $storeManager + * @param DesignInterface $viewDesign * @param \Magento\Framework\App\DesignInterface $design - * @param \Magento\Framework\TranslateInterface $translate - * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + * @param TranslateInterface $translate + * @param ScopeConfigInterface $scopeConfig * @param ConfigInterface $inlineConfig - * @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation - * @param \Magento\Framework\Locale\ResolverInterface $localeResolver - * @param \Psr\Log\LoggerInterface $logger + * @param StateInterface $inlineTranslation + * @param ResolverInterface $localeResolver + * @param LoggerInterface $logger * @param array $data + * @param RendererInterface|null $phraseRenderer * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( - \Magento\Store\Model\StoreManagerInterface $storeManager, - \Magento\Framework\View\DesignInterface $viewDesign, + StoreManagerInterface $storeManager, + DesignInterface $viewDesign, \Magento\Framework\App\DesignInterface $design, - \Magento\Framework\TranslateInterface $translate, - \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + TranslateInterface $translate, + ScopeConfigInterface $scopeConfig, ConfigInterface $inlineConfig, - \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, - \Magento\Framework\Locale\ResolverInterface $localeResolver, - \Psr\Log\LoggerInterface $logger, - array $data = [] + StateInterface $inlineTranslation, + ResolverInterface $localeResolver, + LoggerInterface $logger, + array $data = [], + ?RendererInterface $phraseRenderer = null ) { $this->_localeResolver = $localeResolver; parent::__construct($data); @@ -106,6 +124,8 @@ public function __construct( $this->inlineConfig = $inlineConfig; $this->inlineTranslation = $inlineTranslation; $this->logger = $logger; + $this->phraseRenderer = $phraseRenderer + ?? ObjectManager::getInstance()->get(RendererInterface::class); } /** @@ -160,8 +180,7 @@ public function startEnvironmentEmulation( $this->_localeResolver->setLocale($newLocaleCode); $this->_translate->setLocale($newLocaleCode); $this->_translate->loadData($area); - - return; + Phrase::setRenderer($this->phraseRenderer); } /** @@ -183,7 +202,7 @@ public function stopEnvironmentEmulation() // Current store needs to be changed right before locale change and after design change $this->_storeManager->setCurrentStore($initialDesign['store']); $this->_restoreInitialLocale($this->initialEnvironmentInfo->getInitialLocaleCode(), $initialDesign['area']); - + Phrase::setRenderer($this->initialEnvironmentInfo->getPhraseRenderer()); $this->initialEnvironmentInfo = null; return $this; } @@ -206,6 +225,8 @@ public function storeCurrentEnvironmentInfo() ] )->setInitialLocaleCode( $this->_localeResolver->getLocale() + )->setPhraseRenderer( + Phrase::getRenderer() ); }