Flarum\Core\Search\Discussion\Gambit\UnreadGambit::conditions PHP Method

conditions() protected method

protected conditions ( AbstractSearch $search, array $matches, $negate )
$search Flarum\Core\Search\AbstractSearch
$matches array
    protected function conditions(AbstractSearch $search, array $matches, $negate)
    {
        if (!$search instanceof DiscussionSearch) {
            throw new LogicException('This gambit can only be applied on a DiscussionSearch');
        }
        $actor = $search->getActor();
        if ($actor->exists) {
            $readIds = $this->discussions->getReadIds($actor);
            $search->getQuery()->where(function ($query) use($readIds, $negate, $actor) {
                if (!$negate) {
                    $query->whereNotIn('id', $readIds)->where('last_time', '>', $actor->read_time ?: 0);
                } else {
                    $query->whereIn('id', $readIds)->orWhere('last_time', '<=', $actor->read_time ?: 0);
                }
            });
        }
    }