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()))); } }
/** * 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))); }