only consider Character with user role in ranking
This commit is contained in:
parent
e8709b1e49
commit
daf303fe04
2 changed files with 29 additions and 7 deletions
|
|
@ -24,7 +24,7 @@
|
||||||
*
|
*
|
||||||
* @var array
|
* @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
|
* Required components
|
||||||
*
|
*
|
||||||
|
|
@ -139,6 +139,16 @@
|
||||||
$questtopic['characterQuestcount'] = $this->Questtopics->getCharacterQuestCountForQuesttopic($questtopic['id'], $character['id']);
|
$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
|
// Pass data to view
|
||||||
$this->set('seminary', $seminary);
|
$this->set('seminary', $seminary);
|
||||||
|
|
@ -150,6 +160,7 @@
|
||||||
$this->set('milestones', $milestones);
|
$this->set('milestones', $milestones);
|
||||||
$this->set('ranking', $ranking);
|
$this->set('ranking', $ranking);
|
||||||
$this->set('questtopics', $questtopics);
|
$this->set('questtopics', $questtopics);
|
||||||
|
$this->set('lastQuest', $lastQuest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -279,6 +290,7 @@
|
||||||
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
|
||||||
|
|
||||||
// Do action
|
// Do action
|
||||||
|
$selectedCharacters = array();
|
||||||
if($this->request->getRequestMethod() == 'POST' && !empty($this->request->getPostParam('actions')) && !empty($this->request->getPostParam('characters')))
|
if($this->request->getRequestMethod() == 'POST' && !empty($this->request->getPostParam('actions')) && !empty($this->request->getPostParam('characters')))
|
||||||
{
|
{
|
||||||
$actions = $this->request->getPostParam('actions');
|
$actions = $this->request->getPostParam('actions');
|
||||||
|
|
@ -342,6 +354,7 @@
|
||||||
// Pass data to view
|
// Pass data to view
|
||||||
$this->set('seminary', $seminary);
|
$this->set('seminary', $seminary);
|
||||||
$this->set('characters', $characters);
|
$this->set('characters', $characters);
|
||||||
|
$this->set('selectedCharacters', $selectedCharacters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -260,11 +260,14 @@
|
||||||
public function getXPRank($seminaryId, $xps)
|
public function getXPRank($seminaryId, $xps)
|
||||||
{
|
{
|
||||||
$data = $this->db->query(
|
$data = $this->db->query(
|
||||||
'SELECT count(v_characters.id) AS c '.
|
'SELECT count(characters.id) AS c '.
|
||||||
'FROM charactertypes '.
|
'FROM charactertypes '.
|
||||||
'INNER JOIN v_characters ON v_characters.charactertype_id = charactertypes.id '.
|
'INNER JOIN v_characters AS characters ON characters.charactertype_id = charactertypes.id '.
|
||||||
'WHERE seminary_id = ? AND v_characters.xps > ?',
|
'INNER JOIN characters_characterroles ON characters_characterroles.character_id = characters.id '.
|
||||||
'id',
|
'INNER JOIN characterroles ON characterroles.id = characters_characterroles.characterrole_id AND characterroles.name = ? '.
|
||||||
|
'WHERE seminary_id = ? AND characters.xps > ?',
|
||||||
|
'sid',
|
||||||
|
'user',
|
||||||
$seminaryId, $xps
|
$seminaryId, $xps
|
||||||
);
|
);
|
||||||
if(!empty($data)) {
|
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 '.
|
'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 '.
|
'FROM v_characters AS characters '.
|
||||||
'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
'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 > ? '.
|
'WHERE charactertypes.seminary_id = ? AND characters.xps > ? '.
|
||||||
'ORDER BY characters.xps ASC '.
|
'ORDER BY characters.xps ASC '.
|
||||||
'LIMIT ?',
|
'LIMIT ?',
|
||||||
'idd',
|
'sidd',
|
||||||
|
'user',
|
||||||
$seminaryId, $xps, $count
|
$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 '.
|
'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 '.
|
'FROM v_characters AS characters '.
|
||||||
'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
'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 < ? '.
|
'WHERE charactertypes.seminary_id = ? AND characters.xps < ? '.
|
||||||
'ORDER BY characters.xps DESC '.
|
'ORDER BY characters.xps DESC '.
|
||||||
'LIMIT ?',
|
'LIMIT ?',
|
||||||
'idd',
|
'sidd',
|
||||||
|
'user',
|
||||||
$seminaryId, $xps, $count
|
$seminaryId, $xps, $count
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue