ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5
ilCourseXMLParser Class Reference

Course XML Parser. More...

+ Inheritance diagram for ilCourseXMLParser:
+ Collaboration diagram for ilCourseXMLParser:

Public Member Functions

 ilCourseXMLParser ($a_course_obj, $a_xml_file='')
 Constructor. More...
 
 setHandlers ($a_xml_parser)
 set event handlers More...
 
 handlerBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element More...
 
 handlerEndTag ($a_xml_parser, $a_name)
 handler for end of element More...
 
 handlerCharacterData ($a_xml_parser, $a_data)
 handler for character data More...
 
 __parseId ($a_id)
 
- Public Member Functions inherited from ilMDSaxParser
 ilMDSaxParser ($a_xml_file='')
 Constructor. More...
 
 enableMDParsing ($a_status)
 
 getMDParsingStatus ()
 
 setMDObject (&$md)
 
getMDObject ()
 
 inMetaData ()
 
 setHandlers ($a_xml_parser)
 set event handlers More...
 
 handlerBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element More...
 
 handlerEndTag ($a_xml_parser, $a_name)
 handler for end of element More...
 
 handlerCharacterData ($a_xml_parser, $a_data)
 handler for character data More...
 
 __getCharacterData ()
 
 __pushParent (&$md_obj)
 
__popParent ()
 
__getParent ()
 
 ilMDSaxParser ($a_xml_file='')
 Constructor. More...
 
 setMDObject (&$md)
 
 inMetaData ()
 
 handlerBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element More...
 
 handlerEndTag ($a_xml_parser, $a_name)
 handler for end of element More...
 
 handlerCharacterData ($a_xml_parser, $a_data)
 handler for character data More...
 
 __getCharacterData ()
 
 __pushParent (&$md_obj)
 
__popParent ()
 
__getParent ()
 
- Public Member Functions inherited from ilSaxParser
 ilSaxParser ($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
 PEAR ($error_class=null)
 Constructor. More...
 
 _PEAR ()
 Destructor (the emulated type of...). More...
 
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...
 
 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...
 
 setErrorHandling ($mode=null, $options=null)
 Sets how errors generated by this object should be handled. 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...
 

Data Fields

 $lng
 
 $md_obj = null
 
- Data Fields inherited from ilMDSaxParser
 $md_in_md = false
 
 $md_chr_data = ''
 
 $md_cur_el = null
 
 $md_parsing_enabled = null
 
 $md = null
 
 $md_gen
 
- 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()
 

Private Member Functions

 handleMember ($a_attribs, $id_data)
 attach or detach user/member/admin from course member More...
 
 handleAdmin ($a_attribs, $id_data)
 attach or detach admin from course member More...
 
 handleTutor ($a_attribs, $id_data)
 attach or detach admin from course member More...
 
 handleSubscriber ($a_attribs, $id_data)
 attach or detach members from subscribers More...
 
 handleWaitingList ($a_attribs, $id_data)
 attach or detach members from waitinglist More...
 

Private Attributes

 $current_container_setting
 

Additional Inherited Members

- 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

Course XML Parser.

Author
Stefan Meyer smeye.nosp@m.r.il.nosp@m.ias@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 43 of file class.ilCourseXMLParser.php.

Member Function Documentation

◆ __parseId()

ilCourseXMLParser::__parseId (   $a_id)

Definition at line 722 of file class.ilCourseXMLParser.php.

References ilSaxParser\$ilias, ilObjUser\_getImportedUserId(), and ilObjUser\_lookupLogin().

Referenced by handlerBeginTag().

723  {
724  global $ilias;
725 
726  $fields = explode('_',$a_id);
727 
728  if(!is_array($fields) or
729  $fields[0] != 'il' or
730  !is_numeric($fields[1]) or
731  $fields[2] != 'usr' or
732  !is_numeric($fields[3]))
733  {
734  return false;
735  }
736  if($id = ilObjUser::_getImportedUserId($a_id))
737  {
738  return array('imported' => true,
739  'local' => false,
740  'usr_id' => $id);
741  }
742  if(($fields[1] == $ilias->getSetting('inst_id',0)) and strlen(ilObjUser::_lookupLogin($fields[3])))
743  {
744  return array('imported' => false,
745  'local' => true,
746  'usr_id' => $fields[3]);
747  }
748  return false;
749  }
static _lookupLogin($a_user_id)
lookup login
_getImportedUserId($i2_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleAdmin()

ilCourseXMLParser::handleAdmin (   $a_attribs,
  $id_data 
)
private

attach or detach admin from course member

Parameters
string$a_attribsattribute of a node
array$id_data

Definition at line 394 of file class.ilCourseXMLParser.php.

References IL_CRS_ADMIN.

Referenced by handlerBeginTag().

395  {
396  global $rbacadmin;
397 
398  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach')
399  // if action not set, or attach
400  {
401  if (!array_key_exists($id_data['usr_id'], $this->course_members_array))
402  // add only if member is not assigned yet
403  {
404  $this->course_members->add($id_data['usr_id'],IL_CRS_ADMIN);
405  if($a_attribs['notification'] == 'Yes')
406  {
407  $this->course_members->updateNotification($id_data['usr_id'],true);
408  }
409  if($a_attribs['passed'] == 'Yes')
410  {
411  $this->course_members->updatePassed($id_data['usr_id'],true);
412  }
413  $this->course_members_array[$id_data['usr_id']] = "added";
414  }
415  else
416  // update
417  {
418  if($a_attribs['notification'] == 'Yes')
419  {
420  $this->course_members->updateNotification($id_data['usr_id'],true);
421  }
422  if($a_attribs['passed'] == 'Yes')
423  {
424  $this->course_members->updatePassed($id_data['usr_id'],true);
425  }
426  $this->course_members->updateBlocked($id_data['usr_id'],false);
427  }
428  }
429  elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isAdmin($id_data['usr_id']))
430  // if action set and detach and is admin of course
431  {
432  $this->course_members->delete($id_data['usr_id']);
433  }
434 
435  }
const IL_CRS_ADMIN
Base class for course and group participants.
+ Here is the caller graph for this function:

◆ handleMember()

ilCourseXMLParser::handleMember (   $a_attribs,
  $id_data 
)
private

attach or detach user/member/admin from course member

Parameters
array$a_attribsattributes of nod
array$id_data
int$roletypetype of role, which is courseMember->

Definition at line 346 of file class.ilCourseXMLParser.php.

References IL_CRS_MEMBER.

Referenced by handlerBeginTag().

347  {
348  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach')
349  // if action not set, or set and attach
350  {
351  if (!array_key_exists($id_data['usr_id'], $this->course_members_array))
352  // add only if member is not yet assigned as tutor or admin
353  {
354  $this->course_members->add($id_data['usr_id'],IL_CRS_MEMBER);
355  if($a_attribs['blocked'] == 'Yes')
356  {
357  $this->course_members->updateBlocked($id_data['usr_id'],true);
358  }
359  if($a_attribs['passed'] == 'Yes')
360  {
361  $this->course_members->updatePassed($id_data['usr_id'],true);
362  }
363  $this->course_members_array[$id_data['usr_id']] = "added";
364  }
365  else
366  // the member does exist. Now update status etc. only
367  {
368  if($a_attribs['blocked'] == 'Yes')
369  {
370  $this->course_members->updateBlocked($id_data['usr_id'],true);
371  }
372  if($a_attribs['passed'] == 'Yes')
373  {
374  $this->course_members->updatePassed($id_data['usr_id'],true);
375  }
376  }
377  }
378  elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isMember($id_data['usr_id']))
379  // if action set and detach and is member of course
380  {
381  $this->course_members->delete($id_data['usr_id']);
382  }
383 
384  }
const IL_CRS_MEMBER
+ Here is the caller graph for this function:

◆ handlerBeginTag()

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

handler for begin of element

Parameters
resource$a_xml_parserxml parser
string$a_nameelement name
array$a_attribselement attributes array

Implements ilSaxSubsetParser.

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

References __parseId(), ilContainerSortingSettings\_importContainerSortingSettings(), ilObject\_writeImportId(), ilContainerSortingSettings\getInstanceByObjId(), handleAdmin(), handleMember(), handleSubscriber(), handleTutor(), handleWaitingList(), IL_CRS_ACTIVATION_LIMITED, IL_CRS_ACTIVATION_OFFLINE, IL_CRS_ACTIVATION_UNLIMITED, IL_CRS_ARCHIVE_DOWNLOAD, IL_CRS_ARCHIVE_NONE, IL_CRS_SUBSCRIPTION_CONFIRMATION, IL_CRS_SUBSCRIPTION_DEACTIVATED, IL_CRS_SUBSCRIPTION_DIRECT, IL_CRS_SUBSCRIPTION_LIMITED, IL_CRS_SUBSCRIPTION_PASSWORD, and IL_CRS_SUBSCRIPTION_UNLIMITED.

109  {
110  if($this->in_meta_data)
111  {
112  parent::handlerBeginTag($a_xml_parser,$a_name,$a_attribs);
113  return;
114  }
115 
116  switch($a_name)
117  {
118  case 'Course':
119 
120  if(strlen($a_attribs['importId']))
121  {
122  $this->log->write("CourseXMLParser: importId = ".$a_attribs['importId']);
123  $this->course_obj->setImportId($a_attribs['importId']);
124  ilObject::_writeImportId($this->course_obj->getId(),$a_attribs['importId']);
125  }
126  if(strlen($a_attribs['showMembers']))
127  {
128  $this->course_obj->setShowMembers(
129  $a_attribs['showMembers'] == 'Yes' ? true : false
130  );
131  }
132  break;
133 
134  case 'Admin':
135  if($id_data = $this->__parseId($a_attribs['id']))
136  {
137  if($id_data['local'] or $id_data['imported'])
138  {
139  $this->handleAdmin($a_attribs, $id_data);
140  }
141  }
142  break;
143 
144  case 'Tutor':
145  if($id_data = $this->__parseId($a_attribs['id']))
146  {
147  if($id_data['local'] or $id_data['imported'])
148  {
149  $this->handleTutor($a_attribs, $id_data);
150 
151  }
152  }
153  break;
154 
155  case 'Member':
156  if($id_data = $this->__parseId($a_attribs['id']))
157  {
158  if($id_data['local'] or $id_data['imported'])
159  {
160  $this->handleMember($a_attribs, $id_data);
161  }
162  }
163  break;
164 
165  case 'Subscriber':
166  if($id_data = $this->__parseId($a_attribs['id']))
167  {
168  if($id_data['local'] or $id_data['imported'])
169  {
170  $this->handleSubscriber($a_attribs, $id_data);
171  }
172  }
173  break;
174 
175  case 'WaitingList':
176  if($id_data = $this->__parseId($a_attribs['id']))
177  {
178  if($id_data['local'] or $id_data['imported'])
179  {
180  $this->handleWaitingList($a_attribs, $id_data);
181  }
182  }
183  break;
184 
185  case 'Owner':
186  if($id_data = $this->__parseId($a_attribs['id']))
187  {
188  if($id_data['local'] or $id_data['imported'])
189  {
190  $this->course_obj->setOwner($id_data['usr_id']);
191  $this->course_obj->updateOwner();
192  }
193  }
194  break;
195 
196 
197  case 'Settings':
198  $this->in_settings = true;
199  break;
200  case 'Availability':
201  $this->in_availability = true;
202  break;
203 
204  case 'NotAvailable':
205  if($this->in_availability)
206  {
207  $this->course_obj->setActivationType(IL_CRS_ACTIVATION_OFFLINE);
208  }
209  elseif($this->in_registration)
210  {
211  $this->course_obj->setSubscriptionLimitationType(IL_CRS_SUBSCRIPTION_DEACTIVATED);
212  }
213 
214  break;
215 
216  case 'Unlimited':
217  if($this->in_availability)
218  {
219  $this->course_obj->setOfflineStatus(false);
220  $this->course_obj->setActivationType(IL_CRS_ACTIVATION_UNLIMITED);
221  }
222  elseif($this->in_registration)
223  {
224  $this->course_obj->setSubscriptionLimitationType(IL_CRS_SUBSCRIPTION_UNLIMITED);
225  }
226 
227  break;
228  case 'TemporarilyAvailable':
229  if($this->in_availability)
230  {
231  $this->course_obj->setOfflineStatus(false);
232  $this->course_obj->setActivationType(IL_CRS_ACTIVATION_LIMITED);
233  }
234  elseif($this->in_registration)
235  {
236  $this->course_obj->setSubscriptionLimitationType(IL_CRS_SUBSCRIPTION_LIMITED);
237  }
238  break;
239 
240  case 'Start':
241  break;
242 
243  case 'End':
244  break;
245 
246  case 'Syllabus':
247  break;
248 
249  case 'Contact':
250  break;
251 
252  case 'Name':
253  case 'Responsibility':
254  case 'Phone':
255  case 'Email':
256  case 'Consultation':
257  break;
258 
259  case 'Registration':
260  $this->in_registration = true;
261 
262  switch($a_attribs['registrationType'])
263  {
264  case 'Confirmation':
265  $this->course_obj->setSubscriptionType(IL_CRS_SUBSCRIPTION_CONFIRMATION);
266  break;
267 
268  case 'Direct':
269  $this->course_obj->setSubscriptionType(IL_CRS_SUBSCRIPTION_DIRECT);
270  break;
271 
272  case 'Password':
273  $this->course_obj->setSubscriptionType(IL_CRS_SUBSCRIPTION_PASSWORD);
274  break;
275  }
276 
277  $this->course_obj->setSubscriptionMaxMembers((int) $a_attribs['maxMembers']);
278  $this->course_obj->enableSubscriptionMembershipLimitation($this->course_obj->getSubscriptionMaxMembers() > 0);
279  $this->course_obj->setSubscriptionNotify($a_attribs['notification'] == 'Yes' ? true : false);
280  $this->course_obj->enableWaitingList($a_attribs['waitingList'] == 'Yes' ? true : false);
281  break;
282 
283  case 'Sort':
284  include_once './Services/Container/classes/class.ilContainerSortingSettings.php';
285  ilContainerSortingSettings::_importContainerSortingSettings($a_attribs, $this->course_obj->getId());
286 
287  //#17837
288  $this->course_obj->setOrderType(
289  ilContainerSortingSettings::getInstanceByObjId($this->course_obj->getId())->getSortMode()
290  );
291  break;
292 
293 
294  case 'Archive':
295  $this->in_archive = true;
296  switch($a_attribs['Access'])
297  {
298  case 'Disabled':
299  $this->course_obj->setArchiveType(IL_CRS_ARCHIVE_NONE);
300  break;
301 
302  case 'Read':
303  $this->course_obj->setArchiveType(IL_CRS_ARCHIVE_NONE);
304  #$this->course_obj->setViewMode(IL_CRS_VIEW_ARCHIVE);
305  break;
306 
307  case 'Download':
308  #$this->course_obj->setViewMode(IL_CRS_VIEW_ARCHIVE);
309  $this->course_obj->setArchiveType(IL_CRS_ARCHIVE_DOWNLOAD);
310  break;
311  }
312  break;
313 
314  case 'Disabled':
315  $this->course_obj->getSubscriptionLimitationType(IL_CRS_SUBSCRIPTION_DEACTIVATED);
316  break;
317 
318  case "MetaData":
319  $this->in_meta_data = true;
320  parent::handlerBeginTag($a_xml_parser,$a_name,$a_attribs);
321  break;
322 
323  case 'ContainerSetting':
324  $this->current_container_setting = $a_attribs['id'];
325  break;
326 
327  case 'Period':
328  $this->in_period = true;
329  break;
330 
331  case 'WaitingListAutoFill':
332  case 'CancellationEnd':
333  case 'MinMembers':
334  break;
335  }
336  }
const IL_CRS_ACTIVATION_LIMITED
const IL_CRS_SUBSCRIPTION_LIMITED
static _importContainerSortingSettings($attibs, $obj_id)
sorting import for all container objects
handleMember($a_attribs, $id_data)
attach or detach user/member/admin from course member
handleAdmin($a_attribs, $id_data)
attach or detach admin from course member
const IL_CRS_SUBSCRIPTION_CONFIRMATION
handleWaitingList($a_attribs, $id_data)
attach or detach members from waitinglist
const IL_CRS_ARCHIVE_NONE
const IL_CRS_SUBSCRIPTION_PASSWORD
_writeImportId($a_obj_id, $a_import_id)
write import id to db (static)
const IL_CRS_ACTIVATION_OFFLINE
const IL_CRS_SUBSCRIPTION_UNLIMITED
handleTutor($a_attribs, $id_data)
attach or detach admin from course member
const IL_CRS_ARCHIVE_DOWNLOAD
const IL_CRS_SUBSCRIPTION_DIRECT
static getInstanceByObjId($a_obj_id)
Get singleton instance.
handleSubscriber($a_attribs, $id_data)
attach or detach members from subscribers
const IL_CRS_SUBSCRIPTION_DEACTIVATED
const IL_CRS_ACTIVATION_UNLIMITED
+ Here is the call graph for this function:

◆ handlerCharacterData()

ilCourseXMLParser::handlerCharacterData (   $a_xml_parser,
  $a_data 
)

handler for character data

Parameters
resource$a_xml_parserxml parser
string$a_datacharacter data

Implements ilSaxSubsetParser.

Definition at line 705 of file class.ilCourseXMLParser.php.

706  {
707  // call meta data handler
708  if($this->in_meta_data)
709  {
710  parent::handlerCharacterData($a_xml_parser,$a_data);
711  }
712  if($a_data != "\n")
713  {
714  // Replace multiple tabs with one space
715  $a_data = preg_replace("/\t+/"," ",$a_data);
716 
717  $this->cdata .= $a_data;
718  }
719  }

◆ handlerEndTag()

ilCourseXMLParser::handlerEndTag (   $a_xml_parser,
  $a_name 
)

handler for end of element

Parameters
resource$a_xml_parserxml parser
string$a_nameelement name

Implements ilSaxSubsetParser.

Definition at line 547 of file class.ilCourseXMLParser.php.

References $current_container_setting, ilContainer\_writeContainerSetting(), and IL_CAL_UNIX.

548  {
549  if($this->in_meta_data)
550  {
551  parent::handlerEndTag($a_xml_parser,$a_name);
552  }
553 
554  switch($a_name)
555  {
556  case 'Course':
557 
558  $this->log->write('CourseXMLParser: import_id = '.$this->course_obj->getImportId());
559  $this->course_obj->MDUpdateListener('General');
560  $this->course_obj->update();
561  $this->adv_md_handler->save();
562  break;
563 
564  case 'Settings':
565  $this->in_settings = false;
566  break;
567 
568  case 'Availability':
569  $this->in_availability = false;
570  break;
571 
572  case 'Registration':
573  $this->in_registration = false;
574  break;
575 
576  case 'Archive':
577  $this->in_archive = false;
578  break;
579 
580  case 'Start':
581  if($this->in_availability)
582  {
583  $this->course_obj->setActivationStart(trim($this->cdata));
584  }
585  if($this->in_registration)
586  {
587  $this->course_obj->setSubscriptionStart(trim($this->cdata));
588  }
589  if($this->in_archive)
590  {
591  $this->course_obj->setArchiveStart(trim($this->cdata));
592  }
593  if($this->in_period)
594  {
595  if((int)$this->cdata)
596  {
597  $this->course_obj->setCourseStart(new ilDate((int)$this->cdata, IL_CAL_UNIX));
598  }
599  }
600  break;
601 
602  case 'End':
603  if($this->in_availability)
604  {
605  $this->course_obj->setActivationEnd(trim($this->cdata));
606  }
607  if($this->in_registration)
608  {
609  $this->course_obj->setSubscriptionEnd(trim($this->cdata));
610  }
611  if($this->in_archive)
612  {
613  $this->course_obj->setArchiveEnd(trim($this->cdata));
614  }
615  if($this->in_period)
616  {
617  if((int)$this->cdata)
618  {
619  $this->course_obj->setCourseEnd(new ilDate((int)$this->cdata, IL_CAL_UNIX));
620  }
621  }
622  break;
623 
624  case 'Syllabus':
625  $this->course_obj->setSyllabus(trim($this->cdata));
626  break;
627 
628 
629  case 'ImportantInformation':
630  $this->course_obj->setImportantInformation(trim($this->cdata));
631  break;
632 
633  case 'Name':
634  $this->course_obj->setContactName(trim($this->cdata));
635  break;
636 
637  case 'Responsibility':
638  $this->course_obj->setContactResponsibility(trim($this->cdata));
639  break;
640 
641  case 'Phone':
642  $this->course_obj->setContactPhone(trim($this->cdata));
643  break;
644 
645  case 'Email':
646  $this->course_obj->setContactEmail(trim($this->cdata));
647  break;
648 
649  case 'Consultation':
650  $this->course_obj->setContactConsultation(trim($this->cdata));
651  break;
652 
653  case 'Password':
654  $this->course_obj->setSubscriptionPassword(trim($this->cdata));
655  break;
656 
657  case 'MetaData':
658  $this->in_meta_data = false;
659  parent::handlerEndTag($a_xml_parser,$a_name);
660  break;
661 
662  case 'ContainerSetting':
663  if($this->current_container_setting)
664  {
666  $this->course_obj->getId(),
668  $this->cdata);
669  }
670  break;
671 
672  case 'Period':
673  $this->in_period = false;
674  break;
675 
676  case 'WaitingListAutoFill':
677  $this->course_obj->setWaitingListAutoFill($this->cdata);
678  break;
679 
680  case 'CancellationEnd':
681  if((int)$this->cdata)
682  {
683  $this->course_obj->setCancellationEnd(new ilDate((int)$this->cdata, IL_CAL_UNIX));
684  }
685  break;
686 
687  case 'MinMembers':
688  if((int)$this->cdata)
689  {
690  $this->course_obj->setSubscriptionMinMembers((int)$this->cdata);
691  }
692  break;
693  }
694  $this->cdata = '';
695 
696  return;
697  }
_writeContainerSetting($a_id, $a_keyword, $a_value)
const IL_CAL_UNIX
Class for single dates.
+ Here is the call graph for this function:

◆ handleSubscriber()

ilCourseXMLParser::handleSubscriber (   $a_attribs,
  $id_data 
)
private

attach or detach members from subscribers

Parameters
string$a_attribsattribute of a node
array$id_data

Definition at line 492 of file class.ilCourseXMLParser.php.

Referenced by handlerBeginTag().

493  {
494  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach')
495  // if action not set, or attach
496  {
497  if (!$this->course_members->isSubscriber($id_data['usr_id']))
498  // add only if not exist
499  {
500  $this->course_members->addSubscriber($id_data['usr_id']);
501  }
502  $this->course_members->updateSubscriptionTime($id_data['usr_id'],$a_attribs['subscriptionTime']);
503 
504  }
505  elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isSubscriber($id_data['usr_id']))
506  // if action set and detach and is subscriber
507  {
508  $this->course_members->deleteSubscriber($id_data["usr_id"]);
509  }
510 
511  }
+ Here is the caller graph for this function:

◆ handleTutor()

ilCourseXMLParser::handleTutor (   $a_attribs,
  $id_data 
)
private

attach or detach admin from course member

Parameters
string$a_attribsattribute of a node
array$id_data

Definition at line 445 of file class.ilCourseXMLParser.php.

References IL_CRS_TUTOR.

Referenced by handlerBeginTag().

