From 96c15c04e1c9af84c793e69e7815e0f79ae63abc Mon Sep 17 00:00:00 2001 From: coderkun Date: Fri, 11 Apr 2014 16:16:09 +0200 Subject: [PATCH] set values for Seminarybar --- controllers/SeminarybarController.inc | 44 +++++++++++++++++---------- models/CharactersModel.inc | 5 ++- models/QuestsModel.inc | 28 +++++++++++++++++ views/html/seminarybar/index.tpl | 22 ++++++++------ 4 files changed, 73 insertions(+), 26 deletions(-) diff --git a/controllers/SeminarybarController.inc b/controllers/SeminarybarController.inc index 7fd5d8fa..04963719 100644 --- a/controllers/SeminarybarController.inc +++ b/controllers/SeminarybarController.inc @@ -20,25 +20,14 @@ */ class SeminarybarController extends \hhu\z\Controller { - - - - /** - * Prefilter. + * Required models * - * @param Request $request Current request - * @param Response $response Current response + * @var array */ - public function preFilter(\nre\core\Request $request, \nre\core\Response $response) - { - parent::preFilter($request, $response); - - // Set userdata - $this->set('loggedUser', IntermediateController::$user); - $this->set('loggedSeminary', IntermediateController::$seminary); - $this->set('loggedCharacter', IntermediateController::$character); - } + public $models = array('characters', 'quests', 'questgroups'); + + /** @@ -46,6 +35,29 @@ */ public function index() { + if(is_null(IntermediateController::$seminary)) { + return; + } + + // Get Seminary + $seminary = IntermediateController::$seminary; + + // Get Character + $character = IntermediateController::$character; + $character['xplevel'] = $this->Characters->getXPLevelOfCharacters($character['id']); + $character['rank'] = $this->Characters->getXPRank($seminary['id'], $character['xps']); + + // Get “last” Quest + $lastQuest = $this->Quests->getLastQuestForCharacter($character['id']); + if(!is_null($lastQuest)) { + $lastQuest['questgroup'] = $this->Questgroups->getQuestgroupById($lastQuest['questgroup_id']); + } + + + // Pass data to view + $this->set('seminary', $seminary); + $this->set('character', $character); + $this->set('lastQuest', $lastQuest); } } diff --git a/models/CharactersModel.inc b/models/CharactersModel.inc index a502916a..c659afec 100644 --- a/models/CharactersModel.inc +++ b/models/CharactersModel.inc @@ -105,9 +105,12 @@ public function getCharacterForUserAndSeminary($userId, $seminaryId) { $data = $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 charactertypes_url '. + '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 charactertypes_url, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '. 'FROM v_characters AS characters '. 'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. + 'LEFT JOIN avatars ON avatars.id = characters.avatar_id '. + 'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '. + 'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '. 'WHERE characters.user_id = ? AND charactertypes.seminary_id = ?', 'ii', $userId, $seminaryId diff --git a/models/QuestsModel.inc b/models/QuestsModel.inc index fb54519d..8a042196 100644 --- a/models/QuestsModel.inc +++ b/models/QuestsModel.inc @@ -297,6 +297,34 @@ } + /** + * Get the last Quests for a Character. + * + * @param int $characterId ID of Character + * @retrun array Quest data + */ + public function getLastQuestForCharacter($characterId) + { + $data = $this->db->query( + 'SELECT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id '. + 'FROM quests_characters '. + 'LEFT JOIN quests ON quests.id = quests_characters.quest_id '. + 'WHERE quests_characters.character_id = ? AND quests_characters.status IN (?, ?, ?) '. + 'ORDER BY quests_characters.created desc '. + 'LIMIT 1', + 'iiii', + $characterId, + self::QUEST_STATUS_ENTERED, self::QUEST_STATUS_SUBMITTED, self::QUEST_STATUS_SOLVED + ); + if(!empty($data)) { + return $data[0]; + } + + + return null; + } + + /** diff --git a/views/html/seminarybar/index.tpl b/views/html/seminarybar/index.tpl index b6fabcc2..8b2db16f 100644 --- a/views/html/seminarybar/index.tpl +++ b/views/html/seminarybar/index.tpl @@ -1,19 +1,23 @@
-

Zyrendaniel

- +

+
+ +
-

Letzter Speicherpunkt

-

Die verwunschene Stadt

+

+

+ +
-

Letzte Errungenschaft

+