19declare(strict_types=1);
56 $this->skill_tree_service =
$DIC->skills()->tree();
62 SELECT obj_fi, question_fi, skill_base_fi, skill_tref_fi, skill_points, eval_mode
63 FROM qpl_qst_skl_assigns
66 AND skill_base_fi = %s
67 AND skill_tref_fi = %s
70 $res = $this->db->queryF(
72 [
'integer',
'integer',
'integer',
'integer'],
73 [$this->parent_obj_id, $this->question_id, $this->skill_base_id, $this->skill_tref_id]
76 $row = $this->db->fetchAssoc(
$res);
83 if ($this->
getEvalMode() == self::EVAL_MODE_BY_QUESTION_SOLUTION) {
91 $this->solution_comparison_expression_list->load();
98 'qpl_qst_skl_assigns',
111 $this->db->insert(
'qpl_qst_skl_assigns', [
121 if ($this->
getEvalMode() == self::EVAL_MODE_BY_QUESTION_SOLUTION) {
129 $this->solution_comparison_expression_list->save();
135 DELETE FROM qpl_qst_skl_assigns
138 AND skill_base_fi = %s
139 AND skill_tref_fi = %s
142 $this->db->manipulateF(
144 [
'integer',
'integer',
'integer',
'integer'],
154 $this->solution_comparison_expression_list->delete();
161 FROM qpl_qst_skl_assigns
164 AND skill_base_fi = %s
165 AND skill_tref_fi = %s
168 $res = $this->db->queryF(
170 [
'integer',
'integer',
'integer',
'integer'],
174 $row = $this->db->fetchAssoc(
$res);
176 return $row[
'cnt'] > 0;
183 FROM qpl_qst_skl_assigns
185 AND skill_base_fi = %s
186 AND skill_tref_fi = %s
189 $res = $this->db->queryF(
191 [
'integer',
'integer',
'integer'],
195 $row = $this->db->fetchAssoc(
$res);
197 return $row[
'cnt'] > 0;
202 $this->skill_points = $skillPoints;
212 $this->question_id = $questionId;
222 $this->skill_base_id = $skillBaseId;
232 $this->skill_tref_id = $skillTrefId;
242 $this->parent_obj_id = $parentObjId;
256 $path = $this->skill_tree_service->getSkillTreePath(
262 foreach (
$path as $node) {
263 if ($node[
'title'] ===
"Skill Tree Root Node") {
267 if ($node[
'child'] > 1 && $node[
'skill_id'] != $this->
getSkillBaseId()) {
268 $nodes[] = $node[
'title'];
272 $root_node = reset(
$path);
275 $this->skill_tree_service->getObjSkillTreeById($root_node[
'skl_tree_id'])->getTitleForHTMLOutput()
283 $this->skill_title = $skillTitle;
293 $this->skill_path = $skillPath;
308 $this->eval_mode = $evalMode;
318 $this->solution_comparison_expression_list->setQuestionId($this->
getQuestionId());
319 $this->solution_comparison_expression_list->setSkillBaseId($this->
getSkillBaseId());
320 $this->solution_comparison_expression_list->setSkillTrefId($this->
getSkillTrefId());
333 foreach ($this->solution_comparison_expression_list->get() as $expression) {
334 if ($expression->getPoints() > $max_points) {
335 $max_points = $expression->getPoints();
351 is_numeric($skillPoints) &&
352 str_replace([
'.',
','],
'', $skillPoints) == $skillPoints &&
setQuestionId(int $questionId)
setParentObjId(int $parentObjId)
SkillTreeService $skill_tree_service
const DEFAULT_COMPETENCE_POINTS
loadComparisonExpressions()
loadAdditionalSkillData()
setEvalMode(string $evalMode)
setSkillTrefId(int $skillTrefId)
getSolutionComparisonExpressionList()
setSkillPoints(int $skillPoints)
isValidSkillPoint($skillPoints)
setSkillTitle($skillTitle)
ilAssQuestionSolutionComparisonExpressionList $solution_comparison_expression_list
saveComparisonExpressions()
deleteComparisonExpressions()
setSkillBaseId(int $skillBaseId)
initSolutionComparisonExpressionList()
__construct(ilDBInterface $db)
const EVAL_MODE_BY_QUESTION_RESULT
const EVAL_MODE_BY_QUESTION_SOLUTION
static _lookupTitle(int $a_obj_id, int $a_tref_id=0)