445  {
446  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach')
447  // if action not set, or attach
448  {
449  if (!array_key_exists($id_data['usr_id'], $this->course_members_array))
450  // add only if member is not assigned yet
451  {
452  $this->course_members->add($id_data['usr_id'],IL_CRS_TUTOR);
453  if($a_attribs['notification'] == 'Yes')
454  {
455  $this->course_members->updateNotification($id_data['usr_id'],true);
456  }
457  if($a_attribs['passed'] == 'Yes')
458  {
459  $this->course_members->updatePassed($id_data['usr_id'],true);
460  }
461  $this->course_members_array[$id_data['usr_id']] = "added";
462  }
463  else
464  {
465  if($a_attribs['notification'] == 'Yes')
466  {
467  $this->course_members->updateNotification($id_data['usr_id'],true);
468  }
469  if($a_attribs['passed'] == 'Yes')
470  {
471  $this->course_members->updatePassed($id_data['usr_id'],true);
472  }
473  $this->course_members->updateBlocked($id_data['usr_id'],false);
474  }
475  }
476  elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isTutor($id_data['usr_id']))
477  // if action set and detach and is tutor of course
478  {
479  $this->course_members->delete($id_data['usr_id']);
480  }
481 
482  }
const IL_CRS_TUTOR
+ Here is the caller graph for this function:

