add some checks to not throw IdNotFound exception for empty Quests (fixes #9)
This commit is contained in:
parent
8b01676622
commit
dec602da34
7 changed files with 68 additions and 52 deletions
|
|
@ -99,7 +99,7 @@
|
|||
{
|
||||
// Get Boss-Fight
|
||||
$fight = $this->Bossfight->getBossFight($quest['id']);
|
||||
if(!is_null($fight['boss_seminarymedia_id'])) {
|
||||
if(!is_null($fight) && !is_null($fight['boss_seminarymedia_id'])) {
|
||||
$fight['bossmedia'] = $this->Media->getSeminaryMediaById($fight['boss_seminarymedia_id']);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,6 @@
|
|||
/**
|
||||
* Get a Boss-Fight.
|
||||
*
|
||||
* @throws \nre\exceptions\IdNotFoundException
|
||||
* @param int $questId ID of Quest
|
||||
* @return array Boss-Fight data
|
||||
*/
|
||||
|
|
@ -84,12 +83,11 @@
|
|||
'i',
|
||||
$questId
|
||||
);
|
||||
if(empty($data)) {
|
||||
throw new \nre\exceptions\IdNotFoundException($questId);
|
||||
if(!empty($data)) {
|
||||
return $data[0];
|
||||
}
|
||||
|
||||
|
||||
return $data[0];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,34 +1,36 @@
|
|||
<?php if(!is_null($fight)) : ?>
|
||||
<div class="cf">
|
||||
<section class="opponent">
|
||||
<p class="fwb"><?=$character['name']?></p>
|
||||
<p class="portrait"><img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']))?>" class="hero" /></p>
|
||||
<p>
|
||||
<?php if($lives['character'] > 0) : ?>
|
||||
<?php foreach(range(1,$lives['character']) as $i) : ?>
|
||||
<i class="fa fa-heart fa-fw"></i>
|
||||
<?php endforeach ?>
|
||||
<?php else : ?>
|
||||
<?=_('lost')?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</section>
|
||||
<section class="opponent">
|
||||
<p class="fwb"><?=$fight['bossname']?></p>
|
||||
<p class="portrait"><img src="<?=$linker->link(array('media','seminary',$seminary['url'],$fight['bossmedia']['url']))?>" class="boss" /></p>
|
||||
<p>
|
||||
<?php if($lives['boss'] > 0) : ?>
|
||||
<?php foreach(range(1,$lives['boss']) as $i) : ?>
|
||||
<i class="fa fa-heart fa-fw"></i>
|
||||
<?php endforeach ?>
|
||||
<?php else : ?>
|
||||
<b><?=_('lost')?></b>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</section>
|
||||
<section class="opponent">
|
||||
<p class="fwb"><?=$character['name']?></p>
|
||||
<p class="portrait"><img src="<?=$linker->link(array('media','avatar',$seminary['url'],$character['charactertype_url'],$character['xplevel']))?>" class="hero" /></p>
|
||||
<p>
|
||||
<?php if($lives['character'] > 0) : ?>
|
||||
<?php foreach(range(1,$lives['character']) as $i) : ?>
|
||||
<i class="fa fa-heart fa-fw"></i>
|
||||
<?php endforeach ?>
|
||||
<?php else : ?>
|
||||
<?=_('lost')?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</section>
|
||||
<section class="opponent">
|
||||
<p class="fwb"><?=$fight['bossname']?></p>
|
||||
<p class="portrait"><img src="<?=$linker->link(array('media','seminary',$seminary['url'],$fight['bossmedia']['url']))?>" class="boss" /></p>
|
||||
<p>
|
||||
<?php if($lives['boss'] > 0) : ?>
|
||||
<?php foreach(range(1,$lives['boss']) as $i) : ?>
|
||||
<i class="fa fa-heart fa-fw"></i>
|
||||
<?php endforeach ?>
|
||||
<?php else : ?>
|
||||
<b><?=_('lost')?></b>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if(!is_null($stage)) : ?>
|
||||
<p><?=\hhu\z\Utils::t($stage['text'])?></p>
|
||||
|
||||
<form method="post" action="<?=$linker->link(null,0,false,null,true,'task')?>">
|
||||
<input type="hidden" name="stage" value="<?=$stage['id']?>" />
|
||||
<ul class="bossfight cf">
|
||||
|
|
@ -49,3 +51,4 @@
|
|||
<?php endif ?>
|
||||
</ul>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
|
|
|
|||
|
|
@ -131,18 +131,26 @@
|
|||
{
|
||||
// Get Drag&Drop field
|
||||
$dndField = $this->Dragndrop->getDragndrop($quest['id']);
|
||||
$dndField['media'] = $this->Media->getSeminaryMediaById($dndField['questmedia_id']);
|
||||
if(!is_null($dndField) && !is_null($dndField['questmedia_id'])) {
|
||||
$dndField['media'] = $this->Media->getSeminaryMediaById($dndField['questmedia_id']);
|
||||
}
|
||||
|
||||
// Get Drags
|
||||
$drags = array();
|
||||
$dragsByIndex = $this->Dragndrop->getDrags($dndField['quest_id']);
|
||||
foreach($dragsByIndex as &$drag) {
|
||||
$drag['media'] = $this->Media->getSeminaryMediaById($drag['questmedia_id']);
|
||||
$drags[$drag['id']] = $drag;
|
||||
}
|
||||
if(!is_null($dndField))
|
||||
{
|
||||
$dragsByIndex = $this->Dragndrop->getDrags($dndField['quest_id']);
|
||||
foreach($dragsByIndex as &$drag) {
|
||||
$drag['media'] = $this->Media->getSeminaryMediaById($drag['questmedia_id']);
|
||||
$drags[$drag['id']] = $drag;
|
||||
}
|
||||
}
|
||||
|
||||
// Get Drops
|
||||
$drops = $this->Dragndrop->getDrops($dndField['quest_id']);
|
||||
$drops = array();
|
||||
if(!is_null($dndField)) {
|
||||
$this->Dragndrop->getDrops($dndField['quest_id']);
|
||||
}
|
||||
|
||||
// Get Character answers
|
||||
if($this->request->getGetParam('show-answer') == 'true' || !$this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id']) || $this->request->getGetParam('status') == 'solved')
|
||||
|
|
|
|||
|
|
@ -172,18 +172,19 @@
|
|||
|
||||
// Get current question
|
||||
$question = $this->Multiplechoice->getQuestionOfQuest($quest['id'], $pos);
|
||||
|
||||
// Get answers
|
||||
$question['answers'] = $this->Multiplechoice->getAnswersOfQuestion($question['id']);
|
||||
|
||||
|
||||
// Get previous user answers
|
||||
if($this->request->getGetParam('show-answer') == 'true' || !$this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id']) || $this->request->getGetParam('status') == 'solved')
|
||||
{
|
||||
foreach($question['answers'] as &$answer) {
|
||||
$answer['useranswer'] = $this->Multiplechoice->getCharacterSubmission($answer['id'], $character['id']);
|
||||
}
|
||||
}
|
||||
if(!is_null($question))
|
||||
{
|
||||
// Get answers
|
||||
$question['answers'] = $this->Multiplechoice->getAnswersOfQuestion($question['id']);
|
||||
|
||||
// Get previous user answers
|
||||
if($this->request->getGetParam('show-answer') == 'true' || !$this->Quests->hasCharacterSolvedQuest($quest['id'], $character['id']) || $this->request->getGetParam('status') == 'solved')
|
||||
{
|
||||
foreach($question['answers'] as &$answer) {
|
||||
$answer['useranswer'] = $this->Multiplechoice->getCharacterSubmission($answer['id'], $character['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Pass data to view
|
||||
|
|
|
|||
|
|
@ -134,12 +134,16 @@
|
|||
$correctAnswersCount += $this->isMatching($field['regex'], $field['answer']);
|
||||
}
|
||||
}
|
||||
|
||||
// Show count
|
||||
$showcount = (count($this->request->getGetParams()) > 1);
|
||||
|
||||
|
||||
// Pass data to view
|
||||
$this->set('task', $task);
|
||||
$this->set('fields', $fields);
|
||||
$this->set('count', $correctAnswersCount);
|
||||
$this->set('showcount', $showcount);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
<?php endforeach ?>
|
||||
<?=$t->t(mb_substr($task['text'], $posStart, mb_strlen($task['text'], 'UTF-8')-$posStart, 'UTF-8'))?>
|
||||
</p>
|
||||
<?php if($showcount) : ?>
|
||||
<p><?=sprintf(_('You filled %d of %d fields correctly'), $count, count($fields))?>.</p>
|
||||
<?php endif ?>
|
||||
<input type="submit" name="submit" value="<?=_('solve')?>" />
|
||||
</form>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue