Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\jsonapi\Query;
|
Chris@18
|
4
|
Chris@18
|
5 /**
|
Chris@18
|
6 * A condition group for the EntityQuery.
|
Chris@18
|
7 *
|
Chris@18
|
8 * @internal JSON:API maintains no PHP API since its API is the HTTP API. This
|
Chris@18
|
9 * class may change at any time and this will break any dependencies on it.
|
Chris@18
|
10 *
|
Chris@18
|
11 * @see https://www.drupal.org/project/jsonapi/issues/3032787
|
Chris@18
|
12 * @see jsonapi.api.php
|
Chris@18
|
13 */
|
Chris@18
|
14 class EntityConditionGroup {
|
Chris@18
|
15
|
Chris@18
|
16 /**
|
Chris@18
|
17 * The AND conjunction value.
|
Chris@18
|
18 *
|
Chris@18
|
19 * @var array
|
Chris@18
|
20 */
|
Chris@18
|
21 protected static $allowedConjunctions = ['AND', 'OR'];
|
Chris@18
|
22
|
Chris@18
|
23 /**
|
Chris@18
|
24 * The conjunction.
|
Chris@18
|
25 *
|
Chris@18
|
26 * @var string
|
Chris@18
|
27 */
|
Chris@18
|
28 protected $conjunction;
|
Chris@18
|
29
|
Chris@18
|
30 /**
|
Chris@18
|
31 * The members of the condition group.
|
Chris@18
|
32 *
|
Chris@18
|
33 * @var \Drupal\jsonapi\Query\EntityCondition[]
|
Chris@18
|
34 */
|
Chris@18
|
35 protected $members;
|
Chris@18
|
36
|
Chris@18
|
37 /**
|
Chris@18
|
38 * Constructs a new condition group object.
|
Chris@18
|
39 *
|
Chris@18
|
40 * @param string $conjunction
|
Chris@18
|
41 * The group conjunction to use.
|
Chris@18
|
42 * @param array $members
|
Chris@18
|
43 * (optional) The group conjunction to use.
|
Chris@18
|
44 */
|
Chris@18
|
45 public function __construct($conjunction, array $members = []) {
|
Chris@18
|
46 if (!in_array($conjunction, self::$allowedConjunctions)) {
|
Chris@18
|
47 throw new \InvalidArgumentException('Allowed conjunctions: AND, OR.');
|
Chris@18
|
48 }
|
Chris@18
|
49 $this->conjunction = $conjunction;
|
Chris@18
|
50 $this->members = $members;
|
Chris@18
|
51 }
|
Chris@18
|
52
|
Chris@18
|
53 /**
|
Chris@18
|
54 * The condition group conjunction.
|
Chris@18
|
55 *
|
Chris@18
|
56 * @return string
|
Chris@18
|
57 * The condition group conjunction.
|
Chris@18
|
58 */
|
Chris@18
|
59 public function conjunction() {
|
Chris@18
|
60 return $this->conjunction;
|
Chris@18
|
61 }
|
Chris@18
|
62
|
Chris@18
|
63 /**
|
Chris@18
|
64 * The members which belong to the the condition group.
|
Chris@18
|
65 *
|
Chris@18
|
66 * @return \Drupal\jsonapi\Query\EntityCondition[]
|
Chris@18
|
67 * The member conditions of this condition group.
|
Chris@18
|
68 */
|
Chris@18
|
69 public function members() {
|
Chris@18
|
70 return $this->members;
|
Chris@18
|
71 }
|
Chris@18
|
72
|
Chris@18
|
73 }
|