ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilObjDefReader Class Reference

Component definition reader (reads common tags in module.xml and service.xml files) Name is misleading and should be ilComponentDefReader instead. More...

+ Inheritance diagram for ilObjDefReader:
+ Collaboration diagram for ilObjDefReader:

Public Member Functions

 __construct ($a_path, $a_name, $a_type)
 
 setHandlers ($a_xml_parser)
 
 clearTables ()
 clear the tables More...
 
 handlerBeginTag ($a_xml_parser, $a_name, $a_attribs)
 Start tag handler. More...
 
 handlerEndTag ($a_xml_parser, $a_name)
 End tag handler. More...
 
 handlerCharacterData ($a_xml_parser, $a_data)
 end tag handler More...
 
 setComponentId ($a_component_id)
 Set from module or service reader. More...
 
 getComponentId ()
 Get component id. More...
 
- Public Member Functions inherited from ilSaxParser
 __construct ($a_xml_file='', $throwException=false)
 Constructor setup ILIAS global object public. More...
 
 setXMLContent ($a_xml_content)
 
 getXMLContent ()
 
 getInputType ()
 
 startParsing ()
 stores xml data in array More...
 
 createParser ()
 create parser More...
 
 setOptions ($a_xml_parser)
 set parser options More...
 
 setHandlers ($a_xml_parser)
 set event handler should be overwritten by inherited class private More...
 
 openXMLFile ()
 open xml file More...
 
 parse ($a_xml_parser, $a_fp=null)
 parse xml file More...
 
 freeParser ($a_xml_parser)
 free xml parser handle More...
 
 setThrowException ($throwException)
 set error handling More...
 
- Public Member Functions inherited from PEAR
 __construct ($error_class=null)
 Constructor. More...
 
 _PEAR ()
 Destructor (the emulated type of...). More...
 
 registerShutdownFunc ($func, $args=array())
 Use this function to register a shutdown method for static classes. More...
 
 isError ($data, $code=null)
 Tell whether a value is a PEAR error. More...
 
 expectError ($code=' *')
 This method is used to tell which errors you expect to get. More...
 
 popExpect ()
 This method pops one element off the expected error codes stack. More...
 
 _checkDelExpect ($error_code)
 This method checks unsets an error code if available. More...
 
 delExpect ($error_code)
 This method deletes all occurences of the specified element from the expected error codes stack. More...
 
raiseError ($message=null, $code=null, $mode=null, $options=null, $userinfo=null, $error_class=null, $skipmsg=false)
 This method is a wrapper that returns an instance of the configured error class with this object's default error handling applied. More...
 
throwError ($message=null, $code=null, $userinfo=null)
 Simpler form of raiseError with fewer options. More...
 
 staticPushErrorHandling ($mode, $options=null)
 
 staticPopErrorHandling ()
 
 pushErrorHandling ($mode, $options=null)
 Push a new error handler on top of the error handler options stack. More...
 
 popErrorHandling ()
 Pop the last error handler used. More...
 
 loadExtension ($ext)
 OS independant PHP extension load. More...
 

Static Public Member Functions

static deleteObjectDefinition ($a_id)
 Delete an object definition (this is currently needed for test cases) More...
 
- Static Public Member Functions inherited from PEAR
static & getStaticProperty ($class, $var)
 If you have a class that's mostly/entirely static, and you need static properties, you can use this method to simulate them. More...
 
static setErrorHandling ($mode=null, $options=null)
 Sets how errors generated by this object should be handled. More...
 

Protected Attributes

 $component_id
 
 $readers
 
 $current_reader = null
 
 $in_mail_templates = false
 
 $mail_templates_by_component = array()
 

Additional Inherited Members

- Data Fields inherited from ilSaxParser
 $input_type = null
 
 $xml_content = ''
 
 $ilias
 
 $lng
 
 $xml_file
 
 $throwException = false
 
- Data Fields inherited from PEAR
 $_debug = false
 
 $_default_error_mode = null
 
 $_default_error_options = null
 
 $_default_error_handler = ''
 
 $_error_class = 'PEAR_Error'
 
 $_expected_errors = array()
 
- Protected Member Functions inherited from ilSaxParser
 handleError ($message, $code)
 use given error handler to handle error message or internal ilias error message handle More...
 

Detailed Description

Component definition reader (reads common tags in module.xml and service.xml files) Name is misleading and should be ilComponentDefReader instead.

Reads reads module information of modules.xml files into db

Author
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 15 of file class.ilObjDefReader.php.

Constructor & Destructor Documentation

◆ __construct()

ilObjDefReader::__construct (   $a_path,
  $a_name,
  $a_type 
)

Definition at line 31 of file class.ilObjDefReader.php.

References $a_type, and $reader.

32  {
33  // init specialized readers
34  foreach ($this->readers as $k => $reader) {
35  $class = $reader["class"];
36  $class_path = "./setup/classes/class." . $class . ".php";
37  include_once($class_path);
38  $this->readers[$k]["reader"] = new $class();
39  }
40 
41  $this->name = $a_name;
42  $this->type = $a_type;
43  //echo "<br>-".$a_path."-".$this->name."-".$this->type."-";
44  parent::__construct($a_path);
45  }
$a_type
Definition: workflow.php:92

Member Function Documentation

◆ clearTables()

ilObjDefReader::clearTables ( )

clear the tables

Definition at line 57 of file class.ilObjDefReader.php.

References $ilDB, and $reader.

58  {
59  global $ilDB;
60 
61  $ilDB->manipulate("DELETE FROM il_object_def");
62 
63  $ilDB->manipulate("DELETE FROM il_object_subobj");
64 
65  $ilDB->manipulate("DELETE FROM il_object_group");
66 
67  $ilDB->manipulate("DELETE FROM il_pluginslot");
68 
69  $ilDB->manipulate("DELETE FROM il_component");
70 
71  // Keep the plugin listeners in the table
72  // This avoids reading them in the setup
73  // ilPluginReader is called in the plugin administration
74  $ilDB->manipulate("DELETE FROM il_event_handling WHERE component NOT LIKE 'Plugins/%'");
75 
76  $ilDB->manipulate("DELETE FROM il_object_sub_type");
77 
78  foreach ($this->readers as $k => $reader) {
79  $this->readers[$k]["reader"]->clearTables();
80  }
81  }
global $ilDB

◆ deleteObjectDefinition()

static ilObjDefReader::deleteObjectDefinition (   $a_id)
static

Delete an object definition (this is currently needed for test cases)

Definition at line 86 of file class.ilObjDefReader.php.

References $ilDB.

87  {
88  global $ilDB;
89 
90  $ilDB->manipulateF(
91  "DELETE FROM il_object_def WHERE id = %s",
92  array("text"),
93  array($a_id)
94  );
95 
96  $ilDB->manipulateF(
97  "DELETE FROM il_object_subobj WHERE parent = %s OR subobj = %s",
98  array("text", "text"),
99  array($a_id, $a_id)
100  );
101  }
global $ilDB

◆ getComponentId()

ilObjDefReader::getComponentId ( )

Get component id.

Returns
type

Definition at line 388 of file class.ilObjDefReader.php.

References $component_id.

Referenced by handlerBeginTag(), and handlerEndTag().

389  {
390  return $this->component_id;
391  }
+ Here is the caller graph for this function:

◆ handlerBeginTag()

ilObjDefReader::handlerBeginTag (   $a_xml_parser,
  $a_name,
  $a_attribs 
)

Start tag handler.

Parameters
ressouceinternal xml_parser_handler
stringelement tag name
arrayelement attributes

Definition at line 110 of file class.ilObjDefReader.php.

References $current_reader, $ilDB, $tasks, ActiveRecord\findOrFail(), getComponentId(), ilSCGroups\getInstance(), ilSCTasks\getInstanceByGroupId(), ilMailTemplateContextService\insertFromXML(), ilGSProviderStorage\registerIdentifications(), ilLogComponentLevels\updateFromXML(), ilPDFCompInstaller\updateFromXML(), ilBadgeHandler\updateFromXML(), and ilCronManager\updateFromXML().

111  {
112  global $ilDB;
113 
114  $this->current_tag = $a_name;
115 
116  // check if a special reader needs to be activated
117  if (isset($this->readers[$a_name])) {
118  $this->current_reader = $a_name;
119  }
120 
121  // call special reader
122  if ($this->current_reader != "") {
123  $this->readers[$this->current_reader]["reader"]->handlerBeginTag(
124  $a_xml_parser,
125  $a_name,
126  $a_attribs,
127  $this->current_component
128  );
129  } else {
130  // default handling
131  switch ($a_name) {
132  case 'object':
133 
134  // if attributes are not given, set default (repository only)
135  if ($a_attribs["repository"] === null) {
136  $a_attribs["repository"] = true;
137  }
138  if ($a_attribs["workspace"] === null) {
139  $a_attribs["workspace"] = false;
140  }
141 
142  $this->current_object = $a_attribs["id"];
143  $ilDB->manipulateF(
144  "INSERT INTO il_object_def (id, class_name, component,location," .
145  "checkbox,inherit,translate,devmode,allow_link,allow_copy,rbac,default_pos," .
146  "default_pres_pos,sideblock,grp,system,export,repository,workspace,administration," .
147  "amet,orgunit_permissions,lti_provider,offline_handling) VALUES " .
148  "(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
149  array("text", "text", "text", "text", "integer", "integer", "text", "integer","integer","integer",
150  "integer","integer","integer","integer", "text", "integer", "integer", "integer", "integer",
151  'integer','integer','integer','integer','integer'),
152  array(
153  $a_attribs["id"],
154  $a_attribs["class_name"],
155  $this->current_component,
156  $this->current_component . "/" . $a_attribs["dir"],
157  (int) $a_attribs["checkbox"],
158  (int) $a_attribs["inherit"],
159  $a_attribs["translate"],
160  (int) $a_attribs["devmode"],
161  (int) $a_attribs["allow_link"],
162  (int) $a_attribs["allow_copy"],
163  (int) $a_attribs["rbac"],
164  (int) $a_attribs["default_pos"],
165  (int) $a_attribs["default_pres_pos"],
166  (int) $a_attribs["sideblock"],
167  $a_attribs["group"],
168  (int) $a_attribs["system"],
169  (int) $a_attribs["export"],
170  (int) $a_attribs["repository"],
171  (int) $a_attribs["workspace"],
172  (int) $a_attribs['administration'],
173  (int) $a_attribs['amet'],
174  (int) $a_attribs['orgunit_permissions'],
175  (int) $a_attribs['lti_provider'],
176  (int) $a_attribs['offline_handling']
177  )
178  );
179  break;
180 
181  case "subobj":
182  $ilDB->manipulateF(
183  "INSERT INTO il_object_subobj (parent, subobj, mmax) VALUES (%s,%s,%s)",
184  array("text", "text", "integer"),
185  array($this->current_object, $a_attribs["id"], (int) $a_attribs["max"])
186  );
187  break;
188 
189  case "parent":
190  $ilDB->manipulateF(
191  "INSERT INTO il_object_subobj (parent, subobj, mmax) VALUES (%s,%s,%s)",
192  array("text", "text", "integer"),
193  array($a_attribs["id"], $this->current_object, (int) $a_attribs["max"])
194  );
195  break;
196 
197  case "objectgroup":
198  $ilDB->manipulateF(
199  "INSERT INTO il_object_group (id, name, default_pres_pos) VALUES (%s,%s,%s)",
200  array("text", "text", "integer"),
201  array($a_attribs["id"], $a_attribs["name"], $a_attribs["default_pres_pos"])
202  );
203  break;
204 
205  case "pluginslot":
206  $this->current_object = $a_attribs["id"];
207  $q = "INSERT INTO il_pluginslot (component, id, name) VALUES (" .
208  $ilDB->quote($this->current_component, "text") . "," .
209  $ilDB->quote($a_attribs["id"], "text") . "," .
210  $ilDB->quote($a_attribs["name"], "text") . ")";
211  $ilDB->manipulate($q);
212  break;
213 
214  case "event":
215  $component = $a_attribs["component"];
216  if (!$component) {
217  $component = $this->current_component;
218  }
219  $q = "INSERT INTO il_event_handling (component, type, id) VALUES (" .
220  $ilDB->quote($component, "text") . "," .
221  $ilDB->quote($a_attribs["type"], "text") . "," .
222  $ilDB->quote($a_attribs["id"], "text") . ")";
223  $ilDB->manipulate($q);
224  break;
225 
226  case "cron":
227  $component = $a_attribs["component"];
228  if (!$component) {
229  $component = $this->current_component;
230  }
231  include_once "Services/Cron/classes/class.ilCronManager.php";
232  ilCronManager::updateFromXML($component, $a_attribs["id"], $a_attribs["class"], $a_attribs["path"]);
233  $this->has_cron[$component][] = $a_attribs["id"];
234  break;
235 
236  case 'mailtemplates':
237  $this->in_mail_templates = true;
238  break;
239 
240  case 'context':
241  if (!$this->in_mail_templates) {
242  break;
243  }
244 
245  $component = $a_attribs['component'];
246  if (!$component) {
247  $component = $this->current_component;
248  }
249 
251  $component,
252  $a_attribs['id'],
253  $a_attribs['class'],
254  $a_attribs['path']
255  );
256  $this->mail_templates_by_component[$component][] = $a_attribs["id"];
257  break;
258 
259  case "sub_type":
260  $ilDB->manipulate("INSERT INTO il_object_sub_type " .
261  "(obj_type, sub_type, amet) VALUES (" .
262  $ilDB->quote($this->current_object, "text") . "," .
263  $ilDB->quote($a_attribs["id"], "text") . "," .
264  $ilDB->quote($a_attribs["amet"], "integer") .
265  ")");
266  break;
267 
268  case 'systemcheck':
269 
270  include_once './Services/SystemCheck/classes/class.ilSCGroups.php';
271  ilSCGroups::getInstance()->updateFromComponentDefinition($this->getComponentId());
272  break;
273 
274  case 'systemcheck_task':
275  include_once './Services/SystemCheck/classes/class.ilSCGroups.php';
276  $group_id = ilSCGroups::getInstance()->lookupGroupByComponentId($this->getComponentId());
277 
278  include_once './Services/SystemCheck/classes/class.ilSCTasks.php';
280  $tasks->updateFromComponentDefinition($a_attribs['identifier']);
281  break;
282 
283  case "secure_path":
284  require_once('./Services/WebAccessChecker/classes/class.ilWACSecurePath.php');
285  try {
286  $ilWACSecurePath = ilWACSecurePath::findOrFail($a_attribs["path"]);
287  } catch (arException $e) {
288  $ilWACSecurePath = new ilWACSecurePath();
289  $ilWACSecurePath->setPath($a_attribs["path"]);
290  $ilWACSecurePath->create();
291  }
292  $ilWACSecurePath->setCheckingClass($a_attribs["checking-class"]);
293  $ilWACSecurePath->setInSecFolder((bool) $a_attribs["in-sec-folder"]);
294  $ilWACSecurePath->setComponentDirectory(dirname($this->xml_file));
295  $ilWACSecurePath->update();
296  break;
297 
298  case 'logging':
299  include_once './Services/Logging/classes/class.ilLogComponentLevels.php';
301  break;
302 
303  case 'badges':
304  include_once "Services/Badge/classes/class.ilBadgeHandler.php";
306  $this->has_badges[] = $this->getComponentId();
307  break;
308 
309  case 'pdfpurpose':
310  require_once './Services/PDFGeneration/classes/class.ilPDFCompInstaller.php';
311  ilPDFCompInstaller::updateFromXML($this->current_component, $a_attribs['name'], $a_attribs['preferred']);
312  break;
313  case 'gsprovider':
314  // ilGSProviderStorage::installDB();
315  ilGSProviderStorage::registerIdentifications($a_attribs['class_name'], $a_attribs['purpose']);
316  break;
317  }
318  }
319  }
static updateFromXML($a_component, $a_id, $a_class, $a_path=null)
Process data from module.xml/service.xml.
static updateFromXML($service, $purpose, $preferred)
static registerIdentifications(string $class_name, string $purpose)
static insertFromXML($a_component, $a_id, $a_class, $a_path)
static updateFromXML($a_component_id)
Import component definition.
Class ilWACSecurePath.
$tasks
Definition: build.php:4
static updateFromXML($a_component_id)
type $ilDB
getComponentId()
Get component id.
static findOrFail($primary_key, array $add_constructor_args=array())
Tries to find the object and throws an Exception if object is not found, instead of returning null...
static getInstance()
Get singleton instance.
static getInstanceByGroupId($a_group_id)
Get singleton instance.
Class arException.
global $ilDB
+ Here is the call graph for this function:

◆ handlerCharacterData()

ilObjDefReader::handlerCharacterData (   $a_xml_parser,
  $a_data 
)

end tag handler

Parameters
ressouceinternal xml_parser_handler
stringdata private

Definition at line 363 of file class.ilObjDefReader.php.

364  {
365  // DELETE WHITESPACES AND NEWLINES OF CHARACTER DATA
366  $a_data = preg_replace("/\n/", "", $a_data);
367  $a_data = preg_replace("/\t+/", "", $a_data);
368 
369  if (!empty($a_data)) {
370  switch ($this->current_tag) {
371  case '':
372  }
373  }
374  }

◆ handlerEndTag()

ilObjDefReader::handlerEndTag (   $a_xml_parser,
  $a_name 
)

End tag handler.

Parameters
objectinternal xml_parser_handler
stringelement tag name

Definition at line 327 of file class.ilObjDefReader.php.

References $current_reader, ilMailTemplateContextService\clearFromXml(), ilCronManager\clearFromXML(), and getComponentId().

328  {
329  // call special reader
330  if ($this->current_reader != "") {
331  $this->readers[$this->current_reader]["reader"]->handlerEndTag($a_xml_parser, $a_name);
332  } else {
333  if ($a_name == "module" || $a_name == "service") {
334  include_once "Services/Cron/classes/class.ilCronManager.php";
336  $this->current_component,
337  (array) $this->has_cron[$this->current_component]
338  );
339 
340  ilMailTemplateContextService::clearFromXml($this->current_component, (array) $this->mail_templates_by_component[$this->current_component]);
341 
342  if (!in_array($this->getComponentId(), (array) $this->has_badges)) {
343  include_once "Services/Badge/classes/class.ilBadgeHandler.php";
344  ilBadgeHandler::clearFromXml($this->getComponentId());
345  }
346  }
347  }
348 
349  // check if a special reader needs to be activated
350  if (isset($this->readers[$a_name])) {
351  $this->current_reader = null;
352  }
353  }
getComponentId()
Get component id.
static clearFromXml($a_component, array $a_new_templates)
static clearFromXML($a_component, array $a_xml_job_ids)
Clear job data.
+ Here is the call graph for this function:

