ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilADTMultiText.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21class ilADTMultiText extends ilADT
22{
23 protected ?array $values;
24
25 protected function isValidDefinition(ilADTDefinition $a_def): bool
26 {
27 return $a_def instanceof ilADTMultiTextDefinition;
28 }
29
30 public function reset(): void
31 {
32 parent::reset();
33 $this->values = null;
34 }
35
36 // properties
37
38 public function setTextElements(?array $a_values = null): void
39 {
40 if (is_array($a_values)) {
41 if (count($a_values)) {
42 foreach ($a_values as $idx => $element) {
43 $a_values[$idx] = trim($element);
44 if (!$a_values[$idx]) {
45 unset($a_values[$idx]);
46 }
47 }
48 $a_values = array_unique($a_values);
49 }
50 if (!count($a_values)) {
51 $a_values = null;
52 }
53 }
54 $this->values = $a_values;
55 }
56
57 public function getTextElements(): ?array
58 {
59 return $this->values;
60 }
61
62 // comparison
63
64 public function equals(ilADT $a_adt): ?bool
65 {
66 if ($this->getDefinition()->isComparableTo($a_adt)) {
67 return ($this->getCheckSum() == $a_adt->getCheckSum());
68 }
69 return null;
70 }
71
72 public function isLarger(ilADT $a_adt): ?bool
73 {
74 return null;
75 }
76
77 public function isSmaller(ilADT $a_adt): ?bool
78 {
79 return null;
80 }
81
82
83 // null
84
88 public function isNull(): bool
89 {
90 $all = $this->getTextElements();
91 return (!is_array($all) || !count($all));
92 }
93
94 // validation
95
96 public function isValid(): bool
97 {
98 $valid = parent::isValid();
99 if (!$this->isNull()) {
100 $max_size = $this->getDefinition()->getMaxSize();
101 if ($max_size && $max_size < count((array) $this->getTextElements())) {
102 $valid = false;
103 $this->addValidationError(self::ADT_VALIDATION_ERROR_MAX_SIZE);
104 }
105
106 $max_len = $this->getDefinition()->getMaxLength();
107 if ($max_len) {
108 foreach ((array) $this->getTextElements() as $element) {
109 if ($max_len < strlen($element)) {
110 $valid = false;
111 $this->addValidationError(self::ADT_VALIDATION_ERROR_MAX_LENGTH);
112 }
113 }
114 }
115 }
116 return $valid;
117 }
118
119 public function getCheckSum(): ?string
120 {
121 if (!$this->isNull()) {
122 $elements = $this->getTextElements();
123 sort($elements);
124 return md5(implode("", $elements));
125 }
126 return null;
127 }
128
129 // stdClass
130
131 public function exportStdClass(): ?stdClass
132 {
133 if (!$this->isNull()) {
134 $obj = new stdClass();
135 $obj->value = $this->getTextElements();
136 return $obj;
137 }
138 return null;
139 }
140
141 public function importStdClass(?stdClass $a_std): void
142 {
143 if (is_object($a_std)) {
144 $this->setTextElements($a_std->value);
145 }
146 }
147}
ADT definition base class.
isValidDefinition(ilADTDefinition $a_def)
Check if definition is valid for ADT.
isLarger(ilADT $a_adt)
Check if given ADT is larger than self.
importStdClass(?stdClass $a_std)
Import value from stdClass.
setTextElements(?array $a_values=null)
reset()
Init property defaults.
getCheckSum()
Get unique checksum.
isSmaller(ilADT $a_adt)
Check if given ADT is smaller than self.
equals(ilADT $a_adt)
Check if given ADT equals self.
exportStdClass()
Export value as stdClass.
ADT base class.
Definition: class.ilADT.php:26
addValidationError(string $a_error_code)
getCheckSum()
Get unique checksum.
getDefinition()
Get definition.
$valid