diff --git a/configs/AppConfig.inc b/configs/AppConfig.inc index 841903c6..1bfbc2d6 100644 --- a/configs/AppConfig.inc +++ b/configs/AppConfig.inc @@ -94,7 +94,8 @@ * @var array */ public static $misc = array( - 'ranking_range' => 2 + 'ranking_range' => 2, + 'seldom_achievements_range' => 3 ); diff --git a/controllers/AchievementsController.inc b/controllers/AchievementsController.inc index ceeec968..00adea6d 100644 --- a/controllers/AchievementsController.inc +++ b/controllers/AchievementsController.inc @@ -61,6 +61,12 @@ // Get Character $character = SeminaryRoleController::$character; + // Get seldom Achievements + $seldomAchievements = $this->Achievements->getSeldomAchievements($seminary['id'], \nre\configs\AppConfig::$misc['seldom_achievements_range']); + foreach($seldomAchievements as &$achievement) { + $achievement['achieved'] = $this->Achievements->hasCharacterAchievedAchievement($achievement['id'], $character['id']); + } + // Get achieved Achievements $achievedAchievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']); @@ -152,6 +158,7 @@ // Pass data to view $this->set('seminary', $seminary); $this->set('character', $character); + $this->set('seldomAchievements', $seldomAchievements); $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 cd24a7de..48535d06 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 4444a9c3..c041d6c7 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:08+0100\n" -"PO-Revision-Date: 2014-04-17 01:08+0100\n" +"POT-Creation-Date: 2014-04-17 01:27+0100\n" +"PO-Revision-Date: 2014-04-17 01:27+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: de_DE\n" @@ -102,6 +102,15 @@ msgstr "Fehler" msgid "Achievements" msgstr "Errungenschaften" +#: views/html/achievements/index.tpl:11 +msgid "Seldom Achievements" +msgstr "Die seltensten Errungenschaften" + +#: views/html/achievements/index.tpl:25 +#, php-format +msgid "Achievement has been achieved only %d times" +msgstr "wurde erst %d mal gefunden" + #: views/html/achievements/index.tpl:53 #, php-format msgid "Own progress: %d %%" diff --git a/models/AchievementsModel.inc b/models/AchievementsModel.inc index bf7f56f4..c5a1d248 100644 --- a/models/AchievementsModel.inc +++ b/models/AchievementsModel.inc @@ -84,6 +84,30 @@ } + /** + * Get seldom Achievements. + * + * @param int $seminaryId ID of Seminary + * @param int $count Number of Achievements to retrieve + * @return array List of seldom Achievements + */ + public function getSeldomAchievements($seminaryId, $count) + { + return $this->db->query( + 'SELECT id, title, url, description, progress, hidden, unachieved_achievementsmedia_id, achieved_achievementsmedia_id, count(DISTINCT character_id) AS c '. + 'FROM achievements_characters '. + 'LEFT JOIN achievements ON achievements.id = achievements_characters.achievement_id '. + 'WHERE achievements.seminary_id = ? AND only_once = 0 '. + 'GROUP BY achievement_id '. + 'ORDER BY count(DISTINCT character_id) ASC '. + 'LIMIT ?', + 'ii', + $seminaryId, + $count + ); + } + + /** * Get all achieved Achievements for a Character. * diff --git a/views/html/achievements/index.tpl b/views/html/achievements/index.tpl index 79672cdc..9253052c 100644 --- a/views/html/achievements/index.tpl +++ b/views/html/achievements/index.tpl @@ -8,23 +8,23 @@
-

Die seltensten Errungenschaften

+

    +
  1. - -

    Des Königs neue Kleider

    -

    wurde erst 5 mal gefunden

    -
  2. -
  3. - -

    Sein oder Sterben

    -

    wurde erst 7 mal gefunden

    -
  4. -
  5. - -

    Hungersnot? Ohne mich.

    -

    wurde erst 9 mal gefunden

    + + + + + + + + + +

    +

  6. +