Version 1
[yaffs-website] / web / core / modules / config / src / ConfigSubscriber.php
diff --git a/web/core/modules/config/src/ConfigSubscriber.php b/web/core/modules/config/src/ConfigSubscriber.php
new file mode 100644 (file)
index 0000000..94405a1
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+namespace Drupal\config;
+
+use Drupal\Core\Config\ConfigEvents;
+use Drupal\Core\Config\ConfigImporterEvent;
+use Drupal\Core\Config\ConfigImportValidateEventSubscriberBase;
+
+
+/**
+ * Config subscriber.
+ */
+class ConfigSubscriber extends ConfigImportValidateEventSubscriberBase {
+
+  /**
+   * Checks that the Configuration module is not being uninstalled.
+   *
+   * @param ConfigImporterEvent $event
+   *   The config import event.
+   */
+  public function onConfigImporterValidate(ConfigImporterEvent $event) {
+    $importer = $event->getConfigImporter();
+    $core_extension = $importer->getStorageComparer()->getSourceStorage()->read('core.extension');
+    if (!isset($core_extension['module']['config'])) {
+      $importer->logError($this->t('Can not uninstall the Configuration module as part of a configuration synchronization through the user interface.'));
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    $events[ConfigEvents::IMPORT_VALIDATE][] = ['onConfigImporterValidate', 20];
+    return $events;
+  }
+
+}