public function buildCondition(PlFilter $uf) { $conds = array(); foreach ($this->tokens as $i => $token) { $sub = $uf->addNameTokensFilter($token); if ($this->soundex) { $c = XDB::format($sub . '.soundex = {?}', soundex_fr($token)); } else { if ($this->exact) { $c = XDB::format($sub . '.token = {?}', $token); } else { $c = $sub . '.token ' . XDB::formatWildcards(XDB::WILDCARD_PREFIX, $token); } } if ($this->flags != null) { $c .= XDB::format(' AND ' . $sub . '.flags IN {?}', $this->flags); } if ($this->general_type) { $c .= XDB::format(' AND ' . $sub . '.general_type = {?}', $this->general_type); } $c .= ' AND (' . $uf->getVisibilityConditionAbsolute(Visibility::EXPORT_PRIVATE) . ' OR ' . $sub . '.general_type != \'nickname\')'; $conds[] = $c; } return implode(' AND ', $conds); }