Ejemplo n.º 1
0
 /**
  * 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);
 }