ILIAS  trunk Revision v11.0_alpha-1744-gb0451eebef4
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilComponentDefinitionReader Class Reference
+ Collaboration diagram for ilComponentDefinitionReader:

Public Member Functions

 __construct (ilComponentDefinitionProcessor ... $processor)
 
 purge ()
 This methods is supposed to purge existing data in the registered processor. More...
 
 readComponentDefinitions ()
 This reads the component.xml of all components in the core and processes them with the provided processor. More...
 
 beginTag ($_, string $name, array $attributes)
 
 endTag ($_, string $name)
 

Protected Member Functions

 readFile (string $path)
 
 parseComponentXML (string $type, string $component, string $xml)
 
 getComponents ()
 
 getComponentInfo (string $type, string $name)
 
 getComponentPaths (string $root, string $name)
 

Protected Attributes

array $processors
 

Detailed Description

Definition at line 21 of file class.ilComponentDefinitionReader.php.

Constructor & Destructor Documentation

◆ __construct()

ilComponentDefinitionReader::__construct ( ilComponentDefinitionProcessor ...  $processor)

Definition at line 28 of file class.ilComponentDefinitionReader.php.

30  {
31  $this->processors = $processor;
32  }

Member Function Documentation

◆ beginTag()

ilComponentDefinitionReader::beginTag (   $_,
string  $name,
array  $attributes 
)

Definition at line 96 of file class.ilComponentDefinitionReader.php.

Referenced by parseComponentXML().

96  : void
97  {
98  foreach ($this->processors as $processor) {
99  $processor->beginTag($name, $attributes);
100  }
101  }
+ Here is the caller graph for this function:

◆ endTag()

ilComponentDefinitionReader::endTag (   $_,
string  $name 
)

Definition at line 103 of file class.ilComponentDefinitionReader.php.

Referenced by parseComponentXML().

103  : void
104  {
105  foreach ($this->processors as $processor) {
106  $processor->endTag($name);
107  }
108  }
+ Here is the caller graph for this function:

◆ getComponentInfo()

ilComponentDefinitionReader::getComponentInfo ( string  $type,
string  $name 
)
protected
Returns
Iterator<array>

Definition at line 126 of file class.ilComponentDefinitionReader.php.

References $c, and getComponentPaths().

Referenced by getComponents().

126  : \Iterator
127  {
128  $dir = __DIR__ . "/../../../../" . $type;
129  foreach ($this->getComponentPaths($dir, $name) as $c) {
130  yield [
131  $type,
132  $c,
133  realpath($dir . "/" . $c . "/" . $name)
134  ];
135  }
136  }
$c
Definition: deliver.php:25
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getComponentPaths()

ilComponentDefinitionReader::getComponentPaths ( string  $root,
string  $name 
)
protected
Returns
Iterator<string>

Definition at line 141 of file class.ilComponentDefinitionReader.php.

Referenced by getComponentInfo().

141  : \Iterator
142  {
143  $dir = opendir($root);
144  while ($sub = readdir($dir)) {
145  if ($sub === "." || $sub === "..") {
146  continue;
147  }
148  if (!is_dir($root . "/" . $sub)) {
149  continue;
150  }
151  if (!is_file($root . "/" . $sub . "/" . $name)) {
152  continue;
153  }
154  yield $sub;
155  }
156  }
+ Here is the caller graph for this function:

◆ getComponents()

ilComponentDefinitionReader::getComponents ( )
protected
Returns
Iterator<string>

Definition at line 113 of file class.ilComponentDefinitionReader.php.

References getComponentInfo().

Referenced by readComponentDefinitions().

113  : \Iterator
114  {
115  foreach ($this->getComponentInfo("components/ILIAS", "module.xml") as $i) {
116  yield $i;
117  }
118  foreach ($this->getComponentInfo("components/ILIAS", "service.xml") as $i) {
119  yield $i;
120  }
121  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseComponentXML()

ilComponentDefinitionReader::parseComponentXML ( string  $type,
string  $component,
string  $xml 
)
protected

Definition at line 73 of file class.ilComponentDefinitionReader.php.

References beginTag(), endTag(), and null.

Referenced by readComponentDefinitions().

73  : void
74  {
75  $xml_parser = null;
76  try {
77  $xml_parser = xml_parser_create("UTF-8");
78  xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
79  xml_set_element_handler($xml_parser, $this->beginTag(...), $this->endTag(...));
80  if (!xml_parse($xml_parser, $xml)) {
81  $code = xml_get_error_code($xml_parser);
82  $line = xml_get_current_line_number($xml_parser);
83  $col = xml_get_current_column_number($xml_parser);
84  $msg = xml_error_string($code);
85  throw new \InvalidArgumentException(
86  "Error $code component xml of $type/$component, on line $line in column $col: $msg"
87  );
88  }
89  } finally {
90  if ($xml_parser) {
91  xml_parser_free($xml_parser);
92  }
93  }
94  }
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
beginTag($_, string $name, array $attributes)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ purge()

ilComponentDefinitionReader::purge ( )

This methods is supposed to purge existing data in the registered processor.

Definition at line 38 of file class.ilComponentDefinitionReader.php.

38  : void
39  {
40  foreach ($this->processors as $p) {
41  $p->purge();
42  }
43  }

◆ readComponentDefinitions()

ilComponentDefinitionReader::readComponentDefinitions ( )

This reads the component.xml of all components in the core and processes them with the provided processor.

Definition at line 49 of file class.ilComponentDefinitionReader.php.

References $path, getComponents(), parseComponentXML(), and readFile().

49  : void
50  {
51  foreach ($this->getComponents() as [$type, $component, $path]) {
52  $file = $this->readFile($path);
53  foreach ($this->processors as $processor) {
54  $processor->beginComponent($component, $type);
55  }
56  $this->parseComponentXML($type, $component, $file);
57  foreach ($this->processors as $processor) {
58  $processor->endComponent($component, $type);
59  }
60  }
61  }
parseComponentXML(string $type, string $component, string $xml)
$path
Definition: ltiservices.php:29
+ Here is the call graph for this function:

◆ readFile()

ilComponentDefinitionReader::readFile ( string  $path)
protected

Definition at line 63 of file class.ilComponentDefinitionReader.php.

Referenced by readComponentDefinitions().

63  : string
64  {
65  if (!file_exists($path)) {
66  throw new \InvalidArgumentException(
67  "Cannot find file $path."
68  );
69  }
70  return file_get_contents($path);
71  }
$path
Definition: ltiservices.php:29
+ Here is the caller graph for this function:

Field Documentation

◆ $processors

array ilComponentDefinitionReader::$processors
protected

Definition at line 26 of file class.ilComponentDefinitionReader.php.


The documentation for this class was generated from the following file: