/** * Like * * Called by like() or orlike() * * @access private * @param mixed * @param mixed * @param string * @return object */ function _like($field, $match = '', $type = 'AND ', $side = 'both', $not = '') { // store this as the last_bracket_type $this->last_bracket_type = 'like'; // do we already have entries for the where clause? if ($where_count = count($this->ar_where) > 0) { // yes, add a dummy entry to force the $type being added $this->ar_like[] = ''; } // call the original method $result = parent::_like($field, $match, $type, $side, $not); // fetch the key of the last entry added end($this->ar_like); $key = key($this->ar_like); // do we need to add an open bracket if ($this->ar_bracket_open) { // was this the first entry? if ($where_count == 0) { // first where clause, simply prefix it with a bracket open $this->ar_like[$key] = '(' . $this->ar_like[$key]; } else { // subsequent where clause, strip the type before adding the bracket open $this->ar_like[$key] = $type . ' (' . substr($this->ar_like[$key], strlen($type)); } // reset the bracket state $this->ar_bracket_open = FALSE; if ($this->ar_caching === TRUE) { $this->ar_cache_like[$key] = $this->ar_like[$key]; } } // add the like to the ar_where array to maintain where clause sequence $this->ar_where[] = $this->ar_like[$key]; $this->ar_like = array(); // return the result return $result; }