XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
criteria.class.php
1<?php
10
11define('LEGACY_EXPRESSION_EQ', '=');
12define('LEGACY_EXPRESSION_NE', '<>');
13define('LEGACY_EXPRESSION_LT', '<');
14define('LEGACY_EXPRESSION_LE', '<=');
15define('LEGACY_EXPRESSION_GT', '>');
16define('LEGACY_EXPRESSION_GE', '>=');
17define('LEGACY_EXPRESSION_LIKE', 'like');
18define('LEGACY_EXPRESSION_IN', 'in');
19
20define('LEGACY_EXPRESSION_AND', 'and');
21define('LEGACY_EXPRESSION_OR', 'or');
22
63{
64 public $mTypeInfoArr = [];
65
69 public $mChildlen = [];
70
71 public function __construct($typeInfoArr)
72 {
73 $this->mTypeInfoArr = $typeInfoArr;
74 }
75
82 public function add($column, $value = null, $comparison = LEGACY_EXPRESSION_EQ)
83 {
84 $this->addAnd($column, $value, $comparison);
85 }
86
93 public function addAnd($column, $value = null, $comparison = LEGACY_EXPRESSION_EQ)
94 {
95 $t_arr = [];
96 $t_arr['condition'] = LEGACY_EXPRESSION_AND;
97 if (is_object($column) && $column instanceof \Legacy_Criteria) {
98 $t_arr['value'] = $column;
99 $this->mChildlen[] = $t_arr;
100 } elseif (!is_object($column)) {
101 if ($this->_checkColumn() && $this->_castingConversion($column, $value)) {
102 $t_arr['value'] = $value;
103 $t_arr['comparison'] = $comparison;
104 $this->mChildlen[] = $t_arr;
105 }
106 }
107 }
108
115 public function addOr($column, $value = null, $comparison = LEGACY_EXPRESSION_EQ)
116 {
117 $t_arr = [];
118 $t_arr['condition'] = LEGACY_EXPRESSION_OR;
119 if (is_object($column) && $column instanceof \Legacy_Criteria) {
120 $t_arr['value'] = $column;
121 $this->mChildlen[] = $t_arr;
122 } elseif (!is_object($column)) {
123 if ($this->_checkColumn() && $this->_castingConversion($column, $value)) {
124 $t_arr['value'] = $value;
125 $t_arr['comparison'] = $comparison;
126 $this->mChildlen[] = $t_arr;
127 }
128 }
129 }
130
137 public function &createCriterion()
138 {
139 $criteria =new Legacy_Criteria($this->mTypeInfoArr);
140 return $criteria;
141 }
142
150 public function _checkColumn($column)
151 {
152 return isset($this->mTypeInfoArr[$column]);
153 }
154
163 public function _castingConversion($column, &$value)
164 {
165 if (is_array($value)) {
166 foreach ($value as $_key => $_val) {
167 if ($this->_castingConversion($column, $_val)) {
168 $value[$_key] = $_val;
169 } else {
170 return false;
171 }
172 }
173 }
174 if (!is_object($value)) {
175 switch ($this->mTypeInfoArr[$column]) {
176 case XOBJ_DTYPE_BOOL:
177 $value = $value ? 1 : 0;
178 break;
179
180 case XOBJ_DTYPE_INT:
181 $value = (int)$value;
182 break;
183
184 case XOOPS_DTYPE_FLOAT:
185 $value = (float)$value;
186 break;
187
188 case XOOPS_DTYPE_STRING:
189 case XOOPS_DTYPE_TEXT:
190 break;
191
192 default:
193 return false;
194 }
195 } else {
196 return false;
197 }
198
199 return true;
200 }
201}
addAnd($column, $value=null, $comparison=LEGACY_EXPRESSION_EQ)
addOr($column, $value=null, $comparison=LEGACY_EXPRESSION_EQ)
_castingConversion($column, &$value)
add($column, $value=null, $comparison=LEGACY_EXPRESSION_EQ)