/** * Process answer */ function processAnswer() { global $ilUser, $ilDB, $lng, $ilPluginAdmin, $ilLog; parent::processAnswer(); // // Send notifications to authors that want to be informed on blocked users // $parent_id = ilPageObject::lookupParentId((int) $_GET["page_id"], "lm"); // is restriction mode set? include_once "./Modules/LearningModule/classes/class.ilObjContentObject.php"; if (ilObjContentObject::_lookupRestrictForwardNavigation($parent_id)) { // check if user is blocked $id = ilUtil::stripSlashes($_POST["id"]); include_once "./Services/COPage/classes/class.ilPageQuestionProcessor.php"; $as = ilPageQuestionProcessor::getAnswerStatus($id, $ilUser->getId()); // get question information include_once "./Modules/TestQuestionPool/classes/class.ilAssQuestionList.php"; $qlist = new ilAssQuestionList($ilDB, $lng, $ilPluginAdmin); $qlist->setParentObjId(0); $qlist->addFieldFilter("question_id", array($id)); $qlist->load(); $qdata = $qlist->getQuestionDataArray(); // has the user been blocked? if ($as["try"] >= $qdata[$as["qst_id"]]["nr_of_tries"] && $qdata[$as["qst_id"]]["nr_of_tries"] > 0 && !$as["passed"]) { include_once "./Services/Notification/classes/class.ilNotification.php"; $users = ilNotification::getNotificationsForObject(ilNotification::TYPE_LM_BLOCKED_USERS, $parent_id); if (count($users) > 0) { include_once "./Modules/LearningModule/classes/class.ilLMMailNotification.php"; $not = new ilLMMailNotification(); $not->setType(ilLMMailNotification::TYPE_USER_BLOCKED); $not->setQuestionId($id); $not->setRefId((int) $_GET["ref_id"]); $not->setRecipients($users); $not->send(); } } } }
/** * @param array $taxIds * @global ilRbacSystem $rbacsystem * @global ilDB $ilDB * @global ilLanguage $lng * @global ilPluginAdmin $ilPluginAdmin * @return ilQuestionBrowserTableGUI */ private function buildQuestionBrowserTableGUI($taxIds) { global $rbacsystem, $ilDB, $lng, $ilPluginAdmin; include_once "./Modules/TestQuestionPool/classes/tables/class.ilQuestionBrowserTableGUI.php"; $table_gui = new ilQuestionBrowserTableGUI($this, 'questions', $rbacsystem->checkAccess('write', $_GET['ref_id']) ? true : false, false, $taxIds); $table_gui->setEditable($rbacsystem->checkAccess('write', $_GET['ref_id'])); require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($ilDB, $lng, $ilPluginAdmin, $this->object->getId()); foreach ($table_gui->getFilterItems() as $item) { if (substr($item->getPostVar(), 0, strlen('tax_')) == 'tax_') { $v = $item->getValue(); if (is_array($v) && count($v) && !(int) $v[0]) { continue; } $taxId = substr($item->getPostVar(), strlen('tax_')); $questionList->addTaxonomyFilter($taxId, $item->getValue()); } elseif ($item->getValue() !== false) { $questionList->addFieldFilter($item->getPostVar(), $item->getValue()); } } if ($this->object->isNavTaxonomyActive() && (int) $_GET['tax_node']) { $questionList->addTaxonomyFilter($this->object->getNavTaxonomyId(), array((int) $_GET['tax_node'])); } $questionList->load(); $data = $questionList->getQuestionDataArray(); $table_gui->setData($data); return $table_gui; }
/** * @return array */ private function getQuestionsData() { $questionList = new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin); $questionList->setQuestionInstanceTypeFilter($this->getQuestionInstanceTypeFilter()); $questionList->setExcludeQuestionIdsFilter($this->testOBJ->getExistingQuestions()); $repositoryRootNode = self::REPOSITORY_ROOT_NODE_ID; foreach ($this->getFilterItems() as $item) { if ($item->getValue() !== false) { switch ($item->getPostVar()) { case 'title': case 'description': case 'author': case 'type': case 'parent_title': $questionList->addFieldFilter($item->getPostVar(), $item->getValue()); break; case 'repository_root_node': $repositoryRootNode = $item->getValue(); } } } $parentObjectIds = $this->getQuestionParentObjIds($repositoryRootNode); if (!count($parentObjectIds)) { return array(); } $questionList->setParentObjIdsFilter($parentObjectIds); $questionList->load(); return $questionList->getQuestionDataArray(); }
/** * Get blocked users information * * @param * @return */ function getBlockedUsersInformation() { global $ilDB, $lng, $ilPluginAdmin, $ilUser; $blocked_users = array(); // load question/pages information $this->page_questions = array(); $this->all_questions = array(); $page_for_question = array(); include_once "./Modules/LearningModule/classes/class.ilLMPageObject.php"; $q = ilLMPageObject::queryQuestionsOfLearningModule($this->lm_obj_id, "", "", 0, 0); foreach ($q["set"] as $quest) { $this->page_questions[$quest["page_id"]][] = $quest["question_id"]; $this->all_questions[] = $quest["question_id"]; $page_for_question[$quest["question_id"]] = $quest["page_id"]; } // get question information include_once "./Modules/TestQuestionPool/classes/class.ilAssQuestionList.php"; $qlist = new ilAssQuestionList($ilDB, $lng, $ilPluginAdmin); $qlist->setParentObjId(0); $qlist->addFieldFilter("question_id", $this->all_questions); $qlist->load(); $qdata = $qlist->getQuestionDataArray(); // load question answer information include_once "./Services/COPage/classes/class.ilPageQuestionProcessor.php"; $this->answer_status = ilPageQuestionProcessor::getAnswerStatus($this->all_questions); include_once "./Modules/LearningModule/classes/class.ilLMPageObject.php"; foreach ($this->answer_status as $as) { if ($as["try"] >= $qdata[$as["qst_id"]]["nr_of_tries"] && $qdata[$as["qst_id"]]["nr_of_tries"] > 0 && !$as["passed"]) { //var_dump($qdata[$as["qst_id"]]); $name = ilObjUser::_lookupName($as["user_id"]); $as["user_name"] = $name["lastname"] . ", " . $name["firstname"] . " [" . $name["login"] . "]"; $as["question_text"] = $qdata[$as["qst_id"]]["question_text"]; $as["page_id"] = $page_for_question[$as["qst_id"]]; $as["page_title"] = ilLMPageObject::_lookupTitle($as["page_id"]); $blocked_users[] = $as; } } return $blocked_users; }
protected function getFilteredTestResult($active_id, $pass) { global $ilDB, $ilPluginAdmin; $testResults = $this->object->getTestResult($active_id, $pass); $questionIds = array(); foreach ($testResults as $resultItemKey => $resultItemValue) { if ($resultItemKey === 'test' || $resultItemKey === 'pass') { continue; } $questionIds[] = $resultItemValue['qid']; } $table_gui = $this->buildPassDetailsOverviewTableGUI($this, 'outUserPassDetails'); $table_gui->initFilter(); require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($ilDB, $this->lng, $ilPluginAdmin, null); $questionList->setQuestionIdsFilter($questionIds); $questionList->setQuestionInstanceTypeFilter(null); foreach ($table_gui->getFilterItems() as $item) { if (substr($item->getPostVar(), 0, strlen('tax_')) == 'tax_') { $v = $item->getValue(); if (is_array($v) && count($v) && !(int) $v[0]) { continue; } $taxId = substr($item->getPostVar(), strlen('tax_')); $questionList->addTaxonomyFilter($taxId, $item->getValue()); } elseif ($item->getValue() !== false) { $questionList->addFieldFilter($item->getPostVar(), $item->getValue()); } } $questionList->load(); $filteredTestResult = array(); foreach ($testResults as $resultItemKey => $resultItemValue) { if ($resultItemKey === 'test' || $resultItemKey === 'pass') { continue; } if (!$questionList->isInList($resultItemValue['qid'])) { continue; } $filteredTestResult[] = $resultItemValue; } return $filteredTestResult; }