ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilCourseXMLParser Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

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

Public Member Functions

 __construct (ilObjCourse $a_course_obj, string $a_xml_file='')
 
 startParsing ()
 
 setHandlers ($a_xml_parser)
 
 handlerBeginTag ($a_xml_parser, string $a_name, array $a_attribs)
 
 __parseId ($a_id)
 
 handlerEndTag ($a_xml_parser, string $a_name)
 
 handlerCharacterData ($a_xml_parser, string $a_data)
 Character data handler. More...
 
- Public Member Functions inherited from ilMDSaxParser
 __construct (?string $a_xml_file='')
 
 enableMDParsing (bool $a_status)
 
 getMDParsingStatus ()
 
 setMDObject (ilMD $md)
 
 getMDObject ()
 
 inMetaData ()
 
 setHandlers ($a_xml_parser)
 Set event handlers. More...
 
 handlerBeginTag ($a_xml_parser, string $a_name, array $a_attribs)
 
 handlerEndTag ($a_xml_parser, string $a_name)
 
 handlerCharacterData ($a_xml_parser, string $a_data)
 
 __getCharacterData ()
 
 __pushParent (object $md_obj)
 
 __popParent ()
 
 __getParent ()
 
- Public Member Functions inherited from ilSaxParser
 __construct (?string $path_to_file='', ?bool $throw_exception=false)
 
 setXMLContent (string $a_xml_content)
 
 getXMLContent ()
 
 getInputType ()
 
 startParsing ()
 stores xml data in array More...
 
 createParser ()
 
 setHandlers ($a_xml_parser)
 
 parse ($a_xml_parser, $a_fp=null)
 

Protected Attributes

ilSetting $setting
 
ilMD $md_obj = null
 
ilSaxController $sax_controller
 
ilCourseParticipants $course_members
 
ilCourseWaitingList $course_waiting_list
 
ilAdvancedMDValueParser $adv_md_handler = null
 
array $course_members_array = []
 
- Protected Attributes inherited from ilMDSaxParser
bool $md_in_md = false
 
string $md_chr_data = ''
 
ilMDIdentifier $md_ide = null
 
ilMDLanguage $md_lan = null
 
ilMDDescription $md_des = null
 
ilMDLifecycle $md_lif = null
 
ilMDContribute $md_con = null
 
ilMDEntity $md_ent = null
 
ilMDMetaMetadata $md_met = null
 
ilMDTechnical $md_tec = null
 
ilMDFormat $md_for = null
 
ilMDLocation $md_loc = null
 
ilMDRequirement $md_req = null
 
ilMDOrComposite $md_orc = null
 
ilMDEducational $md_edu = null
 
ilMDTypicalAgeRange $md_typ = null
 
ilMDRights $md_rig = null
 
ilMDRelation $md_rel = null
 
ilMDIdentifier_ $md_ide_ = null
 
ilMDAnnotation $md_ann = null
 
ilMDClassification $md_cla = null
 
ilMDTaxonPath $md_taxp = null
 
ilMDTaxon $md_tax = null
 
ilMDKeyword $md_key = null
 
array $md_parent = array()
 
ilMD $md = null
 
ilMDGeneral $md_gen = null
 
ilLogger $meta_log
 
- Protected Attributes inherited from ilSaxParser
ilLanguage $lng = null
 

Private Member Functions

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

Private Attributes

bool $in_meta_data = false
 
bool $in_availability = false
 
bool $in_registration = false
 
bool $in_period = false
 
bool $in_period_with_time = false
 
ilDateTime $period_start = null
 
ilDateTime $period_end = null
 
string $cdata = ''
 
string $current_container_setting = ''
 
ilObjCourse $course_obj
 
ilLogger $log
 

Additional Inherited Members

- Data Fields inherited from ilSaxParser
string $xml_file
 
bool $throw_exception = false
 
- Protected Member Functions inherited from ilMDSaxParser
 trimAndStripAttribs (array $attribs)
 
 trimAndStrip (string $input)
 
- Protected Member Functions inherited from ilSaxParser
 openXMLFile ()
 
 handleError (string $message)
 
 setThrowException (bool $throw_exception)
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning 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 26 of file class.ilCourseXMLParser.php.

Constructor & Destructor Documentation

◆ __construct()

ilCourseXMLParser::__construct ( ilObjCourse  $a_course_obj,
string  $a_xml_file = '' 
)

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

References $DIC, ILIAS\GlobalScreen\Provider\__construct(), ilCourseParticipants\_getInstanceByObjId(), and ilMDSaxParser\setMDObject().

54  {
55  global $DIC;
56 
57  parent::__construct($a_xml_file);
58  $this->sax_controller = new ilSaxController();
59  $this->log = $DIC->logger()->crs();
60  $this->setting = $DIC->settings();
61  $this->course_obj = $a_course_obj;
62  $this->course_members = ilCourseParticipants::_getInstanceByObjId($this->course_obj->getId());
63  $this->course_waiting_list = new ilCourseWaitingList($this->course_obj->getId());
64  // flip the array so we can use array_key_exists
65  $this->course_members_array = array_flip($this->course_members->getParticipants());
66 
67  $this->md_obj = new ilMD($this->course_obj->getId(), 0, 'crs');
68  $this->setMDObject($this->md_obj);
69  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: feed.php:28
static _getInstanceByObjId(int $a_obj_id)
Controller class for sax element handlers.
__construct(Container $dic, ilPlugin $plugin)
+ Here is the call graph for this function:

Member Function Documentation

◆ __parseId()

ilCourseXMLParser::__parseId (   $a_id)

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

References $id, ilObjUser\_getImportedUserId(), and ilObjUser\_lookupLogin().

Referenced by handlerBeginTag().

311  : array
312  {
313  $fields = explode('_', $a_id);
314 
315  if (!is_array($fields) or
316  $fields[0] != 'il' or
317  !is_numeric($fields[1]) or
318  $fields[2] != 'usr' or
319  !is_numeric($fields[3])) {
320  return [];
321  }
322  if ($id = ilObjUser::_getImportedUserId($a_id)) {
323  return array('imported' => true,
324  'local' => false,
325  'usr_id' => $id
326  );
327  }
328  if ($fields[1] == $this->setting->get('inst_id', '0') && strlen(ilObjUser::_lookupLogin((int) $fields[3]))) {
329  return array('imported' => false,
330  'local' => true,
331  'usr_id' => (int) $fields[3]
332  );
333  }
334  return [];
335  }
static _getImportedUserId(string $i2_id)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static _lookupLogin(int $a_user_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleAdmin()

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

attach or detach admin from course member

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

References ilParticipants\IL_CRS_ADMIN.

Referenced by handlerBeginTag().

340  : void
341  {
342  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach') {
343  // if action not set, or attach
344  if (!array_key_exists($id_data['usr_id'], $this->course_members_array)) {
345  // add only if member is not assigned yet
346  $this->course_members->add($id_data['usr_id'], ilParticipants::IL_CRS_ADMIN);
347  if (isset($a_attribs['notification']) && $a_attribs['notification'] == 'Yes') {
348  $this->course_members->updateNotification($id_data['usr_id'], true);
349  }
350  if (isset($a_attribs['passed']) && $a_attribs['passed'] == 'Yes') {
351  $this->course_members->updatePassed($id_data['usr_id'], true);
352  }
353  if (isset($a_attribs['contact']) && $a_attribs['contact'] == 'Yes') {
354  // default for new course admin/tutors is "no contact"
355  $this->course_members->updateContact($id_data['usr_id'], true);
356  }
357  $this->course_members_array[$id_data['usr_id']] = "added";
358  } else {
359  // update
360  if (isset($a_attribs['notification']) && $a_attribs['notification'] == 'Yes') {
361  $this->course_members->updateNotification($id_data['usr_id'], true);
362  }
363  if (isset($a_attribs['passed']) && $a_attribs['passed'] == 'Yes') {
364  $this->course_members->updatePassed($id_data['usr_id'], true);
365  }
366  if (isset($a_attribs['contact']) && $a_attribs['contact'] == 'Yes') {
367  $this->course_members->updateContact($id_data['usr_id'], true);
368  } elseif (isset($a_attribs['contact']) && $a_attribs['contact'] == 'No') {
369  $this->course_members->updateContact($id_data['usr_id'], false);
370  }
371  $this->course_members->updateBlocked($id_data['usr_id'], false);
372  }
373  } elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isAdmin($id_data['usr_id'])) {
374  // if action set and detach and is admin of course
375  $this->course_members->delete($id_data['usr_id']);
376  }
377  }
+ Here is the caller graph for this function:

◆ handleMember()

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

attach or detach user/member/admin from course member

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

References ilParticipants\IL_CRS_MEMBER.

Referenced by handlerBeginTag().

420  : void
421  {
422  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach') {
423  // if action not set, or set and attach
424  if (!array_key_exists($id_data['usr_id'], $this->course_members_array)) {
425  // add only if member is not yet assigned as tutor or admin
426  $this->course_members->add($id_data['usr_id'], ilParticipants::IL_CRS_MEMBER);
427  if (isset($a_attribs['blocked']) && $a_attribs['blocked'] == 'Yes') {
428  $this->course_members->updateBlocked($id_data['usr_id'], true);
429  }
430  if (isset($a_attribs['passed']) && $a_attribs['passed'] == 'Yes') {
431  $this->course_members->updatePassed($id_data['usr_id'], true);
432  }
433  $this->course_members_array[$id_data['usr_id']] = "added";
434  } else {
435  // the member does exist. Now update status etc. only
436  if (isset($a_attribs['blocked']) && $a_attribs['blocked'] == 'Yes') {
437  $this->course_members->updateBlocked($id_data['usr_id'], true);
438  }
439  if (isset($a_attribs['passed']) && $a_attribs['passed'] == 'Yes') {
440  $this->course_members->updatePassed($id_data['usr_id'], true);
441  }
442  }
443  } elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isMember($id_data['usr_id'])) {
444  // if action set and detach and is member of course
445  $this->course_members->delete($id_data['usr_id']);
446  }
447  }
+ Here is the caller graph for this function:

◆ handlerBeginTag()

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

Implements ilSaxSubsetParser.

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

References __parseId(), ilContainerSortingSettings\_importContainerSortingSettings(), ilObject\_writeImportId(), ilContainerSortingSettings\getInstanceByObjId(), handleAdmin(), handleMember(), handleSubscriber(), handleTutor(), handleWaitingList(), ilCourseConstants\IL_CRS_SUBSCRIPTION_CONFIRMATION, ilCourseConstants\IL_CRS_SUBSCRIPTION_DEACTIVATED, ilCourseConstants\IL_CRS_SUBSCRIPTION_DIRECT, ilCourseConstants\IL_CRS_SUBSCRIPTION_LIMITED, ilCourseConstants\IL_CRS_SUBSCRIPTION_PASSWORD, ilCourseConstants\IL_CRS_SUBSCRIPTION_UNLIMITED, and ilMDSaxParser\trimAndStripAttribs().

104  : void
105  {
106  $a_attribs = $this->trimAndStripAttribs($a_attribs);
107  if ($this->in_meta_data) {
108  parent::handlerBeginTag($a_xml_parser, $a_name, $a_attribs);
109  return;
110  }
111 
112  switch ($a_name) {
113  case 'Course':
114  if (strlen($a_attribs['importId'] ?? '')) {
115  $this->log->write("CourseXMLParser: importId = " . $a_attribs['importId']);
116  $this->course_obj->setImportId($a_attribs['importId']);
117  ilObject::_writeImportId($this->course_obj->getId(), $a_attribs['importId']);
118  }
119  if (strlen($a_attribs['showMembers'] ?? '')) {
120  $this->course_obj->setShowMembers(
121  $a_attribs['showMembers'] == 'Yes'
122  );
123  }
124  break;
125 
126  case 'Admin':
127  if ($id_data = $this->__parseId($a_attribs['id'] ?? '')) {
128  if ($id_data['local'] or $id_data['imported']) {
129  $this->handleAdmin($a_attribs, $id_data);
130  }
131  }
132  break;
133 
134  case 'Tutor':
135  if ($id_data = $this->__parseId($a_attribs['id'] ?? '')) {
136  if ($id_data['local'] or $id_data['imported']) {
137  $this->handleTutor($a_attribs, $id_data);
138  }
139  }
140  break;
141 
142  case 'Member':
143  if ($id_data = $this->__parseId($a_attribs['id'] ?? '')) {
144  if ($id_data['local'] or $id_data['imported']) {
145  $this->handleMember($a_attribs, $id_data);
146  }
147  }
148  break;
149 
150  case 'Subscriber':
151  if ($id_data = $this->__parseId($a_attribs['id'] ?? '')) {
152  if ($id_data['local'] or $id_data['imported']) {
153  $this->handleSubscriber($a_attribs, $id_data);
154  }
155  }
156  break;
157 
158  case 'WaitingList':
159  if ($id_data = $this->__parseId($a_attribs['id'] ?? '')) {
160  if ($id_data['local'] or $id_data['imported']) {
161  $this->handleWaitingList($a_attribs, $id_data);
162  }
163  }
164  break;
165 
166  case 'Owner':
167  if ($id_data = $this->__parseId($a_attribs['id'] ?? '')) {
168  if ($id_data['local'] or $id_data['imported']) {
169  $this->course_obj->setOwner((int) ($id_data['usr_id'] ?? 0));
170  $this->course_obj->updateOwner();
171  }
172  }
173  break;
174 
175  case 'Settings':
176  break;
177  case 'Availability':
178  $this->in_availability = true;
179  break;
180 
181  case 'NotAvailable':
182  if ($this->in_availability) {
183  $this->course_obj->setOfflineStatus(true);
184  } elseif ($this->in_registration) {
185  $this->course_obj->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED);
186  }
187 
188  break;
189 
190  case 'Unlimited':
191  if ($this->in_availability) {
192  $this->course_obj->setOfflineStatus(false);
193  } elseif ($this->in_registration) {
194  $this->course_obj->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_UNLIMITED);
195  }
196 
197  break;
198  case 'TemporarilyAvailable':
199  if ($this->in_availability) {
200  $this->course_obj->setOfflineStatus(false);
201  } elseif ($this->in_registration) {
202  $this->course_obj->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_LIMITED);
203  }
204  break;
205 
206  case 'Start':
207  break;
208 
209  case 'End':
210  break;
211 
212  case 'Syllabus':
213  break;
214 
215  case 'TargetGroup':
216  break;
217 
218  case 'Contact':
219  break;
220 
221  case 'Name':
222  case 'Responsibility':
223  case 'Phone':
224  case 'Email':
225  case 'Consultation':
226  break;
227 
228  case 'Registration':
229  $this->in_registration = true;
230 
231  switch ($a_attribs['registrationType'] ?? '') {
232  case 'Confirmation':
233  $this->course_obj->setSubscriptionType(ilCourseConstants::IL_CRS_SUBSCRIPTION_CONFIRMATION);
234  break;
235 
236  case 'Direct':
237  $this->course_obj->setSubscriptionType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DIRECT);
238  break;
239 
240  case 'Password':
241  $this->course_obj->setSubscriptionType(ilCourseConstants::IL_CRS_SUBSCRIPTION_PASSWORD);
242  break;
243  }
244 
245  $this->course_obj->setSubscriptionMaxMembers((int) ($a_attribs['maxMembers'] ?? 0));
246  $this->course_obj->enableSubscriptionMembershipLimitation($this->course_obj->getSubscriptionMaxMembers() > 0);
247  $this->course_obj->enableWaitingList(($a_attribs['waitingList'] ?? null) == 'Yes' ? true : false);
248  break;
249 
250  case 'Sort':
251  ilContainerSortingSettings::_importContainerSortingSettings($a_attribs, $this->course_obj->getId());
252 
253  //#17837
254  $this->course_obj->setOrderType(
255  ilContainerSortingSettings::getInstanceByObjId($this->course_obj->getId())->getSortMode()
256  );
257  break;
258 
259  case 'Disabled':
260  $this->course_obj->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED);
261  break;
262 
263  case "MetaData":
264  $this->in_meta_data = true;
265  parent::handlerBeginTag($a_xml_parser, $a_name, $a_attribs);
266  break;
267 
268  case 'ContainerSetting':
269  $this->current_container_setting = ($a_attribs['id'] ?? '');
270  break;
271 
272  case 'Period':
273  $this->in_period = true;
274  $this->in_period_with_time = (bool) ($a_attribs['withTime'] ?? false);
275  break;
276 
277  case 'WaitingListAutoFill':
278  case 'CancellationEnd':
279  case 'MinMembers':
280  case 'StatusDetermination':
281  case 'MailToMembersType':
282  break;
283 
284  case 'WelcomeMail':
285  if (array_key_exists('status', $a_attribs)) {
286  $this->course_obj->setAutoNotification((bool) $a_attribs['status']);
287  }
288  break;
289 
290  case 'CourseMap':
291  $this->course_obj->setEnableCourseMap((bool) $a_attribs['enabled'] ?? false);
292  $this->course_obj->setLatitude((string) $a_attribs['latitude'] ?? '');
293  $this->course_obj->setLongitude((string) $a_attribs['longitude'] ?? '');
294  $this->course_obj->setLocationZoom((int) $a_attribs['location_zoom'] ?? 0);
295  break;
296 
297  case 'SessionLimit':
298  if (isset($a_attribs['active'])) {
299  $this->course_obj->enableSessionLimit((bool) $a_attribs['active']);
300  }
301  if (isset($a_attribs['previous'])) {
302  $this->course_obj->setNumberOfPreviousSessions((int) $a_attribs['previous']);
303  }
304  if (isset($a_attribs['next'])) {
305  $this->course_obj->setNumberOfNextSessions((int) $a_attribs['next']);
306  }
307  break;
308  }
309  }
static _writeImportId(int $obj_id, string $import_id)
write import id to db (static)
handleWaitingList(array $a_attribs, array $id_data)
attach or detach members from waitinglist
handleAdmin(array $a_attribs, array $id_data)
attach or detach admin from course member
trimAndStripAttribs(array $attribs)
static _importContainerSortingSettings(array $attibs, int $obj_id)
sorting import for all container objects
handleSubscriber(array $a_attribs, array $id_data)
attach or detach members from subscribers
handleTutor(array $a_attribs, array $id_data)
handleMember(array $a_attribs, array $id_data)
attach or detach user/member/admin from course member
+ Here is the call graph for this function:

