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;
}
}