1) { $ret = array(); foreach($parts as $part) { $part = Doctrine_Query::bracketTrim($part, "(", ")"); $ret[] = $this->parse($part); } $r = implode(" AND ",$ret); } else { $parts = Doctrine_Query::bracketExplode($str, array(' \|\| ', ' OR '), "(", ")"); if(count($parts) > 1) { $ret = array(); foreach($parts as $part) { $part = Doctrine_Query::bracketTrim($part, "(", ")"); $ret[] = $this->parse($part); } $r = implode(" OR ",$ret); } else { if(substr($parts[0],0,1) == "(" && substr($parts[0],-1) == ")") return $this->parse(substr($parts[0],1,-1)); else return $this->load($parts[0]); } } return "(".$r.")"; } }