/** * Loads a assSingleChoice object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $hasimages = 0; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setNrOfTries($data['nr_of_tries']); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $shuffle = is_null($data['shuffle']) ? true : $data['shuffle']; $this->setShuffle($shuffle); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); $this->setThumbSize($data['thumb_size']); $this->isSingleline = $data['allow_images'] ? false : true; $this->lastChange = $data['tstamp']; try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } } $result = $ilDB->queryF("SELECT * FROM qpl_a_sc WHERE question_fi = %s ORDER BY aorder ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerBinaryStateImage.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $imagefilename = $this->getImagePath() . $data["imagefile"]; if (!@file_exists($imagefilename)) { $data["imagefile"] = ""; } include_once "./Services/RTE/classes/class.ilRTE.php"; $data["answertext"] = ilRTE::_replaceMediaObjectImageSrc($data["answertext"], 1); array_push($this->answers, new ASS_AnswerBinaryStateImage($data["answertext"], $data["points"], $data["aorder"], 1, $data["imagefile"])); } } parent::loadFromDb($question_id); }
/** * Loads a assClozeTest object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the cloze test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setNrOfTries($data['nr_of_tries']); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); $this->setQuestion($this->cleanQuestiontext($data["question_text"])); $this->setFixedTextLength($data["fixed_textlen"]); $this->setIdenticalScoring($data['tstamp'] == 0 ? true : $data["identical_scoring"]); // replacement of old syntax with new syntax include_once "./Services/RTE/classes/class.ilRTE.php"; $this->question = ilRTE::_replaceMediaObjectImageSrc($this->question, 1); $this->setTextgapRating($data["textgap_rating"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); // open the cloze gaps with all answers include_once "./Modules/TestQuestionPool/classes/class.assAnswerCloze.php"; include_once "./Modules/TestQuestionPool/classes/class.assClozeGap.php"; $result = $ilDB->queryF("SELECT * FROM qpl_a_cloze WHERE question_fi = %s ORDER BY gap_id, aorder ASC", array("integer"), array($question_id)); if ($result->numRows() > 0) { $this->gaps = array(); while ($data = $ilDB->fetchAssoc($result)) { switch ($data["cloze_type"]) { case CLOZE_TEXT: if (!array_key_exists($data["gap_id"], $this->gaps)) { $this->gaps[$data["gap_id"]] = new assClozeGap(CLOZE_TEXT); } $answer = new assAnswerCloze($data["answertext"], $data["points"], $data["aorder"]); $this->gaps[$data["gap_id"]]->addItem($answer); break; case CLOZE_SELECT: if (!array_key_exists($data["gap_id"], $this->gaps)) { $this->gaps[$data["gap_id"]] = new assClozeGap(CLOZE_SELECT); $this->gaps[$data["gap_id"]]->setShuffle($data["shuffle"]); } $answer = new assAnswerCloze($data["answertext"], $data["points"], $data["aorder"]); $this->gaps[$data["gap_id"]]->addItem($answer); break; case CLOZE_NUMERIC: if (!array_key_exists($data["gap_id"], $this->gaps)) { $this->gaps[$data["gap_id"]] = new assClozeGap(CLOZE_NUMERIC); } $answer = new assAnswerCloze($data["answertext"], $data["points"], $data["aorder"]); $answer->setLowerBound($data["lowerlimit"]); $answer->setUpperBound($data["upperlimit"]); $this->gaps[$data["gap_id"]]->addItem($answer); break; } } } } parent::loadFromDb($question_id); }
/** * Loads a assJavaApplet object from a database * * Loads a assJavaApplet object from a database (experimental) * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setNrOfTries($data['nr_of_tries']); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setJavaAppletFilename($data["image_file"]); $this->splitParams($data["params"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); } parent::loadFromDb($question_id); }
public function loadFromDb($questionId) { $res = $this->db->queryF($this->buildQuestionDataQuery(), array('integer'), array($questionId)); while ($data = $this->db->fetchAssoc($res)) { $this->setId($questionId); $this->setOriginalId($data['original_id']); $this->setObjId($data['obj_fi']); $this->setTitle($data['title']); $this->setNrOfTries($data['nr_of_tries']); $this->setComment($data['description']); $this->setAuthor($data['author']); $this->setPoints($data['points']); $this->setOwner($data['owner']); $this->setEstimatedWorkingTimeFromDurationString($data['working_time']); $this->setLastChange($data['tstamp']); require_once 'Services/RTE/classes/class.ilRTE.php'; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data['question_text'], 1)); $this->setShuffleAnswersEnabled((bool) $data['shuffle_answers']); if ($this->isValidAnswerType($data['answer_type'])) { $this->setAnswerType($data['answer_type']); } if (is_numeric($data['thumb_size'])) { $this->setThumbSize((int) $data['thumb_size']); } if ($this->isValidOptionLabel($data['opt_label'])) { $this->setOptionLabel($data['opt_label']); } $this->setCustomTrueOptionLabel($data['custom_true']); $this->setCustomFalseOptionLabel($data['custom_false']); if ($data['score_partsol'] !== null) { $this->setScorePartialSolutionEnabled((bool) $data['score_partsol']); } if (isset($data['feedback_setting'])) { $this->setSpecificFeedbackSetting((int) $data['feedback_setting']); } try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } } $this->loadAnswerData($questionId); parent::loadFromDb($questionId); }
/** * Loads a assFormulaQuestion object from a database * @param integer $question_id A unique key which defines the question in the database */ public function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.* FROM qpl_questions WHERE question_id = %s", array('integer'), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setSuggestedSolution($data["solution_hint"]); $this->setOriginalId($data["original_id"]); $this->setObjId($data["obj_fi"]); $this->setAuthor($data["author"]); $this->setOwner($data["owner"]); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } $this->unitrepository = new ilUnitConfigurationRepository($question_id); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); // load variables $result = $ilDB->queryF("SELECT * FROM il_qpl_qst_fq_var WHERE question_fi = %s", array('integer'), array($question_id)); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $varObj = new assFormulaQuestionVariable($data["variable"], $data["range_min"], $data["range_max"], $this->getUnitrepository()->getUnit($data["unit_fi"]), $data["varprecision"], $data["intprecision"]); $varObj->setRangeMinTxt($data['range_min_txt']); $varObj->setRangeMaxTxt($data['range_max_txt']); $this->addVariable($varObj); } } // load results $result = $ilDB->queryF("SELECT * FROM il_qpl_qst_fq_res WHERE question_fi = %s", array('integer'), array($question_id)); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $resObj = new assFormulaQuestionResult($data["result"], $data["range_min"], $data["range_max"], $data["tolerance"], $this->getUnitrepository()->getUnit($data["unit_fi"]), $data["formula"], $data["points"], $data["resprecision"], $data["rating_simple"], $data["rating_sign"], $data["rating_value"], $data["rating_unit"]); $resObj->setResultType($data['result_type']); $resObj->setRangeMinTxt($data['range_min_txt']); $resObj->setRangeMaxTxt($data['range_max_txt']); $this->addResult($resObj); } } // load result units $result = $ilDB->queryF("SELECT * FROM il_qpl_qst_fq_res_unit WHERE question_fi = %s", array('integer'), array($question_id)); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $unit = $this->getUnitrepository()->getUnit($data["unit_fi"]); $resObj = $this->getResult($data["result"]); $this->addResultUnit($resObj, $unit); } } } parent::loadFromDb($question_id); }
/** * Loads a assMatchingQuestion object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database */ public function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setNrOfTries($data['nr_of_tries']); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setThumbGeometry($data["thumb_geometry"]); $this->setElementHeight($data["element_height"]); $this->setShuffle($data["shuffle"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); } $termids = array(); $result = $ilDB->queryF("SELECT * FROM qpl_a_mterm WHERE question_fi = %s ORDER BY term_id ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php"; $this->terms = array(); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $term = new assAnswerMatchingTerm($data['term'], $data['picture'], $data['term_id']); array_push($this->terms, $term); $termids[$data['term_id']] = $term; } } $definitionids = array(); $result = $ilDB->queryF("SELECT * FROM qpl_a_mdef WHERE question_fi = %s ORDER BY def_id ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php"; $this->definitions = array(); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $definition = new assAnswerMatchingDefinition($data['definition'], $data['picture'], $data['morder']); array_push($this->definitions, $definition); $definitionids[$data['def_id']] = $definition; } } $this->matchingpairs = array(); $result = $ilDB->queryF("SELECT * FROM qpl_a_matching WHERE question_fi = %s ORDER BY answer_id", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { array_push($this->matchingpairs, new assAnswerMatchingPair($termids[$data['term_fi']], $definitionids[$data['definition_fi']], $data['points'])); } } parent::loadFromDb($question_id); }
/** * Loads a assNumeric object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setNrOfTries($data['nr_of_tries']); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setMaxChars($data["maxnumofchars"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); } $result = $ilDB->queryF("SELECT * FROM qpl_num_range WHERE question_fi = %s ORDER BY aorder ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assNumericRange.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $this->setPoints($data['points']); $this->setLowerLimit($data['lowerlimit']); $this->setUpperLimit($data['upperlimit']); } } parent::loadFromDb($question_id); }
/** * Loads a assFlashQuestion object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setNrOfTries($data['nr_of_tries']); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setSuggestedSolution($data["solution_hint"]); $this->setOriginalId($data["original_id"]); $this->setObjId($data["obj_fi"]); $this->setAuthor($data["author"]); $this->setOwner($data["owner"]); $this->setPoints($data["points"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } // load additional data $result = $ilDB->queryF("SELECT * FROM " . $this->getAdditionalTableName() . " WHERE question_fi = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setWidth($data["width"]); $this->setHeight($data["height"]); $this->setApplet($data["applet"]); $this->parameters = unserialize($data["params"]); if (!is_array($this->parameters)) { $this->clearParameters(); } unset($_SESSION["flash_upload_filename"]); } } parent::loadFromDb($question_id); }
/** * Loads a assOrderingQuestion object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setNrOfTries($data['nr_of_tries']); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->ordering_type = strlen($data["ordering_type"]) ? $data["ordering_type"] : OQ_TERMS; $this->thumb_geometry = $data["thumb_geometry"]; $this->element_height = $data["element_height"]; $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); } $result = $ilDB->queryF("SELECT * FROM qpl_a_ordering WHERE question_fi = %s ORDER BY solution_order ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerOrdering.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { include_once "./Services/RTE/classes/class.ilRTE.php"; $data["answertext"] = ilRTE::_replaceMediaObjectImageSrc($data["answertext"], 1); array_push($this->answers, new ASS_AnswerOrdering($data["answertext"], $data["random_id"])); } } parent::loadFromDb($question_id); }
/** * Loads a SyntaxTree object from a database * * Loads a SyntaxTree object from a database (experimental) * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $query = sprintf("SELECT qpl_questions.*, il_qpl_qst_st_quest.* FROM qpl_questions, il_qpl_qst_st_quest WHERE question_id = %s AND qpl_questions.question_id = il_qpl_qst_st_quest.question_fi", $ilDB->quote($question_id)); $result = $ilDB->query($query); if ($result->numRows() == 1) { $data = $result->fetchRow(MDB2_FETCHMODE_OBJECT); $this->id = $question_id; $this->title = $data->title; $this->comment = $data->description; $this->solution_hint = $data->solution_hint; $this->original_id = $data->original_id; $this->obj_id = $data->obj_fi; $this->author = $data->author; $this->owner = $data->owner; $this->points = $data->points; include_once "./Services/RTE/classes/class.ilRTE.php"; $this->question = ilRTE::_replaceMediaObjectImageSrc($data->question_text, 1); $this->correctanswers = $data->correctanswers; $this->text_rating = $data->textgap_rating; $this->setEstimatedWorkingTime(substr($data->working_time, 0, 2), substr($data->working_time, 3, 2), substr($data->working_time, 6, 2)); $query = sprintf("SELECT * FROM il_qpl_qst_st_answer WHERE question_fi = %s ORDER BY aorder ASC", $ilDB->quote($question_id)); $result = $ilDB->query($query); include_once "./Modules/TestQuestionPool/classes/class.assAnswerSimple.php"; if ($result->numRows() > 0) { while ($data = $result->fetchRow(MDB2_FETCHMODE_ASSOC)) { array_push($this->answers, new ASS_AnswerSimple($data["answertext"], $data["points"], $data["aorder"])); } } } parent::loadFromDb($question_id); }
/** * Loads a assFileUpload object from a database * * @param integer $question_id A unique key which defines the question in the database */ public function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setNrOfTries($data['nr_of_tries']); $this->setSuggestedSolution($data["solution_hint"]); $this->setOriginalId($data["original_id"]); $this->setObjId($data["obj_fi"]); $this->setAuthor($data["author"]); $this->setOwner($data["owner"]); $this->setPoints($data["points"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); $this->setMaxSize($data["maxsize"]); $this->setAllowedExtensions($data["allowedextensions"]); $this->setCompletionBySubmission($data['compl_by_submission'] == 1 ? true : false); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } } parent::loadFromDb($question_id); }
/** * Loads an assAccountingQuestion object from a database * * @param integer $question_id A unique key which defines the question in the database */ public function loadFromDb($question_id) { global $ilDB; // load the basic question data $result = $ilDB->query("SELECT qpl_questions.* FROM qpl_questions WHERE question_id = " . $ilDB->quote($question_id, 'integer')); $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setSuggestedSolution($data["solution_hint"]); $this->setOriginalId($data["original_id"]); $this->setObjId($data["obj_fi"]); $this->setAuthor($data["author"]); $this->setOwner($data["owner"]); $this->setPoints($data["points"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } // get the hash value for accounts definition $result = $ilDB->query("SELECT h.data FROM il_qpl_qst_accqst_data d" . " INNER JOIN il_qpl_qst_accqst_hash h ON d.account_hash = h.hash" . " WHERE d.question_fi =" . $ilDB->quote($question_id, 'integer')); $data = $ilDB->fetchAssoc($result); $this->setAccountsXML($data["data"]); // load the question parts $this->loadParts(); // loads additional stuff like suggested solutions parent::loadFromDb($question_id); }
/** * Loads a assMatchingQuestion object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database */ public function loadFromDb($question_id) { global $ilDB; $query = "\n\t\t\tSELECT\t\tqpl_questions.*,\n\t\t\t\t\t\t{$this->getAdditionalTableName()}.*\n\t\t\tFROM\t\tqpl_questions\n\t\t\tLEFT JOIN\t{$this->getAdditionalTableName()}\n\t\t\tON\t\t\t{$this->getAdditionalTableName()}.question_fi = qpl_questions.question_id\n\t\t\tWHERE\t\tqpl_questions.question_id = %s\n\t\t"; $result = $ilDB->queryF($query, array('integer'), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setNrOfTries($data['nr_of_tries']); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setThumbGeometry($data["thumb_geometry"]); $this->setShuffle($data["shuffle"]); $this->setMatchingMode($data['matching_mode'] === null ? self::MATCHING_MODE_1_ON_1 : $data['matching_mode']); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } } $termids = array(); $result = $ilDB->queryF("SELECT * FROM qpl_a_mterm WHERE question_fi = %s ORDER BY term_id ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php"; $this->terms = array(); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $term = new assAnswerMatchingTerm($data['term'], $data['picture'], $data['term_id']); array_push($this->terms, $term); $termids[$data['term_id']] = $term; } } $definitionids = array(); $result = $ilDB->queryF("SELECT * FROM qpl_a_mdef WHERE question_fi = %s ORDER BY def_id ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingDefinition.php"; $this->definitions = array(); if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { $definition = new assAnswerMatchingDefinition($data['definition'], $data['picture'], $data['morder']); array_push($this->definitions, $definition); $definitionids[$data['def_id']] = $definition; } } $this->matchingpairs = array(); $result = $ilDB->queryF("SELECT * FROM qpl_a_matching WHERE question_fi = %s ORDER BY answer_id", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingPair.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { array_push($this->matchingpairs, new assAnswerMatchingPair($termids[$data['term_fi']], $definitionids[$data['definition_fi']], $data['points'])); } } parent::loadFromDb($question_id); }
/** * Loads a assTextSubset object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setNrOfTries($data['nr_of_tries']); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setCorrectAnswers($data["correctanswers"]); $this->setTextRating($data["textgap_rating"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); } $result = $ilDB->queryF("SELECT * FROM qpl_a_textsubset WHERE question_fi = %s ORDER BY aorder ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerBinaryStateImage.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { array_push($this->answers, new ASS_AnswerBinaryStateImage($data["answertext"], $data["points"], $data["aorder"])); } } parent::loadFromDb($question_id); }
/** * Loads the object from the database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database */ public function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setNrOfTries($data['nr_of_tries']); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setErrorText($data["errortext"]); $this->setTextSize($data["textsize"]); $this->setPointsWrong($data["points_wrong"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } } $result = $ilDB->queryF("SELECT * FROM qpl_a_errortext WHERE question_fi = %s ORDER BY sequence ASC", array('integer'), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerErrorText.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { array_push($this->errordata, new assAnswerErrorText($data["text_wrong"], $data["text_correct"], $data["points"])); } } parent::loadFromDb($question_id); }
/** * Loads a assTextQuestion object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the text question in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($ilDB->numRows($result) == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setNrOfTries($data['nr_of_tries']); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setShuffle($data["shuffle"]); $this->setMaxNumOfChars($data["maxnumofchars"]); $this->setTextRating($data["textgap_rating"]); $this->matchcondition = strlen($data['matchcondition']) ? $data['matchcondition'] : 0; $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); $this->setKeywordRelation($data['keyword_relation']); } $result = $ilDB->queryF("SELECT * FROM qpl_a_essay WHERE question_fi = %s", array("integer"), array($this->getId())); $this->flushAnswers(); while ($row = $ilDB->fetchAssoc($result)) { $this->addAnswer($row['answertext'], $row['points']); } parent::loadFromDb($question_id); }
/** * Loads a assImagemapQuestion object from a database * * Loads a assImagemapQuestion object from a database (experimental) * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the multiple choice test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.*, " . $this->getAdditionalTableName() . ".* FROM qpl_questions LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = qpl_questions.question_id WHERE qpl_questions.question_id = %s", array("integer"), array($question_id)); if ($result->numRows() == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); $this->setOriginalId($data["original_id"]); $this->setNrOfTries($data['nr_of_tries']); $this->setAuthor($data["author"]); $this->setPoints($data["points"]); $this->setOwner($data["owner"]); $this->setIsMultipleChoice($data["is_multiple_choice"] == self::MODE_MULTIPLE_CHOICE); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setImageFilename($data["image_file"]); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); try { $this->setAdditionalContentEditingMode($data['add_cont_edit_mode']); } catch (ilTestQuestionPoolException $e) { } $result = $ilDB->queryF("SELECT * FROM qpl_a_imagemap WHERE question_fi = %s ORDER BY aorder ASC", array("integer"), array($question_id)); include_once "./Modules/TestQuestionPool/classes/class.assAnswerImagemap.php"; if ($result->numRows() > 0) { while ($data = $ilDB->fetchAssoc($result)) { array_push($this->answers, new ASS_AnswerImagemap($data["answertext"], $data["points"], $data["aorder"], $data["coords"], $data["area"], $data['question_fi'], $data['points_unchecked'])); } } } parent::loadFromDb($question_id); }
/** * Load a assJSMEQuestion object from a database * * @param object $db A pear DB object * @param integer $question_id A unique key which defines the TemplateQuestion test in the database * @access public */ function loadFromDb($question_id) { global $ilDB; $result = $ilDB->queryF("SELECT qpl_questions.* FROM qpl_questions WHERE question_id = %s", array('integer'), array($question_id)); if ($ilDB->numRows($result) == 1) { $data = $ilDB->fetchAssoc($result); $this->setId($question_id); $this->setObjId($data["obj_fi"]); $this->setTitle($data["title"]); $this->setComment($data["description"]); //$this->setSuggestedSolution($data["solution_hint"]); $this->setOriginalId($data["original_id"]); $this->setAuthor($data["author"]); $this->setOwner($data["owner"]); $this->setPoints($data["points"]); include_once "./Services/RTE/classes/class.ilRTE.php"; $this->setQuestion(ilRTE::_replaceMediaObjectImageSrc($data["question_text"], 1)); $this->setEstimatedWorkingTime(substr($data["working_time"], 0, 2), substr($data["working_time"], 3, 2), substr($data["working_time"], 6, 2)); } $resultCheck = $ilDB->queryF("SELECT option_string, solution FROM il_qpl_qst_jsme_data WHERE question_fi = %s", array('integer'), array($question_id)); if ($ilDB->numRows($resultCheck) == 1) { $data = $ilDB->fetchAssoc($resultCheck); $this->setOptionString($data["option_string"]); $this->setSampleSolution($data["solution"]); } parent::loadFromDb($question_id); }