◆ handlerCharacterData()

ilCourseXMLParser::handlerCharacterData (   $a_xml_parser,
string  $a_name 
)

Character data handler.

Parameters
resource$a_xml_parserxml parser

Implements ilSaxSubsetParser.

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

653  : void
654  {
655  // call meta data handler
656  if ($this->in_meta_data) {
657  parent::handlerCharacterData($a_xml_parser, $a_data);
658  }
659  if ($a_data != "\n") {
660  // Replace multiple tabs with one space
661  $a_data = preg_replace("/\t+/", " ", $a_data);
662 
663  $this->cdata .= $a_data;
664  }
665  }

◆ handlerEndTag()

ilCourseXMLParser::handlerEndTag (   $a_xml_parser,
string  $a_name 
)

Implements ilSaxSubsetParser.

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

References $cdata, $current_container_setting, Vendor\Package\$e, ilContainer\_writeContainerSetting(), IL_CAL_UNIX, and ilMDSaxParser\trimAndStrip().

488  : void
489  {
490  $this->cdata = $this->trimAndStrip((string) $this->cdata);
491  if ($this->in_meta_data) {
492  parent::handlerEndTag($a_xml_parser, $a_name);
493  }
494 
495  switch ($a_name) {
496  case 'Course':
497 
498  $this->log->write('CourseXMLParser: import_id = ' . $this->course_obj->getImportId());
499  /*
500  * This needs to be before MDUpdateListener, since otherwise container settings are
501  * overwritten by ilContainer::update in MDUpdateListener, see #24733.
502  */
503  $this->course_obj->readContainerSettings();
504  $this->course_obj->MDUpdateListener('General');
505  $this->course_obj->update();
506  $this->adv_md_handler->save();
507  break;
508 
509  case 'Settings':
510  break;
511 
512  case 'Availability':
513  $this->in_availability = false;
514  break;
515 
516  case 'Registration':
517  $this->in_registration = false;
518  break;
519 
520  case 'Start':
521  if ($this->in_availability) {
522  $this->course_obj->setActivationStart((int) trim($this->cdata));
523  }
524  if ($this->in_registration) {
525  $this->course_obj->setSubscriptionStart((int) trim($this->cdata));
526  }
527  if ($this->in_period) {
528  if ((int) $this->cdata) {
529  if ($this->in_period_with_time) {
530  $this->period_start = new \ilDateTime((int) $this->cdata, IL_CAL_UNIX);
531  } else {
532  $this->period_start = new \ilDate((int) $this->cdata, IL_CAL_UNIX);
533  }
534  }
535  }
536  break;
537 
538  case 'End':
539  if ($this->in_availability) {
540  $this->course_obj->setActivationEnd((int) trim($this->cdata));
541  }
542  if ($this->in_registration) {
543  $this->course_obj->setSubscriptionEnd((int) trim($this->cdata));
544  }
545  if ($this->in_period) {
546  if ((int) $this->cdata) {
547  if ($this->in_period_with_time) {
548  $this->period_end = new \ilDateTime((int) $this->cdata, IL_CAL_UNIX);
549  } else {
550  $this->period_end = new \ilDate((int) $this->cdata, IL_CAL_UNIX);
551  }
552  }
553  }
554  break;
555 
556  case 'Syllabus':
557  $this->course_obj->setSyllabus(trim($this->cdata));
558  break;
559 
560  case 'TargetGroup':
561  $this->course_obj->setTargetGroup(trim($this->cdata));
562  break;
563 
564  case 'ImportantInformation':
565  $this->course_obj->setImportantInformation(trim($this->cdata));
566  break;
567 
568  case 'ViewMode':
569  $this->course_obj->setViewMode((int) trim($this->cdata));
570  break;
571 
572  case 'Name':
573  $this->course_obj->setContactName(trim($this->cdata));
574  break;
575 
576  case 'Responsibility':
577  $this->course_obj->setContactResponsibility(trim($this->cdata));
578  break;
579 
580  case 'Phone':
581  $this->course_obj->setContactPhone(trim($this->cdata));
582  break;
583 
584  case 'Email':
585  $this->course_obj->setContactEmail(trim($this->cdata));
586  break;
587 
588  case 'Consultation':
589  $this->course_obj->setContactConsultation(trim($this->cdata));
590  break;
591 
592  case 'Password':
593  $this->course_obj->setSubscriptionPassword(trim($this->cdata));
594  break;
595 
596  case 'MetaData':
597  $this->in_meta_data = false;
598  parent::handlerEndTag($a_xml_parser, $a_name);
599  break;
600 
601  case 'ContainerSetting':
602  if ($this->current_container_setting) {
604  $this->course_obj->getId(),
607  );
608  }
609  break;
610 
611  case 'Period':
612  $this->in_period = false;
613  try {
614  $this->course_obj->setCoursePeriod($this->period_start, $this->period_end);
615  } catch (Exception $e) {
616  $this->log->warning('invalid course period given');
617  }
618  break;
619 
620  case 'WaitingListAutoFill':
621  $this->course_obj->setWaitingListAutoFill((bool) $this->cdata);
622  break;
623 
624  case 'CancellationEnd':
625  if ((int) $this->cdata) {
626  $this->course_obj->setCancellationEnd(new ilDate((int) $this->cdata, IL_CAL_UNIX));
627  }
628  break;
629 
630  case 'MinMembers':
631  if ((int) $this->cdata) {
632  $this->course_obj->setSubscriptionMinMembers((int) $this->cdata);
633  }
634  break;
635 
636  case 'TimingMode':
637  $this->course_obj->setTimingMode((int) $this->cdata);
638  break;
639 
640  case 'StatusDetermination':
641  $this->course_obj->setStatusDetermination((int) $this->cdata);
642  break;
643 
644  case 'MailToMembersType':
645  $this->course_obj->setMailToMembersType((int) $this->cdata);
646  break;
647  }
648  $this->cdata = '';
649  }
trimAndStrip(string $input)
const IL_CAL_UNIX
static _writeContainerSetting(int $a_id, string $a_keyword, string $a_value)
+ Here is the call graph for this function:

