determine seldom Achievements (Issue #57)

This commit is contained in:
coderkun 2014-04-17 01:31:23 +02:00
commit c47eb1e314
6 changed files with 58 additions and 17 deletions

View file

@ -94,7 +94,8 @@
* @var array
*/
public static $misc = array(
'ranking_range' => 2
'ranking_range' => 2,
'seldom_achievements_range' => 3
);

View file

@ -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);
}

View file

@ -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%%"

View file

@ -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.
*

View file

@ -8,23 +8,23 @@
<div class="cf">
<section class="rare">
<h3>Die seltensten Errungenschaften</h3>
<h3><?=_('Seldom Achievements')?></h3>
<ol>
<?php foreach($seldomAchievements as &$achievement) : ?>
<li class="cf">
<img src="http://legende-von-zyren.de/img/achieve/36b.jpg" />
<p class="fwb">Des Königs neue Kleider</p>
<p><small>wurde erst 5 mal gefunden</small></p>
</li>
<li class="cf">
<img src="http://legende-von-zyren.de/img/achieve/1b.jpg" />
<p class="fwb">Sein oder Sterben</p>
<p><small>wurde erst 7 mal gefunden</small></p>
</li>
<li class="cf">
<img src="http://legende-von-zyren.de/img/achieve/35b.jpg" />
<p class="fwb">Hungersnot? Ohne mich.</p>
<p><small>wurde erst 9 mal gefunden</small></p>
<?php if($achievement['achieved'] !== false) : ?>
<?php if(!is_null($achievement['achieved_achievementsmedia_id'])) : ?>
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url']))?>" />
<?php endif ?>
<?php else : ?>
<?php if(!is_null($achievement['unachieved_achievementsmedia_id'])) : ?>
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url']))?>" />
<?php endif ?>
<?php endif ?>
<p class="fwb"><?=$achievement['title']?></p>
<p><small><?=sprintf(_('Achievement has been achieved only %d times'), $achievement['c'])?></small></p>
</li>
<?php endforeach ?>
</ol>
</section>