1: <?php
2:
3: namespace PHPixie\Database\Type\Document\Conditions\Builder;
4:
5: abstract class Container extends \PHPixie\Database\Conditions\Builder\Container\Conditions
6: implements \PHPixie\Database\Type\Document\Conditions\Builder
7: {
8: public function __construct($conditions, $defaultOperator = '=')
9: {
10: parent::__construct($conditions, $defaultOperator);
11: }
12:
13: public function addPlaceholder($logic = 'and', $negate = false, $allowEmpty = true)
14: {
15: return parent::addPlaceholder($logic, $negate, $allowEmpty);
16: }
17:
18: public function addSubdocumentPlaceholder($field, $logic = 'and', $negate = false, $allowEmpty = true)
19: {
20: $subdocument = $this->conditions->subdocumentPlaceholder($field, $this->defaultOperator, $allowEmpty);
21: $this->addCondition($logic, $negate, $subdocument);
22:
23: return $subdocument->container();
24: }
25:
26: public function addSubarrayItemPlaceholder($field, $logic = 'and', $negate = false, $allowEmpty = true)
27: {
28: $subdocument = $this->conditions->subarrayItemPlaceholder($field, $this->defaultOperator, $allowEmpty);
29: $this->addCondition($logic, $negate, $subdocument);
30:
31: return $subdocument->container();
32: }
33:
34: public function startSubdocumentConditionGroup($field, $logic = 'and', $negate = false)
35: {
36: $group = $this->conditions->subdocumentGroup($field);
37: $this->pushGroup($logic, $negate, $group);
38:
39: return $this;
40: }
41:
42: public function startSubarrayItemConditionGroup($field, $logic = 'and', $negate = false)
43: {
44: $group = $this->conditions->subarrayItemGroup($field);
45: $this->pushGroup($logic, $negate, $group);
46:
47: return $this;
48: }
49:
50: public function startSubdocumentGroup($field)
51: {
52: return $this->startSubdocumentConditionGroup($field, 'and', false);
53: }
54:
55: public function startAndSubdocumentGroup($field)
56: {
57: return $this->startSubdocumentConditionGroup($field, 'and', false);
58: }
59:
60: public function startOrSubdocumentGroup($field)
61: {
62: return $this->startSubdocumentConditionGroup($field, 'or', false);
63: }
64:
65: public function startXorSubdocumentGroup($field)
66: {
67: return $this->startSubdocumentConditionGroup($field, 'xor', false);
68: }
69:
70: public function startNotSubdocumentGroup($field)
71: {
72: return $this->startSubdocumentConditionGroup($field, 'and', true);
73: }
74:
75: public function startAndNotSubdocumentGroup($field)
76: {
77: return $this->startSubdocumentConditionGroup($field, 'and', true);
78: }
79:
80: public function startOrNotSubdocumentGroup($field)
81: {
82: return $this->startSubdocumentConditionGroup($field, 'or', true);
83: }
84:
85: public function startXorNotSubdocumentGroup($field)
86: {
87: return $this->startSubdocumentConditionGroup($field, 'xor', true);
88: }
89:
90:
91: public function startSubarrayItemGroup($field)
92: {
93: return $this->startSubarrayItemConditionGroup($field, 'and', false);
94: }
95:
96: public function startAndSubarrayItemGroup($field)
97: {
98: return $this->startSubarrayItemConditionGroup($field, 'and', false);
99: }
100:
101: public function startOrSubarrayItemGroup($field)
102: {
103: return $this->startSubarrayItemConditionGroup($field, 'or', false);
104: }
105:
106: public function startXorSubarrayItemGroup($field)
107: {
108: return $this->startSubarrayItemConditionGroup($field, 'xor', false);
109: }
110:
111: public function startNotSubarrayItemGroup($field)
112: {
113: return $this->startSubarrayItemConditionGroup($field, 'and', true);
114: }
115:
116: public function startAndNotSubarrayItemGroup($field)
117: {
118: return $this->startSubarrayItemConditionGroup($field, 'and', true);
119: }
120:
121: public function startOrNotSubarrayItemGroup($field)
122: {
123: return $this->startSubarrayItemConditionGroup($field, 'or', true);
124: }
125:
126: public function startXorNotSubarrayItemGroup($field)
127: {
128: return $this->startSubarrayItemConditionGroup($field, 'xor', true);
129: }
130:
131:
132: }