add ranking to Character page
This commit is contained in:
parent
5ac99345ca
commit
2c515f2bfe
6 changed files with 120 additions and 25 deletions
|
|
@ -68,6 +68,17 @@
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Miscellaneous settings
|
||||||
|
*
|
||||||
|
* @static
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $misc = array(
|
||||||
|
'ranking_range' => 2
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validation settings for user input
|
* Validation settings for user input
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,32 @@
|
||||||
// Get Achievements
|
// Get Achievements
|
||||||
$achievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']);
|
$achievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']);
|
||||||
|
|
||||||
|
// Get ranking
|
||||||
|
$ranking = array(
|
||||||
|
'superior' => $this->Characters->getSuperiorCharacters($seminary['id'], $character['xps'], \nre\configs\AppConfig::$misc['ranking_range']),
|
||||||
|
'inferior' => $this->Characters->getInferiorCharacters($seminary['id'], $character['xps'], \nre\configs\AppConfig::$misc['ranking_range'])
|
||||||
|
);
|
||||||
|
foreach($ranking['superior'] as &$rankCharacter)
|
||||||
|
{
|
||||||
|
if(!is_null($rankCharacter['avatar_id']))
|
||||||
|
{
|
||||||
|
$avatar = $this->Avatars->getAvatarById($rankCharacter['avatar_id']);
|
||||||
|
if(!is_null($avatar['small_avatarpicture_id'])) {
|
||||||
|
$rankCharacter['small_avatar'] = $this->Media->getSeminaryMediaById($avatar['small_avatarpicture_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach($ranking['inferior'] as &$rankCharacter)
|
||||||
|
{
|
||||||
|
if(!is_null($rankCharacter['avatar_id']))
|
||||||
|
{
|
||||||
|
$avatar = $this->Avatars->getAvatarById($rankCharacter['avatar_id']);
|
||||||
|
if(!is_null($avatar['small_avatarpicture_id'])) {
|
||||||
|
$rankCharacter['small_avatar'] = $this->Media->getSeminaryMediaById($avatar['small_avatarpicture_id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get Quest topics
|
// Get Quest topics
|
||||||
$questtopics = $this->Questtopics->getQuesttopicsForSeminary($seminary['id']);
|
$questtopics = $this->Questtopics->getQuesttopicsForSeminary($seminary['id']);
|
||||||
foreach($questtopics as &$questtopic)
|
foreach($questtopics as &$questtopic)
|
||||||
|
|
@ -139,6 +165,7 @@
|
||||||
$this->set('user', $user);
|
$this->set('user', $user);
|
||||||
$this->set('groups', $groups);
|
$this->set('groups', $groups);
|
||||||
$this->set('achievements', $achievements);
|
$this->set('achievements', $achievements);
|
||||||
|
$this->set('ranking', $ranking);
|
||||||
$this->set('questtopics', $questtopics);
|
$this->set('questtopics', $questtopics);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,8 +1,8 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: The Legend of Z\n"
|
"Project-Id-Version: The Legend of Z\n"
|
||||||
"POT-Creation-Date: 2014-04-15 20:19+0100\n"
|
"POT-Creation-Date: 2014-04-16 11:36+0100\n"
|
||||||
"PO-Revision-Date: 2014-04-15 20:19+0100\n"
|
"PO-Revision-Date: 2014-04-16 11:36+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: de_DE\n"
|
"Language: de_DE\n"
|
||||||
|
|
@ -162,7 +162,10 @@ msgstr "Verlorene Quest"
|
||||||
msgid "Total progress"
|
msgid "Total progress"
|
||||||
msgstr "Fortschritt"
|
msgstr "Fortschritt"
|
||||||
|
|
||||||
#: views/html/characters/character.tpl:20 views/html/seminarybar/index.tpl:44
|
#: views/html/characters/character.tpl:20
|
||||||
|
#: views/html/characters/character.tpl:73
|
||||||
|
#: views/html/characters/character.tpl:81
|
||||||
|
#: views/html/characters/character.tpl:89 views/html/seminarybar/index.tpl:44
|
||||||
#: views/html/users/user.tpl:29
|
#: views/html/users/user.tpl:29
|
||||||
msgid "Level"
|
msgid "Level"
|
||||||
msgstr "Level"
|
msgstr "Level"
|
||||||
|
|
@ -172,6 +175,10 @@ msgstr "Level"
|
||||||
msgid "achieved at: %s"
|
msgid "achieved at: %s"
|
||||||
msgstr "erhalten am: %s"
|
msgstr "erhalten am: %s"
|
||||||
|
|
||||||
|
#: views/html/characters/character.tpl:65
|
||||||
|
msgid "Ranking"
|
||||||
|
msgstr "Ranking"
|
||||||
|
|
||||||
#: views/html/characters/character.tpl:97
|
#: views/html/characters/character.tpl:97
|
||||||
msgid "Topic progress"
|
msgid "Topic progress"
|
||||||
msgstr "Thematischer Fortschritt"
|
msgstr "Thematischer Fortschritt"
|
||||||
|
|
|
||||||
|
|
@ -135,12 +135,14 @@
|
||||||
public function getCharacterByUrl($seminaryId, $characterUrl)
|
public function getCharacterByUrl($seminaryId, $characterUrl)
|
||||||
{
|
{
|
||||||
$data = $this->db->query(
|
$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, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
|
'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, small_seminarymedia.url AS small_avatar_url, small_seminarymedia.description AS small_avatar_description '.
|
||||||
'FROM v_characters AS characters '.
|
'FROM v_characters AS characters '.
|
||||||
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
||||||
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
|
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
|
||||||
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
|
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
|
||||||
|
'LEFT JOIN avatarpictures AS small_avatarpictures ON small_avatarpictures.seminarymedia_id = avatars.small_avatarpicture_id '.
|
||||||
|
'LEFT JOIN seminarymedia AS small_seminarymedia ON small_seminarymedia.id = small_avatarpictures.seminarymedia_id '.
|
||||||
'WHERE charactertypes.seminary_id = ? AND characters.url = ?',
|
'WHERE charactertypes.seminary_id = ? AND characters.url = ?',
|
||||||
'is',
|
'is',
|
||||||
$seminaryId, $characterUrl
|
$seminaryId, $characterUrl
|
||||||
|
|
@ -164,12 +166,14 @@
|
||||||
public function getCharacterById($characterId)
|
public function getCharacterById($characterId)
|
||||||
{
|
{
|
||||||
$data = $this->db->query(
|
$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, seminarymedia.url AS avatar_url, seminarymedia.description AS avatar_description '.
|
'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, small_seminarymedia.url AS small_avatar_url, small_seminarymedia.description AS small_avatar_description '.
|
||||||
'FROM v_characters AS characters '.
|
'FROM v_characters AS characters '.
|
||||||
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
'LEFT JOIN avatars ON avatars.id = characters.avatar_id '.
|
||||||
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
|
'LEFT JOIN avatarpictures ON avatarpictures.seminarymedia_id = avatars.avatarpicture_id '.
|
||||||
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
|
'LEFT JOIN seminarymedia ON seminarymedia.id = avatarpictures.seminarymedia_id '.
|
||||||
|
'LEFT JOIN avatarpictures AS small_avatarpictures ON small_avatarpictures.seminarymedia_id = avatars.small_avatarpicture_id '.
|
||||||
|
'LEFT JOIN seminarymedia AS small_seminarymedia ON small_seminarymedia.id = small_avatarpictures.seminarymedia_id '.
|
||||||
'WHERE characters.id = ?',
|
'WHERE characters.id = ?',
|
||||||
'i',
|
'i',
|
||||||
$characterId
|
$characterId
|
||||||
|
|
@ -258,6 +262,52 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the superior $count Characters in the ranking.
|
||||||
|
*
|
||||||
|
* @param int $seminaryId ID of Seminary
|
||||||
|
* @param int $xps XP-value of Character
|
||||||
|
* @param int $count Count of Characters to determine
|
||||||
|
* @return array List of superior Characters
|
||||||
|
*/
|
||||||
|
public function getSuperiorCharacters($seminaryId, $xps, $count)
|
||||||
|
{
|
||||||
|
return $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 '.
|
||||||
|
'FROM v_characters AS characters '.
|
||||||
|
'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
|
'WHERE charactertypes.seminary_id = ? AND characters.xps > ? '.
|
||||||
|
'ORDER BY characters.xps ASC '.
|
||||||
|
'LIMIT ?',
|
||||||
|
'idd',
|
||||||
|
$seminaryId, $xps, $count
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the inferior $count Characters in the ranking.
|
||||||
|
*
|
||||||
|
* @param int $seminaryId ID of Seminary
|
||||||
|
* @param int $xps XP-value of Character
|
||||||
|
* @param int $count Count of Characters to determine
|
||||||
|
* @return array List of inferior Characters
|
||||||
|
*/
|
||||||
|
public function getInferiorCharacters($seminaryId, $xps, $count)
|
||||||
|
{
|
||||||
|
return $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 '.
|
||||||
|
'FROM v_characters AS characters '.
|
||||||
|
'INNER JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||||
|
'WHERE charactertypes.seminary_id = ? AND characters.xps < ? '.
|
||||||
|
'ORDER BY characters.xps DESC '.
|
||||||
|
'LIMIT ?',
|
||||||
|
'idd',
|
||||||
|
$seminaryId, $xps, $count
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Characters that solved a Quest.
|
* Get Characters that solved a Quest.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -62,33 +62,33 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="flr48">
|
<section class="flr48">
|
||||||
<h1><i class="fa fa-list fa-fw"></i>Ranking</h1>
|
<h1><i class="fa fa-list fa-fw"></i><?=_('Ranking')?></h1>
|
||||||
<ul class="cranks">
|
<ul class="cranks">
|
||||||
|
<?php foreach($ranking['superior'] as $index => &$rankCharacter) : ?>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" title="Achievement-Titel"><img src="http://s7.directupload.net/images/140325/e2wdqhqa.png"></a>
|
<?php if(array_key_exists('small_avatar', $rankCharacter)) : ?>
|
||||||
<p>7. <a href="#">Anduin</a></p>
|
<a href="#" title="Achievement-Titel"><img src="<?=$linker->link(array('media','seminary',$seminary['url'],$rankCharacter['small_avatar']['url']))?>"></a>
|
||||||
<p><small>Level 27 (1500 XP)</small></p>
|
<?php endif ?>
|
||||||
|
<p><?=$character['rank']-count($ranking['superior'])+$index?>. <a href="#"><?=$rankCharacter['name']?></a></p>
|
||||||
|
<p><small><?=_('Level')?> <?=$rankCharacter['xplevel']?> (<?=$rankCharacter['xps']?> XPs)</small></p>
|
||||||
</li>
|
</li>
|
||||||
|
<?php endforeach ?>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" title="Achievement-Titel"><img src="http://s1.directupload.net/images/140325/upv2dg2r.png"></a>
|
<?php if(array_key_exists('small_avatar_url', $character)) : ?>
|
||||||
<p>8. <a href="#">Jaina</a></p>
|
<a href="#" title="Achievement-Titel"><img src="<?=$linker->link(array('media','seminary',$seminary['url'],$character['small_avatar_url']))?>"></a>
|
||||||
<p><small>Level 26 (1400 XP)</small></p>
|
<?php endif ?>
|
||||||
|
<p class="fwb"><?=$character['rank']?>. <a href="#"><?=$character['name']?></a></p>
|
||||||
|
<p><small><?=_('Level')?> <?=$character['xplevel']['level']?> (<?=$character['xps']?> XPs)</small></p>
|
||||||
</li>
|
</li>
|
||||||
|
<?php foreach($ranking['inferior'] as $index => &$rankCharacter) : ?>
|
||||||
<li>
|
<li>
|
||||||
<a href="#" title="Achievement-Titel"><img src="http://s14.directupload.net/images/140325/x9ny5kgu.png"></a>
|
<?php if(array_key_exists('small_avatar', $rankCharacter)) : ?>
|
||||||
<p class="fwb">9. <a href="#">Uther</a></p>
|
<a href="#" title="Achievement-Titel"><img src="<?=$linker->link(array('media','seminary',$seminary['url'],$rankCharacter['small_avatar']['url']))?>"></a>
|
||||||
<p><small>Level 25 (1300 XP)</small></p>
|
<?php endif ?>
|
||||||
</li>
|
<p><?=$character['rank']+$index+1?>. <a href="#"><?=$rankCharacter['name']?></a></p>
|
||||||
<li>
|
<p><small><?=_('Level')?> <?=$rankCharacter['xplevel']?> (<?=$rankCharacter['xps']?> XPs)</small></p>
|
||||||
<a href="#" title="Achievement-Titel"><img src="http://s7.directupload.net/images/140325/e2wdqhqa.png"></a>
|
|
||||||
<p>10. <a href="#">Lothar</a></p>
|
|
||||||
<p><small>Level 24 (1200 XP)</small></p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#" title="Achievement-Titel"><img src="http://s1.directupload.net/images/140325/whre34td.png"></a>
|
|
||||||
<p>11. <a href="#">Morris</a></p>
|
|
||||||
<p><small>Level 23 (1100 XP)</small></p>
|
|
||||||
</li>
|
</li>
|
||||||
|
<?php endforeach ?>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue