column_name = $column_name; $this->argument = $argument; $this->operation = $operation; $this->pipe = $pipe; } function getArgument(){ return null; } function toString($withValue = true){ if(!isset($this->_value_to_string)){ if(!$this->show()) { $this->_value_to_string = ''; } else if($withValue) $this->_value_to_string = $this->toStringWithValue(); else $this->_value_to_string = $this->toStringWithoutValue(); } return $this->_value_to_string; } function toStringWithoutValue(){ return $this->pipe . ' ' . $this->getConditionPart($this->_value); } function toStringWithValue(){ return $this->pipe . ' ' . $this->getConditionPart($this->_value); } function setPipe($pipe){ $this->pipe = $pipe; } function show(){ if(!isset($this->_show)){ if(is_array($this->_value) && count($this->_value) === 1 && $this->_value[0] === '') { $this->_show = false; } else { $this->_show = true; switch($this->operation) { case 'equal' : case 'more' : case 'excess' : case 'less' : case 'below' : case 'like_tail' : case 'like_prefix' : case 'like' : case 'in' : case 'notin' : case 'notequal' : // if variable is not set or is not string or number, return if(!isset($this->_value)) { $this->_show = false; break;} if($this->_value === '') { $this->_show = false; break; } if(!in_array(gettype($this->_value), array('string', 'integer'))) {$this->_show = false; break; } break; case 'between' : if(!is_array($this->_value)) { $this->_show = false; break;} if(count($this->_value)!=2) {$this->_show = false; break;} } } } return $this->_show; } function getConditionPart($value) { $name = $this->column_name; $operation = $this->operation; switch($operation) { case 'equal' : return $name.' = '.$value; break; case 'more' : return $name.' >= '.$value; break; case 'excess' : return $name.' > '.$value; break; case 'less' : return $name.' <= '.$value; break; case 'below' : return $name.' < '.$value; break; case 'like_tail' : case 'like_prefix' : case 'like' : return $name.' like '.$value; break; case 'in' : return $name.' in '.$value; break; case 'notin' : return $name.' not in '.$value; break; case 'notequal' : return $name.' <> '.$value; break; case 'notnull' : return $name.' is not null'; break; case 'null' : return $name.' is null'; break; case 'between' : return $name.' between ' . $value[0] . ' and ' . $value[1]; break; } } } ?>