set dynamic value for Achievement list
This commit is contained in:
parent
6e3e4154cf
commit
4d831ced8f
5 changed files with 112 additions and 66 deletions
|
|
@ -61,15 +61,15 @@
|
|||
// Get Character
|
||||
$character = SeminaryRoleController::$character;
|
||||
|
||||
// Get Achievements
|
||||
$achievements = $this->Achievements->getAchievementsForSeminary($seminary['id']);
|
||||
foreach($achievements as &$achievement)
|
||||
// Get achieved Achievements
|
||||
$achievedAchievements = $this->Achievements->getAchievedAchievementsForCharacter($character['id']);
|
||||
|
||||
// Get unachieved Achievements
|
||||
$unachievedAchievements = $this->Achievements->getUnachhievedAchievementsForCharacter($seminary['id'], $character['id'], true);
|
||||
foreach($unachievedAchievements as &$achievement)
|
||||
{
|
||||
// Get status for Character
|
||||
$achieved = $this->Achievements->hasCharacterAchievedAchievement($achievement['id'], $character['id']);
|
||||
|
||||
// Get Character progress
|
||||
if(!$achieved && $achievement['progress'])
|
||||
if($achievement['progress'])
|
||||
{
|
||||
$conditions = array();
|
||||
switch($achievement['condition'])
|
||||
|
|
@ -143,18 +143,17 @@
|
|||
|
||||
$achievement['characterProgress'] = array_sum($characterProgresses) / count($characterProgresses);
|
||||
}
|
||||
|
||||
// Get media
|
||||
$achievement['media_index'] = 'unachieved_achievementsmedia_id';
|
||||
if($achieved) {
|
||||
$achievement['media_index'] = 'achieved_achievementsmedia_id';
|
||||
}
|
||||
}
|
||||
|
||||
// Get ranking
|
||||
$character['rank'] = $this->Achievements->getCountRank($seminary['id'], count($achievedAchievements));
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('seminary', $seminary);
|
||||
$this->set('achievements', $achievements);
|
||||
$this->set('character', $character);
|
||||
$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-16 15:53+0100\n"
|
||||
"PO-Revision-Date: 2014-04-16 15:54+0100\n"
|
||||
"POT-Creation-Date: 2014-04-17 01:08+0100\n"
|
||||
"PO-Revision-Date: 2014-04-17 01:08+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
|
|
@ -102,26 +102,43 @@ msgstr "Fehler"
|
|||
msgid "Achievements"
|
||||
msgstr "Errungenschaften"
|
||||
|
||||
#: views/html/achievements/index.tpl:15
|
||||
#: views/html/achievements/index.tpl:53
|
||||
#, php-format
|
||||
msgid "Own progress: %d %%"
|
||||
msgstr "Persönlicher Fortschritt: %d %%"
|
||||
|
||||
#: views/html/achievements/index.tpl:54
|
||||
#: 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
|
||||
#, 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/seminarybar/index.tpl:28
|
||||
#, php-format
|
||||
msgid "achieved at: %s"
|
||||
msgstr "erhalten am: %s"
|
||||
|
||||
#: views/html/achievements/index.tpl:79
|
||||
msgid "Secret Achievement"
|
||||
msgstr "Geheime Errungenschaft"
|
||||
|
||||
#: views/html/achievements/index.tpl:19
|
||||
#: views/html/achievements/index.tpl:84
|
||||
msgid "Continue playing to unlock this secret Achievement"
|
||||
msgstr "Spiele weiter, um diesen geheimen Erfolg freizuschalten"
|
||||
|
||||
#: views/html/charactergroups/group.tpl:7
|
||||
#: views/html/charactergroups/groupsgroup.tpl:7
|
||||
#: views/html/charactergroups/index.tpl:7
|
||||
#: views/html/characters/character.tpl:53 views/html/seminarymenu/index.tpl:3
|
||||
#: views/html/characters/character.tpl:51 views/html/seminarymenu/index.tpl:3
|
||||
msgid "Character Groups"
|
||||
msgstr "Charaktergruppen"
|
||||
|
||||
#: views/html/charactergroups/group.tpl:18
|
||||
#: views/html/characters/character.tpl:28 views/html/seminarybar/index.tpl:7
|
||||
msgid "Rank"
|
||||
msgstr "Platz"
|
||||
|
||||
#: views/html/charactergroups/group.tpl:20
|
||||
msgid "Members"
|
||||
msgstr "Mitglieder"
|
||||
|
|
@ -167,23 +184,18 @@ msgid "Total progress"
|
|||
msgstr "Fortschritt"
|
||||
|
||||
#: views/html/characters/character.tpl:20
|
||||
#: views/html/characters/character.tpl:73
|
||||
#: views/html/characters/character.tpl:81
|
||||
#: views/html/characters/character.tpl:89 views/html/seminarybar/index.tpl:44
|
||||
#: views/html/characters/character.tpl:69
|
||||
#: views/html/characters/character.tpl:75
|
||||
#: views/html/characters/character.tpl:81 views/html/seminarybar/index.tpl:42
|
||||
#: views/html/users/user.tpl:29
|
||||
msgid "Level"
|
||||
msgstr "Level"
|
||||
|
||||
#: views/html/characters/character.tpl:39 views/html/seminarybar/index.tpl:28
|
||||
#, php-format
|
||||
msgid "achieved at: %s"
|
||||
msgstr "erhalten am: %s"
|
||||
|
||||
#: views/html/characters/character.tpl:65
|
||||
#: views/html/characters/character.tpl:63
|
||||
msgid "Ranking"
|
||||
msgstr "Ranking"
|
||||
|
||||
#: views/html/characters/character.tpl:97
|
||||
#: views/html/characters/character.tpl:89
|
||||
msgid "Topic progress"
|
||||
msgstr "Thematischer Fortschritt"
|
||||
|
||||
|
|
@ -399,7 +411,7 @@ msgstr "Quests anzeigen"
|
|||
msgid "Last Quest"
|
||||
msgstr "Letzter Speicherpunkt"
|
||||
|
||||
#: views/html/seminarybar/index.tpl:48
|
||||
#: views/html/seminarybar/index.tpl:46
|
||||
#, php-format
|
||||
msgid "Show %s-Profile"
|
||||
msgstr "%s-Profil anzeigen"
|
||||
|
|
@ -555,6 +567,10 @@ msgstr "Name"
|
|||
msgid "Roles"
|
||||
msgstr "Rollen"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "achieved at %s"
|
||||
#~ msgstr "erhalten am: %s"
|
||||
|
||||
#~ msgid "Usergroups"
|
||||
#~ msgstr "Benutzergruppen"
|
||||
|
||||
|
|
|
|||
|
|
@ -60,26 +60,6 @@
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all Achievements of a Seminary.
|
||||
*
|
||||
* @param int $seminaryId ID of Seminary to get Achievements of
|
||||
* @return array Achievements data
|
||||
*/
|
||||
public function getAchievementsForSeminary($seminaryId)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'FROM achievements '.
|
||||
'LEFT JOIN achievementconditions ON achievementconditions.id = achievements.achievementcondition_id '.
|
||||
'WHERE seminary_id = ? '.
|
||||
'ORDER BY achievements.pos ASC',
|
||||
'i',
|
||||
$seminaryId
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all not yet achieved Achievements for a Seminary that can
|
||||
* only be achieved once (only by one Character).
|
||||
|
|
@ -131,26 +111,60 @@
|
|||
* @param int $characterId ID of Character
|
||||
* @return array Achievements data
|
||||
*/
|
||||
public function getUnachhievedAchievementsForCharacter($seminaryId, $characterId)
|
||||
public function getUnachhievedAchievementsForCharacter($seminaryId, $characterId, $includeOnlyOnce=false)
|
||||
{
|
||||
return $this->db->query(
|
||||
'SELECT achievements.id, achievementconditions.condition, title, url, description, progress, hidden, only_once, all_conditions, unachieved_achievementsmedia_id, achieved_achievementsmedia_id '.
|
||||
'FROM achievements '.
|
||||
'LEFT JOIN achievementconditions ON achievementconditions.id = achievements.achievementcondition_id '.
|
||||
'WHERE achievements.seminary_id = ? AND only_once = 0 AND NOT EXISTS ('.
|
||||
'WHERE achievements.seminary_id = ? AND only_once <= ? AND NOT EXISTS ('.
|
||||
'SELECT character_id '.
|
||||
'FROM achievements_characters '.
|
||||
'WHERE '.
|
||||
'achievements_characters.achievement_id = achievements.id AND '.
|
||||
'achievements_characters.character_id = ?'.
|
||||
')',
|
||||
'ii',
|
||||
') '.
|
||||
'ORDER BY achievements.pos ASC',
|
||||
'iii',
|
||||
$seminaryId,
|
||||
$includeOnlyOnce,
|
||||
$characterId
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the rank for the number of achieved Achievements.
|
||||
*
|
||||
* @param int $seminaryId ID of Seminary
|
||||
* @param int $xps Amount of achieved Achievements
|
||||
* @return int Rank of Achievements count
|
||||
*/
|
||||
public function getCountRank($seminaryId, $count)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT count(*) AS c '.
|
||||
'FROM ('.
|
||||
'SELECT count(DISTINCT achievement_id) '.
|
||||
'FROM achievements_characters '.
|
||||
'LEFT JOIN achievements ON achievements.id = achievements_characters.achievement_id '.
|
||||
'WHERE achievements.seminary_id = ? '.
|
||||
'GROUP BY character_id '.
|
||||
'HAVING count(DISTINCT achievement_id) > ?'.
|
||||
') AS ranking',
|
||||
'ii',
|
||||
$seminaryId,
|
||||
$count
|
||||
);
|
||||
if(!empty($data)) {
|
||||
return $data[0]['c'] + 1;
|
||||
}
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all date conditions for an Achievement.
|
||||
*
|
||||
|
|
@ -492,15 +506,18 @@
|
|||
public function hasCharacterAchievedAchievement($achievementId, $characterId)
|
||||
{
|
||||
$data = $this->db->query(
|
||||
'SELECT character_id '.
|
||||
'SELECT achievement_id, character_id, created '.
|
||||
'FROM achievements_characters '.
|
||||
'WHERE achievement_id = ? AND character_id = ?',
|
||||
'ii',
|
||||
$achievementId, $characterId
|
||||
);
|
||||
if(!empty($data)) {
|
||||
return $data[0];
|
||||
}
|
||||
|
||||
|
||||
return !empty($data);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,20 +50,34 @@
|
|||
</section>
|
||||
</div>
|
||||
|
||||
<h3>Persönlicher Fortschritt: 75%</h3>
|
||||
<p><b>12. Platz:</b> Du hast bislang 13 von insgesamt 75 Errungenschaften erreicht.</p>
|
||||
<h3><?=sprintf(_('Own progress: %d %%'), round(count($achievedAchievements) / (count($achievedAchievements)+count($unachievedAchievements)) * 100))?></h3>
|
||||
<p><b><?=$character['rank']?>. <?=_('Rank')?>:</b> <?=sprintf(_('You achieved %d of %d Achievements so far'), count($achievedAchievements), count($achievedAchievements)+count($unachievedAchievements))?>.</p>
|
||||
<ul class="achmnts">
|
||||
<li class="cf">
|
||||
<img src="http://legende-von-zyren.de/img/achieve/36b.jpg" />
|
||||
<p class="fwb">Freigeschaltetes Achievement<span class="unlcked">erreicht am 17.06.104</span></p>
|
||||
<p class="desc">Das Bild ist entsprechend farbig, ein eventueller Fortschrittsbalken mit 100% soll entfallen.</p>
|
||||
</li>
|
||||
<?php foreach($achievements as &$achievement) : ?>
|
||||
<?php foreach($achievedAchievements as &$achievement) : ?>
|
||||
<li class="cf">
|
||||
<?php if(!is_null($achievement[$achievement['media_index']])) : ?>
|
||||
<?php if(!is_null($achievement['achieved_achievementsmedia_id'])) : ?>
|
||||
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url']))?>" />
|
||||
<?php endif ?>
|
||||
<p class="fwb"><?=(!$achievement['hidden']) ? $achievement['title'] : _('Secret Achievement')?><span class="unlcked">erreicht am 17.06.104</span></p>
|
||||
<p class="fwb">
|
||||
<?=$achievement['title']?>
|
||||
<span class="unlcked"><?=sprintf(_('achieved at: %s'), $dateFormatter->format(new \DateTime($achievement['created'])))?></span>
|
||||
</p>
|
||||
<p class="desc"><?=\hhu\z\Utils::t($achievement['description'])?></p>
|
||||
</li>
|
||||
<?php endforeach?>
|
||||
<?php foreach($unachievedAchievements as &$achievement) : ?>
|
||||
<li class="cf">
|
||||
<?php if(!is_null($achievement['unachieved_achievementsmedia_id'])) : ?>
|
||||
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url']))?>" />
|
||||
<?php endif ?>
|
||||
<p class="fwb">
|
||||
<?=(!$achievement['hidden']) ? $achievement['title'] : _('Secret Achievement')?>
|
||||
</p>
|
||||
<?php if(!$achievement['hidden']) : ?>
|
||||
<p class="desc"><?=\hhu\z\Utils::t($achievement['description'])?></p>
|
||||
<?php else : ?>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue