![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-theme/Model/Theme/Domain/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * Virtual theme domain model */ namespace Magento\Theme\Model\Theme\Domain; class Virtual implements \Magento\Framework\View\Design\Theme\Domain\VirtualInterface { /** * Virtual theme model instance * * @var \Magento\Framework\View\Design\ThemeInterface */ protected $_theme; /** * @var \Magento\Theme\Model\ThemeFactory $themeFactory */ protected $_themeFactory; /** * Staging theme model instance * * @var \Magento\Framework\View\Design\ThemeInterface */ protected $_stagingTheme; /** * @var \Magento\Theme\Model\CopyService */ protected $_themeCopyService; /** * Theme customization config * * @var \Magento\Theme\Model\Config\Customization */ protected $_customizationConfig; /** * @param \Magento\Framework\View\Design\ThemeInterface $theme * @param \Magento\Theme\Model\ThemeFactory $themeFactory * @param \Magento\Theme\Model\CopyService $themeCopyService * @param \Magento\Theme\Model\Config\Customization $customizationConfig */ public function __construct( \Magento\Framework\View\Design\ThemeInterface $theme, \Magento\Theme\Model\ThemeFactory $themeFactory, \Magento\Theme\Model\CopyService $themeCopyService, \Magento\Theme\Model\Config\Customization $customizationConfig ) { $this->_theme = $theme; $this->_themeFactory = $themeFactory; $this->_themeCopyService = $themeCopyService; $this->_customizationConfig = $customizationConfig; } /** * Get 'staging' theme * * @return \Magento\Framework\View\Design\ThemeInterface */ public function getStagingTheme() { if (!$this->_stagingTheme) { $this->_stagingTheme = $this->_theme->getStagingVersion(); if (!$this->_stagingTheme) { $this->_stagingTheme = $this->_createStagingTheme(); $this->_themeCopyService->copy($this->_theme, $this->_stagingTheme); } } return $this->_stagingTheme; } /** * Get 'physical' theme * * @return \Magento\Framework\View\Design\ThemeInterface */ public function getPhysicalTheme() { /** @var $parentTheme \Magento\Framework\View\Design\ThemeInterface */ $parentTheme = $this->_theme->getParentTheme(); while ($parentTheme && !$parentTheme->isPhysical()) { $parentTheme = $parentTheme->getParentTheme(); } if (!$parentTheme || !$parentTheme->getId()) { return null; } return $parentTheme; } /** * Check if theme is assigned to ANY store * * @return bool */ public function isAssigned() { return $this->_customizationConfig->isThemeAssignedToStore($this->_theme); } /** * Create 'staging' theme associated with current 'virtual' theme * * @return \Magento\Framework\View\Design\ThemeInterface */ protected function _createStagingTheme() { $stagingTheme = $this->_themeFactory->create(); $stagingTheme->setData( [ 'parent_id' => $this->_theme->getId(), 'theme_path' => null, 'theme_title' => sprintf('%s - Staging', $this->_theme->getThemeTitle()), 'preview_image' => $this->_theme->getPreviewImage(), 'is_featured' => $this->_theme->getIsFeatured(), 'type' => \Magento\Framework\View\Design\ThemeInterface::TYPE_STAGING, ] ); $stagingTheme->save(); return $stagingTheme; } }