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::ilMDSaxParser($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(
295 $this->in_archive =
true;
296 switch($a_attribs[
'Access'])
304 #$this->course_obj->setViewMode(IL_CRS_VIEW_ARCHIVE); 308 #$this->course_obj->setViewMode(IL_CRS_VIEW_ARCHIVE); 319 $this->in_meta_data =
true;
320 parent::handlerBeginTag($a_xml_parser,$a_name,$a_attribs);
323 case 'ContainerSetting':
324 $this->current_container_setting = $a_attribs[
'id'];
328 $this->in_period =
true;
331 case 'WaitingListAutoFill':
332 case 'CancellationEnd':
348 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
351 if (!array_key_exists($id_data[
'usr_id'], $this->course_members_array))
354 $this->course_members->add($id_data[
'usr_id'],
IL_CRS_MEMBER);
355 if($a_attribs[
'blocked'] ==
'Yes')
357 $this->course_members->updateBlocked($id_data[
'usr_id'],
true);
359 if($a_attribs[
'passed'] ==
'Yes')
361 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
363 $this->course_members_array[$id_data[
'usr_id']] =
"added";
368 if($a_attribs[
'blocked'] ==
'Yes')
370 $this->course_members->updateBlocked($id_data[
'usr_id'],
true);
372 if($a_attribs[
'passed'] ==
'Yes')
374 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
378 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isMember($id_data[
'usr_id']))
381 $this->course_members->delete($id_data[
'usr_id']);
398 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
401 if (!array_key_exists($id_data[
'usr_id'], $this->course_members_array))
404 $this->course_members->add($id_data[
'usr_id'],
IL_CRS_ADMIN);
405 if($a_attribs[
'notification'] ==
'Yes')
407 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
409 if($a_attribs[
'passed'] ==
'Yes')
411 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
413 $this->course_members_array[$id_data[
'usr_id']] =
"added";
418 if($a_attribs[
'notification'] ==
'Yes')
420 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
422 if($a_attribs[
'passed'] ==
'Yes')
424 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
426 $this->course_members->updateBlocked($id_data[
'usr_id'],
false);
429 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isAdmin($id_data[
'usr_id']))
432 $this->course_members->delete($id_data[
'usr_id']);
446 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
449 if (!array_key_exists($id_data[
'usr_id'], $this->course_members_array))
452 $this->course_members->add($id_data[
'usr_id'],
IL_CRS_TUTOR);
453 if($a_attribs[
'notification'] ==
'Yes')
455 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
457 if($a_attribs[
'passed'] ==
'Yes')
459 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
461 $this->course_members_array[$id_data[
'usr_id']] =
"added";
465 if($a_attribs[
'notification'] ==
'Yes')
467 $this->course_members->updateNotification($id_data[
'usr_id'],
true);
469 if($a_attribs[
'passed'] ==
'Yes')
471 $this->course_members->updatePassed($id_data[
'usr_id'],
true);
473 $this->course_members->updateBlocked($id_data[
'usr_id'],
false);
476 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isTutor($id_data[
'usr_id']))
479 $this->course_members->delete($id_data[
'usr_id']);
494 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
497 if (!$this->course_members->isSubscriber($id_data[
'usr_id']))
500 $this->course_members->addSubscriber($id_data[
'usr_id']);
502 $this->course_members->updateSubscriptionTime($id_data[
'usr_id'],$a_attribs[
'subscriptionTime']);
505 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_members->isSubscriber($id_data[
'usr_id']))
508 $this->course_members->deleteSubscriber($id_data[
"usr_id"]);
521 if (!isset($a_attribs[
'action']) || $a_attribs[
'action'] ==
'Attach')
524 if (!$this->course_waiting_list->isOnList($id_data[
'usr_id']))
527 $this->course_waiting_list->addToList($id_data[
'usr_id']);
529 $this->course_waiting_list->updateSubscriptionTime($id_data[
'usr_id'],$a_attribs[
'subscriptionTime']);
532 elseif (isset($a_attribs[
'action']) && $a_attribs[
'action'] ==
'Detach' && $this->course_waiting_list->isOnList($id_data[
'usr_id']))
535 $this->course_waiting_list->removeFromList($id_data[
'usr_id']);
549 if($this->in_meta_data)
551 parent::handlerEndTag($a_xml_parser,$a_name);
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();
565 $this->in_settings =
false;
569 $this->in_availability =
false;
573 $this->in_registration =
false;
577 $this->in_archive =
false;
581 if($this->in_availability)
583 $this->course_obj->setActivationStart(trim($this->cdata));
585 if($this->in_registration)
587 $this->course_obj->setSubscriptionStart(trim($this->cdata));
589 if($this->in_archive)
591 $this->course_obj->setArchiveStart(trim($this->cdata));
595 if((
int)$this->cdata)
603 if($this->in_availability)
605 $this->course_obj->setActivationEnd(trim($this->cdata));
607 if($this->in_registration)
609 $this->course_obj->setSubscriptionEnd(trim($this->cdata));
611 if($this->in_archive)
613 $this->course_obj->setArchiveEnd(trim($this->cdata));
617 if((
int)$this->cdata)
625 $this->course_obj->setSyllabus(trim($this->cdata));
629 case 'ImportantInformation':
630 $this->course_obj->setImportantInformation(trim($this->cdata));
634 $this->course_obj->setContactName(trim($this->cdata));
637 case 'Responsibility':
638 $this->course_obj->setContactResponsibility(trim($this->cdata));
642 $this->course_obj->setContactPhone(trim($this->cdata));
646 $this->course_obj->setContactEmail(trim($this->cdata));
650 $this->course_obj->setContactConsultation(trim($this->cdata));
654 $this->course_obj->setSubscriptionPassword(trim($this->cdata));
658 $this->in_meta_data =
false;
659 parent::handlerEndTag($a_xml_parser,$a_name);
662 case 'ContainerSetting':
663 if($this->current_container_setting)
666 $this->course_obj->getId(),
673 $this->in_period =
false;
676 case 'WaitingListAutoFill':
677 $this->course_obj->setWaitingListAutoFill($this->cdata);
680 case 'CancellationEnd':
681 if((
int)$this->cdata)
683 $this->course_obj->setCancellationEnd(
new ilDate((
int)$this->cdata,
IL_CAL_UNIX));
688 if((
int)$this->cdata)
690 $this->course_obj->setSubscriptionMinMembers((
int)$this->cdata);
708 if($this->in_meta_data)
710 parent::handlerCharacterData($a_xml_parser,$a_data);
715 $a_data = preg_replace(
"/\t+/",
" ",$a_data);
717 $this->cdata .= $a_data;
726 $fields = explode(
'_',$a_id);
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]))
738 return array(
'imported' =>
true,
744 return array(
'imported' =>
false,
746 'usr_id' => $fields[3]);
static _lookupLogin($a_user_id)
lookup login
const IL_CRS_ACTIVATION_LIMITED
const IL_CRS_SUBSCRIPTION_LIMITED
ilCourseXMLParser($a_course_obj, $a_xml_file='')
Constructor.
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
_writeContainerSetting($a_id, $a_keyword, $a_value)
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
const IL_CRS_ARCHIVE_NONE
_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
_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_ADMIN
Base class for course and group participants.
Interface definition for sax subset parsers.
Controller class for sax element handlers.
const IL_CRS_ARCHIVE_DOWNLOAD
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