/**
  * Validate the theme if being in use in default, website, or store.
  *
  * @param string[] $themePaths
  * @return array
  */
 public function validateIsThemeInUse($themePaths)
 {
     $messages = [];
     $themesById = [];
     foreach ($themePaths as $themePath) {
         $theme = $this->themeProvider->getThemeByFullPath($themePath);
         $themesById[$theme->getId()] = $themePath;
     }
     $configData = $this->configData->getCollection()->addFieldToFilter('path', DesignInterface::XML_PATH_THEME_ID)->addFieldToFilter('value', ['in' => array_keys($themesById)]);
     foreach ($configData as $row) {
         switch ($row['scope']) {
             case 'default':
                 $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in default config' . '</error>';
                 break;
             case ScopeInterface::SCOPE_WEBSITES:
                 $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in website ' . $this->storeManager->getWebsite($row['scope_id'])->getName() . '</error>';
                 break;
             case ScopeInterface::SCOPE_STORES:
                 $messages[] = '<error>' . $themesById[$row['value']] . ' is in use in store ' . $this->storeManager->getStore($row['scope_id'])->getName() . '</error>';
                 break;
         }
     }
     return $messages;
 }
Beispiel #2
0
 /**
  * Get assigned scopes collection of a theme
  *
  * @param string $scope
  * @param string $configPath
  * @return \Magento\Core\Model\Resource\Config\Data\Collection
  */
 protected function _getAssignedScopesCollection($scope, $configPath)
 {
     return $this->_configData->getCollection()->addFieldToFilter('scope', $scope)->addFieldToFilter('path', $configPath);
 }