88
99namespace Magento \Framework \Translate ;
1010
11- class Inline implements \Magento \Framework \Translate \InlineInterface
11+ use Magento \Framework \App \Area ;
12+ use Magento \Framework \App \ObjectManager ;
13+ use Magento \Framework \App \ScopeInterface ;
14+ use Magento \Framework \App \ScopeResolverInterface ;
15+ use Magento \Framework \App \State ;
16+ use Magento \Framework \Exception \LocalizedException ;
17+ use Magento \Framework \Translate \Inline \ConfigInterface ;
18+ use Magento \Framework \Translate \Inline \ParserInterface ;
19+ use Magento \Framework \Translate \Inline \StateInterface ;
20+ use Magento \Framework \UrlInterface ;
21+ use Magento \Framework \View \Element \Template ;
22+ use Magento \Framework \View \LayoutInterface ;
23+
24+ /**
25+ * Translate Inline Class
26+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
27+ */
28+ class Inline implements InlineInterface
1229{
1330 /**
1431 * Indicator to hold state of whether inline translation is allowed
@@ -18,7 +35,7 @@ class Inline implements \Magento\Framework\Translate\InlineInterface
1835 protected $ isAllowed ;
1936
2037 /**
21- * @var \Magento\Framework\Translate\Inline\ ParserInterface
38+ * @var ParserInterface
2239 */
2340 protected $ parser ;
2441
@@ -30,22 +47,22 @@ class Inline implements \Magento\Framework\Translate\InlineInterface
3047 protected $ isScriptInserted = false ;
3148
3249 /**
33- * @var \Magento\Framework\ UrlInterface
50+ * @var UrlInterface
3451 */
3552 protected $ url ;
3653
3754 /**
38- * @var \Magento\Framework\View\ LayoutInterface
55+ * @var LayoutInterface
3956 */
4057 protected $ layout ;
4158
4259 /**
43- * @var \Magento\Framework\Translate\Inline\ ConfigInterface
60+ * @var ConfigInterface
4461 */
4562 protected $ config ;
4663
4764 /**
48- * @var \Magento\Framework\App\ ScopeResolverInterface
65+ * @var ScopeResolverInterface
4966 */
5067 protected $ scopeResolver ;
5168
@@ -72,52 +89,48 @@ class Inline implements \Magento\Framework\Translate\InlineInterface
7289 /**
7390 * @var array
7491 */
75- private $ allowedAreas = [
76- \Magento \Framework \App \Area::AREA_FRONTEND ,
77- \Magento \Framework \App \Area::AREA_ADMINHTML
78- ];
92+ private $ allowedAreas = [Area::AREA_FRONTEND , Area::AREA_ADMINHTML ];
7993
8094 /**
81- * @var \Magento\Framework\App\ State
95+ * @var State
8296 */
8397 private $ appState ;
8498
8599 /**
86- * Initialize inline translation model
87- *
88- * @param \Magento\Framework\App\ScopeResolverInterface $scopeResolver
89- * @param \Magento\Framework\UrlInterface $url
90- * @param \Magento\Framework\View\LayoutInterface $layout
100+ * @param ScopeResolverInterface $scopeResolver
101+ * @param UrlInterface $url
102+ * @param LayoutInterface $layout
91103 * @param Inline\ConfigInterface $config
92104 * @param Inline\ParserInterface $parser
93105 * @param Inline\StateInterface $state
94- * @param \Magento\Framework\App\State $appState
95106 * @param string $templateFileName
96107 * @param string $translatorRoute
97- * @param null $scope
108+ * @param string|null $scope
109+ * @param State|null $appState
110+ * @SuppressWarnings(PHPMD.ExcessiveParameterList)
98111 */
99112 public function __construct (
100- \Magento \Framework \App \ScopeResolverInterface $ scopeResolver ,
101- \Magento \Framework \UrlInterface $ url ,
102- \Magento \Framework \View \LayoutInterface $ layout ,
103- \Magento \Framework \Translate \Inline \ConfigInterface $ config ,
104- \Magento \Framework \Translate \Inline \ParserInterface $ parser ,
105- \Magento \Framework \Translate \Inline \StateInterface $ state ,
106- \Magento \Framework \App \State $ appState ,
113+ ScopeResolverInterface $ scopeResolver ,
114+ UrlInterface $ url ,
115+ LayoutInterface $ layout ,
116+ ConfigInterface $ config ,
117+ ParserInterface $ parser ,
118+ StateInterface $ state ,
107119 $ templateFileName = '' ,
108120 $ translatorRoute = '' ,
109- $ scope = null
121+ $ scope = null ,
122+ ?State $ appState = null
110123 ) {
111124 $ this ->scopeResolver = $ scopeResolver ;
112125 $ this ->url = $ url ;
113126 $ this ->layout = $ layout ;
114127 $ this ->config = $ config ;
115128 $ this ->parser = $ parser ;
116129 $ this ->state = $ state ;
117- $ this ->appState = $ appState ;
118130 $ this ->templateFileName = $ templateFileName ;
119131 $ this ->translatorRoute = $ translatorRoute ;
120132 $ this ->scope = $ scope ;
133+ $ this ->appState = $ appState ?: ObjectManager::getInstance ()->get (State::class);
121134 }
122135
123136 /**
@@ -128,13 +141,13 @@ public function __construct(
128141 public function isAllowed ()
129142 {
130143 if ($ this ->isAllowed === null ) {
131- if (!$ this ->scope instanceof \Magento \Framework \App \ScopeInterface) {
132- $ scope = $ this ->scopeResolver ->getScope ($ this ->scope );
133- }
144+ $ scope = $ this ->scope instanceof ScopeInterface ? null : $ this ->scopeResolver ->getScope ($ this ->scope );
145+
134146 $ this ->isAllowed = $ this ->config ->isActive ($ scope )
135147 && $ this ->config ->isDevAllowed ($ scope )
136148 && $ this ->isAreaAllowed ();
137149 }
150+
138151 return $ this ->state ->isEnabled () && $ this ->isAllowed ;
139152 }
140153
@@ -151,7 +164,7 @@ public function getParser()
151164 /**
152165 * Replace translation templates with HTML fragments
153166 *
154- * @param array|string & $body
167+ * @param array|string $body
155168 * @param bool $isJson
156169 * @return $this
157170 */
@@ -206,7 +219,9 @@ protected function addInlineScript()
206219 return ;
207220 }
208221 if (!$ this ->isScriptInserted ) {
209- $ this ->getParser ()->setContent (str_ireplace ('</body> ' , $ this ->getInlineScript () . '</body> ' , $ content ));
222+ $ this ->getParser ()->setContent (
223+ str_ireplace ('</body> ' , $ this ->getInlineScript () . '</body> ' , $ content )
224+ );
210225 $ this ->isScriptInserted = true ;
211226 }
212227 }
@@ -221,8 +236,8 @@ protected function addInlineScript()
221236 */
222237 protected function getInlineScript ()
223238 {
224- /** @var $block \Magento\Framework\View\Element\ Template */
225- $ block = $ this ->layout ->createBlock (\ Magento \ Framework \ View \ Element \ Template::class);
239+ /** @var $block Template */
240+ $ block = $ this ->layout ->createBlock (Template::class);
226241
227242 $ block ->setAjaxUrl ($ this ->getAjaxUrl ());
228243 $ block ->setTemplate ($ this ->templateFileName );
@@ -255,15 +270,10 @@ protected function stripInlineTranslations(&$body)
255270 foreach ($ body as &$ part ) {
256271 $ this ->stripInlineTranslations ($ part );
257272 }
258- } else {
259- if (is_string ($ body )) {
260- $ body = preg_replace (
261- '# ' . \Magento \Framework \Translate \Inline \ParserInterface::REGEXP_TOKEN . '# ' ,
262- '$1 ' ,
263- $ body
264- );
265- }
273+ } elseif (is_string ($ body )) {
274+ $ body = preg_replace ('# ' . ParserInterface::REGEXP_TOKEN . '# ' , '$1 ' , $ body );
266275 }
276+
267277 return $ this ;
268278 }
269279
@@ -272,14 +282,11 @@ protected function stripInlineTranslations(&$body)
272282 *
273283 * @return bool
274284 */
275- private function isAreaAllowed ()
285+ private function isAreaAllowed (): bool
276286 {
277287 try {
278- return in_array (
279- $ this ->appState ->getAreaCode (),
280- $ this ->allowedAreas
281- );
282- } catch (\Magento \Framework \Exception \LocalizedException $ e ) {
288+ return in_array ($ this ->appState ->getAreaCode (), $ this ->allowedAreas , true );
289+ } catch (LocalizedException $ e ) {
283290 return false ;
284291 }
285292 }
0 commit comments