コード例 #1
0
 /**
  * Save question answer
  *
  * @param
  * @return
  */
 function saveQuestionAnswer($a_type, $a_id, $a_answer)
 {
     global $ilUser, $ilLog, $ilDB;
     //$a_type = "assOrderingQuestion";
     //$a_id = 74;
     //$a_answer = '{"tries":1,"wrong":2,"passed":false,"answer":[true,true,false,true,false],"interactionId":null,"choice":["1","2","5","4","3"]}';
     $ilLog->write($a_type);
     $ilLog->write($a_id);
     $ilLog->write($a_answer);
     include_once "./Services/JSON/classes/class.ilJsonUtil.php";
     $answer = ilJsonUtil::decode($a_answer);
     $tries = $answer->tries;
     $passed = $answer->passed;
     $choice = $answer->choice;
     $points = ilPageQuestionProcessor::calculatePoints($a_type, $a_id, $choice);
     $ilLog->write("Points: " . $points);
     $set = $ilDB->query("SELECT * FROM page_qst_answer WHERE " . " qst_id = " . $ilDB->quote($a_id, "integer") . " AND " . " user_id = " . $ilDB->quote($ilUser->getId(), "integer"));
     if ($rec = $ilDB->fetchAssoc($set)) {
         $ilDB->manipulate("UPDATE page_qst_answer SET " . " try = try + 1," . " passed = " . $ilDB->quote($passed, "integer") . "," . " points = " . $ilDB->quote($points, "float") . " WHERE qst_id = " . $ilDB->quote($a_id, "integer") . " AND user_id = " . $ilDB->quote($ilUser->getId(), "integer"));
     } else {
         $ilDB->manipulate("INSERT INTO page_qst_answer " . "(qst_id, user_id, try, passed, points) VALUES (" . $ilDB->quote($a_id, "integer") . "," . $ilDB->quote($ilUser->getId(), "integer") . "," . $ilDB->quote(1, "integer") . "," . $ilDB->quote($passed, "integer") . "," . $ilDB->quote($points, "float") . ")");
     }
     //$ilLog->write("tries: ".$tries);
     //$ilLog->write("passed: ".$passed);
     //$ilLog->write("points: ".$points);
     exit;
 }
コード例 #2
0
 /**
  * Fill table row
  */
 protected function fillRow($a_set)
 {
     global $ilCtrl, $lng;
     $this->tpl->setVariable("PAGE_TITLE", ilLMObject::_lookupTitle($a_set["page_id"]));
     $this->tpl->setVariable("QUESTION", assQuestion::_getQuestionText($a_set["question_id"]));
     include_once "./Services/COPage/classes/class.ilPageQuestionProcessor.php";
     $stats = ilPageQuestionProcessor::getQuestionStatistics($a_set["question_id"]);
     $this->tpl->setVariable("VAL_ANSWERED", (int) $stats["all"]);
     if ($stats["all"] == 0) {
         $this->tpl->setVariable("VAL_CORRECT_FIRST", 0);
         $this->tpl->setVariable("VAL_CORRECT_SECOND", 0);
         $this->tpl->setVariable("VAL_CORRECT_THIRD_OR_MORE", 0);
         $this->tpl->setVariable("VAL_NEVER", 0);
     } else {
         $this->tpl->setVariable("VAL_CORRECT_FIRST", $stats["first"] . " (" . 100 / $stats["all"] * $stats["first"] . " %)");
         $this->tpl->setVariable("VAL_CORRECT_SECOND", $stats["second"] . " (" . 100 / $stats["all"] * $stats["second"] . " %)");
         $this->tpl->setVariable("VAL_CORRECT_THIRD_AND_MORE", $stats["third_or_more"] . " (" . 100 / $stats["all"] * $stats["third_or_more"] . " %)");
         $nev = $stats["all"] - $stats["first"] - $stats["second"] - $stats["third_or_more"];
         $this->tpl->setVariable("VAL_NEVER", $nev . " (" . 100 / $stats["all"] * $nev . " %)");
     }
 }
コード例 #3
0
ファイル: class.ilLMPageGUI.php プロジェクト: bheyser/qplskl
 /**
  * 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();
             }
         }
     }
 }
コード例 #4
0
 /**
  * Process answer
  */
 function processAnswer()
 {
     global $ilLog;
     /*$ilLog->write($_POST);
     		$ilLog->write($_POST["id"]);
     		$ilLog->write($_POST["type"]);
     		$ilLog->write($_POST["answer"]);
     		$ilLog->write($_GET);*/
     include_once "./Services/COPage/classes/class.ilPageQuestionProcessor.php";
     ilPageQuestionProcessor::saveQuestionAnswer(ilUtil::stripSlashes($_POST["type"]), ilUtil::stripSlashes($_POST["id"]), ilUtil::stripSlashes($_POST["answer"]));
 }
コード例 #5
0
ファイル: class.ilPCQuestion.php プロジェクト: bheyser/qplskl
 /**
  * Get on load code
  */
 function getOnloadCode($a_mode)
 {
     global $ilCtrl, $ilUser;
     $code = array();
     if ($this->getPage()->getPageConfig()->getEnableSelfAssessment()) {
         if (!$this->getPage()->getPageConfig()->getEnableSelfAssessmentScorm() && $a_mode != IL_PAGE_PREVIEW && $a_mode != "offline") {
             $ilCtrl->setParameterByClass(strtolower(get_class($this->getPage())) . "gui", "page_id", $this->getPage()->getId());
             $url = $ilCtrl->getLinkTargetByClass(strtolower(get_class($this->getPage())) . "gui", "processAnswer", "", true, false);
             $code[] = "ilCOPageQuestionHandler.initCallback('" . $url . "');";
         }
         if ($this->getPage()->getPageConfig()->getDisableDefaultQuestionFeedback()) {
             $code[] = "ilias.questions.default_feedback = false;";
         }
         $code[] = self::getJSTextInitCode($this->getPage()->getPageConfig()->getLocalizationLanguage()) . ' il.COPagePres.updateQuestionOverviews();';
     }
     $get_stored_tries = $this->getPage()->getPageConfig()->getUseStoredQuestionTries();
     if ($get_stored_tries) {
         $q_ids = $this->getPage()->getQuestionIds();
         if (count($q_ids) > 0) {
             foreach ($q_ids as $q_id) {
                 include_once "./Services/COPage/classes/class.ilPageQuestionProcessor.php";
                 $as = ilPageQuestionProcessor::getAnswerStatus($q_id, $ilUser->getId());
                 $code[] = "ilias.questions.initAnswer(" . $q_id . ", " . (int) $as["try"] . ", " . ($as["passed"] ? "true" : "null") . ");";
             }
         }
     }
     return $code;
 }
コード例 #6
0
ファイル: class.ilLMTracker.php プロジェクト: bheyser/qplskl
 /**
  * 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;
 }
コード例 #7
0
 /**
  * Unlock blocked question
  */
 function unlockQuestion()
 {
     global $lng, $ilCtrl;
     include_once "./Services/COPage/classes/class.ilPageQuestionProcessor.php";
     if (is_array($_POST["userquest_id"])) {
         foreach ($_POST["userquest_id"] as $uqid) {
             $uqid = explode(":", $uqid);
             ilPageQuestionProcessor::unlock((int) $uqid[0], (int) $uqid[1]);
         }
         ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
     }
     $ilCtrl->redirect($this, "listBlockedUsers");
 }