EntityContextDefinition.php in Rules 8.3
File
src/Context/EntityContextDefinition.php
View source
<?php
namespace Drupal\rules\Context;
use Drupal\Core\Plugin\Context\EntityContextDefinition as EntityContextDefinitionCore;
use Drupal\Component\Plugin\Exception\ContextException;
class EntityContextDefinition extends EntityContextDefinitionCore implements ContextDefinitionInterface {
public static $nameMap = [
'type' => 'dataType',
'label' => 'label',
'description' => 'description',
'multiple' => 'isMultiple',
'required' => 'isRequired',
'default_value' => 'defaultValue',
'constraints' => 'constraints',
'allow_null' => 'allowNull',
'assignment_restriction' => 'assignmentRestriction',
];
public $allowNull = FALSE;
public $assignmentRestriction = NULL;
public function toArray() {
$values = [];
$defaults = get_class_vars(__CLASS__);
foreach (static::$nameMap as $key => $property_name) {
if ($this->{$property_name} !== $defaults[$property_name]) {
$values[$key] = $this->{$property_name};
}
}
return $values;
}
public static function createFromArray(array $values) {
if (isset($values['class']) && !in_array(ContextDefinitionInterface::class, class_implements($values['class']))) {
throw new ContextException('EntityContextDefinition class must implement ' . ContextDefinitionInterface::class . '.');
}
$values['class'] = isset($values['class']) ? $values['class'] : EntityContextDefinition::class;
if (!isset($values['value'])) {
$values['value'] = 'any';
}
$definition = $values['class']::create($values['value']);
foreach (array_intersect_key(static::$nameMap, $values) as $key => $name) {
$definition->{$name} = $values[$key];
}
return $definition;
}
public function isAllowedNull() {
return $this->allowNull;
}
public function setAllowNull($null_allowed) {
$this->allowNull = $null_allowed;
return $this;
}
public function getAssignmentRestriction() {
return $this->assignmentRestriction;
}
public function setAssignmentRestriction($restriction) {
$this->assignmentRestriction = $restriction;
return $this;
}
}