/** * Check whether the user already have this badge * * @param Users $user * @return boolean */ public function has(Users $user) { $has = false; $categories = $this->getExpertQuery($user)->execute([$user->id]); foreach ($categories as $categoryRow) { $category = Categories::findFirstById($categoryRow->categories_id); if ($category) { $badgeName = $category->name . ' / ' . $this->getName(); $has |= UsersBadges::count(['users_id = ?0 AND badge = ?1', 'bind' => [$user->id, $badgeName]]) == 0; } } return (bool) (!$has); }
/** * 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 = []; $noBountyCategories = $this->getNoBountyCategories(); $conditions = '(IF(votes_up IS NULL, 0, votes_up) - IF(votes_down IS NULL, 0, votes_down)) >= 5'; $replies = $user->getReplies([$conditions, 'columns' => 'id, posts_id', 'order' => 'created_at DESC']); foreach ($replies as $reply) { $have = UsersBadges::count(['users_id = ?0 AND badge = ?1 AND type = "C" AND code1 = ?2', 'bind' => [$user->id, $this->getName(), $reply->id]]); if (!$have) { $ids[] = [$reply->posts_id, $reply->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; }
/** * Check whether the user already have this badge * * @param Users $user * @return boolean */ public function has(Users $user) { return UsersBadges::count(['users_id = ?0 AND badge = ?1', 'bind' => [$user->id, $this->getName()]]) > 0; }
/** * Check whether the user already have this badge * * @param Users $user * @return boolean */ public function has(Users $user) { return UsersBadges::count(array('users_id = ?0 AND badge = ?1', 'bind' => array($user->id, $this->getName()))) > 0; }