Skip to content

Commit 56a388b

Browse files
committed
ACP2E-1999: remove hard dependency of theme module from config module
1 parent cf69a9e commit 56a388b

File tree

3 files changed

+51
-4
lines changed

3 files changed

+51
-4
lines changed

app/code/Magento/Config/Console/Command/LocaleEmulator.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public function __construct(
3131
private readonly RendererInterface $phraseRenderer,
3232
private readonly ResolverInterface $localeResolver,
3333
private readonly ResolverInterface $defaultLocaleResolver,
34-
private readonly Design $design
3534
) {
3635
}
3736

@@ -47,17 +46,14 @@ public function emulate(callable $callback, ?string $locale = null): mixed
4746
$locale ??= $this->defaultLocaleResolver->getLocale();
4847
$initialLocale = $this->localeResolver->getLocale();
4948
$initialPhraseRenderer = Phrase::getRenderer();
50-
$initialTheme = $this->design->getDesignTheme();
5149
Phrase::setRenderer($this->phraseRenderer);
52-
$this->design->setDefaultDesignTheme();
5350
$this->localeResolver->setLocale($locale);
5451
$this->translate->setLocale($locale);
5552
$this->translate->loadData();
5653
try {
5754
$result = $callback();
5855
} finally {
5956
Phrase::setRenderer($initialPhraseRenderer);
60-
$this->design->setDesignTheme($initialTheme);
6157
$this->localeResolver->setLocale($initialLocale);
6258
$this->translate->setLocale($initialLocale);
6359
$this->translate->loadData();
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Theme\Plugin;
8+
9+
use Magento\Theme\Model\View\Design;
10+
11+
class LocaleEmulator
12+
{
13+
/**
14+
* @var Design
15+
*/
16+
private $design;
17+
18+
public function __construct(Design $design)
19+
{
20+
$this->design = $design;
21+
}
22+
23+
/**
24+
* Set default design theme
25+
*
26+
* @param \Magento\Config\Console\Command\LocaleEmulator $subject
27+
* @param callable $proceed
28+
* @param callable $callback
29+
* @param string|null $locale
30+
* @return void
31+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
32+
*/
33+
public function aroundEmulate(
34+
\Magento\Config\Console\Command\LocaleEmulator $subject,
35+
callable $proceed,
36+
callable $callback,
37+
?string $locale = null
38+
): void {
39+
$initialTheme = $this->design->getDesignTheme();
40+
$this->design->setDefaultDesignTheme();
41+
try {
42+
$proceed($callback, $locale);
43+
} finally {
44+
$this->design->setDesignTheme($initialTheme);
45+
}
46+
}
47+
}

app/code/Magento/Theme/etc/di.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,4 +330,8 @@
330330
<type name="Magento\Framework\Data\Collection">
331331
<plugin name="currentPageDetection" type="Magento\Theme\Plugin\Data\Collection" />
332332
</type>
333+
<type name="Magento\Config\Console\Command\LocaleEmulator">
334+
<plugin name="themeForLocaleEmulator" type="Magento\Theme\Plugin\LocaleEmulator"/>
335+
</type>
336+
333337
</config>

0 commit comments

Comments
 (0)