ILIAS
trunk Revision v12.0_alpha-1221-g4e438232683
◀ ilDoc Overview
LOMStructureInitiator.php
Go to the documentation of this file.
1
<?php
2
19
declare(strict_types=1);
20
21
namespace
ILIAS\MetaData\Structure
;
22
23
use Generator;
24
use
ilMDStructureException
;
25
use
ILIAS\MetaData\Elements\Structure\StructureFactory
;
26
use
ILIAS\MetaData\Elements\Structure\StructureElement
;
27
use
ILIAS\MetaData\Elements\Structure\StructureSetInterface
;
28
use
ILIAS\MetaData\Structure\Definitions\ReaderFactoryInterface
;
29
use
ILIAS\MetaData\Structure\Definitions\ReaderInterface
;
30
use
ILIAS\MetaData\Elements\Structure\StructureElementInterface
;
31
32
class
LOMStructureInitiator
33
{
34
public
function
__construct
(
35
protected
ReaderFactoryInterface
$reader_factory,
36
protected
StructureFactory
$structure_factory
37
) {
38
}
39
40
public
function
set
():
StructureSetInterface
41
{
42
return
$this->structure_factory->set(
43
$this->
getStructureRoot
()
44
);
45
}
46
47
protected
function
getStructureRoot
():
StructureElementInterface
48
{
49
$reader = $this->reader_factory->reader();
50
return
$this->structure_factory->root(
51
$reader->definition(),
52
...$this->getSubElements(0, ...$reader->subDefinitions())
53
);
54
}
55
60
protected
function
getSubElements
(
61
int
$depth,
62
ReaderInterface
...$readers
63
): Generator {
64
if
($depth > 20) {
65
throw
new
ilMDStructureException
(
'LOM Structure is nested to deep.'
);
66
}
67
foreach
($readers as $reader) {
68
yield $this->structure_factory->structure(
69
$reader->definition(),
70
...$this->getSubElements($depth + 1, ...$reader->subDefinitions())
71
);
72
}
73
}
74
}
ILIAS\MetaData\Elements\Structure\StructureElement
Definition:
StructureElement.php:29
ILIAS\MetaData\Elements\Structure\StructureFactory
Definition:
StructureFactory.php:26
ILIAS\MetaData\Structure\LOMStructureInitiator
Definition:
LOMStructureInitiator.php:33
ILIAS\MetaData\Structure\LOMStructureInitiator\getSubElements
getSubElements(int $depth, ReaderInterface ... $readers)
Definition:
LOMStructureInitiator.php:60
ILIAS\MetaData\Structure\LOMStructureInitiator\getStructureRoot
getStructureRoot()
Definition:
LOMStructureInitiator.php:47
ILIAS\MetaData\Structure\LOMStructureInitiator\__construct
__construct(protected ReaderFactoryInterface $reader_factory, protected StructureFactory $structure_factory)
Definition:
LOMStructureInitiator.php:34
ilMDStructureException
Definition:
class.ilMDStructureException.php:22
ILIAS\MetaData\Elements\Structure\StructureElementInterface
Definition:
StructureElementInterface.php:27
ILIAS\MetaData\Elements\Structure\StructureSetInterface
Definition:
StructureSetInterface.php:26
ILIAS\MetaData\Structure\Definitions\ReaderFactoryInterface
Definition:
ReaderFactoryInterface.php:26
ILIAS\MetaData\Structure\Definitions\ReaderInterface
Definition:
ReaderInterface.php:24
ILIAS\MetaData\Structure
if
if(!file_exists('../ilias.ini.php'))
Definition:
sessioncheck.php:23
components
ILIAS
MetaData
classes
Structure
LOMStructureInitiator.php
Generated on Sun Apr 5 2026 23:03:28 for ILIAS by
1.9.4 (using
Doxyfile
)