ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilLOXmlParser Class Reference

Class ilLOXmlWriter. More...

+ Collaboration diagram for ilLOXmlParser:

Public Member Functions

 __construct (ilObjCourse $course, $a_xml)
 Constructor. More...
 
 setMapping (ilImportMapping $mapping)
 Set import mapping. More...
 
 getMapping ()
 Get import mapping. More...
 
 parse ()
 Parse xml. More...
 
 parseObjectDependencies ()
 Parse object dependencies (assigned strucure objects, page objects, fixed questions) More...
 

Data Fields

const TYPE_TST_PO = 1
 
const TYPE_TST_ALL = 2
 
const TYPE_TST_RND = 3
 

Protected Member Functions

 getCourse ()
 Get course. More...
 
 parseSettings (SimpleXMLElement $root)
 
 parseObjectives (SimpleXMLElement $root)
 Parse objective. More...
 
 parseMaterials (SimpleXMLElement $obj, $a_objective_id)
 Parse assigned materials. More...
 
 parseTests (SimpleXMLElement $obj, $a_objective_id)
 Parse tests of objective. More...
 
 getMappingInfoForItem ($a_ref_id)
 Get mapping info. More...
 
 getMappingInfoForItemObject ($a_obj_id)
 Get obj_id mapping. More...
 
 getMappingForQuestion ($qid)
 
 getMappingForQpls ($a_id)
 
 parseXmlErrors ()
 Parse xml errors from libxml_get_errors. More...
 

Private Attributes

 $xml = ''
 
 $course = null
 
 $mapping = null
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilLOXmlParser::__construct ( ilObjCourse  $course,
  $a_xml 
)

Constructor.

Parameters
ilObjCourse$course
type$a_xml

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

References $course.

29  {
30  $this->course = $course;
31  $this->xml = $a_xml;
32  }

Member Function Documentation

◆ getCourse()

ilLOXmlParser::getCourse ( )
protected

Get course.

Returns
ilObjCourse

Definition at line 56 of file class.ilLOXmlParser.php.

References $course.

Referenced by parseObjectives(), parseSettings(), and parseTests().

57  {
58  return $this->course;
59  }
+ Here is the caller graph for this function:

◆ getMapping()

ilLOXmlParser::getMapping ( )

Get import mapping.

Returns
ilImportMapping

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

References $mapping.

Referenced by getMappingForQpls(), getMappingForQuestion(), getMappingInfoForItem(), getMappingInfoForItemObject(), parseMaterials(), parseObjectDependencies(), and parseObjectives().

48  {
49  return $this->mapping;
50  }
+ Here is the caller graph for this function:

◆ getMappingForQpls()

ilLOXmlParser::getMappingForQpls (   $a_id)
protected

Definition at line 340 of file class.ilLOXmlParser.php.

References getMapping().

Referenced by parseTests().

341  {
342  $new_id = $this->getMapping()->getMapping('Modules/Test', 'rnd_src_pool_def', $a_id);
343  if($new_id)
344  {
345  return $new_id;
346  }
347  return 0;
348  }
getMapping()
Get import mapping.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMappingForQuestion()

ilLOXmlParser::getMappingForQuestion (   $qid)
protected

Definition at line 333 of file class.ilLOXmlParser.php.

References $GLOBALS, and getMapping().

Referenced by parseTests().

334  {
335  $new_qid = $this->getMapping()->getMapping('Modules/Test', 'quest', $qid);
336  $GLOBALS['ilLog']->write(__METHOD__.': Found new question_id: ' .$new_qid.' for '. $qid);
337  return $new_qid;
338  }
getMapping()
Get import mapping.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMappingInfoForItem()

ilLOXmlParser::getMappingInfoForItem (   $a_ref_id)
protected

Get mapping info.

Parameters
type$a_ref_id
type$a_obj_id
Returns
int ref id of mapped item

Definition at line 314 of file class.ilLOXmlParser.php.

References $GLOBALS, and getMapping().

Referenced by parseMaterials(), parseSettings(), and parseTests().

315  {
316  $new_ref_id = $this->getMapping()->getMapping('Services/Container', 'refs', $a_ref_id);
317  $GLOBALS['ilLog']->write(__METHOD__.': Found new ref_id: ' .$new_ref_id.' for '. $a_ref_id);
318  return (int) $new_ref_id;
319  }
getMapping()
Get import mapping.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMappingInfoForItemObject()

ilLOXmlParser::getMappingInfoForItemObject (   $a_obj_id)
protected

Get obj_id mapping.

Parameters
int$a_obj_id
Returns
int

Definition at line 326 of file class.ilLOXmlParser.php.

References $GLOBALS, and getMapping().

Referenced by parseTests().

327  {
328  $new_obj_id = $this->getMapping()->getMapping('Services/Container', 'objs', $a_obj_id);
329  $GLOBALS['ilLog']->write(__METHOD__.': Found new ref_id: ' .$new_obj_id.' for '. $a_obj_id);
330  return (int) $new_obj_id;
331  }
getMapping()
Get import mapping.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parse()

ilLOXmlParser::parse ( )

Parse xml.

Definition at line 64 of file class.ilLOXmlParser.php.

References $GLOBALS, parseObjectives(), and parseSettings().

65  {
66  libxml_use_internal_errors(true);
67  $root = simplexml_load_string(trim($this->xml));
68  if(!$root instanceof SimpleXMLElement)
69  {
70  $GLOBALS['ilLog']->write(__METHOD__.': XML is: '. $this->xml. (string) $root);
71  $GLOBALS['ilLog']->write(__METHOD__.': Error parsing objective xml: '.$this->parseXmlErrors());
72  return false;
73  }
74  $GLOBALS['ilLog']->write(__METHOD__.': Handling element: '. (string) $root->getName());
75  $this->parseSettings($root);
76  $this->parseObjectives($root);
77  }
parseObjectives(SimpleXMLElement $root)
Parse objective.
parseSettings(SimpleXMLElement $root)
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
+ Here is the call graph for this function:

◆ parseMaterials()

ilLOXmlParser::parseMaterials ( SimpleXMLElement  $obj,
  $a_objective_id 
)
protected

Parse assigned materials.

Parameters
SimpleXMLElement$obj

Definition at line 165 of file class.ilLOXmlParser.php.

References ilObject\_lookupObjId(), getMapping(), and getMappingInfoForItem().

Referenced by parseObjectDependencies().

166  {
167  foreach($obj->Material as $mat)
168  {
169  $mat_ref_id = (string) $mat->attributes()->refId;
170 
171  $mapping_ref_id = $this->getMappingInfoForItem($mat_ref_id);
172  if($mapping_ref_id)
173  {
174  include_once './Modules/Course/classes/class.ilCourseObjectiveMaterials.php';
175  $new_mat = new ilCourseObjectiveMaterials($a_objective_id);
176  $new_mat->setLMRefId($mapping_ref_id);
177 
178  $mat_type = (string) $mat->attributes()->type;
179  $obj_id = 0;
180  switch($mat_type)
181  {
182  case 'st':
183  $mapped_chapter = $this->getMapping()->getMapping(
184  'Modules/LearningModule',
185  'lm_tree',
186  (int) (string) $mat->attributes()->objId
187  );
188  if($mapped_chapter)
189  {
190  $obj_id = $mapped_chapter;
191  }
192  break;
193 
194  case 'pg':
195  $mapped_page = $this->getMapping()->getMapping(
196  'Modules/LearningModule',
197  'pg',
198  (int) (string) $mat->attributes()->objId
199  );
200  if($mapped_page)
201  {
202  $obj_id = $mapped_page;
203  }
204  break;
205 
206  default:
207  $obj_id = ilObject::_lookupObjId($mapping_ref_id);
208  break;
209  }
210  if($obj_id)
211  {
212  $new_mat->setLMObjId($obj_id);
213  $new_mat->setType((string) $mat->attributes()->type);
214  $new_mat->add();
215  $new_id = $new_mat->add();
216  $new_mat->writePosition($new_id, (int) (string) $mat->attributes());
217  }
218  }
219  }
220  }
getMapping()
Get import mapping.
getMappingInfoForItem($a_ref_id)
Get mapping info.
class ilCourseObjectiveMaterials
static _lookupObjId($a_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseObjectDependencies()

ilLOXmlParser::parseObjectDependencies ( )

Parse object dependencies (assigned strucure objects, page objects, fixed questions)

Definition at line 82 of file class.ilLOXmlParser.php.

References $GLOBALS, getMapping(), parseMaterials(), and parseTests().

83  {
84  libxml_use_internal_errors(true);
85  $root = simplexml_load_string(trim($this->xml));
86  if(!$root instanceof SimpleXMLElement)
87  {
88  $GLOBALS['ilLog']->write(__METHOD__.': XML is: '. $this->xml. (string) $root);
89  $GLOBALS['ilLog']->write(__METHOD__.': Error parsing objective xml: '.$this->parseXmlErrors());
90  return false;
91  }
92 
93  foreach($root->Objective as $obj)
94  {
95  $mapped_objective_id = $this->getMapping()->getMapping('Modules/Course', 'objectives', (string) $obj->attributes()->id);
96  if($mapped_objective_id)
97  {
98  $this->parseMaterials($obj, $mapped_objective_id);
99  $this->parseTests($obj, $mapped_objective_id);
100  }
101  }
102  }
getMapping()
Get import mapping.
parseMaterials(SimpleXMLElement $obj, $a_objective_id)
Parse assigned materials.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
parseTests(SimpleXMLElement $obj, $a_objective_id)
Parse tests of objective.
+ Here is the call graph for this function:

◆ parseObjectives()

ilLOXmlParser::parseObjectives ( SimpleXMLElement  $root)
protected

Parse objective.

Parameters
SimpleXMLElement$root

Definition at line 139 of file class.ilLOXmlParser.php.

References getCourse(), and getMapping().

Referenced by parse().

140  {
141  foreach($root->Objective as $obj)
142  {
143  include_once './Modules/Course/classes/class.ilCourseObjective.php';
144  $new_obj = new ilCourseObjective($this->getCourse());
145  $new_obj->setActive((bool) (string) $obj->attributes()->online);
146  $new_obj->setTitle((string) $obj->Title);
147  $new_obj->setDescription((string) $obj->Description);
148  $new_obj->setPosition((int) (string) $obj->attributes()->position);
149  $new_objective_id = $new_obj->add();
150 
151  $this->getMapping()->addMapping('Modules/Course', 'objectives', (string) $obj->attributes()->id, $new_objective_id);
152  $this->getMapping()->addMapping('Services/COPage', 'pg', 'lobj:'.(string) $obj->attributes()->id, 'lobj:'.$new_objective_id);
153 
154  // done after container import complete
155  //$this->parseMaterials($obj,$new_objective_id);
156  //$this->parseTests($obj, $new_objective_id);
157 
158  }
159  }
getMapping()
Get import mapping.
getCourse()
Get course.
class ilcourseobjective
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseSettings()

ilLOXmlParser::parseSettings ( SimpleXMLElement  $root)
protected
Parameters
SimpleXMLElement$root

Definition at line 108 of file class.ilLOXmlParser.php.

References $GLOBALS, getCourse(), ilLOSettings\getInstanceByObjId(), and getMappingInfoForItem().

Referenced by parse().

109  {
110  include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
111  $settings = ilLOSettings::getInstanceByObjId($this->getCourse()->getId());
112  $GLOBALS['ilLog']->write(__METHOD__.': Handling element: '. (string) $root->Settings->getName());
113  foreach($root->Settings as $set)
114  {
115  $GLOBALS['ilLog']->write(__METHOD__.': Handling element: '. (string) $set->getName());
116  $settings->setInitialTestType((int) (string) $set->attributes()->initialTestType);
117  $settings->setInitialTestAsStart((bool) (string) $set->attributes()->initialTestStart);
118  $settings->setQualifyingTestType((int) (string) $set->attributes()->qualifyingTestType);
119  $settings->setQualifyingTestAsStart((bool) (string) $set->attributes()->qualifyingTestStart);
120  $settings->resetResults((bool) (string) $set->attributes()->resetResults);
121  $settings->setPassedObjectiveMode((int) (string) $set->attributes()->passedObjectivesMode);
122 
123  // itest
124  $itest = (int) $this->getMappingInfoForItem((int) (string) $set->attributes()->iTest);
125  $settings->setInitialTest($itest);
126 
127  // qtest
128  $qtest = (int) $this->getMappingInfoForItem((int) (string) $set->attributes()->qTest);
129  $settings->setQualifiedTest($qtest);
130 
131  $settings->update();
132  }
133  }
static getInstanceByObjId($a_obj_id)
get singleton instance
getCourse()
Get course.
getMappingInfoForItem($a_ref_id)
Get mapping info.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseTests()

ilLOXmlParser::parseTests ( SimpleXMLElement  $obj,
  $a_objective_id 
)
protected

Parse tests of objective.

Parameters
SimpleXMLElement$obj
type$a_objective_id

Definition at line 227 of file class.ilLOXmlParser.php.

References $GLOBALS, ilObject\_lookupObjId(), getCourse(), getMappingForQpls(), getMappingForQuestion(), getMappingInfoForItem(), getMappingInfoForItemObject(), and ilLORandomTestQuestionPools\setTestId().

Referenced by parseObjectDependencies().

228  {
229  $GLOBALS['ilLog']->write(__METHOD__.': Parsing ' . (string) $obj->getName());
230 
231  foreach($obj->Test as $tst)
232  {
233  $type = (int) (string) $tst->attributes()->type;
234 
235 
236  if($type == self::TYPE_TST_PO)
237  {
238  $tst_ref_id = (string) $tst->attributes()->refId;
239  $mapping_ref_id = $this->getMappingInfoForItem($tst_ref_id);
240  $GLOBALS['ilLog']->write(__METHOD__.': Found test ref id ' . (string) $tst_ref_id);
241  if(!$mapping_ref_id)
242  {
243  continue;
244  }
245  include_once './Modules/Course/classes/Objectives/class.ilLOTestAssignment.php';
246  $assignment = new ilLOTestAssignment();
247  $assignment->setContainerId($this->getCourse()->getId());
248  $assignment->setTestRefId($mapping_ref_id);
249  $assignment->setObjectiveId($a_objective_id);
250  $assignment->setAssignmentType((int) (string) $tst->attributes()->testType);
251  $assignment->save();
252  }
253  elseif($type == self::TYPE_TST_RND)
254  {
255  $tst_obj_id = (int) (string) $tst->attributes()->objId;
256  $mapping_id = $this->getMappingInfoForItemObject($tst_obj_id);
257  if(!$mapping_id)
258  {
259  continue;
260  }
261 
262  $new_qpl_id = $this->getMappingForQpls((int) (string) $tst->attributes()->poolId);
263  if(!$new_qpl_id)
264  {
265  continue;
266  }
267 
268  include_once './Modules/Course/classes/Objectives/class.ilLORandomTestQuestionPools.php';
269  $rnd = new ilLORandomTestQuestionPools(
270  $this->getCourse()->getId(),
271  $a_objective_id,
272  (int) (string) $tst->attributes()->testType
273  );
274  $rnd->setTestId($mapping_id);
275  $rnd->setLimit((string) $tst->attributes()->limit);
276  $rnd->setQplSequence($new_qpl_id);
277  $rnd->create();
278  }
279  else
280  {
281  $tst_ref_id = (string) $tst->attributes()->refId;
282  $mapping_ref_id = $this->getMappingInfoForItem($tst_ref_id);
283  if(!$mapping_ref_id)
284  {
285  continue;
286  }
287  include_once './Modules/Course/classes/class.ilCourseObjectiveQuestion.php';
288  $quest = new ilCourseObjectiveQuestion($a_objective_id);
289  $quest->setTestRefId($mapping_ref_id);
290  $quest->setTestObjId(ilObject::_lookupObjId($mapping_ref_id));
291  $quest->setTestStatus((string) $tst->attributes()->testType);
292  $quest->setTestSuggestedLimit((string) $tst->attributes()->limit);
293 
294  foreach($tst->Question as $qst)
295  {
296  $qid = (string) $qst->attributes()->id;
297  $mapping_qid = $this->getMappingForQuestion($qid);
298  if($mapping_qid)
299  {
300  $quest->setQuestionId($mapping_qid);
301  $quest->add();
302  }
303  }
304  }
305  }
306  }
getCourse()
Get course.
getMappingInfoForItemObject($a_obj_id)
Get obj_id mapping.
getMappingInfoForItem($a_ref_id)
Get mapping info.
static _lookupObjId($a_id)
Settings for LO courses.
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Definition: CAS.php:276
class ilcourseobjectiveQuestion
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ parseXmlErrors()

ilLOXmlParser::parseXmlErrors ( )
protected

Parse xml errors from libxml_get_errors.

Returns
string

Definition at line 362 of file class.ilLOXmlParser.php.

References $errors.

363  {
364  $errors = '';
365  foreach(libxml_get_errors() as $err)
366  {
367  $errors .= $err->code.'<br/>';
368  }
369  return $errors;
370  }
$errors

◆ setMapping()

ilLOXmlParser::setMapping ( ilImportMapping  $mapping)

Set import mapping.

Parameters
ilImportMapping$mapping

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

References $mapping.

39  {
40  $this->mapping = $mapping;
41  }

Field Documentation

◆ $course

ilLOXmlParser::$course = null
private

Definition at line 20 of file class.ilLOXmlParser.php.

Referenced by __construct(), and getCourse().

◆ $mapping

ilLOXmlParser::$mapping = null
private

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

Referenced by getMapping(), and setMapping().

◆ $xml

ilLOXmlParser::$xml = ''
private

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

◆ TYPE_TST_ALL

const ilLOXmlParser::TYPE_TST_ALL = 2

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

◆ TYPE_TST_PO

const ilLOXmlParser::TYPE_TST_PO = 1

Definition at line 14 of file class.ilLOXmlParser.php.

◆ TYPE_TST_RND

const ilLOXmlParser::TYPE_TST_RND = 3

Definition at line 16 of file class.ilLOXmlParser.php.


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