This commit is contained in:
coderkun 2014-03-28 21:29:46 +01:00
commit 0666a65f71
12 changed files with 353 additions and 252 deletions

View file

@ -24,7 +24,7 @@
* *
* @var array * @var array
*/ */
public $models = array('seminaries', 'questgroupshierarchy', 'questgroups', 'quests'); public $models = array('seminaries', 'questgroupshierarchy', 'questgroups', 'quests', 'questtexts');
/** /**
* User permissions * User permissions
* *
@ -63,7 +63,7 @@
$questgroup = $this->Questgroups->getQuestgroupByUrl($seminary['id'], $questgroupUrl); $questgroup = $this->Questgroups->getQuestgroupByUrl($seminary['id'], $questgroupUrl);
// Get Questgrouphierarchy // Get Questgrouphierarchy
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyById($questgroup['questgroupshierarchy_id']); $questgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']);
// Get Character // Get Character
$character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); $character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']);
@ -77,21 +77,25 @@
} }
// Get child Questgroupshierarchy // Get child Questgroupshierarchy
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroupshierarchy['id']); $childQuestgroupshierarchy = null;
foreach($childQuestgroupshierarchy as &$hierarchy) if(!empty($questgroup['hierarchy']))
{ {
// Get Questgroups $childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroup['hierarchy']['id']);
$hierarchy['questgroups'] = $this->Questgroups->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']); foreach($childQuestgroupshierarchy as &$hierarchy)
// Get additional data
for($i=0; $i<count($hierarchy['questgroups']); $i++)
{ {
// Get Character XPs // Get Questgroups
$hierarchy['questgroups'][$i]['character_xps'] = $this->Questgroups->getAchievedXPsForQuestgroup($hierarchy['questgroups'][$i]['id'], $character['id']); $hierarchy['questgroups'] = $this->Questgroups->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']);
// Check permission of Questgroups // Get additional data
if($i >= 1) { for($i=0; $i<count($hierarchy['questgroups']); $i++)
$hierarchy['questgroups'][$i]['access'] = $this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']); {
// Get Character XPs
$hierarchy['questgroups'][$i]['character_xps'] = $this->Questgroups->getAchievedXPsForQuestgroup($hierarchy['questgroups'][$i]['id'], $character['id']);
// Check permission of Questgroups
if($i >= 1) {
$hierarchy['questgroups'][$i]['access'] = $this->Questgroups->hasCharacterSolvedQuestgroup($hierarchy['questgroups'][$i-1]['id'], $character['id']);
}
} }
} }
} }
@ -107,7 +111,7 @@
$quests = null; $quests = null;
if(count($childQuestgroupshierarchy) == 0) if(count($childQuestgroupshierarchy) == 0)
{ {
$quests = $this->Quests->getMainquestsForQuestgroup($questgroup['id']); $quests = $this->Quests->getQuestsForQuestgroup($questgroup['id']);
foreach($quests as $i => &$quest) foreach($quests as $i => &$quest)
{ {
// Set status // Set status
@ -118,8 +122,8 @@
$quest['access'] = $this->Quests->hasCharacterSolvedQuest($quests[$i-1]['id'], $character['id']); $quest['access'] = $this->Quests->hasCharacterSolvedQuest($quests[$i-1]['id'], $character['id']);
} }
// Attach sidequests // Attach related Questgroups
$quests[$i]['sidequests'] = $this->Quests->getSidequestsForQuest($quest['id']); $quest['relatedQuestgroups'] = $this->Questgroups->getRelatedQuestsgroupsOfQuest($quest['id']);
} }
} }
@ -127,7 +131,6 @@
// 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('questgroupshierarchy', $questgroupshierarchy);
$this->set('childquestgroupshierarchy', $childQuestgroupshierarchy); $this->set('childquestgroupshierarchy', $childQuestgroupshierarchy);
$this->set('texts', $questgroupTexts); $this->set('texts', $questgroupTexts);
$this->set('quests', $quests); $this->set('quests', $quests);

View file

@ -25,7 +25,7 @@
* *
* @var array * @var array
*/ */
public $models = array('seminaries', 'questgroups', 'questgroupshierarchy'); public $models = array('seminaries', 'questgroups', 'questgroupshierarchy', 'quests', 'questtexts');
@ -46,22 +46,28 @@
// Get Questgroup // Get Questgroup
$questgroup = $this->Questgroups->getQuestgroupByUrl($seminary['id'], $questgroupUrl); $questgroup = $this->Questgroups->getQuestgroupByUrl($seminary['id'], $questgroupUrl);
$questgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']);
// Get parent Questgrouphierarchy // Get parent Questgrouphierarchy
$parentQuestgroupshierarchy = array();
$currentQuestgroup = $questgroup; $currentQuestgroup = $questgroup;
$parentQuestgroupshierarchy = array();
if($showGroup) { if($showGroup) {
$currentQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyById($currentQuestgroup['questgroupshierarchy_id']); array_unshift($parentQuestgroupshierarchy, $currentQuestgroup);
}
if(is_null($questgroup['hierarchy']))
{
$questtext = $this->Questtexts->getRelatedQuesttextForQuestgroup($currentQuestgroup['id']);
$quest = $this->Quests->getQuestById($questtext['quest_id']);
$currentQuestgroup = $this->Questgroups->getQuestgroupById($quest['questgroup_id']);
$currentQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($currentQuestgroup['id']);
$quest['questgroup'] = $currentQuestgroup;
array_unshift($parentQuestgroupshierarchy, $quest);
array_unshift($parentQuestgroupshierarchy, $currentQuestgroup); array_unshift($parentQuestgroupshierarchy, $currentQuestgroup);
} }
while(!is_null($currentQuestgroup['parent_questgroup_id'])) while(!empty($currentQuestgroup['hierarchy']) && !is_null($currentQuestgroup['hierarchy']['parent_questgroup_id']))
{ {
// Get Questgroup $currentQuestgroup = $this->Questgroups->GetQuestgroupById($currentQuestgroup['hierarchy']['parent_questgroup_id']);
$currentQuestgroup = $this->Questgroups->GetQuestgroupById($currentQuestgroup['parent_questgroup_id']); $currentQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($currentQuestgroup['id']);
// Get Questgroupshierarchy
$currentQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyById($currentQuestgroup['questgroupshierarchy_id']);
array_unshift($parentQuestgroupshierarchy, $currentQuestgroup); array_unshift($parentQuestgroupshierarchy, $currentQuestgroup);
} }

