# Pastebin Ho7kq7g1 sub voter_clause { my $self = shift; my $sql = 'vote.editor '; my @args; if ($self->operator eq 'subscribed') { $sql .= 'IN ( SELECT subscribed_editor FROM editor_subscribe_editor WHERE editor = ? )'; push @args, $self->user->id; } elsif ($self->operator eq 'not_subscribed') { $sql .= 'NOT IN ( SELECT subscribed_editor FROM editor_subscribe_editor WHERE editor = ? )'; push @args, $self->user->id; } elsif ($self->operator eq '=') { $sql .= '= ?'; push @args, $self->voter_id; } elsif ($self->operator eq '!=') { $sql .= '!= ?'; push @args, $self->voter_id; } elsif ($self->operator eq 'me') { $sql .= '= ?'; push @args, $self->user->id; } elsif ($self->operator eq 'not_me') { $sql .= '!= ?'; push @args, $self->user->id; } elsif ($self->operator eq 'limited') { # Please keep the beginner logic in sync with Report::LimitedEditors and Entity::Editor my $beginner_sql = <<~"SQL"; SELECT id FROM editor beginner WHERE id != ? AND deleted = FALSE AND ( member_since > NOW() - INTERVAL '2 weeks' OR NOT EXISTS ( SELECT 1 FROM edit e2 WHERE e2.editor = beginner.id AND e2.autoedit = 0 AND e2.status = ? OFFSET 9 ) ) SQL $sql .= " IN ($beginner_sql)"; push @args, $EDITOR_MODBOT, $STATUS_APPLIED; } return ($sql, \@args); }