◆ handleSubscriber()

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

attach or detach members from subscribers

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

Referenced by handlerBeginTag().

452  : void
453  {
454  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach') {
455  // if action not set, or attach
456  if (!$this->course_members->isSubscriber($id_data['usr_id'])) {
457  // add only if not exist
458  $this->course_members->addSubscriber($id_data['usr_id']);
459  }
460  $this->course_members->updateSubscriptionTime($id_data['usr_id'], (int) ($a_attribs['subscriptionTime'] ?? 0));
461  } elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isSubscriber($id_data['usr_id'])) {
462  // if action set and detach and is subscriber
463  $this->course_members->deleteSubscriber($id_data["usr_id"]);
464  }
465  }
+ Here is the caller graph for this function:

◆ handleTutor()

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

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

References ilParticipants\IL_CRS_TUTOR.

Referenced by handlerBeginTag().

379  : void
380  {
381  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach') {
382  // if action not set, or attach
383  if (!array_key_exists($id_data['usr_id'], $this->course_members_array)) {
384  // add only if member is not assigned yet
385  $this->course_members->add($id_data['usr_id'], ilParticipants::IL_CRS_TUTOR);
386  if (isset($a_attribs['notification']) && $a_attribs['notification'] == 'Yes') {
387  $this->course_members->updateNotification($id_data['usr_id'], true);
388  }
389  if (isset($a_attribs['passed']) && $a_attribs['passed'] == 'Yes') {
390  $this->course_members->updatePassed($id_data['usr_id'], true);
391  }
392  if (isset($a_attribs['contact']) && $a_attribs['contact'] == 'Yes') {
393  // default for new course admin/tutors is "no contact"
394  $this->course_members->updateContact($id_data['usr_id'], true);
395  }
396  $this->course_members_array[$id_data['usr_id']] = "added";
397  } else {
398  if (isset($a_attribs['notification']) && $a_attribs['notification'] == 'Yes') {
399  $this->course_members->updateNotification($id_data['usr_id'], true);
400  }
401  if (isset($a_attribs['passed']) && $a_attribs['passed'] == 'Yes') {
402  $this->course_members->updatePassed($id_data['usr_id'], true);
403  }
404  if (isset($a_attribs['contact']) && $a_attribs['contact'] == 'Yes') {
405  $this->course_members->updateContact($id_data['usr_id'], true);
406  } elseif (isset($a_attribs['contact']) && $a_attribs['contact'] == 'No') {
407  $this->course_members->updateContact($id_data['usr_id'], false);
408  }
409  $this->course_members->updateBlocked($id_data['usr_id'], false);
410  }
411  } elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_members->isTutor($id_data['usr_id'])) {
412  // if action set and detach and is tutor of course
413  $this->course_members->delete($id_data['usr_id']);
414  }
415  }
+ Here is the caller graph for this function:

