Phosphorum\Badges\Badge\GoodQuestion::canHave PHP Method

canHave() public method

Check whether the user can have the badge
public canHave ( Users $user ) : boolean
$user Phosphorum\Models\Users
return boolean
    public function canHave(Users $user)
    {
        $ids = [];
        $noBountyCategories = $this->getNoBountyCategories();
        $conditions = 'categories_id NOT IN (' . join(', ', $noBountyCategories) . ') AND
        (IF(votes_up IS NULL, 0, votes_up) - IF(votes_down IS NULL, 0, votes_down)) >= 5';
        $posts = $user->getPosts([$conditions, 'columns' => 'id', 'order' => 'created_at DESC']);
        foreach ($posts as $post) {
            $have = UsersBadges::count(['users_id = ?0 AND badge = ?1 AND type = "P" AND code1 = ?2', 'bind' => [$user->id, $this->getName(), $post->id]]);
            if (!$have) {
                $ids[] = $post->id;
            }
        }
        return $ids;
    }