public function saveToDb()
 {
     if ($this->dbRecordExists()) {
         $this->db->update('tst_skl_qst_assigns', array('skill_points' => array('integer', $this->getSkillPoints())), array('test_fi' => array('integer', $this->getTestId()), 'question_fi' => array('integer', $this->getQuestionId()), 'skill_base_fi' => array('integer', $this->getSkillBaseId()), 'skill_tref_fi' => array('integer', $this->getSkillTrefId())));
     } else {
         $this->db->insert('tst_skl_qst_assigns', array('test_fi' => array('integer', $this->getTestId()), 'question_fi' => array('integer', $this->getQuestionId()), 'skill_base_fi' => array('integer', $this->getSkillBaseId()), 'skill_tref_fi' => array('integer', $this->getSkillTrefId()), 'skill_points' => array('integer', $this->getSkillPoints())));
     }
 }
 public function saveToDb()
 {
     if ($this->dbRecordExists()) {
         $this->db->update('tst_skl_thresholds', array('threshold' => array('integer', $this->getThreshold())), array('test_fi' => array('integer', $this->getTestId()), 'skill_base_fi' => array('integer', $this->getSkillBaseId()), 'skill_tref_fi' => array('integer', $this->getSkillTrefId()), 'skill_level_fi' => array('integer', $this->getSkillLevelId())));
     } else {
         $this->db->insert('tst_skl_thresholds', array('test_fi' => array('integer', $this->getTestId()), 'skill_base_fi' => array('integer', $this->getSkillBaseId()), 'skill_tref_fi' => array('integer', $this->getSkillTrefId()), 'skill_level_fi' => array('integer', $this->getSkillLevelId()), 'threshold' => array('integer', $this->getThreshold())));
     }
 }
 public function saveToDb()
 {
     if ($this->dbRecordExists()) {
         $this->db->update('qpl_qst_skl_assigns', array('skill_points' => array('integer', $this->getSkillPoints()), 'eval_mode' => array('text', $this->getEvalMode())), array('obj_fi' => array('integer', $this->getParentObjId()), 'question_fi' => array('integer', $this->getQuestionId()), 'skill_base_fi' => array('integer', $this->getSkillBaseId()), 'skill_tref_fi' => array('integer', $this->getSkillTrefId())));
     } else {
         $this->db->insert('qpl_qst_skl_assigns', array('obj_fi' => array('integer', $this->getParentObjId()), 'question_fi' => array('integer', $this->getQuestionId()), 'skill_base_fi' => array('integer', $this->getSkillBaseId()), 'skill_tref_fi' => array('integer', $this->getSkillTrefId()), 'skill_points' => array('integer', $this->getSkillPoints()), 'eval_mode' => array('text', $this->getEvalMode())));
     }
     if ($this->getEvalMode() == self::EVAL_MODE_BY_QUESTION_SOLUTION) {
         $this->saveComparisonExpressions();
     }
 }
 /**
  * @param ilTermsOfServiceAcceptanceEntity $entity
  */
 public function trackAcceptance(ilTermsOfServiceAcceptanceEntity $entity)
 {
     $query = 'SELECT id FROM tos_versions WHERE hash = %s AND lng = %s';
     $res = $this->db->queryF($query, array('text', 'text'), array($entity->getHash(), $entity->getIso2LanguageCode()));
     if ($this->db->numRows($res)) {
         $row = $this->db->fetchAssoc($res);
         $tosv_id = $row['id'];
     } else {
         $tosv_id = $this->db->nextId('tos_versions');
         $this->db->insert('tos_versions', array('id' => array('integer', $tosv_id), 'lng' => array('text', $entity->getIso2LanguageCode()), 'src' => array('text', $entity->getSource()), 'src_type' => array('integer', $entity->getSourceType()), 'text' => array('clob', $entity->getText()), 'hash' => array('text', $entity->getHash()), 'ts' => array('integer', $entity->getTimestamp())));
     }
     $this->db->insert('tos_acceptance_track', array('tosv_id' => array('integer', $tosv_id), 'usr_id' => array('integer', $entity->getUserId()), 'ts' => array('integer', $entity->getTimestamp())));
 }
 private function stageQuestionsFromSourcePool($sourcePoolId)
 {
     $questionIdMapping = array();
     $query = 'SELECT question_id FROM qpl_questions WHERE obj_fi = %s AND complete = %s AND original_id IS NULL';
     $res = $this->db->queryF($query, array('integer', 'text'), array($sourcePoolId, 1));
     while ($row = $this->db->fetchAssoc($res)) {
         $question = assQuestion::_instanciateQuestion($row['question_id']);
         $duplicateId = $question->duplicate(true, null, null, null, $this->testOBJ->getId());
         $nextId = $this->db->nextId('tst_rnd_cpy');
         $this->db->insert('tst_rnd_cpy', array('copy_id' => array('integer', $nextId), 'tst_fi' => array('integer', $this->testOBJ->getTestId()), 'qst_fi' => array('integer', $duplicateId), 'qpl_fi' => array('integer', $sourcePoolId)));
         $questionIdMapping[$row['question_id']] = $duplicateId;
     }
     return $questionIdMapping;
 }
 public function saveToDb()
 {
     $tracking = serialize($this->questionTracking);
     $postponed = serialize($this->postponedQuestions);
     $hidden = serialize(array('correct' => $this->correctAnsweredQuestions, 'wrong' => $this->wrongAnsweredQuestions));
     $query = "SELECT COUNT(*) cnt FROM tst_sequence WHERE active_fi = %s AND pass = %s";
     $res = $this->db->queryF($query, array('integer', 'integer'), array($this->activeId, 0));
     $row = $this->db->fetchAssoc($res);
     if ($row['cnt'] > 0) {
         $this->db->update('tst_sequence', array('sequence' => array('clob', $tracking), 'postponed' => array('text', $postponed), 'hidden' => array('text', $hidden), 'tstamp' => array('integer', time())), array('active_fi' => array('integer', $this->activeId), 'pass' => array('integer', 0)));
     } else {
         $this->db->insert('tst_sequence', array('active_fi' => array('integer', $this->activeId), 'pass' => array('integer', 0), 'sequence' => array('clob', $tracking), 'postponed' => array('text', $postponed), 'hidden' => array('text', $hidden), 'tstamp' => array('integer', time())));
     }
 }
