ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilADTMultiText.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 class 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 }
addValidationError(string $a_error_code)
isValidDefinition(ilADTDefinition $a_def)
isSmaller(ilADT $a_adt)
$valid
ADT base class.
Definition: class.ilADT.php:11
isLarger(ilADT $a_adt)
equals(ilADT $a_adt)
getCheckSum()
Get unique checksum.
ADT definition base class.
importStdClass(?stdClass $a_std)
setTextElements(?array $a_values=null)
getDefinition()
Get definition.
Definition: class.ilADT.php:92