only consider Character with user role in ranking

This commit is contained in:
coderkun 2014-04-24 12:04:18 +02:00
commit 4f2bc32024
2 changed files with 29 additions and 7 deletions

View file

@ -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);
}

View file

@ -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
);
}