protected function _where(&$sql, &$bindParams)
{
$clauses = array();
foreach ($this->tests as $test) {
if (strpos($test['field'], '@') !== false) {
list($rel, $field) = explode('@', $test['field']);
if (!isset($this->relationships[$rel])) {
continue;
}
$clause = $this->relationships[$rel]['tableAlias'] . '.' . $field . ' ' . $test['test'];
} else {
$clause = $this->mapper->table . '.' . $this->mapper->adapter->quoteColumnName($test['field']) . ' ' . $test['test'];
}
if ($test['value'] instanceof Horde_Rdo_Query_Literal) {
$clauses[] = $clause . ' ' . (string) $test['value'];
} else {
if (($test['test'] == 'IN' || $test['test'] == 'NOT IN') && is_array($test['value'])) {
$clauses[] = $clause . '(?' . str_repeat(',?', count($test['value']) - 1) . ')';
$bindParams = array_merge($bindParams, array_values($test['value']));
} else {
$clauses[] = $clause . ' ?';
$bindParams[] = $test['value'];
}
}
}
if ($clauses) {
$sql .= ' WHERE ' . implode(' ' . $this->conjunction . ' ', $clauses);
}
}