25 include_once(
"Services/MetaData/classes/class.ilMDSaxParser.php");
26 include_once(
"Services/MetaData/classes/class.ilMD.php");
27 include_once(
'Services/Utilities/interfaces/interface.ilSaxSubsetParser.php');
28 include_once(
'Services/Utilities/classes/class.ilSaxController.php');
29 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
30 include_once
'Modules/Course/classes/class.ilCourseWaitingList.php';
31 include_once
'Modules/Course/classes/class.ilCourseConstants.php';
63 parent::__construct($a_xml_file);
69 $this->course_obj = $a_course_obj;
73 $this->course_members_array = array_flip($this->course_members->getParticipants());
75 $this->md_obj =
new ilMD($this->course_obj->getId(),0,
'crs');
89 $this->sax_controller->setHandlers($a_xml_parser);
90 $this->sax_controller->setDefaultElementHandler($this);
92 include_once(
'Services/AdvancedMetaData/classes/class.ilAdvancedMDValueParser.php');
93 $this->sax_controller->setElementHandler(
110 if($this->in_meta_data)
112 parent::handlerBeginTag($a_xml_parser,$a_name,$a_attribs);
120 if(strlen($a_attribs[
'importId']))
122 $this->log->write(
"CourseXMLParser: importId = ".$a_attribs[
'importId']);
123 $this->course_obj->setImportId($a_attribs[
'importId']);
126 if(strlen($a_attribs[
'showMembers']))
128 $this->course_obj->setShowMembers(
129 $a_attribs[
'showMembers'] ==
'Yes' ?
true :
false 135 if($id_data = $this->
__parseId($a_attribs[
'id']))
137 if($id_data[
'local']
or $id_data[
'imported'])
145 if($id_data = $this->
__parseId($a_attribs[
'id']))
147 if($id_data[
'local']
or $id_data[
'imported'])
156 if($id_data = $this->
__parseId($a_attribs[
'id']))
158 if($id_data[
'local']
or $id_data[
'imported'])
166 if($id_data = $this->
__parseId($a_attribs[
'id']))
168 if($id_data[
'local']
or $id_data[
'imported'])
176 if($id_data = $this->
__parseId($a_attribs[
'id']))
178 if($id_data[
'local']
or $id_data[
'imported'])
186 if($id_data = $this->
__parseId($a_attribs[
'id']))
188 if($id_data[
'local']
or $id_data[
'imported'])
190 $this->course_obj->setOwner($id_data[
'usr_id']);
191 $this->course_obj->updateOwner();
198 $this->in_settings =
true;
201 $this->in_availability =
true;
205 if($this->in_availability)
209 elseif($this->in_registration)
217 if($this->in_availability)
219 $this->course_obj->setOfflineStatus(
false);
222 elseif($this->in_registration)
228 case 'TemporarilyAvailable':
229 if($this->in_availability)
231 $this->course_obj->setOfflineStatus(
false);
234 elseif($this->in_registration)
253 case 'Responsibility':
260 $this->in_registration =
true;
262 switch($a_attribs[
'registrationType'])
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);
284 include_once
'./Services/Container/classes/class.ilContainerSortingSettings.php';
288 $this->course_obj->setOrderType(
298 $this->in_meta_data =
true;
299 parent::handlerBeginTag($a_xml_parser,$a_name,$a_attribs);
302 case 'ContainerSetting':
303 $this->current_container_setting = $a_attribs[
'id'];
307 $this->in_period =
true;
310 case 'WaitingListAutoFill':
311 case 'CancellationEnd':
327 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
330 if (!array_key_exists($id_data[
'usr_id'], $this->course_members_array))
333 $this->course_members->add($id_data[
'usr_id'],
IL_CRS_MEMBER);
334 if($a_attribs[
'blocked'] ==
'Yes')
336 $this->course_members->updateBlocked($id_data[
'usr_id'],
true);
338 if($a_attribs[
'passed'] ==
'Yes')
340 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
342 $this->course_members_array[$id_data[
'usr_id']] =
"added";
347 if($a_attribs[
'blocked'] ==
'Yes')
349 $this->course_members->updateBlocked($id_data[
'usr_id'],
true);
351 if($a_attribs[
'passed'] ==
'Yes')
353 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
357 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isMember($id_data[
'usr_id']))
360 $this->course_members->delete($id_data[
'usr_id']);
377 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
380 if (!array_key_exists($id_data[
'usr_id'], $this->course_members_array))
383 $this->course_members->add($id_data[
'usr_id'],
IL_CRS_ADMIN);
384 if($a_attribs[
'notification'] ==
'Yes')
386 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
388 if($a_attribs[
'passed'] ==
'Yes')
390 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
392 $this->course_members_array[$id_data[
'usr_id']] =
"added";
397 if($a_attribs[
'notification'] ==
'Yes')
399 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
401 if($a_attribs[
'passed'] ==
'Yes')
403 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
405 $this->course_members->updateBlocked($id_data[
'usr_id'],
false);
408 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isAdmin($id_data[
'usr_id']))
411 $this->course_members->delete($id_data[
'usr_id']);
425 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
428 if (!array_key_exists($id_data[
'usr_id'], $this->course_members_array))
431 $this->course_members->add($id_data[
'usr_id'],
IL_CRS_TUTOR);
432 if($a_attribs[
'notification'] ==
'Yes')
434 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
436 if($a_attribs[
'passed'] ==
'Yes')
438 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
440 $this->course_members_array[$id_data[
'usr_id']] =
"added";
444 if($a_attribs[
'notification'] ==
'Yes')
446 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
448 if($a_attribs[
'passed'] ==
'Yes')
450 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
452 $this->course_members->updateBlocked($id_data[
'usr_id'],
false);
455 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isTutor($id_data[
'usr_id']))
458 $this->course_members->delete($id_data[
'usr_id']);
473 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
476 if (!$this->course_members->isSubscriber($id_data[
'usr_id']))
479 $this->course_members->addSubscriber($id_data[
'usr_id']);
481 $this->course_members->updateSubscriptionTime($id_data[
'usr_id'],$a_attribs[
'subscriptionTime']);
484 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isSubscriber($id_data[
'usr_id']))
487 $this->course_members->deleteSubscriber($id_data[
"usr_id"]);
500 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
503 if (!$this->course_waiting_list->isOnList($id_data[
'usr_id']))
506 $this->course_waiting_list->addToList($id_data[
'usr_id']);
508 $this->course_waiting_list->updateSubscriptionTime($id_data[
'usr_id'],$a_attribs[
'subscriptionTime']);
511 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_waiting_list->isOnList($id_data[
'usr_id']))
514 $this->course_waiting_list->removeFromList($id_data[
'usr_id']);
528 if($this->in_meta_data)
530 parent::handlerEndTag($a_xml_parser,$a_name);
537 $this->log->write(
'CourseXMLParser: import_id = '.$this->course_obj->getImportId());
538 $this->course_obj->MDUpdateListener(
'General');
539 $this->course_obj->update();
540 $this->adv_md_handler->save();
544 $this->in_settings =
false;
548 $this->in_availability =
false;
552 $this->in_registration =
false;
557 if($this->in_availability)
559 $this->course_obj->setActivationStart(trim($this->cdata));
561 if($this->in_registration)
563 $this->course_obj->setSubscriptionStart(trim($this->cdata));
567 if((
int)$this->cdata)
575 if($this->in_availability)
577 $this->course_obj->setActivationEnd(trim($this->cdata));
579 if($this->in_registration)
581 $this->course_obj->setSubscriptionEnd(trim($this->cdata));
585 if((
int)$this->cdata)
593 $this->course_obj->setSyllabus(trim($this->cdata));
597 case 'ImportantInformation':
598 $this->course_obj->setImportantInformation(trim($this->cdata));
602 $this->course_obj->setViewMode(trim($this->cdata));
606 $this->course_obj->setContactName(trim($this->cdata));
609 case 'Responsibility':
610 $this->course_obj->setContactResponsibility(trim($this->cdata));
614 $this->course_obj->setContactPhone(trim($this->cdata));
618 $this->course_obj->setContactEmail(trim($this->cdata));
622 $this->course_obj->setContactConsultation(trim($this->cdata));
626 $this->course_obj->setSubscriptionPassword(trim($this->cdata));
630 $this->in_meta_data =
false;
631 parent::handlerEndTag($a_xml_parser,$a_name);
634 case 'ContainerSetting':
635 if($this->current_container_setting)
638 $this->course_obj->getId(),
645 $this->in_period =
false;
648 case 'WaitingListAutoFill':
649 $this->course_obj->setWaitingListAutoFill($this->cdata);
652 case 'CancellationEnd':
653 if((
int)$this->cdata)
655 $this->course_obj->setCancellationEnd(
new ilDate((
int)$this->cdata,
IL_CAL_UNIX));
660 if((
int)$this->cdata)
662 $this->course_obj->setSubscriptionMinMembers((
int)$this->cdata);
680 if($this->in_meta_data)
682 parent::handlerCharacterData($a_xml_parser,$a_data);
687 $a_data = preg_replace(
"/\t+/",
" ",$a_data);
689 $this->cdata .= $a_data;
698 $fields = explode(
'_',$a_id);
700 if(!is_array($fields)
or 701 $fields[0] !=
'il' or 702 !is_numeric($fields[1])
or 703 $fields[2] !=
'usr' or 704 !is_numeric($fields[3]))
710 return array(
'imported' =>
true,
716 return array(
'imported' =>
false,
718 'usr_id' => $fields[3]);
static _lookupLogin($a_user_id)
lookup login
const IL_CRS_ACTIVATION_LIMITED
__construct($a_course_obj, $a_xml_file='')
Constructor.
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
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
setHandlers($a_xml_parser)
set event handlers
handleAdmin($a_attribs, $id_data)
attach or detach admin from course member
$current_container_setting
const IL_CRS_SUBSCRIPTION_CONFIRMATION
handleWaitingList($a_attribs, $id_data)
attach or detach members from waitinglist
static _getImportedUserId($i2_id)
handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element
handlerEndTag($a_xml_parser, $a_name)
handler for end of element
const IL_CRS_SUBSCRIPTION_PASSWORD
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_ADMIN
Base class for course and group participants.
Create styles array
The data for the language used.
Interface definition for sax subset parsers.
Controller class for sax element handlers.
static _writeImportId($a_obj_id, $a_import_id)
write import id to db (static)
static _writeContainerSetting($a_id, $a_keyword, $a_value)
const IL_CRS_SUBSCRIPTION_DIRECT
static getInstanceByObjId($a_obj_id)
Get singleton instance.
handlerCharacterData($a_xml_parser, $a_data)
handler for character data
handleSubscriber($a_attribs, $id_data)
attach or detach members from subscribers
const IL_CRS_SUBSCRIPTION_DEACTIVATED
const IL_CRS_ACTIVATION_UNLIMITED