19 declare(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;
313 return $this->eval_mode === self::EVAL_MODE_BY_QUESTION_SOLUTION;
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 &&
SkillTreeService $skill_tree_service
saveComparisonExpressions()
static _lookupTitle(int $a_obj_id, int $a_tref_id=0)
isValidSkillPoint($skillPoints)
ilAssQuestionSolutionComparisonExpressionList $solution_comparison_expression_list
setEvalMode(string $evalMode)
setSkillBaseId(int $skillBaseId)
setSkillPoints(int $skillPoints)
setQuestionId(int $questionId)
loadComparisonExpressions()
setParentObjId(int $parentObjId)
deleteComparisonExpressions()
__construct(ilDBInterface $db)
setSkillTitle($skillTitle)
getSolutionComparisonExpressionList()
setSkillTrefId(int $skillTrefId)
const DEFAULT_COMPETENCE_POINTS
loadAdditionalSkillData()
const EVAL_MODE_BY_QUESTION_SOLUTION
const EVAL_MODE_BY_QUESTION_RESULT
initSolutionComparisonExpressionList()