예제 #7
0
 /**
  * Assign a given AdvancedMDRecord to this type.
  * If the AMDRecord is already assigned, nothing is done. If the AMDRecord cannot be assigned to OrgUnits/Types,
  * an Exception is thrown. Otherwise the AMDRecord is assigned (relation gets stored in DB).
  *
  * @param int $a_record_id
  *
  * @throws ilOrgUnitTypePluginException
  * @throws ilOrgUnitTypeException
  */
 public function assignAdvancedMDRecord($a_record_id)
 {
     if (!in_array($a_record_id, $this->getAssignedAdvancedMDRecordIds())) {
         if (!in_array($a_record_id, self::getAvailableAdvancedMDRecordIds())) {
             throw new ilOrgUnitTypeException("AdvancedMDRecord with ID {$a_record_id} cannot be assigned to OrgUnit types");
         }
         /** @var ilOrgUnitTypeHookPlugin $plugin */
         $disallowed = array();
         $titles = array();
         foreach ($this->getActivePlugins() as $plugin) {
             if (!$plugin->allowAssignAdvancedMDRecord($this->getId(), $a_record_id)) {
                 $disallowed[] = $plugin;
                 $titles[] = $plugin->getPluginName();
             }
         }
         if (count($disallowed)) {
             $msg = sprintf($this->lng->txt('orgu_type_msg_assign_amd_prevented'), implode(', ', $titles));
             throw new ilOrgUnitTypePluginException($msg, $disallowed);
         }
         $record_ids = $this->getAssignedAdvancedMDRecordIds();
         $record_ids[] = $a_record_id;
         $this->db->insert('orgu_types_adv_md_rec', array('type_id' => array('integer', $this->getId()), 'rec_id' => array('integer', $a_record_id)));
         // We need to update each OrgUnit from this type and map the selected records to object_id
         foreach ($this->getOrgUnitIds() as $orgu_id) {
             ilAdvancedMDRecord::saveObjRecSelection($orgu_id, 'orgu_type', $record_ids);
         }
         $this->amd_records_assigned = NULL;
         // Force reload of assigned objects
     }
 }
 public function saveToDb()
 {
     $this->db->manipulateF("DELETE FROM tst_sequence WHERE active_fi = %s AND pass = %s", array('integer', 'integer'), array($this->getActiveId(), 0));
     $this->db->insert('tst_sequence', array('active_fi' => array('integer', $this->getActiveId()), 'pass' => array('integer', 0), 'sequence' => array('clob', null), 'postponed' => array('text', null), 'hidden' => array('text', null), 'tstamp' => array('integer', time())));
     $this->saveNewlyTrackedQuestion();
     $this->saveNewlyAnsweredQuestionsAnswerStatus();
     $this->saveNewlyPostponedQuestion();
     $this->removeQuestionsNotPostponedAnymore();
     $this->saveNewlyCheckedQuestion();
     $this->removeQuestionsNotCheckedAnymore();
 }
 /**
  * syncs the GENERIC feedback from a duplicated question back to the original question
  * 
  * @final
  * @access private
  * @param integer $originalQuestionId
  * @param integer $duplicateQuestionId
  */
 private final function syncGenericFeedback($originalQuestionId, $duplicateQuestionId)
 {
     // delete generic feedback of the original question
     $this->db->manipulateF("DELETE FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s", array('integer'), array($originalQuestionId));
     // get generic feedback of the actual (duplicated) question
     $result = $this->db->queryF("SELECT * FROM {$this->getGenericFeedbackTableName()} WHERE question_fi = %s", array('integer'), array($duplicateQuestionId));
     // save generic feedback to the original question
     while ($row = $this->db->fetchAssoc($result)) {
         $nextId = $this->db->nextId($this->getGenericFeedbackTableName());
         $this->db->insert($this->getGenericFeedbackTableName(), array('feedback_id' => array('integer', $nextId), 'question_fi' => array('integer', $originalQuestionId), 'correctness' => array('text', $row['correctness']), 'feedback' => array('clob', $row['feedback']), 'tstamp' => array('integer', time())));
     }
 }
 /**
  * Update object in database
  */
 public function doUpdate()
 {
     //$this->loadValue(); //Removed Mantis #0011799
     $datatype = $this->field->getDatatype();
     $query = "DELETE FROM il_dcl_stloc" . $datatype->getStorageLocation() . "_value WHERE record_field_id = " . $this->db->quote($this->id, "integer");
     $this->db->manipulate($query);
     $next_id = $this->db->nextId("il_dcl_stloc" . $datatype->getStorageLocation() . "_value");
     // This is a workaround to ensure that date values in stloc3 are never stored as NULL, which is not allowed
     if ($datatype->getStorageLocation() == 3 && (is_null($this->value) || empty($this->value))) {
         $this->value = '0000-00-00 00:00:00';
     }
     $this->db->insert("il_dcl_stloc" . $datatype->getStorageLocation() . "_value", array("value" => array($datatype->getDbType(), $this->value), "record_field_id " => array("integer", $this->id), "id" => array("integer", $next_id)));
 }
 private function storeQuestion(ilTestSession $testSession, ilTestRandomQuestionSetQuestion $setQuestion)
 {
     $nextId = $this->db->nextId('tst_test_rnd_qst');
     $this->db->insert('tst_test_rnd_qst', array('test_random_question_id' => array('integer', $nextId), 'active_fi' => array('integer', $testSession->getActiveId()), 'question_fi' => array('integer', $setQuestion->getQuestionId()), 'sequence' => array('integer', $setQuestion->getSequencePosition()), 'pass' => array('integer', $testSession->getPass()), 'tstamp' => array('integer', time()), 'src_pool_def_fi' => array('integer', $setQuestion->getSourcePoolDefinitionId())));
 }
 /**
  * @param $testId
  */
 private function insertDbRecord($testId)
 {
     $nextId = $this->db->nextId('tst_rnd_quest_set_qpls');
     $this->db->insert('tst_rnd_quest_set_qpls', array('def_id' => array('integer', $nextId), 'test_fi' => array('integer', $testId), 'pool_fi' => array('integer', $this->getPoolId()), 'pool_title' => array('text', $this->getPoolTitle()), 'pool_path' => array('text', $this->getPoolPath()), 'pool_quest_count' => array('integer', $this->getPoolQuestionCount()), 'origin_tax_fi' => array('integer', $this->getOriginalFilterTaxId()), 'origin_node_fi' => array('integer', $this->getOriginalFilterTaxNodeId()), 'mapped_tax_fi' => array('integer', $this->getMappedFilterTaxId()), 'mapped_node_fi' => array('integer', $this->getMappedFilterTaxNodeId()), 'quest_amount' => array('integer', $this->getQuestionAmount()), 'sequence_pos' => array('integer', $this->getSequencePosition())));
     $this->setId($nextId);
 }
 /**
  * Insert a (member,value) pair in database
  *
  * @param $member
  * @param $value
  */
 protected function insertMember($member, $value)
 {
     $this->db->insert(self::TABLE_NAME, array('orgu_type_id' => array('integer', $this->getOrguTypeId()), 'lang' => array('text', $this->getLang()), 'member' => array('text', $member), 'value' => array('text', $value)));
 }