+++ /dev/null
-<?php
-
-/**
- * @file
- * Definition of Drush\Config\StorageFilter.
- */
-
-namespace Drush\Config;
-
-use Drupal\Core\Config\StorageInterface;
-
-/**
- * This filter adjusts the data going to and coming from
- * the core.extension configuration object.
- *
- * Modules named in this list are ignored during config-import
- * and config-export operations. What this means in practical terms is:
- *
- * * During a 'read' operation, if a named module is enabled in the
- * active configuration, then it will remain enabled after the
- * import. If it is disabled in the active configuration, then it
- * will remain disabled. The value from the data being imported
- * is ignored.
- *
- * * During a 'write' operation, if a named module is enabled in
- * the configuration already written out on the target storage
- * object, then it will remain enabled. If it is disabled in
- * the previously-exported data, then it will remain disabled. If
- * there is no existing export (first-time export), then all of
- * the named modules will be excluded (disabled) from the export.
- * The current enabled / disabled state of the module in the
- * active configuration is ignored.
- *
- * The data from core.extension looks like this:
- *
- * module:
- * modulename: weight
- * theme:
- * themename: weight
- *
- * The "adjustments" lists is just an array where the values
- * are the module names to exclude from import / export, as
- * described above.
- */
-class CoreExtensionFilter implements StorageFilter {
-
- protected $adjustments;
-
- function __construct($adjustments = array()) {
- $this->adjustments = $adjustments;
- }
-
- public function filterRead($name, $data) {
- if ($name != 'core.extension') {
- return $data;
- }
- $active_storage = \Drupal::service('config.storage');
- return $this->filterOutIgnored($data, $active_storage->read($name));
- }
-
- public function filterWrite($name, array $data, StorageInterface $storage) {
- if ($name != 'core.extension') {
- return $data;
- }
- $originalData = $storage->read($name);
- return $this->filterOutIgnored($data, $storage->read($name));
- }
-
- protected function filterOutIgnored($data, $originalData) {
- foreach($this->adjustments as $module) {
- if (is_array($originalData) && array_key_exists($module, $originalData['module'])) {
- $data['module'][$module] = $originalData['module'][$module];
- }
- else {
- unset($data['module'][$module]);
- }
- }
- return $data;
-
- }
-}