◆ handleWaitingList()

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

attach or detach members from waitinglist

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

Referenced by handlerBeginTag().

470  : void
471  {
472  if (!isset($a_attribs['action']) || $a_attribs['action'] == 'Attach') {
473  // if action not set, or attach
474  if (!$this->course_waiting_list->isOnList($id_data['usr_id'])) {
475  // add only if not exists
476  $this->course_waiting_list->addToList($id_data['usr_id']);
477  }
478  $this->course_waiting_list->updateSubscriptionTime($id_data['usr_id'], (int) ($a_attribs['subscriptionTime'] ?? 0));
479  } elseif (isset($a_attribs['action']) && $a_attribs['action'] == 'Detach' && $this->course_waiting_list->isOnList($id_data['usr_id'])) {
480  // if action set and detach and is on list
481  $this->course_waiting_list->removeFromList($id_data['usr_id']);
482  }
483  }
+ Here is the caller graph for this function:

◆ setHandlers()

ilCourseXMLParser::setHandlers (   $a_xml_parser)

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

91  : void
92  {
93  $this->sax_controller->setHandlers($a_xml_parser);
94  $this->sax_controller->setDefaultElementHandler($this);
95  $this->sax_controller->setElementHandler(
96  $this->adv_md_handler = new ilAdvancedMDValueParser($this->course_obj->getId()),
97  'AdvancedMetaData'
98  );
99  }

