diff --git a/controllers/QuestsController.inc b/controllers/QuestsController.inc index e1f33f2b..bdb9aa9c 100644 --- a/controllers/QuestsController.inc +++ b/controllers/QuestsController.inc @@ -334,13 +334,6 @@ // Get submitted Character submissions waiting for approval $submittedSubmissionCharacters = $this->Characters->getCharactersSubmittedQuest($quest['id']); - foreach($submittedSubmissionCharacters as &$submissionCharacter) { - $submissionCharacter['submission'] = $this->Quests->getLastQuestStatus($quest['id'], $submissionCharacter['id']); - } - usort($submittedSubmissionCharacters, function($a, $b) { - if($a['created'] == $b['created']) { return 0; } - return ($a['created'] > $b['created']) ? -1 : 1; - }); // Get unsolved Character submissions $unsolvedSubmissionCharacters = $this->Characters->getCharactersUnsolvedQuest($quest['id']); diff --git a/models/CharactersModel.inc b/models/CharactersModel.inc index 8fee0b27..42b58956 100644 --- a/models/CharactersModel.inc +++ b/models/CharactersModel.inc @@ -343,15 +343,18 @@ public function getCharactersSolvedQuest($questId) { return $data = $this->db->query( - 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url '. - 'FROM v_characters AS characters '. - 'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. - 'WHERE EXISTS ('. - 'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'. - ')', + 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, quests_characters.created AS submission_created '. + 'FROM quests_characters '. + 'INNER JOIN v_characters AS characters ON characters.id = quests_characters.character_id '. + 'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. + 'WHERE quests_characters.quest_id = ? AND quests_characters.status = ? AND NOT EXISTS ('. + 'SELECT id '. + 'FROM quests_characters AS qc '. + 'WHERE qc.character_id = quests_characters.character_id AND qc.created > quests_characters.created'. + ') '. + 'ORDER BY quests_characters.created ASC', 'ii', - $questId, - QuestsModel::QUEST_STATUS_SOLVED + $questId, QuestsModel::QUEST_STATUS_SOLVED ); } @@ -365,17 +368,18 @@ public function getCharactersUnsolvedQuest($questId) { return $data = $this->db->query( - 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url '. - 'FROM v_characters AS characters '. - 'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. - 'WHERE EXISTS ('. - 'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'. - ') AND NOT EXISTS ('. - 'SELECT character_id FROM quests_characters WHERE character_id = characters.id AND quest_id = ? AND status = ?'. - ')', - 'iiii', - $questId, QuestsModel::QUEST_STATUS_UNSOLVED, - $questId, QuestsModel::QUEST_STATUS_SOLVED + 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, quests_characters.created AS submission_created '. + 'FROM quests_characters '. + 'INNER JOIN v_characters AS characters ON characters.id = quests_characters.character_id '. + 'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. + 'WHERE quests_characters.quest_id = ? AND quests_characters.status = ? AND NOT EXISTS ('. + 'SELECT id '. + 'FROM quests_characters AS qc '. + 'WHERE qc.character_id = quests_characters.character_id AND qc.created > quests_characters.created'. + ') '. + 'ORDER BY quests_characters.created ASC', + 'ii', + $questId, QuestsModel::QUEST_STATUS_UNSOLVED ); } @@ -389,16 +393,16 @@ public function getCharactersSubmittedQuest($questId) { return $data = $this->db->query( - 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url '. - 'FROM v_characters AS characters '. - 'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. - 'WHERE ('. - 'SELECT status '. - 'FROM quests_characters '. - 'WHERE quest_id = ? AND character_id = characters.id '. - 'ORDER BY created DESC '. - 'LIMIT 1'. - ') = ?', + 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.user_id, characters.xps, characters.xplevel, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url, quests_characters.created AS submission_created '. + 'FROM quests_characters '. + 'INNER JOIN v_characters AS characters ON characters.id = quests_characters.character_id '. + 'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. + 'WHERE quests_characters.quest_id = ? AND quests_characters.status = ? AND NOT EXISTS ('. + 'SELECT id '. + 'FROM quests_characters AS qc '. + 'WHERE qc.character_id = quests_characters.character_id AND qc.created > quests_characters.created'. + ') '. + 'ORDER BY quests_characters.created ASC', 'ii', $questId, QuestsModel::QUEST_STATUS_SUBMITTED ); diff --git a/views/html/quests/submissions.tpl b/views/html/quests/submissions.tpl index 588d7798..37699e48 100644 --- a/views/html/quests/submissions.tpl +++ b/views/html/quests/submissions.tpl @@ -12,7 +12,7 @@
  • - format(new \DateTime($character['submission']['created'])), $timeFormatter->format(new \DateTime($character['submission']['created'])))?> + format(new \DateTime($character['submission_created'])), $timeFormatter->format(new \DateTime($character['submission_created'])))?>
  • @@ -22,6 +22,7 @@
  • + format(new \DateTime($character['submission_created'])), $timeFormatter->format(new \DateTime($character['submission_created'])))?>
  • @@ -31,6 +32,7 @@
  • + format(new \DateTime($character['submission_created'])), $timeFormatter->format(new \DateTime($character['submission_created'])))?>