/** * Append a WHERE with OR. * * @example $dataQuery->whereAny(array("\"Monkey\" = 'Chimp'", "\"Color\" = 'Brown'")); * @see where() * * @param array $filter Escaped SQL statement. * @return DataQuery */ public function whereAny($filter) { if ($filter) { $this->query->addWhereAny($filter); } return $this; }
public function augmentSQL(SQLQuery &$query) { if (Config::inst()->forClass('Post')->allow_reading_spam) { return; } $member = Member::currentUser(); $forum = $this->owner->Forum(); // Do Status filtering if ($member && is_numeric($forum->ID) && $member->ID == $forum->Moderator()->ID) { $filter = "\"Post\".\"Status\" IN ('Moderated', 'Awaiting')"; } else { $filter = "\"Post\".\"Status\" = 'Moderated'"; } $query->addWhere($filter); // Filter out posts where the author is in some sort of banned / suspended status $query->addInnerJoin("Member", "\"AuthorStatusCheck\".\"ID\" = \"Post\".\"AuthorID\"", "AuthorStatusCheck"); $authorStatusFilter = array(array('"AuthorStatusCheck"."ForumStatus"' => 'Normal')); if ($member && $member->ForumStatus === 'Ghost') { $authorStatusFilter[] = array('"Post"."AuthorID" = ?', $member->ID); } $query->addWhereAny($authorStatusFilter); $query->setDistinct(false); }