◆ setComponentId()

ilObjDefReader::setComponentId (   $a_component_id)

Set from module or service reader.

Definition at line 379 of file class.ilObjDefReader.php.

Referenced by ilServiceReader\handlerBeginTag(), and ilModuleReader\handlerBeginTag().

380  {
381  $this->component_id = $a_component_id;
382  }
+ Here is the caller graph for this function:

◆ setHandlers()

ilObjDefReader::setHandlers (   $a_xml_parser)

Definition at line 47 of file class.ilObjDefReader.php.

48  {
49  xml_set_object($a_xml_parser, $this);
50  xml_set_element_handler($a_xml_parser, 'handlerBeginTag', 'handlerEndTag');
51  xml_set_character_data_handler($a_xml_parser, 'handlerCharacterData');
52  }

Field Documentation

◆ $component_id

ilObjDefReader::$component_id
protected

Definition at line 17 of file class.ilObjDefReader.php.

Referenced by getComponentId().

◆ $current_reader

ilObjDefReader::$current_reader = null
protected

Definition at line 22 of file class.ilObjDefReader.php.

Referenced by handlerBeginTag(), and handlerEndTag().

◆ $in_mail_templates

ilObjDefReader::$in_mail_templates = false
protected

Definition at line 24 of file class.ilObjDefReader.php.

◆ $mail_templates_by_component

ilObjDefReader::$mail_templates_by_component = array()
protected

Definition at line 29 of file class.ilObjDefReader.php.

◆ $readers

ilObjDefReader::$readers
protected
Initial value:
= array(
"copage" => array("class" => "ilCOPageDefReader")
)

Definition at line 19 of file class.ilObjDefReader.php.


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