add an optional deadline to Achievements
This commit is contained in:
parent
5088eb0640
commit
e8709b1e49
5 changed files with 52 additions and 17 deletions
|
|
@ -70,7 +70,7 @@
|
|||
public function getUnachievedOnlyOnceAchievementsForSeminary($seminaryId)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, only_once, all_conditions, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, only_once, all_conditions, deadline, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'FROM achievements '.
|
||||
'LEFT JOIN achievementconditions ON achievementconditions.id = achievements.achievementcondition_id '.
|
||||
'WHERE achievements.seminary_id = ? AND only_once = 1 AND NOT EXISTS ('.
|
||||
|
|
@ -84,6 +84,25 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all Achievements that have a deadline.
|
||||
*
|
||||
* @param int $seminaryId ID of Seminary
|
||||
* @return array Achievements data
|
||||
*/
|
||||
public function getDeadlineAchievements($seminaryId)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, only_once, all_conditions, deadline, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'FROM achievements '.
|
||||
'LEFT JOIN achievementconditions ON achievementconditions.id = achievements.achievementcondition_id '.
|
||||
'WHERE achievements.seminary_id = ? AND deadline IS NOT NULL',
|
||||
'i',
|
||||
$seminaryId
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get seldom Achievements.
|
||||
*
|
||||
|
|
@ -91,13 +110,14 @@
|
|||
* @param int $count Number of Achievements to retrieve
|
||||
* @return array List of seldom Achievements
|
||||
*/
|
||||
public function getSeldomAchievements($seminaryId, $count)
|
||||
public function getSeldomAchievements($seminaryId, $count, $alsoWithDeadline=true)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT id, title, url, description, progress, hidden, unachieved_achievementsmedia_id, achieved_achievementsmedia_id, count(DISTINCT character_id) AS c '.
|
||||
'FROM achievements_characters '.
|
||||
'LEFT JOIN achievements ON achievements.id = achievements_characters.achievement_id '.
|
||||
'WHERE achievements.seminary_id = ? AND only_once = 0 '.
|
||||
(!$alsoWithDeadline ? 'AND achievements.deadline IS NULL ' : null).
|
||||
'GROUP BY achievement_id '.
|
||||
'ORDER BY count(DISTINCT character_id) ASC '.
|
||||
'LIMIT ?',
|
||||
|
|
@ -114,13 +134,14 @@
|
|||
* @param int $characterId ID of Character
|
||||
* @return array Achievements data
|
||||
*/
|
||||
public function getAchievedAchievementsForCharacter($characterId)
|
||||
public function getAchievedAchievementsForCharacter($characterId, $alsoWithDeadline=true)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT achievements.id, achievements_characters.created, achievements.title, achievements.url, achievements.description, achievements.progress, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'FROM achievements '.
|
||||
'INNER JOIN achievements_characters ON achievements_characters.achievement_id = achievements.id '.
|
||||
'WHERE achievements_characters.character_id = ? '.
|
||||
(!$alsoWithDeadline ? 'AND achievements.deadline IS NULL ' : null).
|
||||
'ORDER BY achievements_characters.created DESC',
|
||||
'i',
|
||||
$characterId
|
||||
|
|
@ -135,10 +156,10 @@
|
|||
* @param int $characterId ID of Character
|
||||
* @return array Achievements data
|
||||
*/
|
||||
public function getUnachhievedAchievementsForCharacter($seminaryId, $characterId, $includeOnlyOnce=false)
|
||||
public function getUnachhievedAchievementsForCharacter($seminaryId, $characterId, $includeOnlyOnce=false, $alsoWithDeadline=true)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, only_once, all_conditions, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, only_once, all_conditions, deadline, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'FROM achievements '.
|
||||
'LEFT JOIN achievementconditions ON achievementconditions.id = achievements.achievementcondition_id '.
|
||||
'WHERE achievements.seminary_id = ? AND only_once <= ? AND NOT EXISTS ('.
|
||||
|
|
@ -148,6 +169,7 @@
|
|||
'achievements_characters.achievement_id = achievements.id AND '.
|
||||
'achievements_characters.character_id = ?'.
|
||||
') '.
|
||||
(!$alsoWithDeadline ? 'AND achievements.deadline IS NULL ' : null).
|
||||
'ORDER BY achievements.pos ASC',
|
||||
'iii',
|
||||
$seminaryId,
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@
|
|||
* @param int $conut Amount of Characters to retrieve
|
||||
* @return array List of Characters
|
||||
*/
|
||||
public function getCharactersWithMostAchievements($seminaryId, $count)
|
||||
public function getCharactersWithMostAchievements($seminaryId, $count, $alsoWithDeadline=true)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, characters.avatar_id, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, count(DISTINCT achievement_id) AS c '.
|
||||
|
|
@ -189,7 +189,8 @@
|
|||
'LEFT JOIN achievements ON achievements.id = achievements_characters.achievement_id '.
|
||||
'LEFT JOIN v_characters AS characters ON characters.id = achievements_characters.character_id '.
|
||||
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||
'WHERE achievements.seminary_id = ? '.
|
||||
'WHERE achievements.seminary_id = ? AND deadline IS NULL '.
|
||||
(!$alsoWithDeadline ? 'AND achievements.deadline IS NULL ' : null).
|
||||
'GROUP BY character_id '.
|
||||
'ORDER BY count(DISTINCT achievement_id) DESC '.
|
||||
'LIMIT ?',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue