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
-
+ =$character['name']?>
+
- - Level 1
- - 1500 XP
- - 11. Platz
- - Zum Profil
+ - =('Level')?> =$character['xplevel']['level']?>
+ - =$character['xps']?> XPs
+ - =$character['rank']?>. =_('Rank')?>
+ - Zum Profil
+
+
+
+
- Letzte Errungenschaft
+ =('Last Achievement')?>