diff --git a/composer.json b/composer.json index 9e727e70700c8a4f545bdbe14c0ce46f25d9e8f0..b8a547988880c09df684dac3569c26ec4735c7aa 100644 --- a/composer.json +++ b/composer.json @@ -100,7 +100,7 @@ "drupal/bootstrap": "3.16", "drupal/ckeditor_indentblock": "1.0.0-beta1", "drupal/config_direct_save": "1.0", - "drupal/config_ignore": "2.1", + "drupal/config_ignore": "2.2", "drupal/config_installer": "1.8", "drupal/config_update": "1.5", "drupal/console": "1.8", diff --git a/composer.lock b/composer.lock index 24b860ec77c4418092bcc00428703ee4a45c4bc8..0556cfbf3ec2cf3e38f1f04864dd02abbf60cc11 100644 --- a/composer.lock +++ b/composer.lock @@ -2850,20 +2850,20 @@ }, { "name": "drupal/config_filter", - "version": "1.3.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_filter.git", - "reference": "8.x-1.3" + "reference": "8.x-1.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_filter-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "56255a17c45dcbb0af713215885a8d74214d2ebc" + "url": "https://ftp.drupal.org/files/projects/config_filter-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "81210684c378dab856b3c2bce5eeaa58992d2efc" }, "require": { - "drupal/core": "~8.0" + "drupal/core": "^8 || ^9" }, "suggest": { "drupal/config_split": "Split site configuration for different environments." @@ -2874,8 +2874,8 @@ "dev-1.x": "1.x-dev" }, "drupal": { - "version": "8.x-1.3", - "datestamp": "1537978080", + "version": "8.x-1.5", + "datestamp": "1572542288", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2919,17 +2919,17 @@ }, { "name": "drupal/config_ignore", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_ignore.git", - "reference": "8.x-2.1" + "reference": "8.x-2.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.1.zip", - "reference": "8.x-2.1", - "shasum": "07e00684930706632b3f2fc2a7433ffdae57cde7" + "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.2.zip", + "reference": "8.x-2.2", + "shasum": "18af5772087b90dd4b83c2c6e292d8ea2f8834e0" }, "require": { "drupal/config_filter": "1.*", @@ -2941,8 +2941,8 @@ "dev-2.x": "2.x-dev" }, "drupal": { - "version": "8.x-2.1", - "datestamp": "1507706044", + "version": "8.x-2.2", + "datestamp": "1576528386", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2964,6 +2964,10 @@ "name": "Fabian Bircher", "homepage": "https://www.drupal.org/u/bircher", "role": "Maintainer" + }, + { + "name": "tlyngej", + "homepage": "https://www.drupal.org/user/413139" } ], "description": "Ignore certain configuration during import.", @@ -6084,8 +6088,7 @@ "homepage": "https://www.drupal.org/project/migrate_devel", "support": { "source": "http://cgit.drupalcode.org/migrate_devel" - }, - "time": "2017-06-25T23:46:13+00:00" + } }, { "name": "drupal/migrate_plus", diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index c48c1a34dcedc41c1f40b8c15cbdc602571da251..e77e721aeddc3e43e635029702724a942b4ce338 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2941,21 +2941,21 @@ }, { "name": "drupal/config_filter", - "version": "1.3.0", - "version_normalized": "1.3.0.0", + "version": "1.5.0", + "version_normalized": "1.5.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_filter.git", - "reference": "8.x-1.3" + "reference": "8.x-1.5" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_filter-8.x-1.3.zip", - "reference": "8.x-1.3", - "shasum": "56255a17c45dcbb0af713215885a8d74214d2ebc" + "url": "https://ftp.drupal.org/files/projects/config_filter-8.x-1.5.zip", + "reference": "8.x-1.5", + "shasum": "81210684c378dab856b3c2bce5eeaa58992d2efc" }, "require": { - "drupal/core": "~8.0" + "drupal/core": "^8 || ^9" }, "suggest": { "drupal/config_split": "Split site configuration for different environments." @@ -2966,8 +2966,8 @@ "dev-1.x": "1.x-dev" }, "drupal": { - "version": "8.x-1.3", - "datestamp": "1537978080", + "version": "8.x-1.5", + "datestamp": "1572542288", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3012,18 +3012,18 @@ }, { "name": "drupal/config_ignore", - "version": "2.1.0", - "version_normalized": "2.1.0.0", + "version": "2.2.0", + "version_normalized": "2.2.0.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_ignore.git", - "reference": "8.x-2.1" + "reference": "8.x-2.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.1.zip", - "reference": "8.x-2.1", - "shasum": "07e00684930706632b3f2fc2a7433ffdae57cde7" + "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.2.zip", + "reference": "8.x-2.2", + "shasum": "18af5772087b90dd4b83c2c6e292d8ea2f8834e0" }, "require": { "drupal/config_filter": "1.*", @@ -3035,8 +3035,8 @@ "dev-2.x": "2.x-dev" }, "drupal": { - "version": "8.x-2.1", - "datestamp": "1507706044", + "version": "8.x-2.2", + "datestamp": "1576528386", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3059,6 +3059,10 @@ "name": "Fabian Bircher", "homepage": "https://www.drupal.org/u/bircher", "role": "Maintainer" + }, + { + "name": "tlyngej", + "homepage": "https://www.drupal.org/user/413139" } ], "description": "Ignore certain configuration during import.", diff --git a/web/modules/config_filter/config_filter.info.yml b/web/modules/config_filter/config_filter.info.yml index 09a4d71c837ee423969170bd086e5191b60ef3f0..d3880727bfbc150574e31a531f3d8eec42ffd1e9 100644 --- a/web/modules/config_filter/config_filter.info.yml +++ b/web/modules/config_filter/config_filter.info.yml @@ -1,11 +1,11 @@ name: Config Filter type: module description: Config Filter allows other modules to interact with a ConfigStorage through filter plugins. -# core: 8.x +core: 8.x +core_version_requirement: ^8 || ^9 package: Config -# Information added by Drupal.org packaging script on 2018-09-26 -version: '8.x-1.3' -core: '8.x' +# Information added by Drupal.org packaging script on 2019-10-31 +version: '8.x-1.5' project: 'config_filter' -datestamp: 1537978084 +datestamp: 1572542290 diff --git a/web/modules/config_filter/src/Config/FilteredStorage.php b/web/modules/config_filter/src/Config/FilteredStorage.php index fb3678a234772fa24049562d61b6b9f7abfef1df..4f012cf17f945b193286ca1a400bf34abbb6201d 100644 --- a/web/modules/config_filter/src/Config/FilteredStorage.php +++ b/web/modules/config_filter/src/Config/FilteredStorage.php @@ -224,7 +224,9 @@ public function getAllCollectionNames() { foreach ($this->filters as $filter) { $collections = $filter->filterGetAllCollectionNames($collections); } + $collections = array_unique($collections); sort($collections); + return $collections; } diff --git a/web/modules/config_filter/src/Plugin/ConfigFilterBase.php b/web/modules/config_filter/src/Plugin/ConfigFilterBase.php index 52d3db26ddf8198ef709658dd4f4a2a67cd7dcb5..eba108b7ff66ddde5dce04017dbf48ca1a5908dc 100644 --- a/web/modules/config_filter/src/Plugin/ConfigFilterBase.php +++ b/web/modules/config_filter/src/Plugin/ConfigFilterBase.php @@ -2,7 +2,7 @@ namespace Drupal\config_filter\Plugin; -use Drupal\Component\Plugin\PluginBase; +use Drupal\Core\Plugin\PluginBase; use Drupal\config_filter\Config\TransparentStorageFilterTrait; /** diff --git a/web/modules/config_filter/src/Plugin/ConfigFilterPluginManager.php b/web/modules/config_filter/src/Plugin/ConfigFilterPluginManager.php index 3f253ef493f5d995ded97fb71de82482601c08c2..37aa74ba26c40285f418fd1c55321fad6dba061b 100644 --- a/web/modules/config_filter/src/Plugin/ConfigFilterPluginManager.php +++ b/web/modules/config_filter/src/Plugin/ConfigFilterPluginManager.php @@ -70,9 +70,7 @@ protected function findDefinitions() { }, parent::findDefinitions()); // Sort the definitions by weight. - uasort($definitions, function ($a, $b) { - return strcmp($a['weight'], $b['weight']); - }); + uasort($definitions, ['Drupal\Component\Utility\SortArray', 'sortByWeightElement']); return $definitions; } diff --git a/web/modules/config_filter/src/Tests/FilteredStorageTest.php b/web/modules/config_filter/src/Tests/FilteredStorageTest.php index 8f7fe97b7d517712a8420be77697f407b8b2d7aa..75dfa4723f7fb7a76124619dbca9dfd8225b9fea 100644 --- a/web/modules/config_filter/src/Tests/FilteredStorageTest.php +++ b/web/modules/config_filter/src/Tests/FilteredStorageTest.php @@ -114,6 +114,21 @@ public function testCreateCollectionFilter() { $this->assertEquals($filteredCollection, $storageC->getCollectionName()); } + /** + * Test collection names from FilteredStorage::getAllCollectionNames(). + */ + public function testGetAllCollectionNamesFilter() { + $source = $this->prophesize(StorageInterface::class); + $source->getAllCollectionNames()->willReturn(['a', 'b']); + + $filter = $this->prophesizeFilter(); + $filter->filterGetAllCollectionNames(['a', 'b'])->willReturn(['b', 'b', 'c']); + + $storage = new FilteredStorage($source->reveal(), [$filter->reveal()]); + + $this->assertEquals(['b', 'c'], $storage->getAllCollectionNames()); + } + /** * Test the read methods invokes the correct filter methods. * diff --git a/web/modules/config_filter/tests/modules/config_filter_split_test/config_filter_split_test.info.yml b/web/modules/config_filter/tests/modules/config_filter_split_test/config_filter_split_test.info.yml index bcb380f924d35a181e806b88b09a562c4c65f14b..8f0984c20412353935b342b7dbafee3689fd0938 100644 --- a/web/modules/config_filter/tests/modules/config_filter_split_test/config_filter_split_test.info.yml +++ b/web/modules/config_filter/tests/modules/config_filter_split_test/config_filter_split_test.info.yml @@ -1,12 +1,12 @@ name: 'Simple split filter' type: module -# core: 8.x +core: 8.x +core_version_requirement: ^8 || ^9 package: Testing dependencies: - config_filter:config_filter -# Information added by Drupal.org packaging script on 2018-09-26 -version: '8.x-1.3' -core: '8.x' +# Information added by Drupal.org packaging script on 2019-10-31 +version: '8.x-1.5' project: 'config_filter' -datestamp: 1537978084 +datestamp: 1572542290 diff --git a/web/modules/config_filter/tests/modules/config_filter_test/config_filter_test.info.yml b/web/modules/config_filter/tests/modules/config_filter_test/config_filter_test.info.yml index 2da8f4fd401bfc62a2e308ce2cd7e4a0e2d00a7a..0cea521becfe12e356a934e8ebdf7c6b03a4f307 100644 --- a/web/modules/config_filter/tests/modules/config_filter_test/config_filter_test.info.yml +++ b/web/modules/config_filter/tests/modules/config_filter_test/config_filter_test.info.yml @@ -1,12 +1,12 @@ name: Config Filter Test type: module -# core: 8.x +core: 8.x +core_version_requirement: ^8 || ^9 package: Testing dependencies: - config_filter:config_filter -# Information added by Drupal.org packaging script on 2018-09-26 -version: '8.x-1.3' -core: '8.x' +# Information added by Drupal.org packaging script on 2019-10-31 +version: '8.x-1.5' project: 'config_filter' -datestamp: 1537978084 +datestamp: 1572542290 diff --git a/web/modules/config_ignore/README.txt b/web/modules/config_ignore/README.txt index 0a51fe965c1ac814a8d9127c6a2114f7fbb08bd6..80b9f574ee66c48c0f8babc3f0b2daaa4f462e40 100644 --- a/web/modules/config_ignore/README.txt +++ b/web/modules/config_ignore/README.txt @@ -3,17 +3,19 @@ Config Ignore INTRODUCTION ------------ -Ever experienced that your sites configuration was overridden by the configuration on the filesystem, when doing a -`drush cim`? +Ever experienced that your site's configuration was overridden, +by the configuration on the file system, when running a `drush cim`? Not anymore! This modules is a tool to let you keep the configuration you want, in place. -Lets say that you do would like the `system.site` configuration (which contains that sites name, slogan, email, etc) to -remain untouched, on your live site, no matter what the configuration, in the export folder says. +Let's say that you do would like the `system.site` configuration +(which contains that sites name, slogan, email, etc.) to remain untouched, +on your live site, no matter what the configuration in the config folder is. -Or maybe you are getting tired of having the `devel.settings` changed every time you import configuration? +Or maybe you are getting tired of having the `devel.settings` +changed every time you import configuration? Then this module is what you are looking for. @@ -28,10 +30,23 @@ to see how to install and manage modules in Drupal 8. CONFIGURATION ------------- -Go to `admin/config/development/configuration/ignore` to set what configuration you want to ignore upon import. +If you go to `admin/config/development/configuration/ignore` +you will see a fairly simple interface. -Do not ignore the `core.extension` configuration as it will prevent you from enabling new modules with a config import. -Use the `config_split` module for environment specific modules. +Add the name of the configuration that you want to ignore upon import. +(e.g. `system.site` to ignore site name, slogan and email site email address.) +Click the "Save configuration" button and you are good to go. + +Do not ignore the `core.extension` configuration as it will prevent you +from enabling new modules with a config import. Use the `config_split` module +for environment specific modules. + +If you need to bypass Config Ignore you can update/create a single configuration +by using the "Single import" feature found at +`admin/config/development/configuration/single/import`. + +To deactivate `config_ignore`, include +`$settings['config_ignore_deactivate'] = TRUE;` in your settings.php file. MAINTAINERS ----------- @@ -39,3 +54,4 @@ Current maintainers: * Tommy Lynge Jørgensen (TLyngeJ) - https://www.drupal.org/u/tlyngej * Fabian Bircher (bircher) - https://www.drupal.org/u/bircher + * Jordan Thompson (nord102) - https://www.drupal.org/u/nord102 diff --git a/web/modules/config_ignore/config_ignore.info.yml b/web/modules/config_ignore/config_ignore.info.yml index 25a93723e3fa46ed1d3c8427d1c9587de59d7ba5..36ffa8a057ed7b246e15cf8cc132695bc525c929 100644 --- a/web/modules/config_ignore/config_ignore.info.yml +++ b/web/modules/config_ignore/config_ignore.info.yml @@ -1,14 +1,13 @@ name: Config Ignore type: module description: Ignore certain configuration during import -# core: 8.x +core: 8.x package: Config configure: config_ignore.settings dependencies: - - config_filter + - config_filter:config_filter -# Information added by Drupal.org packaging script on 2017-10-11 -version: '8.x-2.1' -core: '8.x' +# Information added by Drupal.org packaging script on 2019-12-16 +version: '8.x-2.2' project: 'config_ignore' -datestamp: 1507706047 +datestamp: 1576528389 diff --git a/web/modules/config_ignore/config_ignore.install b/web/modules/config_ignore/config_ignore.install index 222809ef333e492d50208c74d090d63510cfd53c..80534e263cf7c28e2508f717a24c9d4626cf7b9a 100644 --- a/web/modules/config_ignore/config_ignore.install +++ b/web/modules/config_ignore/config_ignore.install @@ -11,3 +11,13 @@ function config_ignore_update_8201() { \Drupal::getContainer()->get('module_installer')->install(['config_filter']); } + +/** + * Remove index from configuration export. + */ +function config_ignore_update_8202() { + $config = \Drupal::configFactory()->getEditable('config_ignore.settings'); + $ignored_config_entities = $config->get('ignored_config_entities') ?: []; + $config->set('ignored_config_entities', array_values($ignored_config_entities)); + $config->save(); +} diff --git a/web/modules/config_ignore/config_ignore.links.menu.yml b/web/modules/config_ignore/config_ignore.links.menu.yml new file mode 100644 index 0000000000000000000000000000000000000000..a7c46a463bdef1cb955f921484a1d3e948467110 --- /dev/null +++ b/web/modules/config_ignore/config_ignore.links.menu.yml @@ -0,0 +1,6 @@ +config_ignore.settings: + title: 'Ignore' + description: 'Configuration Ignore settings' + route_name: config_ignore.settings + parent: config.sync + weight: 3 diff --git a/web/modules/config_ignore/config_ignore.links.task.yml b/web/modules/config_ignore/config_ignore.links.task.yml index b65a8dd604346e8ed7b1892cc262de3184203970..13072841630c7785f005afbce80aad5f6c68b11b 100644 --- a/web/modules/config_ignore/config_ignore.links.task.yml +++ b/web/modules/config_ignore/config_ignore.links.task.yml @@ -1,5 +1,5 @@ config_ignore.settings: - route_name: 'config_ignore.settings' + route_name: config_ignore.settings title: 'Ignore' base_route: config.sync - weight: 99 + weight: 3 diff --git a/web/modules/config_ignore/src/Form/Settings.php b/web/modules/config_ignore/src/Form/Settings.php index 8029db085993877a1e1369d73e486a2b438a2594..16f05fd078d03e61cafee8eed8b52ed21421b5ae 100644 --- a/web/modules/config_ignore/src/Form/Settings.php +++ b/web/modules/config_ignore/src/Form/Settings.php @@ -63,8 +63,9 @@ public function buildForm(array $form, FormStateInterface $form_state, Request $ public function submitForm(array &$form, FormStateInterface $form_state) { $values = $form_state->getValues(); $config_ignore_settings = $this->config('config_ignore.settings'); - $config_ignore_settings_array = preg_split("[\n|\r]", $values['ignored_config_entities']); + $config_ignore_settings_array = preg_split("/[\r\n]+/", $values['ignored_config_entities']); $config_ignore_settings_array = array_filter($config_ignore_settings_array); + $config_ignore_settings_array = array_values($config_ignore_settings_array); $config_ignore_settings->set('ignored_config_entities', $config_ignore_settings_array); $config_ignore_settings->save(); parent::submitForm($form, $form_state); diff --git a/web/modules/config_ignore/src/Plugin/ConfigFilter/IgnoreFilter.php b/web/modules/config_ignore/src/Plugin/ConfigFilter/IgnoreFilter.php index 07fc90801bcf5794592a0af01b337751ec67ab4d..1864db6ae99e875ff9706b093057d6ce98f51bf1 100644 --- a/web/modules/config_ignore/src/Plugin/ConfigFilter/IgnoreFilter.php +++ b/web/modules/config_ignore/src/Plugin/ConfigFilter/IgnoreFilter.php @@ -52,7 +52,7 @@ public function __construct(array $configuration, $plugin_id, array $plugin_defi */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { // Get the list of ignored config. - $ignored = $container->get('config.factory')->get('config_ignore.settings')->get('ignored_config_entities'); + $ignored = (array) $container->get('config.factory')->get('config_ignore.settings')->get('ignored_config_entities'); // Allow hooks to alter the list. $container->get('module_handler')->invokeAll('config_ignore_settings_alter', [&$ignored]); // Set the list in the plugin configuration. @@ -134,6 +134,9 @@ protected function activeRead($name, $data) { } $active = $this->active->read($name); + if (!$active) { + return $data; + } foreach ($keys as $key) { $parts = explode('.', $key); @@ -168,6 +171,9 @@ protected function activeRead($name, $data) { protected function activeReadMultiple(array $names, array $data) { $filtered_data = []; foreach ($names as $name) { + if (!array_key_exists($name, $data)) { + $data[$name] = []; + } $filtered_data[$name] = $this->activeRead($name, $data[$name]); } diff --git a/web/modules/config_ignore/tests/config_ignore_hook_test/config_ignore_hook_test.info.yml b/web/modules/config_ignore/tests/modules/config_ignore_hook_test.info.yml similarity index 55% rename from web/modules/config_ignore/tests/config_ignore_hook_test/config_ignore_hook_test.info.yml rename to web/modules/config_ignore/tests/modules/config_ignore_hook_test.info.yml index 02e72b064dc32ef64f984a964ef8924d6c2ed84c..9e8bc96b10fd288866e9e06cf949aa5d49fd4fea 100644 --- a/web/modules/config_ignore/tests/config_ignore_hook_test/config_ignore_hook_test.info.yml +++ b/web/modules/config_ignore/tests/modules/config_ignore_hook_test.info.yml @@ -1,13 +1,13 @@ name: Config Ignore Hook Test type: module description: Module that implements all the hook from Config Ignore for testing purposes -# core: 8.x -package: Configuration +core: 8.x +package: Testing +hidden: true dependencies: - config_ignore -# Information added by Drupal.org packaging script on 2017-10-11 -version: '8.x-2.1' -core: '8.x' +# Information added by Drupal.org packaging script on 2019-12-16 +version: '8.x-2.2' project: 'config_ignore' -datestamp: 1507706047 +datestamp: 1576528389 diff --git a/web/modules/config_ignore/tests/config_ignore_hook_test/config_ignore_hook_test.module b/web/modules/config_ignore/tests/modules/config_ignore_hook_test.module similarity index 100% rename from web/modules/config_ignore/tests/config_ignore_hook_test/config_ignore_hook_test.module rename to web/modules/config_ignore/tests/modules/config_ignore_hook_test.module diff --git a/web/modules/config_ignore/tests/src/Functional/ConfigIgnoreTest.php b/web/modules/config_ignore/tests/src/Functional/ConfigIgnoreTest.php index f632f49237aff209ec6065a7fcdf034188a5bac8..eeae220b7c2fcc154e4de9d65dfa4bec77a3ffe3 100644 --- a/web/modules/config_ignore/tests/src/Functional/ConfigIgnoreTest.php +++ b/web/modules/config_ignore/tests/src/Functional/ConfigIgnoreTest.php @@ -58,7 +58,7 @@ public function testSettingsForm() { $this->drupalLogin($this->drupalCreateUser(['import configuration'])); $edit = [ - 'ignored_config_entities' => 'config.test', + 'ignored_config_entities' => 'config.test_01' . "\r\n" . 'config.test_02', ]; $this->drupalGet('admin/config/development/configuration/ignore'); @@ -66,7 +66,7 @@ public function testSettingsForm() { $settings = $this->config('config_ignore.settings')->get('ignored_config_entities'); - $this->assertEqual($settings, ['config.test']); + $this->assertEquals(['config.test_01', 'config.test_02'], $settings); } /**