ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilIndividualAssessmentUserGrading.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
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;
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,
44  bool $is_file_visible,
45  int $learning_progress,
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  {
75  return $this->internal_note;
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 
125  public function withFile(?string $file): ilIndividualAssessmentUserGrading
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
145  ): \ILIAS\UI\Component\Input\Container\Form\FormInput {
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')
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'],
260  $finalized
261  );
262  })
263  );
264  }
265 }
This is what a factory for input fields looks like.
Definition: Factory.php:28
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
Interface Observer Contains several chained tasks and infos about them.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Checkbox.php:21
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
A Date Format provides a format definition akin to PHP&#39;s date formatting options, but stores the sing...
Definition: DateFormat.php:26
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
withValue($value)
Get an input like this with another value displayed on the client side.
Definition: Group.php:61
withValue($value)
Get an input like this with another value displayed on the client side.
__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)
global $lng
Definition: privfeed.php:31
This describes inputs that can be used in forms.
Definition: FormInput.php:32