ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilStudyProgrammeValidityOfAchievedQualificationSettings.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 2019 Daniel Weise <daniel.weise@concepts-and-training.de> Extended GPL, see docs/LICENSE */
4
5declare(strict_types = 1);
6
8use \ILIAS\UI\Component\Input\Field;
9use \ILIAS\Refinery\Factory as Refinery;
10
12{
17
22
26 protected $restart_period;
27
28 public function __construct(
32 ) {
33 if (!is_null($qualification_period) && 0 > $qualification_period) {
34 throw new InvalidArgumentException(
35 'Numbers less than 0 are not allowed for qualification_period'
36 );
37 }
38
39 if (!is_null($restart_period) && 0 > $restart_period) {
40 throw new InvalidArgumentException(
41 'Numbers less than 0 are not allowed for restart_period'
42 );
43 }
44
45 $this->qualification_period = $qualification_period;
46 $this->qualification_date = $qualification_date;
47 $this->restart_period = $restart_period;
48 }
49
50 public function getQualificationPeriod() : ?int
51 {
53 }
54
55 public function withQualificationPeriod(
59 throw new InvalidArgumentException(
60 'Numbers less than 0 are not allowed'
61 );
62 }
63 $clone = clone $this;
64 $clone->qualification_period = $qualification_period;
65
66 return $clone;
67 }
68
69 public function getQualificationDate() : ?DateTime
70 {
71 return $this->qualification_date;
72 }
73
74 public function withQualificationDate(
75 ?DateTime $qualification_date
77 $clone = clone $this;
78 $clone->qualification_date = $qualification_date;
79
80 return $clone;
81 }
82
83 public function getRestartPeriod() : ?int
84 {
85 return $this->restart_period;
86 }
87
88 public function withRestartPeriod(
89 ?int $restart_period
91 if (!is_null($restart_period) && 0 > $restart_period) {
92 throw new InvalidArgumentException(
93 'Numbers less than 0 are not allowed'
94 );
95 }
96 $clone = clone $this;
97 $clone->restart_period = $restart_period;
98
99 return $clone;
100 }
101
102 public function toFormInput(
103 Field\Factory $input,
105 Refinery $refinery,
106 Factory $data_factory
107 ) : Field\Input {
108 $format = $data_factory->dateFormat()->germanShort();
109 $grp1 = $input->group([], $lng->txt('prg_no_validity_qualification'));
110 $grp2 = $input->group(
111 [
112 'vq_period' => $input->numeric(
113 '',
114 $lng->txt('validity_qualification_period_desc')
115 )
116 ->withAdditionalTransformation($refinery->int()->isGreaterThan(0))
117 ->withValue($this->getQualificationPeriod() !== null ? $this->getQualificationPeriod() : null)
118 ],
119 $lng->txt('validity_qualification_period')
120 );
121 $grp3 = $input->group(
122 [
123 'vq_date' => $input->dateTime(
124 '',
125 $lng->txt('validity_qualification_date_desc')
126 )
127 ->withFormat($format)
128 ->withValue($this->getQualificationDate() !== null ? $this->getQualificationDate()->format('d.m.Y') : '')
129 ->withRequired(true)
130 ],
131 $lng->txt('validity_qualification_date')
132 );
133 $grp4 = $input->group([], $lng->txt('prg_no_restart'));
134 $grp5 = $input->group(
135 [
136 'vq_restart_period' => $input->numeric(
137 '',
138 $lng->txt('restart_period_desc')
139 )
140 ->withAdditionalTransformation($refinery->int()->isGreaterThan(0))
141 ->withValue($this->getRestartPeriod() !== null ? $this->getRestartPeriod() : null)
142 ],
143 $lng->txt('restart_period')
144 );
145
146 $sg1 = $input->switchableGroup(
147 [
148 'opt_no_validity_qualification' => $grp1,
149 'opt_validity_qualification_period' => $grp2,
150 'opt_validity_qualification_date' => $grp3
151 ],
152 ''
153 );
154
155 $sg2 = $input->switchableGroup(
156 [
157 'opt_no_restart' => $grp4,
158 'opt_restart_period' => $grp5,
159 ],
160 ''
161 );
162
163 $validity_qualification = "opt_no_validity_qualification";
164 if (!is_null($this->getQualificationPeriod()) && $this->getQualificationPeriod() > 0) {
165 $validity_qualification = 'opt_validity_qualification_period';
166 }
167
168 if (!is_null($this->getQualificationDate())) {
169 $validity_qualification = 'opt_validity_qualification_date';
170 }
171
172 $restart_value = 'opt_no_restart';
173 if (!is_null($this->getRestartPeriod()) && $this->getRestartPeriod() > 0) {
174 $restart_value = 'opt_restart_period';
175 }
176
177 return $input->section(
178 [
179 'validity_qualification' => $sg1->withValue($validity_qualification),
180 'restart' => $sg2->withValue($restart_value)
181 ],
182 $lng->txt('prg_validity_of_qualification')
183 )
184 ->withAdditionalTransformation($refinery->custom()->transformation(function (array $vals) {
185 $vq_period = null;
186 $vq_date = null;
187 $restart = null;
188
189 if (isset($vals['validity_qualification'][1]['vq_period'])) {
190 $vq_period = (int) $vals['validity_qualification'][1]['vq_period'];
191 }
192
193 if (isset($vals['validity_qualification'][1]['vq_date'])) {
194 $vq_date = new DateTime($vals['validity_qualification'][1]['vq_date']);
195 }
196
197 if (
198 count($vals['restart'][1]) > 0 &&
199 !is_null($vals['restart'][1]['vq_restart_period'])
200 ) {
201 $restart = (int) $vals['restart'][1]['vq_restart_period'];
202 }
203
205 $vq_period,
206 $vq_date,
207 $restart
208 );
209 }));
210 }
211}
An exception for terminatinating execution or to throw for unit testing.
Builds data types.
Definition: Factory.php:20
language handling
__construct(?int $qualification_period, ?DateTime $qualification_date, ?int $restart_period)
toFormInput(Field\Factory $input, \ilLanguage $lng, Refinery $refinery, Factory $data_factory)
if(!file_exists(getcwd() . '/ilias.ini.php'))
registration confirmation script for ilias
Definition: confirmReg.php:12
This describes the datetime-field.
Definition: DateTime.php:14
This describes commonalities between all inputs.
Definition: Input.php:32
$format
Definition: metadata.php:218
$lng