public function buildCondition(PlFilter $uf) { $foreign = array(); $local = array(); $cond = array(); if (count($this->emails) == 0) { return PlFilterCondition::COND_FALSE; } foreach ($this->emails as $entry) { if (User::isForeignEmailAddress($entry)) { $foreign[] = $entry; } else { list($local_part, ) = explode('@', $entry); $local[] = $local_part; } } if (count($foreign) > 0) { $sub = $uf->addEmailRedirectFilter($foreign); $cond[] = XDB::format('ra' . $sub . '.redirect IS NOT NULL OR ra' . $sub . '.redirect IN {?} OR a.email IN {?}', $foreign, $foreign); } if (count($local) > 0) { $sub = $uf->addAliasFilter($local); $cond[] = 'sa' . $sub . '.email IS NOT NULL'; } return '(' . implode(') OR (', $cond) . ')'; }