change solved/unsolved status of a Quest to GET-parameter
This commit is contained in:
parent
34e63718bd
commit
48f796a0c7
5 changed files with 124 additions and 67 deletions
|
|
@ -265,7 +265,7 @@
|
||||||
|
|
||||||
|
|
||||||
// Redirect
|
// Redirect
|
||||||
$this->redirect($this->linker->link('solved', $sidequest != null ? 6 : 5));
|
$this->redirect($this->linker->link('Epilog', $sidequest != null ? 6 : 5, true, array('status'=>'solved')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -298,7 +298,7 @@
|
||||||
|
|
||||||
|
|
||||||
// Redirect
|
// Redirect
|
||||||
$this->redirect($this->linker->link('unsolved', $sidequest != null ? 6 : 5));
|
$this->redirect($this->linker->link('Prolog', $sidequest != null ? 6 : 5, true, array('status'=>'unsolved')));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,37 +73,30 @@
|
||||||
if(is_null($questtexttypeUrl)) {
|
if(is_null($questtexttypeUrl)) {
|
||||||
$questtexttypeUrl = 'Prolog';
|
$questtexttypeUrl = 'Prolog';
|
||||||
}
|
}
|
||||||
// Quest solved
|
$questtexttypes = $this->Questtexts->getQuesttexttypes();
|
||||||
if($questtexttypeUrl == 'solved')
|
$questtexttypes = array_map(function($t) { return $t['url']; }, $questtexttypes);
|
||||||
|
$questtextCount = $this->Questtexts->getQuesttextsCountForQuest($quest['id'], $questtexttypeUrl);
|
||||||
|
if($questtextCount > 0 && in_array($questtexttypeUrl, $questtexttypes))
|
||||||
{
|
{
|
||||||
$questtext = array(
|
$questtextPos = max(intval($questtextPos), 1);
|
||||||
'type' => 'solved',
|
$questtext = $this->Questtexts->getQuesttextByUrl($quest['id'], $questtexttypeUrl, $questtextPos);
|
||||||
'text' => $quest['right_text']
|
$questtext['count'] = $questtextCount;
|
||||||
);
|
$questtext['sidequests'] = $this->Quests->getSidequestsForQuesttext($questtext['id']);
|
||||||
}
|
}
|
||||||
// Quest unsolved
|
|
||||||
elseif($questtexttypeUrl == 'unsolved')
|
// Quest status
|
||||||
|
$questStatus = $this->request->getGetParam('status');
|
||||||
|
$questStatusText = null;
|
||||||
|
if(!is_null($questStatus))
|
||||||
{
|
{
|
||||||
$questtext = array(
|
switch($questStatus)
|
||||||
'type' => 'unsolved',
|
|
||||||
'text' => $quest['wrong_text']
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// Text
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Text type
|
|
||||||
$questtexttypes = $this->Questtexts->getQuesttexttypes();
|
|
||||||
$questtexttypes = array_map(function($t) { return $t['url']; }, $questtexttypes);
|
|
||||||
// Text count
|
|
||||||
$questtextCount = $this->Questtexts->getQuesttextsCountForQuest($quest['id'], $questtexttypeUrl);
|
|
||||||
// Get text
|
|
||||||
if($questtextCount > 0 && in_array($questtexttypeUrl, $questtexttypes))
|
|
||||||
{
|
{
|
||||||
$questtextPos = max(intval($questtextPos), 1);
|
case 'solved':
|
||||||
$questtext = $this->Questtexts->getQuesttextByUrl($quest['id'], $questtexttypeUrl, $questtextPos);
|
$questStatusText = $quest['right_text'];
|
||||||
$questtext['count'] = $questtextCount;
|
break;
|
||||||
$questtext['sidequests'] = $this->Quests->getSidequestsForQuesttext($questtext['id']);
|
case 'unsolved':
|
||||||
|
$questStatusText = $quest['wrong_text'];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -127,12 +120,21 @@
|
||||||
$task = $this->runAndRenderTask($questtype['classname']);
|
$task = $this->runAndRenderTask($questtype['classname']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Next Quest
|
||||||
|
$nextQuests = null;
|
||||||
|
if($questtexttypeUrl == 'Epilog') {
|
||||||
|
$nextQuests = $this->Quests->getNextQuests($quest['id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Pass data to view
|
// Pass data to view
|
||||||
$this->set('seminary', $seminary);
|
$this->set('seminary', $seminary);
|
||||||
$this->set('questgroup', $questgroup);
|
$this->set('questgroup', $questgroup);
|
||||||
$this->set('questtext', $questtext);
|
$this->set('questtext', $questtext);
|
||||||
$this->set('quest', $quest);
|
$this->set('quest', $quest);
|
||||||
|
$this->set('queststatus', $questStatus);
|
||||||
|
$this->set('queststatustext', $questStatusText);
|
||||||
|
$this->set('nextquests', $nextQuests);
|
||||||
$this->set('task', $task);
|
$this->set('task', $task);
|
||||||
$this->set('media', $questmedia);
|
$this->set('media', $questmedia);
|
||||||
}
|
}
|
||||||
|
|
@ -173,39 +175,32 @@
|
||||||
if(is_null($sidequesttexttypeUrl)) {
|
if(is_null($sidequesttexttypeUrl)) {
|
||||||
$sidequesttexttypeUrl = 'Prolog';
|
$sidequesttexttypeUrl = 'Prolog';
|
||||||
}
|
}
|
||||||
// Quest solved
|
$questtexttypes = $this->Questtexts->getQuesttexttypes();
|
||||||
if($sidequesttexttypeUrl == 'solved')
|
$questtexttypes = array_map(function($t) { return $t['url']; }, $questtexttypes);
|
||||||
|
$sidequesttextCount = $this->Questtexts->getQuesttextsCountForSidequest($sidequest['id'], $sidequesttexttypeUrl);
|
||||||
|
if($sidequesttextCount > 0 && in_array($sidequesttexttypeUrl, $questtexttypes))
|
||||||
{
|
{
|
||||||
$sidequesttext = array(
|
if(in_array($sidequesttexttypeUrl, $questtexttypes))
|
||||||
'type' => 'solved',
|
|
||||||
'text' => $quest['right_text']
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// Quest unsolved
|
|
||||||
elseif($sidequesttexttypeUrl == 'unsolved')
|
|
||||||
{
|
|
||||||
$sidequesttext = array(
|
|
||||||
'type' => 'unsolved',
|
|
||||||
'text' => $quest['wrong_text']
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// Text
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Text type
|
|
||||||
$questtexttypes = $this->Questtexts->getQuesttexttypes();
|
|
||||||
$questtexttypes = array_map(function($t) { return $t['url']; }, $questtexttypes);
|
|
||||||
// Text count
|
|
||||||
$sidequesttextCount = $this->Questtexts->getQuesttextsCountForSidequest($sidequest['id'], $sidequesttexttypeUrl);
|
|
||||||
// Get text
|
|
||||||
if($sidequesttextCount > 0 && in_array($sidequesttexttypeUrl, $questtexttypes))
|
|
||||||
{
|
{
|
||||||
if(in_array($sidequesttexttypeUrl, $questtexttypes))
|
$sidequesttextPos = max(intval($sidequesttextPos), 1);
|
||||||
{
|
$sidequesttext = $this->Questtexts->getSidequesttextByUrl($sidequest['id'], $sidequesttexttypeUrl, $sidequesttextPos);
|
||||||
$sidequesttextPos = max(intval($sidequesttextPos), 1);
|
$sidequesttext['count'] = $sidequesttextCount;
|
||||||
$sidequesttext = $this->Questtexts->getSidequesttextByUrl($sidequest['id'], $sidequesttexttypeUrl, $sidequesttextPos);
|
}
|
||||||
$sidequesttext['count'] = $sidequesttextCount;
|
}
|
||||||
}
|
|
||||||
|
// Sidequest status
|
||||||
|
$sidequestStatus = $this->request->getGetParam('status');
|
||||||
|
$sidequestStatusText = null;
|
||||||
|
if(!is_null($sidequestStatus))
|
||||||
|
{
|
||||||
|
switch($sidequestStatus)
|
||||||
|
{
|
||||||
|
case 'solved':
|
||||||
|
$sidequestStatusText = $sidequest['right_text'];
|
||||||
|
break;
|
||||||
|
case 'unsolved':
|
||||||
|
$sidequestStatusText = $sidequest['wrong_text'];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -220,7 +215,7 @@
|
||||||
|
|
||||||
// Task
|
// Task
|
||||||
$task = null;
|
$task = null;
|
||||||
if($sidequesttext['type'] == 'Prolog')
|
if(!is_null($sidequesttext) && $sidequesttext['type'] == 'Prolog')
|
||||||
{
|
{
|
||||||
// Questtype
|
// Questtype
|
||||||
$questtype = $this->Questtypes->getQuesttypeById($sidequest['questtype_id']);
|
$questtype = $this->Questtypes->getQuesttypeById($sidequest['questtype_id']);
|
||||||
|
|
@ -237,6 +232,8 @@
|
||||||
$this->set('sidequesttext', $sidequesttext);
|
$this->set('sidequesttext', $sidequesttext);
|
||||||
$this->set('quest', $quest);
|
$this->set('quest', $quest);
|
||||||
$this->set('sidequest', $sidequest);
|
$this->set('sidequest', $sidequest);
|
||||||
|
$this->set('sidequeststatus', $sidequestStatus);
|
||||||
|
$this->set('sidequeststatustext', $sidequestStatusText);
|
||||||
$this->set('task', $task);
|
$this->set('task', $task);
|
||||||
$this->set('media', $sidequestmedia);
|
$this->set('media', $sidequestmedia);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -154,6 +154,33 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Quests that follow-up a Quest.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to get next Quests of
|
||||||
|
* @return array Quests data
|
||||||
|
*/
|
||||||
|
public function getNextQuests($questId)
|
||||||
|
{
|
||||||
|
return $this->db->query(
|
||||||
|
'SELECT quests.id, quests.title, quests.url, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url '.
|
||||||
|
'FROM quests_previousquests '.
|
||||||
|
'LEFT JOIN quests ON quests.id = quests_previousquests.quest_id '.
|
||||||
|
'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '.
|
||||||
|
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '.
|
||||||
|
'WHERE quests_previousquests.previous_quest_id = ?',
|
||||||
|
'i',
|
||||||
|
$questId
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mark a Quest as solved for a Character.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to mark as solved
|
||||||
|
* @param int $characterId ID of Character that solved the Quest
|
||||||
|
*/
|
||||||
public function setQuestSolved($questId, $characterId)
|
public function setQuestSolved($questId, $characterId)
|
||||||
{
|
{
|
||||||
$this->db->query(
|
$this->db->query(
|
||||||
|
|
@ -169,6 +196,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mark a Quest as unsolved for a Character.
|
||||||
|
*
|
||||||
|
* @param int $questId ID of Quest to mark as unsolved
|
||||||
|
* @param int $characterId ID of Character that unsolved the Quest
|
||||||
|
*/
|
||||||
public function setQuestUnsolved($questId, $characterId)
|
public function setQuestUnsolved($questId, $characterId)
|
||||||
{
|
{
|
||||||
$this->db->query(
|
$this->db->query(
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,21 @@
|
||||||
<?php if(!is_null($media)) : ?>
|
<?php if(!is_null($media)) : ?>
|
||||||
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
|
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
|
<?php if(!is_null($queststatustext)) : ?>
|
||||||
<section>
|
<section>
|
||||||
<?php if($questtext['type'] == 'solved') : ?>
|
<?php if($queststatus == 'solved') : ?>
|
||||||
<h1><?=_('solved')?></h1>
|
<h1><?=_('solved')?></h1>
|
||||||
<?php elseif($questtext['type'] == 'unsolved') : ?>
|
<?php elseif($queststatus == 'unsolved') : ?>
|
||||||
<h1><?=_('unsolved')?></h1>
|
<h1><?=_('unsolved')?></h1>
|
||||||
<?php else : ?>
|
|
||||||
<h1><?=$questtext['type']?></h1>
|
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
<p><?=\hhu\z\Utils::t($queststatustext)?></p>
|
||||||
|
</section>
|
||||||
|
<?php endif ?>
|
||||||
|
|
||||||
|
<?php if(!is_null($questtext)) : ?>
|
||||||
|
<section>
|
||||||
|
<h1><?=$questtext['type']?></h1>
|
||||||
<p><?=\hhu\z\Utils::t($questtext['text'])?></p>
|
<p><?=\hhu\z\Utils::t($questtext['text'])?></p>
|
||||||
|
|
||||||
<?php if(array_key_exists('sidequests', $questtext) && !empty($questtext['sidequests'])) : ?>
|
<?php if(array_key_exists('sidequests', $questtext) && !empty($questtext['sidequests'])) : ?>
|
||||||
|
|
@ -39,6 +46,18 @@
|
||||||
<?php if($questtext['pos'] < $questtext['count'] && empty($questtext['out_text'])) : ?><a href="<?=$linker->link(array($questtext['type_url'],$questtext['pos']+1),5)?>">></a><?php endif ?>
|
<?php if($questtext['pos'] < $questtext['count'] && empty($questtext['out_text'])) : ?><a href="<?=$linker->link(array($questtext['type_url'],$questtext['pos']+1),5)?>">></a><?php endif ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</section>
|
</section>
|
||||||
|
<?php endif ?>
|
||||||
|
|
||||||
|
<?php if(!is_null($nextquests)) : ?>
|
||||||
|
<section>
|
||||||
|
<h1><?=_('Next Quests')?></h1>
|
||||||
|
<ul>
|
||||||
|
<?php foreach($nextquests as &$nextquest) : ?>
|
||||||
|
<li><a href="<?=$linker->link(array($nextquest['questgroup_url'],$nextquest['url']),3)?>"><?=$nextquest['title']?></a></li>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<?php endif ?>
|
||||||
|
|
||||||
<?php if(!is_null($task)) : ?>
|
<?php if(!is_null($task)) : ?>
|
||||||
<section>
|
<section>
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,21 @@
|
||||||
<?php if(!is_null($media)) : ?>
|
<?php if(!is_null($media)) : ?>
|
||||||
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
|
<img src="<?=$linker->link(array('media','index',$seminary['url'],$media['url']))?>" />
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
|
<?php if(!is_null($sidequeststatustext)) : ?>
|
||||||
<section>
|
<section>
|
||||||
<?php if($sidequesttext['type'] == 'solved') : ?>
|
<?php if($sidequeststatus == 'solved') : ?>
|
||||||
<h1><?=_('solved')?></h1>
|
<h1><?=_('solved')?></h1>
|
||||||
<?php elseif($sidequesttext['type'] == 'unsolved') : ?>
|
<?php elseif($sidequeststatus == 'unsolved') : ?>
|
||||||
<h1><?=_('unsolved')?></h1>
|
<h1><?=_('unsolved')?></h1>
|
||||||
<?php else : ?>
|
|
||||||
<h1><?=$sidequesttext['type']?></h1>
|
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
<p><?=\hhu\z\Utils::t($sidequeststatustext)?></p>
|
||||||
|
</section>
|
||||||
|
<?php endif ?>
|
||||||
|
|
||||||
|
<?php if(!is_null($sidequesttext)) : ?>
|
||||||
|
<section>
|
||||||
|
<h1><?=$sidequesttext['type']?></h1>
|
||||||
<p><?=\hhu\z\Utils::t($sidequesttext['text'])?></p>
|
<p><?=\hhu\z\Utils::t($sidequesttext['text'])?></p>
|
||||||
|
|
||||||
<?php if(array_key_exists('out_text', $sidequesttext) && !empty($sidequesttext['out_text'])) : ?>
|
<?php if(array_key_exists('out_text', $sidequesttext) && !empty($sidequesttext['out_text'])) : ?>
|
||||||
|
|
@ -37,6 +44,7 @@
|
||||||
<?php if($sidequesttext['pos'] < $sidequesttext['count'] && empty($sidequesttext['out_text'])) : ?><a href="<?=$linker->link(array($sidequesttext['type_url'],$sidequesttext['pos']+1),6)?>">></a><?php endif ?>
|
<?php if($sidequesttext['pos'] < $sidequesttext['count'] && empty($sidequesttext['out_text'])) : ?><a href="<?=$linker->link(array($sidequesttext['type_url'],$sidequesttext['pos']+1),6)?>">></a><?php endif ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</section>
|
</section>
|
||||||
|
<?php endif ?>
|
||||||
|
|
||||||
<?php if(!is_null($task)) : ?>
|
<?php if(!is_null($task)) : ?>
|
||||||
<section>
|
<section>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue