AndExpression.php
Namespace
Drupal\rules\Plugin\RulesExpressionFile
-
src/
Plugin/ RulesExpression/ AndExpression.php
View source
<?php
namespace Drupal\rules\Plugin\RulesExpression;
use Drupal\rules\Context\ExecutionStateInterface;
use Drupal\rules\Engine\ConditionExpressionContainer;
/**
* Evaluates a group of conditions with a logical AND.
*
* @RulesExpression(
* id = "rules_and",
* label = @Translation("Condition set (AND)"),
* form_class = "\Drupal\rules\Form\Expression\ConditionContainerForm"
* )
*/
class AndExpression extends ConditionExpressionContainer {
/**
* Returns whether there is a configured condition.
*
* @todo Remove this once we added the API to access configured conditions.
*
* @return bool
* TRUE if there are no conditions, FALSE otherwise.
*/
public function isEmpty() {
return empty($this->conditions);
}
/**
* {@inheritdoc}
*/
public function evaluate(ExecutionStateInterface $state) {
// Use the iterator to ensure the conditions are sorted.
foreach ($this as $condition) {
/** @var \Drupal\rules\Engine\ExpressionInterface $condition */
if (!$condition->executeWithState($state)) {
$this->rulesDebugLogger
->info('%label evaluated to %result.', [
'%label' => $this->getLabel(),
'%result' => 'FALSE',
]);
return FALSE;
}
}
$this->rulesDebugLogger
->info('%label evaluated to %result.', [
'%label' => $this->getLabel(),
'%result' => 'TRUE',
]);
// An empty AND should return FALSE. Otherwise, if all conditions evaluate
// to TRUE we return TRUE.
return !empty($this->conditions);
}
/**
* {@inheritdoc}
*/
protected function allowsMetadataAssertions() {
// If the AND is not negated, all child-expressions must be executed - thus
// assertions can be added it.
return !$this->isNegated();
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
AndExpression | Evaluates a group of conditions with a logical AND. |