19declare(strict_types=1);
40 public function normalize($value): array|float|bool|
int|string|null
47 'parent_id' => $this->tt->normalize(
new Id($value->getParentObjId(),
'object')),
48 'question_id' => $this->tt->normalize(
new Id($value->getQuestionId(),
'question')),
49 'base_id' => $this->tt->normalize(
new Id($value->getSkillBaseId(),
'skill_base')),
50 'tref_id' => $this->tt->normalize(
new Id($value->getSkillTrefId(),
'skill_tref')),
51 'original_title' => $value->getSkillTitle(),
52 'original_path' => $value->getSkillPath(),
53 'eval_mode' => $value->getEvalMode(),
56 switch ($value->getEvalMode()) {
57 case \ilAssQuestionSkillAssignment::EVAL_MODE_BY_QUESTION_RESULT:
58 $normalized[
'points'] = $value->getSkillPoints();
61 case \ilAssQuestionSkillAssignment::EVAL_MODE_BY_QUESTION_SOLUTION:
75 'points' => $expression->getPoints(),
76 'expression' => $expression->getExpression(),
77 'order_index' => $expression->getOrderIndex(),
87 if ($type !== \ilAssQuestionSkillAssignment::class) {
91 $assignment = new \ilAssQuestionSkillAssignment($this->db);
92 $assignment->setParentObjId($this->tt->denormalize($value[
'parent_id'], Id::class)->getId());
93 $assignment->setQuestionId($this->tt->denormalize($value[
'question_id'], Id::class)->getId());
94 $assignment->setSkillBaseId($this->tt->denormalize($value[
'base_id'], Id::class)->getId());
95 $assignment->setSkillTrefId($this->tt->denormalize($value[
'tref_id'], Id::class)->getId());
96 $assignment->setSkillTitle($this->tt->string($value[
'original_title']));
97 $assignment->setSkillPath($this->tt->string($value[
'original_path']));
98 $assignment->setEvalMode($this->tt->string($value[
'eval_mode']));
99 $assignment->initSolutionComparisonExpressionList();
101 switch ($assignment->getEvalMode()) {
102 case \ilAssQuestionSkillAssignment::EVAL_MODE_BY_QUESTION_RESULT:
103 $assignment->setSkillPoints($this->tt->int($value[
'points']));
106 case \ilAssQuestionSkillAssignment::EVAL_MODE_BY_QUESTION_SOLUTION:
107 $list = $assignment->getSolutionComparisonExpressionList();
108 foreach ($value[
'solution_comparison_expressions'] as $normalized) {
126 $expression->setOrderIndex($this->tt->int($normalized[
'order_index']));
127 $expression->setExpression($this->tt->string($normalized[
'expression']));
128 $expression->setPoints($this->tt->int($normalized[
'points']));
Wrapper object for an object identifier and an optional object type the identifier belongs to.
Exception thrown when a value cannot be normalized or denormalized.
<\ilAssQuestionSkillAssignment, array>
denormalize(array|float|bool|int|string|null $value, string $type)
Converts a normalized form back into a value.
normalize($value)
Converts a value into a normalized form.
__construct(private readonly Transformations $tt, private readonly \ilDBInterface $db)
denormalizeExpression(array $normalized, \ilAssQuestionSkillAssignment $assignment)
normalizeExpressionList(\ilAssQuestionSkillAssignment $value)
getSolutionComparisonExpressionList()
initSolutionComparisonExpressionList()
setQuestionId(?int $question_id)
A Normalizer is responsible for converting a value into a normalized form and back.