From f6a21496964d282087cd415ad79c35241265a423 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sat, 24 May 2014 21:59:07 +0200 Subject: [PATCH] correctly check if a Character has solved a Questgroup by checking last child Questgroup if Questgroup has so Quests itself --- models/QuestgroupsModel.inc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/models/QuestgroupsModel.inc b/models/QuestgroupsModel.inc index 498fe9d9..36d741db 100644 --- a/models/QuestgroupsModel.inc +++ b/models/QuestgroupsModel.inc @@ -328,10 +328,26 @@ { // Get data of Questgroup $questgroup = $this->getQuestgroupById($questgroupId); + $questgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']); - // Check last Quest(s) + // Check last Quest(s) of this Questgroup $solvedLastQuest = false; $lastQuests = $this->Quests->getLastQuestsOfQuestgroup($questgroup['id']); + // Check last Quest(s) of last child Questgroup + if(empty($lastQuests) && !empty($questgroup['hierarchy'])) + { + $childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroup['hierarchy']['id']); + if(!empty($childQuestgroupshierarchy)) + { + $childQuestgroupshierarchy = array_pop($childQuestgroupshierarchy); + $childQuestgroups = $this->getQuestgroupsForHierarchy($childQuestgroupshierarchy['id'], $questgroupId); + if(!empty($childQuestgroups)) + { + $childQuestgroup = array_pop($childQuestgroups); + $lastQuests = $this->Quests->getLastQuestsOfQuestgroup($childQuestgroup['id']); + } + } + } foreach($lastQuests as &$lastQuest) { if($this->Quests->hasCharacterSolvedQuest($lastQuest['id'], $characterId)) @@ -345,7 +361,6 @@ } // Check all child Questgroups - $questgroup['hierarchy'] = $this->Questgroupshierarchy->getHierarchyForQuestgroup($questgroup['id']); if(!empty($questgroup['hierarchy'])) { $childQuestgroupshierarchy = $this->Questgroupshierarchy->getChildQuestgroupshierarchy($questgroup['hierarchy']['id']);