determine Characters with the most achieved Achievements (Issue #57)
This commit is contained in:
parent
c47eb1e314
commit
ce44a3c3b8
6 changed files with 57 additions and 26 deletions
|
|
@ -94,8 +94,8 @@
|
|||
* @var array
|
||||
*/
|
||||
public static $misc = array(
|
||||
'ranking_range' => 2,
|
||||
'seldom_achievements_range' => 3
|
||||
'ranking_range' => 2,
|
||||
'achievements_range' => 3
|
||||
);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public $models = array('achievements', 'seminaries', 'media');
|
||||
public $models = array('achievements', 'seminaries', 'media', 'characters');
|
||||
/**
|
||||
* User permissions
|
||||
*
|
||||
|
|
@ -62,11 +62,14 @@
|
|||
$character = SeminaryRoleController::$character;
|
||||
|
||||
// Get seldom Achievements
|
||||
$seldomAchievements = $this->Achievements->getSeldomAchievements($seminary['id'], \nre\configs\AppConfig::$misc['seldom_achievements_range']);
|
||||
$seldomAchievements = $this->Achievements->getSeldomAchievements($seminary['id'], \nre\configs\AppConfig::$misc['achievements_range']);
|
||||
foreach($seldomAchievements as &$achievement) {
|
||||
$achievement['achieved'] = $this->Achievements->hasCharacterAchievedAchievement($achievement['id'], $character['id']);
|
||||
}
|
||||
|
||||
// Get Characters with the most Achievements
|
||||
$successfulCharacters = $this->Characters->getCharactersWithMostAchievements($seminary['id'], \nre\configs\AppConfig::$misc['achievements_range']);
|
||||
|
||||
// Get achieved Achievements
|
||||
$achievedAchievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']);
|
||||
|
||||
|
|
@ -159,6 +162,7 @@
|
|||
$this->set('seminary', $seminary);
|
||||
$this->set('character', $character);
|
||||
$this->set('seldomAchievements', $seldomAchievements);
|
||||
$this->set('successfulCharacters', $successfulCharacters);
|
||||
$this->set('achievedAchievements', $achievedAchievements);
|
||||
$this->set('unachievedAchievements', $unachievedAchievements);
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,8 +1,8 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: The Legend of Z\n"
|
||||
"POT-Creation-Date: 2014-04-17 01:27+0100\n"
|
||||
"PO-Revision-Date: 2014-04-17 01:27+0100\n"
|
||||
"POT-Creation-Date: 2014-04-17 01:46+0100\n"
|
||||
"PO-Revision-Date: 2014-04-17 01:46+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
|
|
@ -111,33 +111,42 @@ msgstr "Die seltensten Errungenschaften"
|
|||
msgid "Achievement has been achieved only %d times"
|
||||
msgstr "wurde erst %d mal gefunden"
|
||||
|
||||
#: views/html/achievements/index.tpl:53
|
||||
#: views/html/achievements/index.tpl:32
|
||||
msgid "Most successful collectors"
|
||||
msgstr "Die erfolgreichsten Sammler"
|
||||
|
||||
#: views/html/achievements/index.tpl:38
|
||||
#, php-format
|
||||
msgid "Character has achieved %d Achievements"
|
||||
msgstr "hat %d Errungenschaften erhalten"
|
||||
|
||||
#: views/html/achievements/index.tpl:45
|
||||
#, php-format
|
||||
msgid "Own progress: %d %%"
|
||||
msgstr "Persönlicher Fortschritt: %d %%"
|
||||
|
||||
#: views/html/achievements/index.tpl:54
|
||||
#: views/html/achievements/index.tpl:46
|
||||
#: views/html/charactergroups/group.tpl:18
|
||||
#: views/html/characters/character.tpl:28 views/html/seminarybar/index.tpl:7
|
||||
msgid "Rank"
|
||||
msgstr "Platz"
|
||||
|
||||
#: views/html/achievements/index.tpl:54
|
||||
#: views/html/achievements/index.tpl:46
|
||||
#, php-format
|
||||
msgid "You achieved %d of %d Achievements so far"
|
||||
msgstr "Du hast bislang %d von insgesamt %d Errungenschaften erreicht"
|
||||
|
||||
#: views/html/achievements/index.tpl:68 views/html/characters/character.tpl:39
|
||||
#: views/html/achievements/index.tpl:60 views/html/characters/character.tpl:39
|
||||
#: views/html/seminarybar/index.tpl:28
|
||||
#, php-format
|
||||
msgid "achieved at: %s"
|
||||
msgstr "erhalten am: %s"
|
||||
|
||||
#: views/html/achievements/index.tpl:79
|
||||
#: views/html/achievements/index.tpl:71
|
||||
msgid "Secret Achievement"
|
||||
msgstr "Geheime Errungenschaft"
|
||||
|
||||
#: views/html/achievements/index.tpl:84
|
||||
#: views/html/achievements/index.tpl:76
|
||||
msgid "Continue playing to unlock this secret Achievement"
|
||||
msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
|
||||
|
||||
|
|
|
|||
|
|
@ -174,6 +174,32 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Characters with the most amount of Achievements.
|
||||
*
|
||||
* @param int $seminaryId ID of Seminary
|
||||
* @param int $conut Amount of Characters to retrieve
|
||||
* @return array List of Characters
|
||||
*/
|
||||
public function getCharactersWithMostAchievements($seminaryId, $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 charactertype_url, count(DISTINCT achievement_id) AS c '.
|
||||
'FROM achievements_characters '.
|
||||
'LEFT JOIN achievements ON achievements.id = achievements_characters.achievement_id '.
|
||||
'LEFT JOIN v_characters AS characters ON characters.id = achievements_characters.character_id '.
|
||||
'LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id '.
|
||||
'WHERE achievements.seminary_id = ? '.
|
||||
'GROUP BY character_id '.
|
||||
'ORDER BY count(DISTINCT achievement_id) DESC '.
|
||||
'LIMIT ?',
|
||||
'ii',
|
||||
$seminaryId,
|
||||
$count
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calculate only XPs for a Character achieved through Quests.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -29,23 +29,15 @@
|
|||
</section>
|
||||
|
||||
<section class="rare hunter">
|
||||
<h3>Die erfolgreichsten Sammler</h3>
|
||||
<h3><?=_('Most successful collectors')?></h3>
|
||||
<ol>
|
||||
<?php foreach($successfulCharacters as $successfulCharacter) : ?>
|
||||
<li class="cf">
|
||||
<img src="http://zyren.inf-d.de/media/seminary/Die-Legende-von-Zyren/Mensch01-Portrait" />
|
||||
<p class="fwb">VHS</p>
|
||||
<p><small>hat 15 Errungenschaften gefunden</small></p>
|
||||
</li>
|
||||
<li class="cf">
|
||||
<img src="http://zyren.inf-d.de/media/seminary/Die-Legende-von-Zyren/Mensch01-Portrait" />
|
||||
<p class="fwb">Betamax</p>
|
||||
<p><small>hat 14 Errungenschaften gefunden</small></p>
|
||||
</li>
|
||||
<li class="cf">
|
||||
<img src="http://zyren.inf-d.de/media/seminary/Die-Legende-von-Zyren/Mensch01-Portrait" />
|
||||
<p class="fwb">Laserdisc</p>
|
||||
<p><small>hat 12 Errungenschaften gefunden</small></p>
|
||||
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$successfulCharacter['charactertype_url'],$successfulCharacter['xplevel'],'portrait'))?>" />
|
||||
<p class="fwb"><?=$successfulCharacter['name']?></p>
|
||||
<p><small><?=sprintf(_('Character has achieved %d Achievements'), $successfulCharacter['c'])?></small></p>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
</ol>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue