class ConfigPagesValueAccess in Config Pages 8.3
Same name and namespace in other branches
- 8.2 src/Plugin/Condition/ConfigPagesValueAccess.php \Drupal\config_pages\Plugin\Condition\ConfigPagesValueAccess
Provides a 'Access by ConfigPage field value' condition.
Plugin annotation
@Condition(
id = "config_pages_values_access",
label = @Translation("ConfigPage field value")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Component\Plugin\ContextAwarePluginBase implements ContextAwarePluginInterface
- class \Drupal\Core\Plugin\ContextAwarePluginBase implements CacheableDependencyInterface, ContextAwarePluginInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Core\Executable\ExecutablePluginBase implements ExecutableInterface
- class \Drupal\Core\Condition\ConditionPluginBase implements ConditionInterface uses ContextAwarePluginAssignmentTrait
- class \Drupal\config_pages\Plugin\Condition\ConfigPagesValueAccess implements ContainerFactoryPluginInterface
- class \Drupal\Core\Condition\ConditionPluginBase implements ConditionInterface uses ContextAwarePluginAssignmentTrait
- class \Drupal\Core\Executable\ExecutablePluginBase implements ExecutableInterface
- class \Drupal\Core\Plugin\ContextAwarePluginBase implements CacheableDependencyInterface, ContextAwarePluginInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Component\Plugin\ContextAwarePluginBase implements ContextAwarePluginInterface
Expanded class hierarchy of ConfigPagesValueAccess
File
- src/
Plugin/ Condition/ ConfigPagesValueAccess.php, line 21
Namespace
Drupal\config_pages\Plugin\ConditionView source
class ConfigPagesValueAccess extends ConditionPluginBase implements ContainerFactoryPluginInterface {
/**
* Drupal\config_pages\ConfigPagesInterface.
*
* @var \Drupal\config_pages\ConfigPagesInterface
*/
protected $configPagesLoader;
/**
* The entity field manager.
*
* @var \Drupal\Core\Entity\EntityFieldManagerInterface
*/
protected $entityFieldManager;
/**
* Allowed field types.
*
* @var array
*/
protected $allowedFieldTypes;
/**
* ConfigPagesValueAccess constructor.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param array $plugin_definition
* The plugin implementation definition.
* @param \Drupal\config_pages\ConfigPagesLoaderServiceInterface $configPagesLoader
* The ConfigPages loader service.
* @param \Drupal\Core\Entity\EntityFieldManagerInterface $entityFieldManager
* The entity field manager.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigPagesLoaderServiceInterface $configPagesLoader, EntityFieldManagerInterface $entityFieldManager) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->configPagesLoader = $configPagesLoader;
$this->entityFieldManager = $entityFieldManager;
$this->allowedFieldTypes = [
'string',
'boolean',
'decimal',
'datetime',
'integer',
'list_integer',
];
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('config_pages.loader'), $container
->get('entity_field.manager'));
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form = parent::buildConfigurationForm($form, $form_state);
// Get all available ConfigPages types and prepare options list.
$config = $this
->getConfiguration();
$config_pages_types = ConfigPagesType::loadMultiple();
// Build select options from allowed fields.
$field_options = [
'_none' => $this
->t('None'),
];
foreach ($config_pages_types as $cp_type) {
$id = $cp_type
->id();
$label = $cp_type
->label();
$cp_field = $this
->getConfigPageFields($id);
if (!empty($cp_field)) {
$field_options[$label] = $this
->getConfigPageFields($id);
}
}
// Add form items.
$form['negate']['#access'] = FALSE;
$form['config_page_field'] = [
'#type' => 'select',
'#title' => $this
->t('Select ConfigPage field to check'),
'#options' => $field_options,
'#default_value' => isset($config['config_page_field']) ? $config['config_page_field'] : '',
'#description' => $this
->t('Applied for: @types', [
'@types' => implode(', ', $this->allowedFieldTypes),
]),
];
$operandOptions = $this
->getOperandOptions();
$form['operator'] = [
'#type' => 'select',
'#title' => $this
->t('Operator'),
'#options' => $operandOptions,
'#default_value' => isset($config['operator']) ? $config['operator'] : array_keys($operandOptions)[0],
];
$form['condition_value'] = [
'#type' => 'textfield',
'#title' => $this
->t('Value'),
'#default_value' => isset($config['condition_value']) ? $config['condition_value'] : '',
'#size' => 21,
'#description' => $this
->t("Use 0 / 1 for boolean fields."),
];
return $form;
}
/**
* Returns supported operators.
*
* @return array
* Array of operators with their descriptions.
*/
public function getOperandOptions() {
$operator = [
'==' => $this
->t('Is equal to'),
'<' => $this
->t('Is less than'),
'<=' => $this
->t('Is less than or equal to'),
'!=' => $this
->t('Is not equal to'),
'>=' => $this
->t('Is greater than or equal to'),
'>' => $this
->t('Is greater than'),
'isset' => $this
->t('Not empty'),
];
return $operator;
}
/**
* Returns list of fields for config page.
*
* @return array
* Array of operators with their descriptions.
*/
public function getConfigPageFields($type) {
$result = [];
if (!empty($type)) {
// Get custom fields from config page.
$base_fields = $this->entityFieldManager
->getBaseFieldDefinitions('config_pages');
$fields = $this->entityFieldManager
->getFieldDefinitions('config_pages', $type);
$custom_fields = array_diff_key($fields, $base_fields);
// Build select options.
foreach ($custom_fields as $id => $field_config) {
$field_type = $field_config
->getType();
if (in_array($field_type, $this->allowedFieldTypes)) {
$result[$type . '|' . $id . '|' . $field_type] = $field_config
->getLabel() . ' (' . $id . ')';
}
}
}
return $result;
}
/**
* {@inheritdoc}
*/
public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
}
/**
* {@inheritdoc}
*/
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
parent::submitConfigurationForm($form, $form_state);
$field = $form_state
->getValue('config_page_field');
if ($field == '_none') {
$this->configuration = [];
}
else {
$this->configuration['config_page_field'] = $field;
$this->configuration['operator'] = $form_state
->getValue('operator');
$this->configuration['condition_value'] = $form_state
->getValue('condition_value');
}
}
/**
* {@inheritdoc}
*/
public function summary() {
$config_page_field = $this->configuration['config_page_field'];
$condition_value = $this->configuration['condition_value'];
$operator = $this->configuration['operator'];
$operators_list = $this
->getOperandOptions();
list($cp_type, $field, $data_type) = explode('|', $config_page_field);
$summary = $this
->t('Allow if field @field @op @value', [
'@field' => $field,
'@op' => strtolower($operators_list[$operator]),
'@value' => $condition_value,
]);
return $summary;
}
/**
* {@inheritdoc}
*/
public function evaluate() {
$config = $this
->getConfiguration();
if (isset($config['config_page_field'], $config['operator'], $config['condition_value'])) {
$config_page_field = $config['config_page_field'];
$operator = $config['operator'];
$condition_value = $config['condition_value'];
list($cp_type, $field, $data_type) = explode('|', $config_page_field);
// Get field value.
$field_value = $this->configPagesLoader
->getValue($cp_type, $field, 0, 'value');
return $this
->compareValues($condition_value, $field_value, $operator);
}
return TRUE;
}
/**
* Compare values based on operator.
*
* @return bool
* TRUE if comprising match.
*/
protected function compareValues($value, $field_value, $operator) {
// Compare values according to operator.
switch ($operator) {
case '==':
$result = $field_value == $value;
break;
case '<':
$result = $field_value < $value;
break;
case '<=':
$result = $field_value <= $value;
break;
case '!=':
$result = $field_value != $value;
break;
case '>=':
$result = $field_value >= $value;
break;
case '>':
$result = $field_value > $value;
break;
case 'isset':
$result = !empty($field_value) === !empty($value);
break;
default:
$result = FALSE;
}
return $result;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConditionPluginBase:: |
protected | property | The condition manager to proxy execute calls through. | |
ConditionPluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
|
ConditionPluginBase:: |
public | function |
Gets default configuration for this plugin. Overrides ConfigurableInterface:: |
5 |
ConditionPluginBase:: |
public | function |
Executes the plugin. Overrides ExecutableInterface:: |
|
ConditionPluginBase:: |
public | function |
Gets this plugin's configuration. Overrides ConfigurableInterface:: |
|
ConditionPluginBase:: |
public | function |
Determines whether condition result will be negated. Overrides ConditionInterface:: |
|
ConditionPluginBase:: |
public | function |
Sets the configuration for this plugin instance. Overrides ConfigurableInterface:: |
|
ConditionPluginBase:: |
public | function |
Sets the executable manager class. Overrides ConditionInterface:: |
|
ConfigPagesValueAccess:: |
protected | property | Allowed field types. | |
ConfigPagesValueAccess:: |
protected | property | Drupal\config_pages\ConfigPagesInterface. | |
ConfigPagesValueAccess:: |
protected | property | The entity field manager. | |
ConfigPagesValueAccess:: |
public | function |
Form constructor. Overrides ConditionPluginBase:: |
|
ConfigPagesValueAccess:: |
protected | function | Compare values based on operator. | |
ConfigPagesValueAccess:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
ConfigPagesValueAccess:: |
public | function |
Evaluates the condition and returns TRUE or FALSE accordingly. Overrides ConditionInterface:: |
|
ConfigPagesValueAccess:: |
public | function | Returns list of fields for config page. | |
ConfigPagesValueAccess:: |
public | function | Returns supported operators. | |
ConfigPagesValueAccess:: |
public | function |
Form submission handler. Overrides ConditionPluginBase:: |
|
ConfigPagesValueAccess:: |
public | function |
Provides a human readable summary of the condition's configuration. Overrides ConditionInterface:: |
|
ConfigPagesValueAccess:: |
public | function |
Form validation handler. Overrides ConditionPluginBase:: |
|
ConfigPagesValueAccess:: |
public | function |
ConfigPagesValueAccess constructor. Overrides ConditionPluginBase:: |
|
ContextAwarePluginAssignmentTrait:: |
protected | function | Builds a form element for assigning a context to a given slot. | |
ContextAwarePluginAssignmentTrait:: |
protected | function | Wraps the context handler. | |
ContextAwarePluginAssignmentTrait:: |
abstract protected | function | Ensures the t() method is available. | |
ContextAwarePluginBase:: |
protected | property | The data objects representing the context of this plugin. | |
ContextAwarePluginBase:: |
private | property | Data objects representing the contexts passed in the plugin configuration. | |
ContextAwarePluginBase:: |
protected | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
The cache contexts associated with this object. Overrides CacheableDependencyInterface:: |
9 |
ContextAwarePluginBase:: |
public | function |
The maximum age for which this object may be cached. Overrides CacheableDependencyInterface:: |
7 |
ContextAwarePluginBase:: |
public | function |
The cache tags associated with this object. Overrides CacheableDependencyInterface:: |
4 |
ContextAwarePluginBase:: |
public | function |
This code is identical to the Component in order to pick up a different
Context class. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the value for a defined context. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the values for all defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Set a context on this plugin. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Sets the value for a defined context. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function | Implements magic __get() method. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
ExecutablePluginBase:: |
public | function | Gets all configuration values. | |
ExecutablePluginBase:: |
public | function | Gets the definition of a configuration option. | |
ExecutablePluginBase:: |
public | function | Gets an array of definitions of available configuration options. | |
ExecutablePluginBase:: |
public | function | Sets the value of a particular configuration option. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
TypedDataTrait:: |
protected | property | The typed data manager used for creating the data types. | |
TypedDataTrait:: |
public | function | Gets the typed data manager. | 2 |
TypedDataTrait:: |
public | function | Sets the typed data manager. | 2 |