protected ConfigImportSubscriber::validateThemes(ConfigImporter $config_importer)
Validates theme installations and uninstallations.
Parameters
\Drupal\Core\Config\ConfigImporter $config_importer: The configuration importer.
File
- core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php, line 144
Class
- ConfigImportSubscriber
- Config import subscriber for config import events.
Namespace
Drupal\Core\EventSubscriber
Code
protected function validateThemes(ConfigImporter $config_importer) { $core_extension = $config_importer->getStorageComparer()->getSourceStorage()->read('core.extension'); // Get all themes including those that are not installed. $theme_data = $this->getThemeData(); $installs = $config_importer->getExtensionChangelist('theme', 'install'); foreach ($installs as $key => $theme) { if (!isset($theme_data[$theme])) { $config_importer->logError($this->t('Unable to install the %theme theme since it does not exist.', array('%theme' => $theme))); // Remove non-existing installs from the list so we can validate theme // dependencies later. unset($installs[$key]); } } // Ensure that all themes being installed have their dependencies met. foreach ($installs as $theme) { foreach (array_keys($theme_data[$theme]->requires) as $required_theme) { if (!isset($core_extension['theme'][$required_theme])) { $theme_name = $theme_data[$theme]->info['name']; $required_theme_name = $theme_data[$required_theme]->info['name']; $config_importer->logError($this->t('Unable to install the %theme theme since it requires the %required_theme theme.', array('%theme' => $theme_name, '%required_theme' => $required_theme_name))); } } } // Ensure that all themes being uninstalled are not required by themes that // will be installed after the import. $uninstalls = $config_importer->getExtensionChangelist('theme', 'uninstall'); foreach ($uninstalls as $theme) { foreach (array_keys($theme_data[$theme]->required_by) as $dependent_theme) { if ($theme_data[$dependent_theme]->status && !in_array($dependent_theme, $uninstalls, TRUE)) { $theme_name = $theme_data[$theme]->info['name']; $dependent_theme_name = $theme_data[$dependent_theme]->info['name']; $config_importer->logError($this->t('Unable to uninstall the %theme theme since the %dependent_theme theme is installed.', array('%theme' => $theme_name, '%dependent_theme' => $dependent_theme_name))); } } } }
Please login to continue.