Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 22 |
SystemConfigSubscriber | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
110 | |
0.00% |
0 / 22 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
onConfigSave | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 5 |
|||
onConfigImporterValidateNotEmpty | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
onConfigImporterValidateSiteUUID | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 4 |
|||
getSubscribedEvents | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\system\SystemConfigSubscriber. | |
*/ | |
namespace Drupal\system; | |
use Drupal\Core\Config\ConfigCrudEvent; | |
use Drupal\Core\Config\ConfigEvents; | |
use Drupal\Core\Config\ConfigImporterEvent; | |
use Drupal\Core\Routing\RouteBuilderInterface; | |
use Drupal\Core\StringTranslation\StringTranslationTrait; | |
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
/** | |
* System Config subscriber. | |
*/ | |
class SystemConfigSubscriber implements EventSubscriberInterface { | |
use StringTranslationTrait; | |
/** | |
* The router builder. | |
* | |
* @var \Drupal\Core\Routing\RouteBuilderInterface | |
*/ | |
protected $routerBuilder; | |
/** | |
* Constructs the SystemConfigSubscriber. | |
* | |
* @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder | |
* The router builder service. | |
*/ | |
public function __construct(RouteBuilderInterface $router_builder) { | |
$this->routerBuilder = $router_builder; | |
} | |
/** | |
* Rebuilds the router when the default or admin theme is changed. | |
* | |
* @param \Drupal\Core\Config\ConfigCrudEvent $event | |
*/ | |
public function onConfigSave(ConfigCrudEvent $event) { | |
$saved_config = $event->getConfig(); | |
if ($saved_config->getName() == 'system.theme' && ($event->isChanged('admin') || $event->isChanged('default'))) { | |
$this->routerBuilder->setRebuildNeeded(); | |
} | |
} | |
/** | |
* Checks that the configuration synchronization is valid. | |
* | |
* This event listener prevents deleting all configuration. If there is | |
* nothing to import then event propagation is stopped because there is no | |
* config import to validate. | |
* | |
* @param \Drupal\Core\Config\ConfigImporterEvent $event | |
* The config import event. | |
*/ | |
public function onConfigImporterValidateNotEmpty(ConfigImporterEvent $event) { | |
$importList = $event->getConfigImporter()->getStorageComparer()->getSourceStorage()->listAll(); | |
if (empty($importList)) { | |
$event->getConfigImporter()->logError($this->t('This import is empty and if applied would delete all of your configuration, so has been rejected.')); | |
$event->stopPropagation(); | |
} | |
} | |
/** | |
* Checks that the configuration synchronization is valid. | |
* | |
* This event listener checks that the system.site:uuid's in the source and | |
* target match. | |
* | |
* @param ConfigImporterEvent $event | |
* The config import event. | |
*/ | |
public function onConfigImporterValidateSiteUUID(ConfigImporterEvent $event) { | |
if (!$event->getConfigImporter()->getStorageComparer()->validateSiteUuid()) { | |
$event->getConfigImporter()->logError($this->t('Site UUID in source storage does not match the target storage.')); | |
} | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function getSubscribedEvents() { | |
$events[ConfigEvents::SAVE][] = array('onConfigSave', 0); | |
// The empty check has a high priority so that it can stop propagation if | |
// there is no configuration to import. | |
$events[ConfigEvents::IMPORT_VALIDATE][] = array('onConfigImporterValidateNotEmpty', 512); | |
$events[ConfigEvents::IMPORT_VALIDATE][] = array('onConfigImporterValidateSiteUUID', 256); | |
return $events; | |
} | |
} |