diff --git a/controllers/QuestsController.inc b/controllers/QuestsController.inc index 1d28bef7..81a5f1b9 100644 --- a/controllers/QuestsController.inc +++ b/controllers/QuestsController.inc @@ -84,6 +84,7 @@ // Set filters $selectedQuestgroup = null; $selectedQuesttype = null; + $selectedTitle = null; $page = 1; if($this->request->getRequestMethod() == 'GET') { @@ -91,6 +92,8 @@ $selectedQuestgroup = !empty($selectedQuestgroup) ? $selectedQuestgroup : null; $selectedQuesttype = $this->request->getGetParam('questtype'); $selectedQuesttype = !empty($selectedQuesttype) ? $selectedQuesttype : null; + $selectedTitle = $this->request->getGetParam('title'); + $selectedTitle = !empty($selectedTitle) ? $selectedTitle : null; $page = $this->request->getGetParam('page'); $page = !empty($page) ? intval($page) : 1; } @@ -98,8 +101,8 @@ // Get Quests $limit = ($all != 'all') ? \nre\configs\AppConfig::$misc['lists_limit'] : null; $offset = ($all != 'all') ? max((intval($page) - 1), 0) * $limit : 0; - $questsCount = $this->Quests->getCountForQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype); - $quests = $this->Quests->getQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype, $limit, $offset); + $questsCount = $this->Quests->getCountForQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype, $selectedTitle); + $quests = $this->Quests->getQuestsForSeminaryByOpenSubmissions($seminary['id'], $selectedQuestgroup, $selectedQuesttype, $selectedTitle, $limit, $offset); foreach($quests as &$quest) { // Get Questtype @@ -121,6 +124,7 @@ $this->set('questtypes', $questtypes); $this->set('selectedQuestgroup', $selectedQuestgroup); $this->set('selectedQuesttype', $selectedQuesttype); + $this->set('selectedTitle', $selectedTitle); $this->set('quests', $quests); $this->set('questsCount', $questsCount); $this->set('all', $all); diff --git a/models/QuestsModel.inc b/models/QuestsModel.inc index ba749db9..759be988 100644 --- a/models/QuestsModel.inc +++ b/models/QuestsModel.inc @@ -376,7 +376,7 @@ * @param int $questtypeId ID of Questtype (optional) * @return int Count of Quests for this Seminary */ - public function getCountForQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null) + public function getCountForQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null, $title=null) { $data = $this->db->query( 'SELECT count(DISTINCT quests.id) AS c '. @@ -384,7 +384,8 @@ 'INNER JOIN quests ON quests.questgroup_id = questgroups.id '. 'WHERE questgroups.seminary_id = ? '. (!empty($questgroupId) ? sprintf('AND questgroups.id = %d ', $questgroupId) : null). - (!empty($questtypeId) ? sprintf('AND quests.questtype_id = %d ', $questtypeId) : null), + (!empty($questtypeId) ? sprintf('AND quests.questtype_id = %d ', $questtypeId) : null). + (!empty($title) ? sprintf('AND quests.title LIKE \'%%%s%%\' ', $title) : null), 'i', $seminaryId ); @@ -408,7 +409,7 @@ * @param int $offset Offset (optional) * @return array Quests for this Seminary */ - public function getQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null, $limit=null, $offset=0) + public function getQuestsForSeminaryByOpenSubmissions($seminaryId, $questgroupId=null, $questtypeId=null, $title=null, $limit=null, $offset=0) { return $this->db->query( 'SELECT DISTINCT quests.id, quests.questgroup_id, quests.questtype_id, quests.title, quests.url, quests.xps, quests.task, quests.wrong_text, quests.questsmedia_id, questgroups.title AS questgroup_title, questgroups.url AS questgroup_url, ('. @@ -425,6 +426,7 @@ 'WHERE questgroups.seminary_id = ? '. (!empty($questgroupId) ? sprintf('AND questgroups.id = %d ', $questgroupId) : null). (!empty($questtypeId) ? sprintf('AND quests.questtype_id = %d ', $questtypeId) : null). + (!empty($title) ? sprintf('AND quests.title LIKE \'%%%s%%\' ', $title) : null). 'ORDER BY opensubmissionscount DESC '. (!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null), 'ii', diff --git a/views/html/quests/index.tpl b/views/html/quests/index.tpl index 7944e295..7def9ec8 100644 --- a/views/html/quests/index.tpl +++ b/views/html/quests/index.tpl @@ -10,7 +10,7 @@
- Filter + + +
@@ -77,8 +79,8 @@ @@ -88,7 +90,7 @@ var linkSubmissions = "link(array('submissions','SEMINARY','QUESTGROUP','QUEST'),1)?>"; var linkQuestgroup = "link(array('questgroups','questgroup','SEMINARY','QUESTGROUP'))?>"; var linkQuest = "link(array('quest','SEMINARY','QUESTGROUP','QUEST'),1)?>"; - var linkPage = "link(null,3,true,array('page'=>'PAGE','questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype))?>"; + var linkPage = "link(null,3,true,array('page'=>'PAGE','questgroup'=>$selectedQuestgroup,'questtype'=>$selectedQuesttype,'title'=>$selectedTitle))?>"; $("#show-more").click(function(event) { if(request) {