/** * Check whether the user can have the badge * * @param Users $user * @return boolean */ public function canHave(Users $user) { $noBountyCategories = $this->getNoBountyCategories(); $conditions = 'categories_id NOT IN (' . join(', ', $noBountyCategories) . ') AND accepted_answer = "Y"'; $posts = $user->getPosts(array($conditions, 'order' => 'created_at DESC')); foreach ($posts as $post) { $ownReply = $post->countReplies(array("accepted = 'Y' AND users_id = ?0", 'bind' => array($user->id))); if ($ownReply) { return true; } } return false; }
/** * Check whether the user can have the badge * * @param Users $user * @return boolean */ public function canHave(Users $user) { $ids = []; $noBountyCategories = $this->getNoBountyCategories(); $conditions = 'categories_id NOT IN (' . join(', ', $noBountyCategories) . ') AND number_views >= 10000'; $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; }
/** * Check whether the user can have the badge * * @param Users $user * @return boolean */ public function canHave(Users $user) { $ids = array(); $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(array($conditions, 'columns' => 'id', 'order' => 'created_at DESC')); foreach ($posts as $post) { $have = UsersBadges::count(array('users_id = ?0 AND badge = ?1 AND type = "P" AND code1 = ?2', 'bind' => array($user->id, $this->getName(), $post->id))); if (!$have) { $ids[] = $post->id; } } return $ids; }