View source
<?php
namespace Drupal\block_list_override;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\block_list_override\BlockListOverride;
class PluginAlter implements ContainerInjectionInterface {
protected $configFactory;
protected $entityTypeManager;
protected $listService;
protected function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager, BlockListOverride $list_service) {
$this->configFactory = $config_factory;
$this->entityTypeManager = $entity_type_manager;
$this->listService = $list_service;
$this
->setUp();
}
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('entity_type.manager'), $container
->get('block_list_override.list'));
}
protected function setUp() {
$settings = $this->configFactory
->get('block_list_override.settings');
$options = [
'match' => !empty($settings) ? trim($settings
->get('system_match')) : '',
'prefix' => !empty($settings) ? trim($settings
->get('system_prefix')) : '',
'regex' => !empty($settings) ? trim($settings
->get('system_regex')) : '',
'negate' => !empty($settings) ? $settings
->get('system_negate') : 0,
];
$this->listService
->setUp($options);
}
public function alterBlocks(&$definitions) {
if (!$this->listService
->hasSettings()) {
return;
}
$callback = [
$this->listService,
'blockIsAllowed',
];
$definitions = array_filter($definitions, $callback, ARRAY_FILTER_USE_KEY);
}
}