ILIAS  trunk Revision v12.0_alpha-1540-g00f839d5fa1
TestScoringInteraction.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\Test\Logging;
22
25use ILIAS\UI\Factory as UIFactory;
26use ILIAS\UI\Component\Listing\Descriptive as DescriptiveListing;
27use ILIAS\StaticURL\Services as StaticURLServices;
30
32{
33 public const IDENTIFIER = 'si';
34
35 private int $id;
36
40 public function __construct(
41 private readonly int $test_ref_id,
42 private readonly int $question_id,
43 private readonly int $admin_id,
44 private readonly int $pax_id,
45 private readonly TestScoringInteractionTypes $interaction_type,
46 private readonly int $modification_timestamp,
47 private readonly array $additional_data
48 ) {
49
50 }
51
52 public function getUniqueIdentifier(): ?string
53 {
54 return self::IDENTIFIER . '_' . $this->id;
55 }
56
57 public function withId(int $id): self
58 {
59 $clone = clone $this;
60 $clone->id = $id;
61 return $clone;
62 }
63
66 TitleColumnsBuilder $title_builder,
67 DataRowBuilder $row_builder,
68 array $environment
69 ): DataRow {
70 $values = [
71 'date_and_time' => \DateTimeImmutable::createFromFormat('U', (string) $this->modification_timestamp)
72 ->setTimezone($environment['timezone']),
73 'corresponding_test' => $title_builder->buildTestTitleAsLink(
74 $this->test_ref_id
75 ),
76 'admin' => \ilUserUtil::getNamePresentation(
77 $this->admin_id,
78 false,
79 false,
80 '',
81 true
82 ),
83 'participant' => \ilUserUtil::getNamePresentation(
84 $this->pax_id,
85 false,
86 false,
87 '',
88 true
89 ),
90 'log_entry_type' => $lng->txt(self::LANG_VAR_PREFIX . self::IDENTIFIER),
91 'interaction_type' => $lng->txt(self::LANG_VAR_PREFIX . $this->interaction_type->value)
92 ];
93
94 if ($this->question_id !== null) {
95 $values['question'] = $title_builder->buildQuestionTitleAsLink(
96 $this->question_id,
97 $this->test_ref_id
98 );
99 }
100
101 return $row_builder->buildDataRow(
102 $this->getUniqueIdentifier(),
103 $values
104 )->withDisabledAction(
106 $this->additional_data === []
107 );
108 }
109
110 public function getLogEntryAsExportRow(
112 TitleColumnsBuilder $title_builder,
113 AdditionalInformationGenerator $additional_info,
114 array $environment
115 ): array {
116 return [
117 \DateTimeImmutable::createFromFormat('U', (string) $this->modification_timestamp)
118 ->setTimezone($environment['timezone'])
119 ->format($environment['date_format']),
120 $title_builder->buildTestTitleAsText($this->test_ref_id),
121 \ilUserUtil::getNamePresentation(
122 $this->admin_id,
123 false,
124 false,
125 '',
126 true
127 ),
128 \ilUserUtil::getNamePresentation(
129 $this->pax_id,
130 false,
131 false,
132 '',
133 true
134 ),
135 '',
136 $title_builder->buildQuestionTitleAsText($this->question_id),
137 $lng->txt(self::LANG_VAR_PREFIX . self::IDENTIFIER),
138 $lng->txt(self::LANG_VAR_PREFIX . $this->interaction_type->value),
139 $additional_info->parseForExport($this->additional_data, $environment)
140 ];
141 }
142
144 AdditionalInformationGenerator $additional_info,
145 UIFactory $ui_factory,
146 array $environment
147 ): DescriptiveListing {
148 return $additional_info->parseForTable($this->additional_data, $environment);
149 }
150
151 public function toStorage(): array
152 {
153 return [
154 'ref_id' => [\ilDBConstants::T_INTEGER , $this->test_ref_id],
155 'qst_id' => [\ilDBConstants::T_INTEGER , $this->question_id],
156 'admin_id' => [\ilDBConstants::T_INTEGER , $this->admin_id],
157 'pax_id' => [\ilDBConstants::T_INTEGER , $this->pax_id],
158 'interaction_type' => [\ilDBConstants::T_TEXT , $this->interaction_type->value],
159 'modification_ts' => [\ilDBConstants::T_INTEGER , $this->modification_timestamp],
160 'additional_data' => [\ilDBConstants::T_CLOB , json_encode($this->additional_data)]
161 ];
162 }
163}
Builds a Color from either hex- or rgb values.
Definition: Factory.php:31
Class Services.
Definition: Services.php:38
__construct(private readonly int $test_ref_id, private readonly int $question_id, private readonly int $admin_id, private readonly int $pax_id, private readonly TestScoringInteractionTypes $interaction_type, private readonly int $modification_timestamp, private readonly array $additional_data)
getLogEntryAsExportRow(\ilLanguage $lng, TitleColumnsBuilder $title_builder, AdditionalInformationGenerator $additional_info, array $environment)
getParsedAdditionalInformation(AdditionalInformationGenerator $additional_info, UIFactory $ui_factory, array $environment)
getLogEntryAsDataTableRow(\ilLanguage $lng, TitleColumnsBuilder $title_builder, DataRowBuilder $row_builder, array $environment)
buildQuestionTitleAsLink(int $question_id, int $test_ref_id)
return true
language handling
Class ilUserUtil.
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
buildDataRow(string $id, array $record)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $lng
Definition: privfeed.php:26