◆ handleWaitingList()

ilCourseXMLParser::handleWaitingList (   $a_attribs,
  $id_data 
)
private

attach or detach members from waitinglist

Parameters
string$a_attribsattribute of a node
array$id_data

Definition at line 519 of file class.ilCourseXMLParser.php.

Referenced by handlerBeginTag().

520  {
521  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach')
522  // if action not set, or attach
523  {
524  if (!$this->course_waiting_list->isOnList($id_data['usr_id']))
525  // add only if not exists
526  {
527  $this->course_waiting_list->addToList($id_data['usr_id']);
528  }
529  $this->course_waiting_list->updateSubscriptionTime($id_data['usr_id'],$a_attribs['subscriptionTime']);
530 
531  }
532  elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_waiting_list->isOnList($id_data['usr_id']))
533  // if action set and detach and is on list
534  {
535  $this->course_waiting_list->removeFromList($id_data['usr_id']);
536  }
537 
538  }
+ Here is the caller graph for this function:

◆ ilCourseXMLParser()

ilCourseXMLParser::ilCourseXMLParser (   $a_course_obj,
  $a_xml_file = '' 
)

Constructor.

Parameters
object$a_content_objectmust be of type ilObjContentObject ilObjTest or ilObjQuestionPool
string$a_xml_filexml file
string$a_subdirsubdirectory in import directory public

Definition at line 59 of file class.ilCourseXMLParser.php.

References $ilLog, $lng, ilCourseParticipants\_getInstanceByObjId(), and ilMDSaxParser\setMDObject().

60  {
61  global $lng,$ilLog;
62 
63  parent::ilMDSaxParser($a_xml_file);
64 
65  $this->sax_controller = new ilSaxController();
66 
67  $this->log =& $ilLog;
68 
69  $this->course_obj = $a_course_obj;
70  $this->course_members = ilCourseParticipants::_getInstanceByObjId($this->course_obj->getId());
71  $this->course_waiting_list = new ilCourseWaitingList($this->course_obj->getId());
72  // flip the array so we can use array_key_exists
73  $this->course_members_array = array_flip($this->course_members->getParticipants());
74 
75  $this->md_obj = new ilMD($this->course_obj->getId(),0,'crs');
76  $this->setMDObject($this->md_obj);
77 
78  $this->lng =& $lng;
79  }
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
Controller class for sax element handlers.
+ Here is the call graph for this function:

◆ setHandlers()

ilCourseXMLParser::setHandlers (   $a_xml_parser)

set event handlers

Parameters
resourcereference to the xml parser public

Definition at line 87 of file class.ilCourseXMLParser.php.

88  {
89  $this->sax_controller->setHandlers($a_xml_parser);
90  $this->sax_controller->setDefaultElementHandler($this);
91 
92  include_once('Services/AdvancedMetaData/classes/class.ilAdvancedMDValueParser.php');
93  $this->sax_controller->setElementHandler(
94  $this->adv_md_handler = new ilAdvancedMDValueParser($this->course_obj->getId()),
95  'AdvancedMetaData');
96  }

Field Documentation

◆ $current_container_setting

ilCourseXMLParser::$current_container_setting
private

Definition at line 48 of file class.ilCourseXMLParser.php.

Referenced by handlerEndTag().

◆ $lng

ilCourseXMLParser::$lng

Definition at line 45 of file class.ilCourseXMLParser.php.

Referenced by ilCourseXMLParser().

◆ $md_obj

ilCourseXMLParser::$md_obj = null

Definition at line 46 of file class.ilCourseXMLParser.php.


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