Inline.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. * Translate Inline Phrase renderer
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\Phrase\Renderer;
  9. use Magento\Framework\Phrase\RendererInterface;
  10. use Magento\Framework\TranslateInterface;
  11. use Magento\Framework\Translate\Inline\ProviderInterface;
  12. use Psr\Log\LoggerInterface;
  13. class Inline implements RendererInterface
  14. {
  15. /**
  16. * @var \Magento\Framework\TranslateInterface
  17. */
  18. protected $translator;
  19. /**
  20. * @var \Magento\Framework\Translate\Inline\ProviderInterface
  21. */
  22. protected $inlineProvider;
  23. /**
  24. * @var \Psr\Log\LoggerInterface
  25. */
  26. protected $logger;
  27. /**
  28. * @param \Magento\Framework\TranslateInterface $translator
  29. * @param \Magento\Framework\Translate\Inline\ProviderInterface $inlineProvider
  30. * @param \Psr\Log\LoggerInterface $logger
  31. */
  32. public function __construct(
  33. TranslateInterface $translator,
  34. ProviderInterface $inlineProvider,
  35. LoggerInterface $logger
  36. ) {
  37. $this->translator = $translator;
  38. $this->inlineProvider = $inlineProvider;
  39. $this->logger = $logger;
  40. }
  41. /**
  42. * Render source text
  43. *
  44. * @param [] $source
  45. * @param [] $arguments
  46. * @return string
  47. * @throws \Exception
  48. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  49. */
  50. public function render(array $source, array $arguments)
  51. {
  52. $text = end($source);
  53. try {
  54. if (!$this->inlineProvider->get()->isAllowed()) {
  55. return $text;
  56. }
  57. if (strpos($text, '{{{') === false
  58. || strpos($text, '}}}') === false
  59. || strpos($text, '}}{{') === false
  60. ) {
  61. $text = '{{{'
  62. . implode('}}{{', array_reverse($source))
  63. . '}}{{' . $this->translator->getTheme() . '}}}';
  64. }
  65. } catch (\Exception $e) {
  66. $this->logger->critical($e->getMessage());
  67. throw $e;
  68. }
  69. return $text;
  70. }
  71. }