◆ startParsing()

ilCourseXMLParser::startParsing ( )

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

References ilMDSaxParser\getMDObject().

71  : void
72  {
73  parent::startParsing();
74 
75  // rewrite autogenerated entry
76  $general = $this->getMDObject()->getGeneral();
77  $identifier_ids = $general->getIdentifierIds();
78  if (!isset($identifier_ids[0])) {
79  return;
80  }
81  $identifier = $general->getIdentifier($identifier_ids[0]);
82  $identifier->setEntry(
83  'il__' . $this->getMDObject()->getObjType() . '_' . $this->getMDObject()->getObjId()
84  );
85  $identifier->update();
86  }
+ Here is the call graph for this function:

Field Documentation

◆ $adv_md_handler

ilAdvancedMDValueParser ilCourseXMLParser::$adv_md_handler = null
protected

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

◆ $cdata

string ilCourseXMLParser::$cdata = ''
private

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

Referenced by handlerEndTag().

◆ $course_members

ilCourseParticipants ilCourseXMLParser::$course_members
protected

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

◆ $course_members_array

array ilCourseXMLParser::$course_members_array = []
protected

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

◆ $course_obj

ilObjCourse ilCourseXMLParser::$course_obj
private

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

◆ $course_waiting_list

ilCourseWaitingList ilCourseXMLParser::$course_waiting_list
protected

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

◆ $current_container_setting

string ilCourseXMLParser::$current_container_setting = ''
private

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

Referenced by handlerEndTag().

◆ $in_availability

bool ilCourseXMLParser::$in_availability = false
private

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

◆ $in_meta_data

bool ilCourseXMLParser::$in_meta_data = false
private

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

◆ $in_period

bool ilCourseXMLParser::$in_period = false
private

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

◆ $in_period_with_time

bool ilCourseXMLParser::$in_period_with_time = false
private

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

◆ $in_registration

bool ilCourseXMLParser::$in_registration = false
private

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

◆ $log

ilLogger ilCourseXMLParser::$log
private

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

◆ $md_obj

ilMD ilCourseXMLParser::$md_obj = null
protected

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

◆ $period_end

ilDateTime ilCourseXMLParser::$period_end = null
private

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

◆ $period_start

ilDateTime ilCourseXMLParser::$period_start = null
private

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

◆ $sax_controller

ilSaxController ilCourseXMLParser::$sax_controller
protected

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

◆ $setting

ilSetting ilCourseXMLParser::$setting
protected

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


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