19declare(strict_types=1);
39 private string $short_name =
"",
40 private string $official_name =
"",
41 private float $minimum_level = 0.0,
42 private bool $passed =
false
48 return $this->short_name;
54 $clone->short_name = $short_name;
60 return $this->official_name;
66 $clone->official_name = $official_name;
72 return $this->minimum_level;
77 if (($minimum_level >= 0.0) && ($minimum_level <= 100.0)) {
79 $clone->minimum_level = $minimum_level;
82 throw new \Exception(
'Markstep: minimum level must be between 0 and 100');
94 $clone->passed = $passed;
107 $percent_trafo =
$refinery->kindlyTo()->float();
108 $percent_constraint =
$refinery->custom()->constraint(
109 static function (
float $v):
bool {
110 if ($v > 100.0 || $v < 0.0) {
115 $lng->txt(
'tst_mark_minimum_level_invalid')
117 $mark_trafo =
$refinery->custom()->transformation(
118 static function (array $vs):
Mark {
121 $vs[
'official_name'],
122 $vs[
'minimum_level'],
127 $missing_passed_check =
$refinery->custom()->constraint(
128 static function (Mark $v) use ($mark_schema) {
129 if ($v->getPassed() ===
true) {
135 if ($local_schema->checkForMissingPassed()) {
140 $lng->txt(
'no_passed_mark')
142 $missing_zero_check =
$refinery->custom()->constraint(
143 static function (Mark $v) use ($mark_schema) {
144 if ($v->getMinimumLevel() > 0.0) {
150 if ($local_schema->checkForMissingZeroPercentage()) {
155 $lng->txt(
'no_passed_mark')
158 'name' =>
$f->text(
$lng->txt(
'tst_mark_short_form'))
160 ->withRequired(
true),
161 'official_name' => $f->text(
$lng->txt(
'tst_mark_official_form'))
163 ->withRequired(
true),
164 'minimum_level' => $f->text(
$lng->txt(
'tst_mark_minimum_level'))
165 ->withAdditionalTransformation($percent_trafo)
166 ->withAdditionalTransformation($percent_constraint)
168 ->withRequired(
true),
169 'passed' => $f->checkbox(
$lng->txt(
'tst_mark_passed'))
172 ->withAdditionalTransformation($missing_passed_check)
173 ->withAdditionalTransformation($missing_zero_check);
179 'short_name' => [
'text', mb_substr($this->getShortName(), 0, 15)],
180 'official_name' => [
'text', mb_substr($this->getOfficialName(), 0, 50)],
181 'minimum_level' => [
'float', $this->getMinimumLevel()],
182 'passed' => [
'text', (
int) $this->getPassed()],
183 'tstamp' => [
'integer', time()]
190 'short_name' => $this->getShortName(),
191 'official_name' => $this->getOfficialName(),
192 'minimum_level' => $this->getMinimumLevel(),
193 'passed' => $this->getPassed()
200 (string)
$data[
'short_name'],
201 (
string)
$data[
'official_name'],
202 (float)
$data[
'minimum_level'],
203 (
bool)
$data[
'passed']
A class defining mark schemas for assessment test objects.
withMarkSteps(array $mark_steps)
A class defining marks for assessment test objects.
__construct(private string $short_name="", private string $official_name="", private float $minimum_level=0.0, private bool $passed=false)
withOfficialName(string $official_name)
toExport()
Transform the object into a simple, associative array.
static fromExport(array $data)
Creates an instance of the object from an array.
toForm(\ilLanguage $lng, FieldFactory $f, Refinery $refinery, MarkSchema $mark_schema)
withShortName(string $short_name)
withMinimumLevel(float $minimum_level)
This interface allows an object to define its own transformation into a language-neutral,...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...