diff --git a/configs/AppConfig.inc b/configs/AppConfig.inc index 1bfbc2d6..f7ed6931 100644 --- a/configs/AppConfig.inc +++ b/configs/AppConfig.inc @@ -94,8 +94,8 @@ * @var array */ public static $misc = array( - 'ranking_range' => 2, - 'seldom_achievements_range' => 3 + 'ranking_range' => 2, + 'achievements_range' => 3 ); diff --git a/controllers/AchievementsController.inc b/controllers/AchievementsController.inc index 00adea6d..d99671b6 100644 --- a/controllers/AchievementsController.inc +++ b/controllers/AchievementsController.inc @@ -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); } diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.mo b/locale/de_DE/LC_MESSAGES/The Legend of Z.mo index 48535d06..da63f7b3 100644 Binary files a/locale/de_DE/LC_MESSAGES/The Legend of Z.mo and b/locale/de_DE/LC_MESSAGES/The Legend of Z.mo differ diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.po b/locale/de_DE/LC_MESSAGES/The Legend of Z.po index c041d6c7..8f3f73a2 100644 --- a/locale/de_DE/LC_MESSAGES/The Legend of Z.po +++ b/locale/de_DE/LC_MESSAGES/The Legend of Z.po @@ -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" diff --git a/models/CharactersModel.inc b/models/CharactersModel.inc index 25dc6a76..b3eac8b7 100644 --- a/models/CharactersModel.inc +++ b/models/CharactersModel.inc @@ -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. * diff --git a/views/html/achievements/index.tpl b/views/html/achievements/index.tpl index 9253052c..3bd61f20 100644 --- a/views/html/achievements/index.tpl +++ b/views/html/achievements/index.tpl @@ -29,23 +29,15 @@
-

Die erfolgreichsten Sammler

+

    +
  1. - -

    VHS

    -

    hat 15 Errungenschaften gefunden

    -
  2. -
  3. - -

    Betamax

    -

    hat 14 Errungenschaften gefunden

    -
  4. -
  5. - -

    Laserdisc

    -

    hat 12 Errungenschaften gefunden

    + +

    +

  6. +