ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilIndividualAssessmentUserGrading.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22use ILIAS\Refinery\Factory as Refinery;
23use ILIAS\Data\Factory as DataFactory;
25
27{
28 protected string $name;
29 protected string $record;
30 protected string $internal_note;
31 protected ?string $file;
32 protected bool $is_file_visible;
33 protected int $learning_progress;
34 protected string $place;
35 protected ?DateTimeImmutable $event_time;
36 protected bool $notify;
37 protected bool $finalized;
38
39 public function __construct(
40 string $name,
41 string $record,
42 string $internal_note,
43 ?string $file,
46 string $place,
47 ?DateTimeImmutable $event_time,
48 bool $notify,
49 bool $finalized = false
50 ) {
51 $this->name = $name;
52 $this->record = $record;
53 $this->internal_note = $internal_note;
54 $this->file = $file;
55 $this->is_file_visible = $is_file_visible;
56 $this->learning_progress = $learning_progress;
57 $this->place = $place;
58 $this->event_time = $event_time;
59 $this->notify = $notify;
60 $this->finalized = $finalized;
61 }
62
63 public function getName(): string
64 {
65 return $this->name;
66 }
67
68 public function getRecord(): string
69 {
70 return $this->record;
71 }
72
73 public function getInternalNote(): string
74 {
76 }
77
78 public function getFile(): ?string
79 {
80 return $this->file;
81 }
82
83 public function hasFile(): bool
84 {
85 return !empty($this->file);
86 }
87
88 public function isFileVisible(): bool
89 {
91 }
92
93 public function getLearningProgress(): int
94 {
96 }
97
98 public function getPlace(): string
99 {
100 return $this->place;
101 }
102
103 public function getEventTime(): ?DateTimeImmutable
104 {
105 return $this->event_time;
106 }
107
108 public function isNotify(): bool
109 {
110 return $this->notify;
111 }
112
113 public function isFinalized(): bool
114 {
115 return $this->finalized;
116 }
117
118 public function withFinalized(bool $finalize): ilIndividualAssessmentUserGrading
119 {
120 $clone = clone $this;
121 $clone->finalized = $finalize;
122 return $clone;
123 }
124
126 {
127 $clone = clone $this;
128 $clone->file = $file;
129 return $clone;
130 }
131
132 public function toFormInput(
133 Field\Factory $input,
134 DataFactory $data_factory,
137 AbstractCtrlAwareUploadHandler $file_handler,
138 \ILIAS\Data\DateFormat\DateFormat $date_format,
139 string $record_template,
140 array $grading_options,
141 bool $may_be_edited = true,
142 bool $place_required = false,
143 bool $file_required = false,
144 bool $amend = false
146 $name = $input
147 ->text($lng->txt('name'), '')
148 ->withDisabled(true)
149 ->withValue($this->getName())
150 ;
151
152 $record = $input
153 ->textarea($lng->txt('iass_record'), $lng->txt('iass_record_info'))
154 ->withValue($this->getRecord() ? "" : $record_template)
155 ->withDisabled(!$may_be_edited)
156 ;
157
158 $internal_note = $input
159 ->textarea($lng->txt('iass_internal_note'), $lng->txt('iass_internal_note_info'))
160 ->withValue($this->getInternalNote())
161 ->withDisabled(!$may_be_edited)
162 ;
163
164 $file = $input
165 ->file($file_handler, $lng->txt('iass_upload_file'), $lng->txt('iass_file_dropzone'))
166 ->withValue($this->hasFile() ? [$this->getFile()] : [])
167 ->withRequired($file_required)
168 ;
169
170 $file_visible = $input
171 ->checkbox($lng->txt('iass_file_visible_examinee'))
172 ->withValue($this->isFileVisible())
173 ->withDisabled(!$may_be_edited)
174 ;
175
176 $learning_progress = $input
177 ->select($lng->txt('grading'), $grading_options)
179 ->withDisabled(!$may_be_edited)
180 ->withRequired(true)
181 ;
182
183 $place = $input
184 ->text($lng->txt('iass_place'))
185 ->withValue($this->getPlace())
186 ->withRequired($place_required)
187 ->withDisabled(!$may_be_edited)
188 ;
189
190 $event_time = $input
191 ->dateTime($lng->txt('iass_event_time'))
192 ->withUseTime(true)
193 ->withFormat($date_format)
194 ->withRequired($place_required)
195 ->withDisabled(!$may_be_edited)
196 ;
197
198 if (!is_null($this->getEventTime())) {
199 $event_time = $event_time->withValue(
200 $this->getEventTime()
201 );
202 }
203
204 $notify = $input
205 ->checkbox($lng->txt('iass_notify'), $lng->txt('iass_notify_explanation'))
206 ->withValue($this->isNotify())
207 ->withDisabled(!$may_be_edited)
208 ;
209
210 $fields = [
211 'name' => $name,
212 'record' => $record,
213 'internal_note' => $internal_note,
214 'file' => $file,
215 'file_visible' => $file_visible,
216 'learning_progress' => $learning_progress,
217 'place' => $place,
218 'event_time' => $event_time,
219 'notify' => $notify
220 ];
221
222 if (!$amend) {
223 $finalized = $input
224 ->checkbox($lng->txt('iass_finalize'), $lng->txt('iass_finalize_info'))
225 ->withValue($this->isFinalized())
226 ->withDisabled(!$may_be_edited)
227 ;
228
229 $fields['finalized'] = $finalized;
230 }
231
232 return $input->section(
233 $fields,
234 $lng->txt('iass_edit_record')
235 )->withAdditionalTransformation(
236 $refinery->custom()->transformation(function ($values) use ($amend) {
237 $finalized = $this->isFinalized();
238 if (!$amend) {
239 $finalized = $values['finalized'];
240 }
241
242 $file = null;
243 if (
244 isset($values['file'][0]) &&
245 trim($values['file'][0]) != ''
246 ) {
247 $file = $values['file'][0];
248 }
249
251 $values['name'],
252 $values['record'],
253 $values['internal_note'],
254 $file,
255 $values['file_visible'],
256 (int) $values['learning_progress'],
257 $values['place'],
258 $values['event_time'],
259 $values['notify'],
261 );
262 })
263 );
264 }
265}
A Date Format provides a format definition akin to PHP's date formatting options, but stores the sing...
Definition: DateFormat.php:27
Builds data types.
Definition: Factory.php:36
Definition: UI.php:24
return true
__construct(string $name, string $record, string $internal_note, ?string $file, bool $is_file_visible, int $learning_progress, string $place, ?DateTimeImmutable $event_time, bool $notify, bool $finalized=false)
toFormInput(Field\Factory $input, DataFactory $data_factory, ilLanguage $lng, Refinery $refinery, AbstractCtrlAwareUploadHandler $file_handler, \ILIAS\Data\DateFormat\DateFormat $date_format, string $record_template, array $grading_options, bool $may_be_edited=true, bool $place_required=false, bool $file_required=false, bool $amend=false)
language handling
This describes inputs that can be used in forms.
Definition: FormInput.php:33
This is what a factory for input fields looks like.
Definition: Factory.php:31
This describes commonalities between all inputs.
Definition: Input.php:47
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Checkbox.php:21
withValue($value)
Get an input like this with another value displayed on the client side.
Definition: Group.php:61
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
global $lng
Definition: privfeed.php:31