PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor-prefixed / doctrine / orm / src / Query / QueryExpressionVisitor.php
mailpoet / vendor-prefixed / doctrine / orm / src / Query Last commit date
AST 9 months ago Exec 9 months ago Expr 9 months ago Filter 9 months ago Expr.php 9 months ago FilterCollection.php 9 months ago Lexer.php 9 months ago OutputWalker.php 9 months ago Parameter.php 9 months ago ParameterTypeInferer.php 9 months ago Parser.php 9 months ago ParserResult.php 9 months ago Printer.php 9 months ago QueryException.php 9 months ago QueryExpressionVisitor.php 9 months ago ResultSetMapping.php 9 months ago ResultSetMappingBuilder.php 9 months ago SqlOutputWalker.php 9 months ago SqlWalker.php 9 months ago TokenType.php 9 months ago TreeWalker.php 9 months ago TreeWalkerAdapter.php 9 months ago TreeWalkerChain.php 9 months ago TreeWalkerChainIterator.php 9 months ago index.php 9 months ago
QueryExpressionVisitor.php
126 lines
1 <?php
2 declare (strict_types=1);
3 namespace MailPoetVendor\Doctrine\ORM\Query;
4 if (!defined('ABSPATH')) exit;
5 use MailPoetVendor\Doctrine\Common\Collections\ArrayCollection;
6 use MailPoetVendor\Doctrine\Common\Collections\Expr\Comparison;
7 use MailPoetVendor\Doctrine\Common\Collections\Expr\CompositeExpression;
8 use MailPoetVendor\Doctrine\Common\Collections\Expr\ExpressionVisitor;
9 use MailPoetVendor\Doctrine\Common\Collections\Expr\Value;
10 use RuntimeException;
11 use function count;
12 use function defined;
13 use function str_replace;
14 use function str_starts_with;
15 class QueryExpressionVisitor extends ExpressionVisitor
16 {
17 private static $operatorMap = [Comparison::GT => Expr\Comparison::GT, Comparison::GTE => Expr\Comparison::GTE, Comparison::LT => Expr\Comparison::LT, Comparison::LTE => Expr\Comparison::LTE];
18 private $queryAliases;
19 private $expr;
20 private $parameters = [];
21 public function __construct($queryAliases)
22 {
23 $this->queryAliases = $queryAliases;
24 $this->expr = new Expr();
25 }
26 public function getParameters()
27 {
28 return new ArrayCollection($this->parameters);
29 }
30 public function clearParameters()
31 {
32 $this->parameters = [];
33 }
34 private static function convertComparisonOperator($criteriaOperator)
35 {
36 return self::$operatorMap[$criteriaOperator] ?? null;
37 }
38 public function walkCompositeExpression(CompositeExpression $expr)
39 {
40 $expressionList = [];
41 foreach ($expr->getExpressionList() as $child) {
42 $expressionList[] = $this->dispatch($child);
43 }
44 switch ($expr->getType()) {
45 case CompositeExpression::TYPE_AND:
46 return new Expr\Andx($expressionList);
47 case CompositeExpression::TYPE_OR:
48 return new Expr\Orx($expressionList);
49 default:
50 // Multiversion support for `doctrine/collections` before and after v2.1.0
51 if (defined(CompositeExpression::class . '::TYPE_NOT') && $expr->getType() === CompositeExpression::TYPE_NOT) {
52 return $this->expr->not($expressionList[0]);
53 }
54 throw new RuntimeException('Unknown composite ' . $expr->getType());
55 }
56 }
57 public function walkComparison(Comparison $comparison)
58 {
59 if (!isset($this->queryAliases[0])) {
60 throw new QueryException('No aliases are set before invoking walkComparison().');
61 }
62 $field = $this->queryAliases[0] . '.' . $comparison->getField();
63 foreach ($this->queryAliases as $alias) {
64 if (str_starts_with($comparison->getField() . '.', $alias . '.')) {
65 $field = $comparison->getField();
66 break;
67 }
68 }
69 $parameterName = str_replace('.', '_', $comparison->getField());
70 foreach ($this->parameters as $parameter) {
71 if ($parameter->getName() === $parameterName) {
72 $parameterName .= '_' . count($this->parameters);
73 break;
74 }
75 }
76 $parameter = new Parameter($parameterName, $this->walkValue($comparison->getValue()));
77 $placeholder = ':' . $parameterName;
78 switch ($comparison->getOperator()) {
79 case Comparison::IN:
80 $this->parameters[] = $parameter;
81 return $this->expr->in($field, $placeholder);
82 case Comparison::NIN:
83 $this->parameters[] = $parameter;
84 return $this->expr->notIn($field, $placeholder);
85 case Comparison::EQ:
86 case Comparison::IS:
87 if ($this->walkValue($comparison->getValue()) === null) {
88 return $this->expr->isNull($field);
89 }
90 $this->parameters[] = $parameter;
91 return $this->expr->eq($field, $placeholder);
92 case Comparison::NEQ:
93 if ($this->walkValue($comparison->getValue()) === null) {
94 return $this->expr->isNotNull($field);
95 }
96 $this->parameters[] = $parameter;
97 return $this->expr->neq($field, $placeholder);
98 case Comparison::CONTAINS:
99 $parameter->setValue('%' . $parameter->getValue() . '%', $parameter->getType());
100 $this->parameters[] = $parameter;
101 return $this->expr->like($field, $placeholder);
102 case Comparison::MEMBER_OF:
103 return $this->expr->isMemberOf($comparison->getField(), $comparison->getValue()->getValue());
104 case Comparison::STARTS_WITH:
105 $parameter->setValue($parameter->getValue() . '%', $parameter->getType());
106 $this->parameters[] = $parameter;
107 return $this->expr->like($field, $placeholder);
108 case Comparison::ENDS_WITH:
109 $parameter->setValue('%' . $parameter->getValue(), $parameter->getType());
110 $this->parameters[] = $parameter;
111 return $this->expr->like($field, $placeholder);
112 default:
113 $operator = self::convertComparisonOperator($comparison->getOperator());
114 if ($operator) {
115 $this->parameters[] = $parameter;
116 return new Expr\Comparison($field, $operator, $placeholder);
117 }
118 throw new RuntimeException('Unknown comparison operator: ' . $comparison->getOperator());
119 }
120 }
121 public function walkValue(Value $value)
122 {
123 return $value->getValue();
124 }
125 }
126