19 declare(strict_types=1);
66 public array $exposed_data;
68 protected array $sub_elements;
73 public function __construct(
public array $exposed_data)
77 public function name():
string 79 return $this->exposed_data[
'name'];
82 public function dataType():
Type 84 return $this->exposed_data[
'type'];
89 public function addScaffoldToSubElements(
93 if ($name ===
'failme') {
97 $scaffold = clone $this;
98 $this->sub_elements[] = $scaffold;
100 $scaffold->sub_elements = [];
101 $scaffold->super_element = $this;
102 $scaffold->exposed_data = [];
104 $info_from_name = explode(
'-', $name);
107 if ($name ===
'string') {
108 $type = Type::STRING;
109 } elseif ($name ===
'language') {
115 $scaffold->exposed_data[
'name'] = $name;
116 $scaffold->exposed_data[
'type'] = $type;
121 public function mark(
124 string $data_value =
'' 126 $this->exposed_data[
'marker_action'] = $action;
127 $this->exposed_data[
'marker_value'] = $data_value;
128 if (isset($this->super_element)) {
129 $this->super_element->mark($factory, $action);
133 public function exposeData(): array
135 $data = $this->exposed_data;
137 foreach ($this->sub_elements as $sub_element) {
138 $data[
'subs'][] = $sub_element->exposeData();
148 $root->exposed_data = [
'name' =>
'correctroot',
'type' =>
Type::NULL];
157 return new class ($this->root) extends
NullSet {
171 public function tagForElement(
175 $info_from_name = explode(
'-', $element->
getDefinition()->name());
178 array_shift($info_from_name);
179 array_shift($info_from_name);
183 foreach ($info_from_name as
$info) {
184 if ($info === SpecialCase::LANGSTRING->value .
'.' . $version->value) {
187 if ($info === SpecialCase::OMITTED->value .
'.' . $version->value) {
195 protected bool $omitted
199 public function isExportedAsLangString():
bool 204 public function isOmitted():
bool 206 return $this->omitted;
213 public function copyrightFromExport(
string $copyright):
string 215 return '~parsed:' . $copyright .
'~';
230 <?xml version=
"1.0"?>
232 <el1-
string>val1</el1-
string>
234 <el2.1-non_neg_int>val2.1</el2.1-non_neg_int>
235 <el2.2-duration>val2.2</el2.2-duration>
242 'name' =>
'correctroot',
244 'marker_action' => Action::CREATE_OR_UPDATE,
245 'marker_value' =>
'',
248 'name' =>
'el1-string',
249 'type' => Type::STRING,
250 'marker_action' => Action::CREATE_OR_UPDATE,
251 'marker_value' =>
'val1',
255 'name' =>
'el2-none',
257 'marker_action' => Action::CREATE_OR_UPDATE,
258 'marker_value' =>
'',
261 'name' =>
'el2.1-non_neg_int',
262 'type' => Type::NON_NEG_INT,
263 'marker_action' => Action::CREATE_OR_UPDATE,
264 'marker_value' =>
'val2.1',
268 'name' =>
'el2.2-duration',
270 'marker_action' => Action::CREATE_OR_UPDATE,
271 'marker_value' =>
'val2.2',
284 $result_set->getRoot()->exposeData()
291 <?xml version=
"1.0"?>
293 <el1-
string>val1</el1-
string>
295 <failme>val2.1</failme>
296 <el2.2-duration>val2.2</el2.2-duration>
303 'name' =>
'correctroot',
305 'marker_action' => Action::CREATE_OR_UPDATE,
306 'marker_value' =>
'',
309 'name' =>
'el1-string',
310 'type' => Type::STRING,
311 'marker_action' => Action::CREATE_OR_UPDATE,
312 'marker_value' =>
'val1',
316 'name' =>
'el2-none',
318 'marker_action' => Action::CREATE_OR_UPDATE,
319 'marker_value' =>
'',
322 'name' =>
'el2.2-duration',
324 'marker_action' => Action::CREATE_OR_UPDATE,
325 'marker_value' =>
'val2.2',
338 $result_set->getRoot()->exposeData()
345 <?xml version=
"1.0"?>
347 <el1-
string>val1</el1-
string>
349 <el2.1-non_neg_int>val2.1</el2.1-non_neg_int>
350 <el2.2-duration>val2.2</el2.2-duration>
358 $this->expectException(\ilMDXMLException::class);
365 <?xml version=
"1.0"?>
367 <el-lang>none</el-lang>
373 'name' =>
'correctroot',
375 'marker_action' => Action::CREATE_OR_UPDATE,
376 'marker_value' =>
'',
380 'type' => Type::LANG,
381 'marker_action' => Action::CREATE_OR_UPDATE,
382 'marker_value' =>
'xx',
393 $result_set->getRoot()->exposeData()
400 <?xml version=
"1.0"?>
402 <el1-none-langstring.10.0>
403 <
string language=
"br">some text</
string>
404 </el1-none-langstring.10.0>
410 'name' =>
'correctroot',
412 'marker_action' => Action::CREATE_OR_UPDATE,
413 'marker_value' =>
'',
416 'name' =>
'el1-none-langstring.10.0',
418 'marker_action' => Action::CREATE_OR_UPDATE,
419 'marker_value' =>
'',
423 'type' => Type::STRING,
424 'marker_action' => Action::CREATE_OR_UPDATE,
425 'marker_value' =>
'some text',
429 'name' =>
'language',
430 'type' => Type::LANG,
431 'marker_action' => Action::CREATE_OR_UPDATE,
432 'marker_value' =>
'br',
445 $result_set->getRoot()->exposeData()
452 <?xml version=
"1.0"?>
454 <el1-none-langstring.4.1.0>
455 <el1.1-
string>val1.1</el1.1-
string>
456 <el1.2-lang>val1.2</el1.2-lang>
457 </el1-none-langstring.4.1.0>
463 'name' =>
'correctroot',
465 'marker_action' => Action::CREATE_OR_UPDATE,
466 'marker_value' =>
'',
469 'name' =>
'el1-none-langstring.4.1.0',
471 'marker_action' => Action::CREATE_OR_UPDATE,
472 'marker_value' =>
'',
475 'name' =>
'el1.1-string',
476 'type' => Type::STRING,
477 'marker_action' => Action::CREATE_OR_UPDATE,
478 'marker_value' =>
'val1.1',
482 'name' =>
'el1.2-lang',
483 'type' => Type::LANG,
484 'marker_action' => Action::CREATE_OR_UPDATE,
485 'marker_value' =>
'val1.2',
498 $result_set->getRoot()->exposeData()
505 <?xml version=
"1.0"?>
507 <el1-none-langstring.10.0>
508 <
string language=
"none">some text</
string>
509 </el1-none-langstring.10.0>
515 'name' =>
'correctroot',
517 'marker_action' => Action::CREATE_OR_UPDATE,
518 'marker_value' =>
'',
521 'name' =>
'el1-none-langstring.10.0',
523 'marker_action' => Action::CREATE_OR_UPDATE,
524 'marker_value' =>
'',
528 'type' => Type::STRING,
529 'marker_action' => Action::CREATE_OR_UPDATE,
530 'marker_value' =>
'some text',
534 'name' =>
'language',
535 'type' => Type::LANG,
536 'marker_action' => Action::CREATE_OR_UPDATE,
537 'marker_value' =>
'xx',
550 $result_set->getRoot()->exposeData()
557 <?xml version=
"1.0"?>
559 <el1-none-langstring.10.0>
560 <
string>some text</
string>
561 </el1-none-langstring.10.0>
567 'name' =>
'correctroot',
569 'marker_action' => Action::CREATE_OR_UPDATE,
570 'marker_value' =>
'',
573 'name' =>
'el1-none-langstring.10.0',
575 'marker_action' => Action::CREATE_OR_UPDATE,
576 'marker_value' =>
'',
580 'type' => Type::STRING,
581 'marker_action' => Action::CREATE_OR_UPDATE,
582 'marker_value' =>
'some text',
595 $result_set->getRoot()->exposeData()
602 <?xml version=
"1.0"?>
604 <el1-none-langstring.10.0>
606 </el1-none-langstring.10.0>
612 'name' =>
'correctroot',
614 'marker_action' => Action::CREATE_OR_UPDATE,
615 'marker_value' =>
'',
618 'name' =>
'el1-none-langstring.10.0',
620 'marker_action' => Action::CREATE_OR_UPDATE,
621 'marker_value' =>
'',
624 'name' =>
'language',
625 'type' => Type::LANG,
626 'marker_action' => Action::CREATE_OR_UPDATE,
627 'marker_value' =>
'pl',
640 $result_set->getRoot()->exposeData()
647 <?xml version=
"1.0"?>
649 <el1-
string>val1</el1-
string>
651 <el2.1-non_neg_int-omitted.10.0>val2.1</el2.1-non_neg_int-omitted.10.0>
652 <el2.2-duration>val2.2</el2.2-duration>
659 'name' =>
'correctroot',
661 'marker_action' => Action::CREATE_OR_UPDATE,
662 'marker_value' =>
'',
665 'name' =>
'el1-string',
666 'type' => Type::STRING,
667 'marker_action' => Action::CREATE_OR_UPDATE,
668 'marker_value' =>
'val1',
672 'name' =>
'el2-none',
674 'marker_action' => Action::CREATE_OR_UPDATE,
675 'marker_value' =>
'',
678 'name' =>
'el2.1-non_neg_int-omitted.10.0',
679 'type' => Type::NON_NEG_INT,
683 'name' =>
'el2.2-duration',
685 'marker_action' => Action::CREATE_OR_UPDATE,
686 'marker_value' =>
'val2.2',
699 $result_set->getRoot()->exposeData()
706 <?xml version=
"1.0"?>
708 <el1-none-omitted.10.0>
709 <el1.1-non_neg_int>val1.1</el1.1-non_neg_int>
710 <el1.2-duration>val1.2</el1.2-duration>
711 </el1-none-omitted.10.0>
712 <el2-
string>val2</el2-
string>
718 'name' =>
'correctroot',
720 'marker_action' => Action::CREATE_OR_UPDATE,
721 'marker_value' =>
'',
724 'name' =>
'el1-none-omitted.10.0',
729 'name' =>
'el2-string',
730 'type' => Type::STRING,
731 'marker_action' => Action::CREATE_OR_UPDATE,
732 'marker_value' =>
'val2',
743 $result_set->getRoot()->exposeData()
750 <?xml version=
"1.0"?>
752 <el1-
string-omitted.4.1.0>val1</el1-
string-omitted.4.1.0>
758 'name' =>
'correctroot',
760 'marker_action' => Action::CREATE_OR_UPDATE,
761 'marker_value' =>
'',
764 'name' =>
'el1-string-omitted.4.1.0',
765 'type' => Type::STRING,
766 'marker_action' => Action::CREATE_OR_UPDATE,
767 'marker_value' =>
'val1',
778 $result_set->getRoot()->exposeData()
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
__construct()
Constructor setup ILIAS global object public.
$langstring
COMMON SUB-ELEMENTS.
language()
description: > Example for rendring a language glyph.