determine Characters with the most achieved Achievements (Issue #57)
This commit is contained in:
parent
8d13c7534c
commit
b64577a221
6 changed files with 57 additions and 26 deletions
|
|
@ -94,8 +94,8 @@
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
public static $misc = array(
|
public static $misc = array(
|
||||||
'ranking_range' => 2,
|
'ranking_range' => 2,
|
||||||
'seldom_achievements_range' => 3
|
'achievements_range' => 3
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
public $models = array('achievements', 'seminaries', 'media');
|
public $models = array('achievements', 'seminaries', 'media', 'characters');
|
||||||
/**
|
/**
|
||||||
* User permissions
|
* User permissions
|
||||||
*
|
*
|
||||||
|
|
@ -62,11 +62,14 @@
|
||||||
$character = SeminaryRoleController::$character;
|
$character = SeminaryRoleController::$character;
|
||||||
|
|
||||||
// Get seldom Achievements
|
// 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) {
|
foreach($seldomAchievements as &$achievement) {
|
||||||
$achievement['achieved'] = $this->Achievements->hasCharacterAchievedAchievement($achievement['id'], $character['id']);
|
$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
|
// Get achieved Achievements
|
||||||
$achievedAchievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']);
|
$achievedAchievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']);
|
||||||
|
|
||||||
|
|
@ -159,6 +162,7 @@
|
||||||
$this->set('seminary', $seminary);
|
$this->set('seminary', $seminary);
|
||||||
$this->set('character', $character);
|
$this->set('character', $character);
|
||||||
$this->set('seldomAchievements', $seldomAchievements);
|
$this->set('seldomAchievements', $seldomAchievements);
|
||||||
|
$this->set('successfulCharacters', $successfulCharacters);
|
||||||
$this->set('achievedAchievements', $achievedAchievements);
|
$this->set('achievedAchievements', $achievedAchievements);
|
||||||
$this->set('unachievedAchievements', $unachievedAchievements);
|
$this->set('unachievedAchievements', $unachievedAchievements);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
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-17 01:27+0100\n"
|
"POT-Creation-Date: 2014-04-17 01:46+0100\n"
|
||||||
"PO-Revision-Date: 2014-04-17 01:27+0100\n"
|
"PO-Revision-Date: 2014-04-17 01:46+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: de_DE\n"
|
"Language: de_DE\n"
|
||||||
|
|
@ -111,33 +111,42 @@ msgstr "Die seltensten Errungenschaften"
|
||||||
msgid "Achievement has been achieved only %d times"
|
msgid "Achievement has been achieved only %d times"
|
||||||
msgstr "wurde erst %d mal gefunden"
|
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
|
#, php-format
|
||||||
msgid "Own progress: %d %%"
|
msgid "Own progress: %d %%"
|
||||||
msgstr "Persönlicher Fortschritt: %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/charactergroups/group.tpl:18
|
||||||
#: views/html/characters/character.tpl:28 views/html/seminarybar/index.tpl:7
|
#: views/html/characters/character.tpl:28 views/html/seminarybar/index.tpl:7
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "Platz"
|
msgstr "Platz"
|
||||||
|
|
||||||
#: views/html/achievements/index.tpl:54
|
#: views/html/achievements/index.tpl:46
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You achieved %d of %d Achievements so far"
|
msgid "You achieved %d of %d Achievements so far"
|
||||||
msgstr "Du hast bislang %d von insgesamt %d Errungenschaften erreicht"
|
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
|
#: views/html/seminarybar/index.tpl:28
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "achieved at: %s"
|
msgid "achieved at: %s"
|
||||||
msgstr "erhalten am: %s"
|
msgstr "erhalten am: %s"
|
||||||
|
|
||||||
#: views/html/achievements/index.tpl:79
|
#: views/html/achievements/index.tpl:71
|
||||||
msgid "Secret Achievement"
|
msgid "Secret Achievement"
|
||||||
msgstr "Geheime Errungenschaft"
|
msgstr "Geheime Errungenschaft"
|
||||||
|
|
||||||
#: views/html/achievements/index.tpl:84
|
#: views/html/achievements/index.tpl:76
|
||||||
msgid "Continue playing to unlock this secret Achievement"
|
msgid "Continue playing to unlock this secret Achievement"
|
||||||
msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
|
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.
|
* Calculate only XPs for a Character achieved through Quests.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -29,23 +29,15 @@
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="rare hunter">
|
<section class="rare hunter">
|
||||||
<h3>Die erfolgreichsten Sammler</h3>
|
<h3><?=_('Most successful collectors')?></h3>
|
||||||
<ol>
|
<ol>
|
||||||
|
<?php foreach($successfulCharacters as $successfulCharacter) : ?>
|
||||||
<li class="cf">
|
<li class="cf">
|
||||||
<img src="http://zyren.inf-d.de/media/seminary/Die-Legende-von-Zyren/Mensch01-Portrait" />
|
<img src="<?=$linker->link(array('media','avatar',$seminary['url'],$successfulCharacter['charactertype_url'],$successfulCharacter['xplevel'],'portrait'))?>" />
|
||||||
<p class="fwb">VHS</p>
|
<p class="fwb"><?=$successfulCharacter['name']?></p>
|
||||||
<p><small>hat 15 Errungenschaften gefunden</small></p>
|
<p><small><?=sprintf(_('Character has achieved %d Achievements'), $successfulCharacter['c'])?></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>
|
|
||||||
</li>
|
</li>
|
||||||
|
<?php endforeach ?>
|
||||||
</ol>
|
</ol>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue