Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Theme.php
Go to the documentation of this file.
1 <?php
10 namespace Magento\Framework\Config;
11 
16 class Theme
17 {
21  const THEME_PATH_SEPARATOR = '/';
22 
28  protected $_data;
29 
33  protected $urnResolver;
34 
41  public function __construct(
42  \Magento\Framework\Config\Dom\UrnResolver $urnResolver,
43  $configContent = null
44  ) {
45  $this->urnResolver = $urnResolver;
46  $this->_data = $this->_extractData($configContent);
47  }
48 
54  public function getSchemaFile()
55  {
56  return $this->urnResolver->getRealPath('urn:magento:framework:Config/etc/theme.xsd');
57  }
58 
66  protected function _extractData($configContent)
67  {
68  $data = [
69  'title' => null,
70  'media' => null,
71  'parent' => null,
72  ];
73 
74  if (!empty($configContent)) {
75  $dom = new \DOMDocument();
76  $dom->loadXML($configContent);
77  // todo: validation of the document
79  $themeNode = $dom->getElementsByTagName('theme')->item(0);
80  $themeTitleNode = $themeNode->getElementsByTagName('title')->item(0);
81  $data['title'] = $themeTitleNode ? $themeTitleNode->nodeValue : null;
83  $mediaNode = $themeNode->getElementsByTagName('media')->item(0);
84  $previewImage = $mediaNode ? $mediaNode->getElementsByTagName('preview_image')->item(0)->nodeValue : '';
85  $data['media']['preview_image'] = $previewImage;
86  $themeParentNode = $themeNode->getElementsByTagName('parent')->item(0);
87  $data['parent'] = $themeParentNode ? $themeParentNode->nodeValue : null;
88  }
89 
90  return $data;
91  }
92 
98  public function getThemeTitle()
99  {
100  return $this->_data['title'];
101  }
102 
108  public function getMedia()
109  {
110  return $this->_data['media'];
111  }
112 
118  public function getParentTheme()
119  {
120  $parentTheme = $this->_data['parent'];
121  if (!$parentTheme) {
122  return null;
123  }
124  return explode(self::THEME_PATH_SEPARATOR, $parentTheme);
125  }
126 }
__construct(\Magento\Framework\Config\Dom\UrnResolver $urnResolver, $configContent=null)
Definition: Theme.php:41