Ejemplo n.º 1
0
 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) . ')';
 }