View file

@ -88,30 +88,41 @@
else else
{ {
// Previous Quests // Previous Quests
if(count($previousQuests) > 0) // One previous Quest has to be solved and no other
// following Quests of ones has to be tried
$solved = false;
$tried = false;
foreach($previousQuests as &$previousQuest)
{ {
$solved = false; // // Check previous Quest
foreach($previousQuests as &$previousQuest) if($this->Quests->hasCharacterSolvedQuest($previousQuest['id'], $character['id']))
{ {
if($this->Quests->hasCharacterSolvedQuest($previousQuest['id'], $character['id'])) { $solved = true;
$solved = true;
break; // Check following Quests
$followingQuests = $this->Quests->getNextQuests($previousQuest['id']);
foreach($followingQuests as $followingQuest)
{
// Check following Quest
if($followingQuest['id'] != $quest['id'] && $this->Quests->hasCharacterTriedQuest($followingQuest['id'], $character['id']))
{
$tried = true;
break;
}
} }
break;
} }
if(!$solved) { }
throw new \nre\exceptions\AccessDeniedException(); if(!$solved || $tried) {
} throw new \nre\exceptions\AccessDeniedException();
} }
} }
// Get (related) Questtext (for Sidequests) // Get (related) Questtext
$relatedQuesttext = null; $relatedQuesttext = $this->Questtexts->getRelatedQuesttextForQuestgroup($questgroup['id']);
if(!$quest['is_mainquest']) if(!empty($relatedQuesttext)) {
{ $relatedQuesttext['quest'] = $this->Quests->getQuestById($relatedQuesttext['quest_id']);
$relatedQuesttext = $this->Questtexts->getQuesttextForSidequest($quest['id']);
if(!empty($relatedQuesttext)) {
$relatedQuesttext['quest'] = $this->Quests->getQuestById($relatedQuesttext['quest_id']);
}
} }
// Get Questtext // Get Questtext
@ -128,7 +139,7 @@
try { try {
$questtext = $this->Questtexts->getQuesttextByUrl($quest['id'], $questtexttypeUrl, $questtextPos); $questtext = $this->Questtexts->getQuesttextByUrl($quest['id'], $questtexttypeUrl, $questtextPos);
$questtext['count'] = $questtextCount; $questtext['count'] = $questtextCount;
$questtext['sidequests'] = $this->Quests->getSidequestsForQuesttext($questtext['id']); $questtext['relatedQuestsgroups'] = $this->Questgroups->getRelatedQuestsgroupsOfQuesttext($questtext['id']);
} }
catch(\nre\exceptions\IdNotFoundException $e) { catch(\nre\exceptions\IdNotFoundException $e) {
if(!($questtexttypeUrl == 'Prolog' || $questtexttypeUrl == 'Epilog' && $questtextPos == 1)) { if(!($questtexttypeUrl == 'Prolog' || $questtexttypeUrl == 'Epilog' && $questtextPos == 1)) {
@ -181,23 +192,24 @@
$nextQuestgroup = null; $nextQuestgroup = null;
if($questtexttypeUrl == 'Epilog' || $solved) if($questtexttypeUrl == 'Epilog' || $solved)
{ {
if($quest['is_mainquest']) // Next Quest
{ $nextQuests = $this->Quests->getNextQuests($quest['id']);
// Next Quest
$nextQuests = $this->Quests->getNextQuests($quest['id']);
// Next Questgroup // Next Questgroup
if(empty($nextQuests)) if(empty($nextQuests))
{
if(is_null($relatedQuesttext))
{ {
$nextQuestgroup = $this->Questgroups->getNextQuestgroup($questgroup['id']); $nextQuestgroup = $this->Questgroups->getNextQuestgroup($questgroup['id']);
$nextQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyById($nextQuestgroup['questgroupshierarchy_id']); $nextQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($nextQuestgroup['id']);
}
else
{
// Related (Main-) Quest
$nextQuest = $relatedQuesttext['quest'];
$nextQuest['questgroup_url'] = $this->Questgroups->getQuestgroupById($nextQuest['questgroup_id'])['url'];
$nextQuests = array($nextQuest);
} }
}
else {
// Related (Main-) Quest
$nextQuest = $relatedQuesttext['quest'];
$nextQuest['questgroup_url'] = $questgroup['url'];
$nextQuests = array($nextQuest);
} }
} }
@ -237,16 +249,6 @@
// Get Quest // Get Quest
$quest = $this->Quests->getQuestByUrl($seminary['id'], $questgroup['id'], $questUrl); $quest = $this->Quests->getQuestByUrl($seminary['id'], $questgroup['id'], $questUrl);
// Get (related) Questtext (for Sidequests)
$relatedQuesttext = null;
if(!$quest['is_mainquest'])
{
$relatedQuesttext = $this->Questtexts->getQuesttextForSidequest($quest['id']);
if(!empty($relatedQuesttext)) {
$relatedQuesttext['quest'] = $this->Quests->getQuestById($relatedQuesttext['quest_id']);
}
}
// Media // Media
$questmedia = null; $questmedia = null;
if(!is_null($quest['questsmedia_id'])) { if(!is_null($quest['questsmedia_id'])) {
@ -270,7 +272,6 @@
$this->set('seminary', $seminary); $this->set('seminary', $seminary);
$this->set('questgroup', $questgroup); $this->set('questgroup', $questgroup);
$this->set('quest', $quest); $this->set('quest', $quest);
$this->set('relatedquesttext', $relatedQuesttext);
$this->set('media', $questmedia); $this->set('media', $questmedia);
$this->set('unsolvedsubmissions', $unsolvedSubmissions); $this->set('unsolvedsubmissions', $unsolvedSubmissions);
$this->set('solvedsubmissions', $solvedSubmissions); $this->set('solvedsubmissions', $solvedSubmissions);

View file

@ -94,14 +94,13 @@
$character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']); $character = $this->Characters->getCharacterForUserAndSeminary($this->Auth->getUserId(), $seminary['id']);
// Questgrouphierarchy and Questgroups // Questgrouphierarchy and Questgroups
$questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyForSeminary($seminary['id']); $questgroupshierarchy = $this->Questgroupshierarchy->getHierarchyOfSeminary($seminary['id']);
foreach($questgroupshierarchy as &$hierarchy) foreach($questgroupshierarchy as &$hierarchy)
{ {
// Get Questgroups // Get Questgroups
$hierarchy['questgroups'] = $this->Questgroups->getQuestgroupsForHierarchy($hierarchy['id']); $hierarchy['questgroups'] = $this->Questgroups->getQuestgroupsForHierarchy($hierarchy['id']);
// Get additional data // Get additional data
//for($i=0; $i<count($hierarchy['questgroups']); $i++)
foreach($hierarchy['questgroups'] as $i => &$questgroup) foreach($hierarchy['questgroups'] as $i => &$questgroup)
{ {
// Get first Questgroup text // Get first Questgroup text
@ -147,7 +146,6 @@
if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create'))) if($this->request->getRequestMethod() == 'POST' && !is_null($this->request->getPostParam('create')))
{ {
// Create new seminary // Create new seminary
var_dump($this->Auth->getUserId());
$seminaryId = $this->Seminaries->createSeminary( $seminaryId = $this->Seminaries->createSeminary(
$this->request->getPostParam('title'), $this->request->getPostParam('title'),
$this->Auth->getUserId() $this->Auth->getUserId()

View file

@ -24,7 +24,7 @@
* *
* @var array * @var array
*/ */
public $models = array('questgroupshierarchy', 'quests'); public $models = array('questgroupshierarchy', 'quests', 'questtexts');
@ -54,10 +54,11 @@
if(is_null($parentQuestgroupId)) if(is_null($parentQuestgroupId))
{ {
$questgroups = $this->db->query( $questgroups = $this->db->query(
'SELECT id, questgroupshierarchy_id, pos, title, url, questgroupspicture_id '. 'SELECT questgroups.id, questgroups_questgroupshierarchy.questgroupshierarchy_id, questgroups_questgroupshierarchy.pos, questgroups.title, questgroups.url, questgroups.questgroupspicture_id '.
'FROM questgroups '. 'FROM questgroups_questgroupshierarchy '.
'WHERE questgroups.questgroupshierarchy_id = ? AND parent_questgroup_id IS NULL '. 'INNER JOIN questgroups ON questgroups.id = questgroups_questgroupshierarchy.questgroup_id '.
'ORDER BY questgroups.pos ASC', 'WHERE questgroups_questgroupshierarchy.questgroupshierarchy_id = ? AND questgroups_questgroupshierarchy.parent_questgroup_id IS NULL '.
'ORDER BY questgroups_questgroupshierarchy.pos ASC',
'i', 'i',
$hierarchyId $hierarchyId
); );
@ -65,10 +66,11 @@
else else
{ {
$questgroups = $this->db->query( $questgroups = $this->db->query(
'SELECT id, questgroupshierarchy_id, pos, title, url, questgroupspicture_id '. 'SELECT questgroups.id, questgroups_questgroupshierarchy.questgroupshierarchy_id, questgroups_questgroupshierarchy.pos, questgroups.title, questgroups.url, questgroups.questgroupspicture_id '.
'FROM questgroups '. 'FROM questgroups_questgroupshierarchy '.
'WHERE questgroups.questgroupshierarchy_id = ? AND parent_questgroup_id = ? '. 'INNER JOIN questgroups ON questgroups.id = questgroups_questgroupshierarchy.questgroup_id '.
'ORDER BY questgroups.pos ASC', 'WHERE questgroups_questgroupshierarchy.questgroupshierarchy_id = ? AND questgroups_questgroupshierarchy.parent_questgroup_id = ? '.
'ORDER BY questgroups_questgroupshierarchy.pos ASC',
'ii', 'ii',
$hierarchyId, $parentQuestgroupId $hierarchyId, $parentQuestgroupId
); );
@ -97,7 +99,7 @@
public function getQuestgroupById($questgroupId) public function getQuestgroupById($questgroupId)
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT id, questgroupshierarchy_id, parent_questgroup_id, pos, title, url, questgroupspicture_id '. 'SELECT id, title, url, questgroupspicture_id '.
'FROM questgroups '. 'FROM questgroups '.
'WHERE questgroups.id = ?', 'WHERE questgroups.id = ?',
'i', 'i',
@ -123,10 +125,9 @@
public function getQuestgroupByUrl($seminaryId, $questgroupUrl) public function getQuestgroupByUrl($seminaryId, $questgroupUrl)
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT questgroups.id, questgroups.questgroupshierarchy_id, questgroups.parent_questgroup_id, questgroups.pos, questgroups.title, questgroups.url, questgroups.questgroupspicture_id '. 'SELECT id, title, url, questgroupspicture_id '.
'FROM questgroups '. 'FROM questgroups '.
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '. 'WHERE seminary_id = ? AND url = ?',
'WHERE questgroupshierarchy.seminary_id = ? AND questgroups.url = ?',
'is', 'is',
$seminaryId, $questgroupUrl $seminaryId, $questgroupUrl
); );
@ -197,11 +198,14 @@
public function getNextQuestgroup($questgroupId) public function getNextQuestgroup($questgroupId)
{ {
$currentQuestgroup = $this->getQuestgroupById($questgroupId); $currentQuestgroup = $this->getQuestgroupById($questgroupId);
$nextQuestgroup = $this->_getNextQuestgroup($currentQuestgroup['parent_questgroup_id'], $currentQuestgroup['pos']); $currentQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($currentQuestgroup['id']);
while(is_null($nextQuestgroup) && !is_null($currentQuestgroup['parent_questgroup_id'])) if(empty($currentQuestgroup['hierarchy'])) {
{ return null;
$currentQuestgroup = $this->getQuestgroupById($currentQuestgroup['parent_questgroup_id']); }
$nextQuestgroup = $this->_getNextQuestgroup($currentQuestgroup['parent_questgroup_id'], $currentQuestgroup['pos']);
$nextQuestgroup = $this->_getNextQuestgroup($currentQuestgroup['hierarchy']['parent_questgroup_id'], $currentQuestgroup['hierarchy']['questgroup_pos']);
if(is_null($nextQuestgroup) && !is_null($currentQuestgroup['hierarchy']['parent_questgroup_id'])) {
$nextQuestgroup = $this->getNextQuestgroup($currentQuestgroup['hierarchy']['parent_questgroup_id']);
} }
@ -223,11 +227,14 @@
public function getPreviousQuestgroup($questgroupId) public function getPreviousQuestgroup($questgroupId)
{ {
$currentQuestgroup = $this->getQuestgroupById($questgroupId); $currentQuestgroup = $this->getQuestgroupById($questgroupId);
$previousQuestgroup = $this->_getPreviousQuestgroup($currentQuestgroup['parent_questgroup_id'], $currentQuestgroup['pos']); $currentQuestgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($currentQuestgroup['id']);
while(is_null($previousQuestgroup) && !is_null($currentQuestgroup['parent_questgroup_id'])) if(empty($currentQuestgroup['hierarchy'])) {
{ return null;
$currentQuestgroup = $this->getQuestgroupById($currentQuestgroup['parent_questgroup_id']); }
$previousQuestgroup = $this->_getPreviousQuestgroup($currentQuestgroup['parent_questgroup_id'], $currentQuestgroup['pos']);
$previousQuestgroup = $this->_getPreviousQuestgroup($currentQuestgroup['hierarchy']['parent_questgroup_id'], $currentQuestgroup['hierarchy']['questgroup_pos']);
if(is_null($previousQuestgroup) && !is_null($currentQuestgroup['hierarchy']['parent_questgroup_id'])) {
$previousQuestgroup = $this->getPreviousQuestgroup($currentQuestgroup['hierarchy']['parent_questgroup_id']);
} }
@ -245,22 +252,74 @@
*/ */
public function hasCharacterSolvedQuestgroup($questgroupId, $characterId) public function hasCharacterSolvedQuestgroup($questgroupId, $characterId)
{ {
$currentQuestgroup = $this->getQuestgroupById($questgroupId); // Get data of Questgroup
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($currentQuestgroup['questgroupshierarchy_id']); $questgroup = $this->getQuestgroupById($questgroupId);
$lastChildQuestgroupshierarchy = array_pop($childQuestgroupshierarchy);
while(!is_null($lastChildQuestgroupshierarchy)) // Chack all Quests
{ $quests = $this->Quests->getQuestsForQuestgroup($questgroup['id']);
$questgroups = $this->getQuestgroupsForHierarchy($lastChildQuestgroupshierarchy['id'], $currentQuestgroup['id']); foreach($quests as &$quest) {
$currentQuestgroup = array_pop($questgroups); if(!$this->Quests->hasCharacterSolvedQuest($quest['id'], $characterId)) {
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($currentQuestgroup['questgroupshierarchy_id']); return false;
$lastChildQuestgroupshierarchy = array_pop($childQuestgroupshierarchy); }
} }
$quests = $this->Quests->getMainquestsForQuestgroup($currentQuestgroup['id']); // Check all child Questgroups
$lastQuest = array_pop($quests); $questgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']);
if(!empty($questgroup['hierarchy']))
{
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroup['hierarchy']['id']);
foreach($childQuestgroupshierarchy as &$hierarchy)
{
// Get Questgroups
$questgroups = $this->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']);
foreach($questgroups as &$group) {
if(!$this->hasCharacterSolvedQuestgroup($group['id'], $characterId)) {
return false;
}
}
}
}
return $this->Quests->hasCharacterSolvedQuest($lastQuest['id'], $characterId); return true;
}
/**
* Get all related Questgroups of a Questtext.
*
* @param int $questtextId ID of the questtext
* @return array Sidequests for the questtext
*/
public function getRelatedQuestsgroupsOfQuesttext($questtextId)
{
return $this->db->query(
'SELECT questgroups.id, questgroups_questtexts.questtext_id, questgroups.title, questgroups.url, questgroups_questtexts.entry_text '.
'FROM questgroups_questtexts '.
'INNER JOIN questgroups ON questgroups.id = questgroups_questtexts.questgroup_id '.
'WHERE questgroups_questtexts.questtext_id = ?',
'i',
$questtextId
);
}
/**
* Get all related Questgroups of a Quest.
*
* @param int $questId ID of the quest
* @return array Sidequests for the quest
*/
public function getRelatedQuestsgroupsOfQuest($questId)
{
$questgroups = array();
$questtexts = $this->Questtexts->getQuesttextsOfQuest($questId);
foreach($questtexts as &$questtext) {
$questgroups = array_merge($questgroups, $this->getRelatedQuestsgroupsOfQuesttext($questtext['id']));
}
return $questgroups;
} }
@ -278,20 +337,32 @@
// Current Questgroup // Current Questgroup
$questgroup = $this->getQuestgroupById($questgroupId); $questgroup = $this->getQuestgroupById($questgroupId);
$questgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']);
// Quests of current Questgroup // Quests of current Questgroup
$quests = $this->Quests->getMainquestsForQuestgroup($questgroup['id']); $quests = $this->Quests->getQuestsForQuestgroup($questgroup['id']);
foreach($quests as &$quest) { foreach($quests as &$quest)
{
$xps += $quest['xps']; $xps += $quest['xps'];
// Related Questgroups
$relatedQuestgroups = $this->getRelatedQuestsgroupsOfQuest($quest['id']);
foreach($relatedQuestgroups as $group) {
$xps += $this->getAchievableXPsForQuestgroup($group['id']);
}
} }
// XPs of child Questgroups // XPs of child Questgroups
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroup['questgroupshierarchy_id']); $questgroupHierarchy = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']);
foreach($childQuestgroupshierarchy as &$hierarchy) if(!empty($questgroupHierarchy))
{ {
$questgroups = $this->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']); $childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroupHierarchy['id']);
foreach($questgroups as &$questgroup) { foreach($childQuestgroupshierarchy as &$hierarchy)
$xps += $this->getAchievableXPsForQuestgroup($questgroup['id']); {
$questgroups = $this->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']);
foreach($questgroups as &$questgroup) {
$xps += $this->getAchievableXPsForQuestgroup($questgroup['id']);
}
} }
} }
@ -318,16 +389,26 @@
$questgroup = $this->getQuestgroupById($questgroupId); $questgroup = $this->getQuestgroupById($questgroupId);
// Quests of current Questgroup // Quests of current Questgroup
$quests = $this->Quests->getMainquestsForQuestgroup($questgroup['id']); $quests = $this->Quests->getQuestsForQuestgroup($questgroup['id']);
foreach($quests as &$quest) foreach($quests as &$quest)
{ {
if($this->Quests->hasCharacterSolvedQuest($quest['id'], $characterId)) { if($this->Quests->hasCharacterSolvedQuest($quest['id'], $characterId)) {
$xps += $quest['xps']; $xps += $quest['xps'];
} }
// Related Questgroups
$relatedQuestgroups = $this->getRelatedQuestsgroupsOfQuest($quest['id']);
foreach($relatedQuestgroups as $group) {
$xps += $this->getAchievedXPsForQuestgroup($group['id'], $characterId);
}
} }
// XPs of child Questgroups // XPs of child Questgroups
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroup['questgroupshierarchy_id']); $questgroupHierarchy = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']);
if(empty($questgroupHierarchy)) {
return $xps;
}
$childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroupHierarchy['id']);
foreach($childQuestgroupshierarchy as &$hierarchy) foreach($childQuestgroupshierarchy as &$hierarchy)
{ {
$questgroups = $this->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']); $questgroups = $this->getQuestgroupsForHierarchy($hierarchy['id'], $questgroup['id']);
@ -357,7 +438,8 @@
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT * '. 'SELECT * '.
'FROM questgroups '. 'FROM questgroups_questgroupshierarchy '.
'INNER JOIN questgroups ON questgroups.id = questgroups_questgroupshierarchy.questgroup_id '.
'WHERE parent_questgroup_id = ? AND pos = ? + 1', 'WHERE parent_questgroup_id = ? AND pos = ? + 1',
'ii', 'ii',
$parentQuestgroupId, $questgroupPos $parentQuestgroupId, $questgroupPos
@ -367,7 +449,8 @@
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT * '. 'SELECT * '.
'FROM questgroups '. 'FROM questgroups_questgroupshierarchy '.
'INNER JOIN questgroups ON questgroups.id = questgroups_questgroupshierarchy.questgroup_id '.
'WHERE parent_questgroup_id IS NULL AND pos = ? + 1', 'WHERE parent_questgroup_id IS NULL AND pos = ? + 1',
'i', 'i',
$questgroupPos $questgroupPos
@ -395,7 +478,8 @@
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT * '. 'SELECT * '.
'FROM questgroups '. 'FROM questgroups_questgroupshierarchy '.
'INNER JOIN questgroups ON questgroups.id = questgroups_questgroupshierarchy.questgroup_id '.
'WHERE parent_questgroup_id = ? AND pos = ? - 1', 'WHERE parent_questgroup_id = ? AND pos = ? - 1',
'ii', 'ii',
$parentQuestgroupId, $questgroupPos $parentQuestgroupId, $questgroupPos
@ -405,7 +489,8 @@
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT * '. 'SELECT * '.
'FROM questgroups '. 'FROM questgroups_questgroupshierarchy '.
'INNER JOIN questgroups ON questgroups.id = questgroups_questgroupshierarchy.questgroup_id '.
'WHERE parent_questgroup_id IS NULL AND pos = ? - 1', 'WHERE parent_questgroup_id IS NULL AND pos = ? - 1',
'i', 'i',
$questgroupPos $questgroupPos

View file

@ -65,7 +65,7 @@
* @param int $seminaryId ID of the seminary to get hierarchy for * @param int $seminaryId ID of the seminary to get hierarchy for
* @return array Toplevel hierarchy * @return array Toplevel hierarchy
*/ */
public function getHierarchyForSeminary($seminaryId) public function getHierarchyOfSeminary($seminaryId)
{ {
return $this->db->query( return $this->db->query(
'SELECT id, seminary_id, parent_questgroupshierarchy_id, pos, title_singular, title_plural, url '. 'SELECT id, seminary_id, parent_questgroupshierarchy_id, pos, title_singular, title_plural, url '.
@ -80,6 +80,31 @@
} }
/**
* Get the Questgroup-Hierarchy for a Questgroup.
*
* @param int $questgroupId ID of Questgroup
* @return array Hierarchy for Questgroup
*/
public function getHierarchyForQuestgroup($questgroupId)
{
$data = $this->db->query(
'SELECT questgroups_questgroupshierarchy.parent_questgroup_id, questgroups_questgroupshierarchy.pos AS questgroup_pos, questgroupshierarchy.id, questgroupshierarchy.seminary_id, questgroupshierarchy.parent_questgroupshierarchy_id, questgroupshierarchy.pos, questgroupshierarchy.title_singular, questgroupshierarchy.title_plural, questgroupshierarchy.url '.
'FROM questgroups_questgroupshierarchy '.
'INNER JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups_questgroupshierarchy.questgroupshierarchy_id '.
'WHERE questgroups_questgroupshierarchy.questgroup_id = ?',
'i',
$questgroupId
);
if(!empty($data)) {
return $data[0];
}
return null;
}
/** /**
* Get the child hierarchy entries of a Questgroup hierarchy. * Get the child hierarchy entries of a Questgroup hierarchy.
* *

View file

@ -40,16 +40,36 @@
* @param int $questgroupId ID of a Questgroup * @param int $questgroupId ID of a Questgroup
* @return array Quests of the given Questgroup * @return array Quests of the given Questgroup
*/ */
public function getMainquestsForQuestgroup($questgroupId) public function getQuestsForQuestgroup($questgroupId)
{ {
return $this->db->query( $quests = array();
// Get first Quest
$quest = $this->db->query(
'SELECT id, questtype_id, title, url, xps, task '. 'SELECT id, questtype_id, title, url, xps, task '.
'FROM quests '. 'FROM quests '.
'INNER JOIN mainquests ON mainquests.quest_id = quests.id '. 'LEFT JOIN quests_previousquests ON quests_previousquests.quest_id = quests.id '.
'WHERE questgroup_id = ?', 'WHERE questgroup_id = ? AND quests_previousquests.previous_quest_id IS NULL',
'i', 'i',
$questgroupId $questgroupId
); );
if(empty($quest)) {
return $quests;
}
$quest = $quest[0];
array_push($quests, $quest);
// Get next Quests
// TODO Multiple next Quests
while(($nextQuests = $this->getNextQuests($quest['id'])) != null)
{
$quest = $nextQuests[0];
array_push($quests, $quest);
}
// Return Quests
return $quests;
} }
@ -65,12 +85,10 @@
public function getQuestByUrl($seminaryId, $questgroupId, $questUrl) public function getQuestByUrl($seminaryId, $questgroupId, $questUrl)
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT quests.id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id, ('. 'SELECT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id '.
'SELECT count(mainquests.quest_id) FROM mainquests WHERE mainquests.quest_id = quests.id) AS is_mainquest '.
'FROM quests '. 'FROM quests '.
'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '. 'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '.
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '. 'WHERE questgroups.seminary_id = ? AND questgroups.id = ? AND quests.url = ?',
'WHERE questgroupshierarchy.seminary_id = ? AND questgroups.id = ? AND quests.url = ?',
'iis', 'iis',
$seminaryId, $questgroupId, $questUrl $seminaryId, $questgroupId, $questUrl
); );
@ -78,8 +96,6 @@
throw new \nre\exceptions\IdNotFoundException($questUrl); throw new \nre\exceptions\IdNotFoundException($questUrl);
} }
$data[0]['is_mainquest'] = ($data[0]['is_mainquest'] == 1);
return $data[0]; return $data[0];
} }
@ -95,11 +111,9 @@
public function getQuestById($questId) public function getQuestById($questId)
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT quests.id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id, ('. 'SELECT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id '.
'SELECT count(mainquests.quest_id) FROM mainquests WHERE mainquests.quest_id = quests.id) AS is_mainquest '.
'FROM quests '. 'FROM quests '.
'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '. 'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '.
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '.
'WHERE quests.id = ?', 'WHERE quests.id = ?',
'i', 'i',
$questId $questId
@ -108,89 +122,11 @@
throw new \nre\exceptions\IdNotFoundException($questId); throw new \nre\exceptions\IdNotFoundException($questId);
} }
$data[0]['is_mainquest'] = ($data[0]['is_mainquest'] == 1);
return $data[0]; return $data[0];
} }
/**
* Get a Sidequest and its data by its URL.
*
* @throws IdNotFoundException
* @param int $seminaryId ID of the corresponding Seminary
* @param int $questgroupId ID of the corresponding Questgroup
* @param int $questId ID of the Quest
* @param string $sidequestUrl URL-title of a Sidequest
* @return array Sidequest data
*/
public function getSidequestByUrl($seminaryId, $questgroupId, $questId, $sidequestUrl)
{
$data = $this->db->query(
'SELECT quests.id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.right_text, quests.wrong_text, quests.questsmedia_id '.
'FROM quests '.
'INNER JOIN sidequests ON sidequests.quest_id = quests.id '.
'LEFT JOIN questtexts ON questtexts.id = sidequests.questtext_id '.
'LEFT JOIN mainquests ON mainquests.quest_id = questtexts.mainquest_id '.
'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '.
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '.
'LEFT JOIN seminaries ON seminaries.id = questgroupshierarchy.seminary_id '.
'WHERE quests.url = ? AND mainquests.id = ? AND questgroups.id = ? AND seminaries.id = ?',
'siii',
$sidequestUrl,
$questId,
$questgroupId,
$seminaryId
);
if(empty($data)) {
throw new \nre\exceptions\IdNotFoundException($sidequestUrl);
}
return $data[0];
}
/**
* Get all sidequests for a Quest.
*
* @param int $questId ID of the quest
* @return array Sidequests for the quest
*/
public function getSidequestsForQuest($questId)
{
return $this->db->query(
'SELECT quests.id, sidequests.questtext_id, quests.title, quests.url, sidequests.entry_text '.
'FROM quests '.
'INNER JOIN sidequests ON sidequests.quest_id = quests.id '.
'LEFT JOIN questtexts ON questtexts.id = sidequests.questtext_id '.
'WHERE questtexts.quest_id = ?',
'i',
$questId
);
}
/**
* Get all sidequests for a Questtext.
*
* @param int $questtextId ID of the questtext
* @return array Sidequests for the questtext
*/
public function getSidequestsForQuesttext($questtextId)
{
return $this->db->query(
'SELECT id, questtext_id, title, url, entry_text '.
'FROM quests '.
'INNER JOIN sidequests ON sidequests.quest_id = quests.id '.
'WHERE questtext_id = ?',
'i',
$questtextId
);
}
/** /**
* Get Quests that follow-up a Quest. * Get Quests that follow-up a Quest.
* *
@ -200,13 +136,11 @@
public function getNextQuests($questId) public function getNextQuests($questId)
{ {
return $this->db->query( return $this->db->query(
'SELECT quests.id, quests.title, quests.url, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url '. 'SELECT quests.id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url '.
'FROM mainquests_previousmainquests '. 'FROM quests_previousquests '.
'LEFT JOIN mainquests ON mainquests.quest_id = mainquests_previousmainquests.mainquest_id '. 'INNER JOIN quests ON quests.id = quests_previousquests.quest_id '.
'INNER JOIN quests ON quests.id = mainquests.quest_id '. 'INNER JOIN questgroups ON questgroups.id = quests.questgroup_id '.
'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '. 'WHERE quests_previousquests.previous_quest_id = ?',
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '.
'WHERE mainquests_previousmainquests.previous_mainquest_id = ?',
'i', 'i',
$questId $questId
); );
@ -223,12 +157,10 @@
{ {
return $this->db->query( return $this->db->query(
'SELECT quests.id, quests.title, quests.url, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url '. 'SELECT quests.id, quests.title, quests.url, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url '.
'FROM mainquests_previousmainquests '. 'FROM quests_previousquests '.
'LEFT JOIN mainquests ON mainquests.quest_id = mainquests_previousmainquests.previous_mainquest_id '. 'INNER JOIN quests ON quests.id = quests_previousquests.previous_quest_id '.
'INNER JOIN quests ON quests.id = mainquests.quest_id '. 'INNER JOIN questgroups ON questgroups.id = quests.questgroup_id '.
'LEFT JOIN questgroups ON questgroups.id = quests.questgroup_id '. 'WHERE quests_previousquests.quest_id = ?',
'LEFT JOIN questgroupshierarchy ON questgroupshierarchy.id = questgroups.questgroupshierarchy_id '.
'WHERE mainquests_previousmainquests.mainquest_id = ?',
'i', 'i',
$questId $questId
); );
@ -277,6 +209,29 @@
} }
/**
* Determine if the given Character has tried to solve a Quest.
*
* @param int $questId ID of Quest to check
* @param int $characterId ID of Character to check
* @result boolean Whether Character has tried to solved the Quest or not
*/
public function hasCharacterTriedQuest($questId, $characterId)
{
$count = $this->db->query(
'SELECT count(id) AS c '.
'FROM quests_characters '.
'WHERE quest_id = ? AND character_id = ? AND status IN (-1,0)',
'ii',
$questId,
$characterId
);
return (!empty($count) && intval($count[0]['c']) > 0);
}
/** /**
* Determine if the given Character has solved the given Quest. * Determine if the given Character has solved the given Quest.
* *

View file

@ -62,6 +62,25 @@
} }
/**
* Get all Questtexts for a Quest.
*
* @param int $questId ID of the Quest
* @return array All Questtexts for a Quest
*/
public function getQuesttextsOfQuest($questId)
{
return $this->db->query(
'SELECT questtexts.id, questtexts.text, questtexts.pos, questtexts.out_text, questtexts.abort_text, questtexts.questsmedia_id, questtexttypes.id AS type_id, questtexttypes.type, questtexttypes.url AS type_url '.
'FROM questtexts '.
'LEFT JOIN questtexttypes ON questtexttypes.id = questtexts.questtexttype_id '.
'WHERE questtexts.quest_id = ?',
'i',
$questId
);
}
/** /**
* Get count of Questtexts for a Quest. * Get count of Questtexts for a Quest.
* *
@ -96,24 +115,23 @@
* @param int $sidequestId ID of the Sidequest to get the Questtext for * @param int $sidequestId ID of the Sidequest to get the Questtext for
* @param array Questtext data * @param array Questtext data
*/ */
public function getQuesttextForSidequest($sidequestId) public function getRelatedQuesttextForQuestgroup($questgroupId)
{ {
$data = $this->db->query( $data = $this->db->query(
'SELECT questtexts.id, questtexts.text, questtexts.pos, questtexts.quest_id, questtexttypes.id AS type_id, questtexttypes.type, questtexttypes.url AS type_url '. 'SELECT questtexts.id, questtexts.text, questtexts.pos, questtexts.quest_id, questtexttypes.id AS type_id, questtexttypes.type, questtexttypes.url AS type_url '.
'FROM quests '. 'FROM questgroups_questtexts '.
'INNER JOIN sidequests ON sidequests.quest_id = quests.id '. 'LEFT JOIN questtexts ON questtexts.id = questgroups_questtexts.questtext_id '.
'LEFT JOIN questtexts ON questtexts.id = sidequests.questtext_id '.
'LEFT JOIN questtexttypes ON questtexttypes.id = questtexts.questtexttype_id '. 'LEFT JOIN questtexttypes ON questtexttypes.id = questtexts.questtexttype_id '.
'WHERE quests.id = ?', 'WHERE questgroups_questtexts.questgroup_id = ?',
'i', 'i',
$sidequestId $questgroupId
); );
if(empty($data)) { if(!empty($data)) {
throw new \nre\exceptions\IdNotFoundException($sidequestId); return $data[0];
} }
return $data[0]; return null;
} }

View file

@ -7,11 +7,16 @@
<?=$questgroupshierarchypath?> <?=$questgroupshierarchypath?>
<h3><?=$questgroupshierarchy['title_singular']?> <?=$questgroup['pos']?>: <?=$questgroup['title']?></h3> <?php if(!is_null($questgroup['hierarchy'])) : ?>
<h3><?=$questgroup['hierarchy']['title_singular']?> <?=$questgroup['hierarchy']['questgroup_pos']?>: <?=$questgroup['title']?></h3>
<?php else : ?>
<h3><?=$questgroup['title']?></h3>
<?php endif ?>
<?php foreach($texts as &$text) : ?> <?php foreach($texts as &$text) : ?>
<p><?=\hhu\z\Utils::t($text['text'])?></p> <p><?=\hhu\z\Utils::t($text['text'])?></p>
<?php endforeach ?> <?php endforeach ?>
<?php if(!is_null($childquestgroupshierarchy)) : ?>
<?php foreach($childquestgroupshierarchy as &$hierarchy) : ?> <?php foreach($childquestgroupshierarchy as &$hierarchy) : ?>
<?php if(count($hierarchy['questgroups']) > 0) : ?> <?php if(count($hierarchy['questgroups']) > 0) : ?>
<h3><?=$hierarchy['title_plural']?></h3> <h3><?=$hierarchy['title_plural']?></h3>
@ -37,6 +42,7 @@
</ul> </ul>
<?php endif ?> <?php endif ?>
<?php endforeach ?> <?php endforeach ?>
<?php endif ?>
<?php if(isset($quests) && !is_null($quests)) : ?> <?php if(isset($quests) && !is_null($quests)) : ?>
<h3><?=_('Quests')?></h3> <h3><?=_('Quests')?></h3>
@ -45,11 +51,11 @@
<li class="qgtitle"> <li class="qgtitle">
<?php if(!array_key_exists('access', $quest) || $quest['access']) : ?> <?php if(!array_key_exists('access', $quest) || $quest['access']) : ?>
<a href="<?=$linker->link(array('quests','quest',$seminary['url'],$questgroup['url'],$quest['url']))?>" <?php if($quest['solved']) : ?>class="solved"<?php endif ?>><i class="fa <?=($quest['solved']) ? 'fa-check-square-o' : 'fa-share-square-o'?> fa-fw"></i><?=$quest['title']?></a> <a href="<?=$linker->link(array('quests','quest',$seminary['url'],$questgroup['url'],$quest['url']))?>" <?php if($quest['solved']) : ?>class="solved"<?php endif ?>><i class="fa <?=($quest['solved']) ? 'fa-check-square-o' : 'fa-share-square-o'?> fa-fw"></i><?=$quest['title']?></a>
<?php if(count($quest['sidequests']) > 0) : ?> <?php if(count($quest['relatedQuestgroups']) > 0) : ?>
<ul class="gplist"> <ul class="gplist">
<?php foreach($quest['sidequests'] as &$sidequest) : ?> <?php foreach($quest['relatedQuestgroups'] as &$relatedQuestgroup) : ?>
<li class="qgtitle"> <li class="qgtitle">
<a href="<?=$linker->link(array('quests','quest',$seminary['url'],$questgroup['url'],$sidequest['url']))?>" class="bonus"><i class="fa fa-share-square-o fa-fw"><?=$sidequest['title']?></i></a> <a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$relatedQuestgroup['url']))?>" class="bonus"><i class="fa fa-share-square-o fa-fw"><?=$relatedQuestgroup['title']?></i></a>
</li> </li>
<?php endforeach ?> <?php endforeach ?>
</ul> </ul>

View file

@ -1,7 +1,21 @@
<?php if(count($parentquestgroupshierarchy) > 0) : ?> <?php if(count($parentquestgroupshierarchy) > 0) : ?>
<ul class="breadcrumbs"> <ul class="breadcrumbs">
<?php foreach($parentquestgroupshierarchy as &$hierarchy) : ?> <?php foreach($parentquestgroupshierarchy as &$hierarchy) : ?>
<li><i class="fa fa-chevron-right fa-fw"></i><a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$hierarchy['url']))?>"><?=$hierarchy['hierarchy']['title_singular']?> <?=$hierarchy['pos']?>: <?=$hierarchy['title']?></a></li> <li>
<i class="fa fa-chevron-right fa-fw"></i>
<?php if(array_key_exists('hierarchy', $hierarchy)) : ?>
<a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$hierarchy['url']))?>">
<?php if(!is_null($hierarchy['hierarchy'])) : ?>
<?=$hierarchy['hierarchy']['title_singular']?> <?=$hierarchy['hierarchy']['questgroup_pos']?>:
<?php endif ?>
<?=$hierarchy['title']?>
</a>
<?php else : ?>
<a href="<?=$linker->link(array('quests','quest',$seminary['url'],$hierarchy['questgroup']['url'],$hierarchy['url']))?>">
<?=$hierarchy['title']?>
</a>
<?php endif ?>
</li>
<?php endforeach ?> <?php endforeach ?>
</ul> </ul>
<?php endif ?> <?php endif ?>

View file

@ -3,12 +3,7 @@
<?=$questgroupshierarchypath?> <?=$questgroupshierarchypath?>
<?=$questgroupspicture?> <?=$questgroupspicture?>
<?php if(is_null($relatedquesttext)) : ?>
<h3><?=$quest['title']?></h3> <h3><?=$quest['title']?></h3>
<?php else : ?>
<h3><a href="<?=$linker->link(array('quest',$seminary['url'],$questgroup['url'],$relatedquesttext['quest']['url'],$relatedquesttext['type_url'],$relatedquesttext['pos']),1)?>"><?=$relatedquesttext['quest']['title']?></a></h3>
<h4><?=$quest['title']?></h4>
<?php endif ?>
<?php if(!is_null($queststatustext)) : ?> <?php if(!is_null($queststatustext)) : ?>
<section> <section>
@ -29,8 +24,8 @@
</div> </div>
<ul> <ul>
<?php foreach($questtext['sidequests'] as &$sidequest) : ?> <?php foreach($questtext['relatedQuestsgroups'] as &$relatedQuestgroup) : ?>
<li><a href="<?=$linker->link(array('quest',$seminary['url'],$questgroup['url'],$sidequest['url']),1)?>"><?=$sidequest['entry_text']?></a></li> <li><a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$relatedQuestgroup['url']))?>"><?=$relatedQuestgroup['entry_text']?></a></li>
<?php endforeach ?> <?php endforeach ?>
<?php if(!empty($questtext['abort_text'])) : ?> <?php if(!empty($questtext['abort_text'])) : ?>
<li><a href="<?=$linker->link(array('quest',$seminary['url'],$questgroup['url'],$relatedquesttext['quest']['url'],$relatedquesttext['type_url'],$relatedquesttext['pos']),1)?>"><?=$questtext['abort_text']?></a></li> <li><a href="<?=$linker->link(array('quest',$seminary['url'],$questgroup['url'],$relatedquesttext['quest']['url'],$relatedquesttext['type_url'],$relatedquesttext['pos']),1)?>"><?=$questtext['abort_text']?></a></li>
@ -71,7 +66,7 @@
<?php endforeach ?> <?php endforeach ?>
</ul> </ul>
<?php elseif(!is_null($nextquestgroup)) : ?> <?php elseif(!is_null($nextquestgroup)) : ?>
<a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$nextquestgroup['url']))?>"><?=$nextquestgroup['hierarchy']['title_singular']?> <?=$nextquestgroup['pos']?>: <?=$nextquestgroup['title']?></a> <a href="<?=$linker->link(array('questgroups','questgroup',$seminary['url'],$nextquestgroup['url']))?>"><?=$nextquestgroup['hierarchy']['title_singular']?> <?=$nextquestgroup['hierarchy']['pos']?>: <?=$nextquestgroup['title']?></a>
<?php else : ?> <?php else : ?>
Spiel vorbei Spiel vorbei
<?php endif ?> <?php endif ?>

View file

@ -3,12 +3,7 @@
<?=$questgroupshierarchypath?> <?=$questgroupshierarchypath?>
<?=$questgroupspicture?> <?=$questgroupspicture?>
<?php if(is_null($relatedquesttext)) : ?>
<h3><?=$quest['title']?></h3> <h3><?=$quest['title']?></h3>
<?php else : ?>
<h3><a href="<?=$linker->link(array('quest',$seminary['url'],$questgroup['url'],$relatedquesttext['quest']['url'],$relatedquesttext['type_url'],$relatedquesttext['pos']),1)?>"><?=$relatedquesttext['quest']['title']?></a></h3>
<h4><?=$quest['title']?></h4>
<?php endif ?>
<?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']))?>" />