XpressEngine Core  1.11.2
 All Classes Namespaces Files Functions Variables Pages
Condition.class.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) NAVER <http://www.navercorp.com> */
3 
9 class Condition
10 {
11 
17  var $argument;
18 
26 
31  var $pipe;
32  var $_value;
33  var $_show;
35 
45  {
46  $this->column_name = $column_name;
47  $this->argument = $argument;
48  $this->operation = $operation;
49  $this->pipe = $pipe;
50  }
51 
52  function getArgument()
53  {
54  return null;
55  }
56 
62  function toString($withValue = true)
63  {
64  if(!isset($this->_value_to_string))
65  {
66  if(!$this->show())
67  {
68  $this->_value_to_string = '';
69  }
70  else if($withValue)
71  {
72  $this->_value_to_string = $this->toStringWithValue();
73  }
74  else
75  {
76  $this->_value_to_string = $this->toStringWithoutValue();
77  }
78  }
80  }
81 
87  {
88  return $this->pipe . ' ' . $this->getConditionPart($this->_value);
89  }
90 
95  function toStringWithValue()
96  {
97  return $this->pipe . ' ' . $this->getConditionPart($this->_value);
98  }
99 
100  function setPipe($pipe)
101  {
102  $this->pipe = $pipe;
103  }
104 
108  function show()
109  {
110  if(!isset($this->_show))
111  {
112  if(is_array($this->_value) && count($this->_value) === 1 && $this->_value[0] === '')
113  {
114  $this->_show = false;
115  }
116  else
117  {
118  $this->_show = true;
119  switch($this->operation)
120  {
121  case 'equal' :
122  case 'more' :
123  case 'excess' :
124  case 'less' :
125  case 'below' :
126  case 'like_tail' :
127  case 'like_prefix' :
128  case 'like' :
129  case 'notlike_tail' :
130  case 'notlike_prefix' :
131  case 'notlike' :
132  case 'in' :
133  case 'notin' :
134  case 'not_in' :
135  case 'and':
136  case 'or':
137  case 'xor':
138  case 'not':
139  case 'notequal' :
140  // if variable is not set or is not string or number, return
141  if(!isset($this->_value))
142  {
143  $this->_show = false;
144  break;
145  }
146  if($this->_value === '')
147  {
148  $this->_show = false;
149  break;
150  }
151  $tmpArray = array('string' => 1, 'integer' => 1);
152  if(!isset($tmpArray[gettype($this->_value)]))
153  {
154  $this->_show = false;
155  break;
156  }
157  break;
158  case 'between' :
159  if(!is_array($this->_value))
160  {
161  $this->_show = false;
162  break;
163  }
164  if(count($this->_value) != 2)
165  {
166  $this->_show = false;
167  break;
168  }
169  case 'null':
170  case 'notnull':
171  break;
172  default:
173  // If operation is not one of the above, means the condition is invalid
174  $this->_show = false;
175  }
176  }
177  }
178  return $this->_show;
179  }
180 
186  function getConditionPart($value)
187  {
188  $name = $this->column_name;
190 
191  switch($operation)
192  {
193  case 'equal' :
194  return $name . ' = ' . $value;
195  break;
196  case 'more' :
197  return $name . ' >= ' . $value;
198  break;
199  case 'excess' :
200  return $name . ' > ' . $value;
201  break;
202  case 'less' :
203  return $name . ' <= ' . $value;
204  break;
205  case 'below' :
206  return $name . ' < ' . $value;
207  break;
208  case 'like_tail' :
209  case 'like_prefix' :
210  case 'like' :
211  if(defined('__CUBRID_VERSION__')
212  && __CUBRID_VERSION__ >= '8.4.1')
213  return $name . ' rlike ' . $value;
214  else
215  return $name . ' like ' . $value;
216  break;
217  case 'notlike_tail' :
218  case 'notlike_prefix' :
219  case 'notlike' :
220  return $name . ' not like ' . $value;
221  break;
222  case 'in' :
223  return $name . ' in ' . $value;
224  break;
225  case 'notin' :
226  case 'not_in' :
227  return $name . ' not in ' . $value;
228  break;
229  case 'notequal' :
230  return $name . ' <> ' . $value;
231  break;
232  case 'notnull' :
233  return $name . ' is not null';
234  break;
235  case 'null' :
236  return $name . ' is null';
237  break;
238  case 'and' :
239  return $name . ' & ' . $value;
240  break;
241  case 'or' :
242  return $name . ' | ' . $value;
243  break;
244  case 'xor' :
245  return $name . ' ^ ' . $value;
246  break;
247  case 'not' :
248  return $name . ' ~ ' . $value;
249  break;
250  case 'between' :
251  return $name . ' between ' . $value[0] . ' and ' . $value[1];
252  break;
253  }
254  }
255 
256 }
257 /* End of file Condition.class.php */
258 /* Location: ./classes/db/queryparts/condition/Condition.class.php */
toString($withValue=true)
__construct($column_name, $argument, $operation, $pipe)
getConditionPart($value)