Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
Preview.php
Go to the documentation of this file.
1 <?php
7 
15 {
21  protected $profilerName = "newsletter_template_proccessing";
22 
26  protected $_templateFactory;
27 
32 
39  public function __construct(
40  \Magento\Backend\Block\Template\Context $context,
41  \Magento\Newsletter\Model\TemplateFactory $templateFactory,
42  \Magento\Newsletter\Model\SubscriberFactory $subscriberFactory,
43  array $data = []
44  ) {
45  $this->_templateFactory = $templateFactory;
46  $this->_subscriberFactory = $subscriberFactory;
47  parent::__construct($context, $data);
48  }
49 
55  protected function _toHtml()
56  {
57  /* @var $template \Magento\Newsletter\Model\Template */
58  $template = $this->_templateFactory->create();
59 
60  if ($id = (int)$this->getRequest()->getParam('id')) {
61  $this->loadTemplate($template, $id);
62  } else {
63  $previewData = $this->getPreviewData();
64 
65  $template->setTemplateType($previewData['type']);
66  $template->setTemplateText($previewData['text']);
67  $template->setTemplateStyles($previewData['styles']);
68  }
69 
70  \Magento\Framework\Profiler::start($this->profilerName);
71  $vars = [];
72 
73  $vars['subscriber'] = $this->_subscriberFactory->create();
74  if ($this->getRequest()->getParam('subscriber')) {
75  $vars['subscriber']->load($this->getRequest()->getParam('subscriber'));
76  }
77 
78  $template->emulateDesign($this->getStoreId());
79  $templateProcessed = $this->_appState->emulateAreaCode(
80  \Magento\Newsletter\Model\Template::DEFAULT_DESIGN_AREA,
81  [$template, 'getProcessedTemplate'],
82  [$vars]
83  );
84  $template->revertDesign();
85 
86  if ($template->isPlain()) {
87  $templateProcessed = "<pre>" . htmlspecialchars($templateProcessed) . "</pre>";
88  }
89 
90  \Magento\Framework\Profiler::stop($this->profilerName);
91 
92  return $templateProcessed;
93  }
94 
100  private function getPreviewData()
101  {
102  $previewData = [];
103  $previewParams = ['type', 'text', 'styles'];
104 
105  $sessionData = [];
106  if ($this->_backendSession->hasPreviewData()) {
107  $sessionData = $this->_backendSession->getPreviewData();
108  }
109 
110  foreach ($previewParams as $param) {
111  if (isset($sessionData[$param])) {
112  $previewData[$param] = $sessionData[$param];
113  } else {
114  $previewData[$param] = $this->getRequest()->getParam($param);
115  }
116  }
117 
118  return $previewData;
119  }
120 
126  protected function getStoreId()
127  {
128  $storeId = (int)$this->getRequest()->getParam('store');
129  if ($storeId) {
130  return $storeId;
131  }
132 
133  $defaultStore = $this->_storeManager->getDefaultStoreView();
134  if (!$defaultStore) {
135  $allStores = $this->_storeManager->getStores();
136  if (isset($allStores[0])) {
137  $defaultStore = $allStores[0];
138  }
139  }
140 
141  return $defaultStore ? $defaultStore->getId() : null;
142  }
143 
149  protected function loadTemplate(\Magento\Newsletter\Model\Template $template, $id)
150  {
151  $template->load($id);
152  return $this;
153  }
154 }
__construct(\Magento\Backend\Block\Template\Context $context, \Magento\Newsletter\Model\TemplateFactory $templateFactory, \Magento\Newsletter\Model\SubscriberFactory $subscriberFactory, array $data=[])
Definition: Preview.php:39
loadTemplate(\Magento\Newsletter\Model\Template $template, $id)
Definition: Preview.php:149
$id
Definition: fieldset.phtml:14
$template
Definition: export.php:12