View source
<?php
namespace Drupal\data_policy\Plugin\views\filter;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Database\Connection;
use Drupal\Core\Datetime\DateFormatterInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\views\Plugin\views\filter\InOperator;
use Symfony\Component\DependencyInjection\ContainerInterface;
class UserConsentDataPolicyRevision extends InOperator {
protected $connection;
protected $dateFormatter;
protected $configFactory;
protected $entityTypeManager;
public function __construct(array $configuration, $plugin_id, $plugin_definition, Connection $connection, DateFormatterInterface $date_formatter, ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->connection = $connection;
$this->dateFormatter = $date_formatter;
$this->configFactory = $config_factory;
$this->entityTypeManager = $entity_type_manager;
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('database'), $container
->get('date.formatter'), $container
->get('config.factory'), $container
->get('entity_type.manager'));
}
public function getValueOptions() {
if (isset($this->valueOptions)) {
return $this->valueOptions;
}
$ids = $this->configFactory
->getEditable('data_policy.data_policy')
->get('revision_ids');
if (empty($ids)) {
return $this->valueOptions = [];
}
$this->valueOptions = $this->connection
->select('data_policy_revision', 'r')
->fields('r', [
'vid',
'revision_created',
])
->condition('vid', array_keys($ids), 'IN')
->orderBy('revision_created', 'DESC')
->execute()
->fetchAllKeyed();
foreach ($this->valueOptions as &$timestamp) {
$timestamp = $this->dateFormatter
->format($timestamp);
}
return $this->valueOptions;
}
protected function defineOptions() {
$options = parent::defineOptions();
$entity_id = $this->configFactory
->getEditable('data_policy.data_policy')
->get('entity_id');
if (!empty($entity_id)) {
$revision_id = $this->entityTypeManager
->getStorage('data_policy')
->load($entity_id)
->getRevisionId();
$options['value']['default'] = [
$revision_id,
];
}
return $options;
}
}