ILIAS  release_8 Revision v8.24
class.ilADTMultiText.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
5class ilADTMultiText extends ilADT
6{
7 protected ?array $values;
8
9 protected function isValidDefinition(ilADTDefinition $a_def): bool
10 {
11 return $a_def instanceof ilADTMultiTextDefinition;
12 }
13
14 public function reset(): void
15 {
16 parent::reset();
17 $this->values = null;
18 }
19
20 // properties
21
22 public function setTextElements(?array $a_values = null): void
23 {
24 if (is_array($a_values)) {
25 if (count($a_values)) {
26 foreach ($a_values as $idx => $element) {
27 $a_values[$idx] = trim($element);
28 if (!$a_values[$idx]) {
29 unset($a_values[$idx]);
30 }
31 }
32 $a_values = array_unique($a_values);
33 }
34 if (!count($a_values)) {
35 $a_values = null;
36 }
37 }
38 $this->values = $a_values;
39 }
40
41 public function getTextElements(): ?array
42 {
43 return $this->values;
44 }
45
46 // comparison
47
48 public function equals(ilADT $a_adt): ?bool
49 {
50 if ($this->getDefinition()->isComparableTo($a_adt)) {
51 return ($this->getCheckSum() == $a_adt->getCheckSum());
52 }
53 return null;
54 }
55
56 public function isLarger(ilADT $a_adt): ?bool
57 {
58 return null;
59 }
60
61 public function isSmaller(ilADT $a_adt): ?bool
62 {
63 return null;
64 }
65
66
67 // null
68
72 public function isNull(): bool
73 {
74 $all = $this->getTextElements();
75 return (!is_array($all) || !count($all));
76 }
77
78 // validation
79
80 public function isValid(): bool
81 {
82 $valid = parent::isValid();
83 if (!$this->isNull()) {
84 $max_size = $this->getDefinition()->getMaxSize();
85 if ($max_size && $max_size < count((array) $this->getTextElements())) {
86 $valid = false;
87 $this->addValidationError(self::ADT_VALIDATION_ERROR_MAX_SIZE);
88 }
89
90 $max_len = $this->getDefinition()->getMaxLength();
91 if ($max_len) {
92 foreach ((array) $this->getTextElements() as $element) {
93 if ($max_len < strlen($element)) {
94 $valid = false;
95 $this->addValidationError(self::ADT_VALIDATION_ERROR_MAX_LENGTH);
96 }
97 }
98 }
99 }
100 return $valid;
101 }
102
103 public function getCheckSum(): ?string
104 {
105 if (!$this->isNull()) {
106 $elements = $this->getTextElements();
107 sort($elements);
108 return md5(implode("", $elements));
109 }
110 return null;
111 }
112
113 // stdClass
114
115 public function exportStdClass(): ?stdClass
116 {
117 if (!$this->isNull()) {
118 $obj = new stdClass();
119 $obj->value = $this->getTextElements();
120 return $obj;
121 }
122 return null;
123 }
124
125 public function importStdClass(?stdClass $a_std): void
126 {
127 if (is_object($a_std)) {
128 $this->setTextElements($a_std->value);
129 }
130 }
131}
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:12
addValidationError(string $a_error_code)
getCheckSum()
Get unique checksum.
getDefinition()
Get definition.
Definition: class.ilADT.php:92
$valid