storeManager = $storeManager; $this->themeProvider = $themeProvider; $this->configData = $configData; } /** * 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[] = '' . $themesById[$row['value']] . ' is in use in default config' . ''; break; case ScopeInterface::SCOPE_WEBSITES: $messages[] = '' . $themesById[$row['value']] . ' is in use in website ' . $this->storeManager->getWebsite($row['scope_id'])->getName() . ''; break; case ScopeInterface::SCOPE_STORES: $messages[] = '' . $themesById[$row['value']] . ' is in use in store ' . $this->storeManager->getStore($row['scope_id'])->getName() . ''; break; } } return $messages; } }