use parameter for locked Achievements to prevent caching problems (Issue #155)

This commit is contained in:
coderkun 2014-04-26 14:14:51 +02:00
commit f36101a9ca
2 changed files with 16 additions and 8 deletions

View file

@ -214,7 +214,7 @@
* @param string $achievementUrl URL-title of the Achievement
* @param string $action Action for processing the media
*/
public function achievement($seminaryUrl, $achievementUrl)
public function achievement($seminaryUrl, $achievementUrl, $locked=null)
{
// Get Seminary
$seminary = $this->Seminaries->getSeminaryByUrl($seminaryUrl);
@ -226,12 +226,20 @@
$achievement = $this->Achievements->getAchievementByUrl($seminary['id'], $achievementUrl);
// Get media
$index = '';
if(is_null($character) || !$this->Achievements->hasCharacterAchievedAchievement($achievement['id'], $character['id'])) {
$index = 'unachieved_achievementsmedia_id';
}
else {
$index = 'achieved_achievementsmedia_id';
switch($locked)
{
case null:
if(is_null($character) || !$this->Achievements->hasCharacterAchievedAchievement($achievement['id'], $character['id'])) {
throw new \nre\exceptions\AccessDeniedException();
}
$index = 'achieved_achievementsmedia_id';
break;
case 'locked':
$index = 'unachieved_achievementsmedia_id';
break;
default:
throw new \nre\exceptions\ParamsNotValidException($locked);
break;
}
if(is_null($achievement[$index])) {
throw new \nre\exceptions\IdNotFoundException($achievementUrl);

View file

@ -63,7 +63,7 @@
<?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']))?>" />
<img src="<?=$linker->link(array('media','achievement',$seminary['url'],$achievement['url'],'locked'))?>" />
<?php endif ?>
<h3 id="<?=$achievement['url']?>"><?=(!$achievement['hidden']) ? $achievement['title'] : _('Secret Achievement')?></h3>
<?php if(!$achievement['hidden']) : ?>