diff --git a/controllers/CharactersController.inc b/controllers/CharactersController.inc index 900b19a3..47418794 100644 --- a/controllers/CharactersController.inc +++ b/controllers/CharactersController.inc @@ -24,7 +24,7 @@ * * @var array */ - public $models = array('seminaries', 'characters', 'users', 'charactergroups', 'charactertypes', 'seminarycharacterfields', 'avatars', 'media', 'questtopics'); + public $models = array('seminaries', 'characters', 'users', 'charactergroups', 'charactertypes', 'seminarycharacterfields', 'avatars', 'media', 'quests', 'questgroups', 'questtopics'); /** * Required components * @@ -139,6 +139,16 @@ $questtopic['characterQuestcount'] = $this->Questtopics->getCharacterQuestCountForQuesttopic($questtopic['id'], $character['id']); } + // Get “last” Quest + $lastQuest = null; + if(count(array_intersect(array('admin', 'moderator'), \hhu\z\controllers\SeminaryController::$character['characterroles'])) > 0) + { + $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); @@ -150,6 +160,7 @@ $this->set('milestones', $milestones); $this->set('ranking', $ranking); $this->set('questtopics', $questtopics); + $this->set('lastQuest', $lastQuest); } @@ -279,6 +290,7 @@ $seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl); // Do action + $selectedCharacters = array(); if($this->request->getRequestMethod() == 'POST' && !empty($this->request->getPostParam('actions')) && !empty($this->request->getPostParam('characters'))) { $actions = $this->request->getPostParam('actions'); @@ -342,6 +354,7 @@ // Pass data to view $this->set('seminary', $seminary); $this->set('characters', $characters); + $this->set('selectedCharacters', $selectedCharacters); } diff --git a/models/CharactersModel.inc b/models/CharactersModel.inc index a0dd9ade..eb7c1531 100644 --- a/models/CharactersModel.inc +++ b/models/CharactersModel.inc @@ -260,11 +260,14 @@ public function getXPRank($seminaryId, $xps) { $data = $this->db->query( - 'SELECT count(v_characters.id) AS c '. + 'SELECT count(characters.id) AS c '. 'FROM charactertypes '. - 'INNER JOIN v_characters ON v_characters.charactertype_id = charactertypes.id '. - 'WHERE seminary_id = ? AND v_characters.xps > ?', - 'id', + 'INNER JOIN v_characters AS characters ON characters.charactertype_id = charactertypes.id '. + 'INNER JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '. + 'INNER JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id AND characterroles.name = ? '. + 'WHERE seminary_id = ? AND characters.xps > ?', + 'sid', + 'user', $seminaryId, $xps ); if(!empty($data)) { @@ -290,10 +293,13 @@ 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.xps, characters.xplevel, characters.avatar_id, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url '. 'FROM v_characters AS characters '. 'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. + 'INNER JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '. + 'INNER JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id AND characterroles.name = ? '. 'WHERE charactertypes.seminary_id = ? AND characters.xps > ? '. 'ORDER BY characters.xps ASC '. 'LIMIT ?', - 'idd', + 'sidd', + 'user', $seminaryId, $xps, $count ); } @@ -313,10 +319,13 @@ 'SELECT characters.id, characters.created, characters.charactertype_id, characters.name, characters.url, characters.xps, characters.xplevel, characters.avatar_id, charactertypes.name AS charactertype_name, charactertypes.url AS charactertype_url '. 'FROM v_characters AS characters '. 'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '. + 'INNER JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '. + 'INNER JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id AND characterroles.name = ? '. 'WHERE charactertypes.seminary_id = ? AND characters.xps < ? '. 'ORDER BY characters.xps DESC '. 'LIMIT ?', - 'idd', + 'sidd', + 'user', $seminaryId, $xps, $count ); }