tide_test-8.x-1.1/src/Plugin/ConfigFilter/TideTestIgnoreFilter.php

src/Plugin/ConfigFilter/TideTestIgnoreFilter.php
<?php

namespace Drupal\tide_test\Plugin\ConfigFilter;

use Drupal\config_ignore\Plugin\ConfigFilter\IgnoreFilter;
use Drupal\Core\Config\StorageInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;

/**
 * Ignore all test config.
 *
 * @ConfigFilter(
 *   id = "tide_test_config_ignore",
 *   label = "Tide Test Config Ignore",
 *   weight = 100
 * )
 */
class TideTestIgnoreFilter extends IgnoreFilter implements ContainerFactoryPluginInterface {

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, array $plugin_definition, StorageInterface $active) {
    $configuration['ignored'] = [
      '*.test',
      '*.test*',
      '*.test.*',
      '*_test*',
      '*.field_test*',
      '*.node--test',
    ];
    parent::__construct($configuration, $plugin_id, $plugin_definition, $active);
  }

  /**
   * {@inheritdoc}
   */
  public function filterWrite($name, array $data) {
    // @codingStandardsIgnoreStart Drupal.Functions.DiscouragedFunctions.Discouraged
    $excluded_modules = ['tide_test' => 'tide_test'];
    $excluded_permissions = [
      'create test content',
      'delete any test content',
      'delete own test content',
      'delete test revisions',
      'edit any test content',
      'edit own test content',
      'revert test revisions',
      'view test revisions',
    ];
    $excluded_node_types = ['test' => 'test'];

    if ($name === 'core.extension') {
      $data['module'] = array_diff_key($data['module'], $excluded_modules);
    }
    elseif ($this->matchConfigName($name)) {
      return NULL;
    }
    elseif (fnmatch('user.role.*', $name)) {
      if (isset($data['permissions'])) {
        $data['permissions'] = array_values(array_diff($data['permissions'], $excluded_permissions));
      }
    }
    elseif (fnmatch('workflows.workflow.*', $name)) {
      if (isset($data['type_settings']['entity_types']['node'])) {
        $data['type_settings']['entity_types']['node'] = array_values(array_diff($data['type_settings']['entity_types']['node'], $excluded_node_types));
      }
    }
    elseif (fnmatch('field.field.*', $name)) {
      if (isset($data['field_type']) && $data['field_type'] === 'entity_reference') {
        if (isset($data['settings']['handler_settings']['target_bundles'])) {
          $data['settings']['handler_settings']['target_bundles'] = array_diff_key($data['settings']['handler_settings']['target_bundles'], $excluded_node_types);
        }
      }
    }

    if (isset($data['dependencies']['config'])) {
      foreach ($data['dependencies']['config'] as $key => $config_name) {
        if ($this->matchConfigName($config_name)) {
          unset($data['dependencies']['config'][$key]);
        }
      }
      $data['dependencies']['config'] = array_values($data['dependencies']['config']);
    }

    if (isset($data['dependencies']['module'])) {
      foreach ($data['dependencies']['module'] as $key => $module_name) {
        if (in_array($module_name, $excluded_modules)) {
          unset($data['dependencies']['module'][$key]);
        }
      }
      $data['dependencies']['module'] = array_values($data['dependencies']['module']);
    }

    return $data;
    // @codingStandardsIgnoreEnd Drupal.Functions.DiscouragedFunctions.Discouraged
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc