3 declare(strict_types=0);
38 private int $mode = self::MODE_SOAP;
51 $this->setting = $DIC->settings();
52 $this->
access = $DIC->access();
58 public function setMode(
int $a_mode): void
60 $this->mode = $a_mode;
70 if ($this->
getMode() == self::MODE_SOAP) {
75 if ($this->attach_users) {
87 } elseif ($this->
getMode() == self::MODE_EXPORT) {
103 if ($a_tag ==
"Identifier" && $a_param ==
"Entry") {
104 $a_value =
"il_" . $this->setting->get(
'inst_id') .
"_crs_" . $this->course_obj->getId();
113 $this->
xmlSetGenCmt(
"Export of ILIAS course " . $this->course_obj->getId() .
" of installation " . $this->setting->get(
'inst_id') .
".");
119 $attrs[
"exportVersion"] = self::EXPORT_VERSION;
120 $attrs[
"id"] =
"il_" . $this->setting->get(
'inst_id') .
'_crs_' . $this->course_obj->getId();
121 $attrs[
'showMembers'] = ($this->course_obj->getShowMembers() ?
'Yes' :
'No');
127 $md2xml =
new ilMD2XML($this->course_obj->getId(), $this->course_obj->getId(),
'crs');
139 $admins = $this->course_obj->getMembersObject()->getAdmins();
140 $admins =
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
143 $this->course_obj->getRefId(),
147 foreach ($admins as
$id) {
148 $attr[
'id'] =
'il_' . $this->setting->get(
'inst_id') .
'_usr_' .
$id;
149 $attr[
'notification'] = ($this->course_obj->getMembersObject()->isNotificationEnabled($id)) ?
'Yes' :
'No';
150 $attr[
'passed'] = $this->course_obj->getMembersObject()->hasPassed($id) ?
'Yes' :
'No';
151 $attr[
'contact'] = $this->course_obj->getMembersObject()->isContact($id) ?
'Yes' :
'No';
160 $tutors = $this->course_obj->getMembersObject()->getTutors();
161 $tutors = $this->
access->filterUserIdsByRbacOrPositionOfCurrentUser(
164 $this->course_obj->getRefId(),
167 foreach ($tutors as
$id) {
168 $attr[
'id'] =
'il_' . $this->setting->get(
'inst_id') .
'_usr_' .
$id;
169 $attr[
'notification'] = ($this->course_obj->getMembersObject()->isNotificationEnabled($id)) ?
'Yes' :
'No';
170 $attr[
'passed'] = $this->course_obj->getMembersObject()->hasPassed($id) ?
'Yes' :
'No';
171 $attr[
'contact'] = $this->course_obj->getMembersObject()->isContact($id) ?
'Yes' :
'No';
180 $members = $this->course_obj->getMembersObject()->getMembers();
181 $members =
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
184 $this->course_obj->getRefId(),
187 foreach ($members as
$id) {
188 $attr[
'id'] =
'il_' . $this->setting->get(
'inst_id') .
'_usr_' .
$id;
189 $attr[
'blocked'] = ($this->course_obj->getMembersObject()->isBlocked($id)) ?
'Yes' :
'No';
190 $attr[
'passed'] = $this->course_obj->getMembersObject()->hasPassed($id) ?
'Yes' :
'No';
199 $subs = $this->course_obj->getMembersObject()->getSubscribers();
200 $subs = $this->
access->filterUserIdsByRbacOrPositionOfCurrentUser(
203 $this->course_obj->getRefId(),
207 foreach ($subs as
$id) {
208 $data = $this->course_obj->getMembersObject()->getSubscriberData($id);
210 $attr[
'id'] =
'il_' . $this->setting->get(
'inst_id') .
'_usr_' .
$id;
211 $attr[
'subscriptionTime'] =
$data[
'time'];
222 foreach ($wait as
$data) {
223 $is_accessible =
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
226 $this->course_obj->getRefId(),
229 if (count($is_accessible) === 0) {
233 $attr[
'id'] =
'il_' . $this->setting->get(
'inst_id') .
'_usr_' . $data[
'usr_id'];
234 $attr[
'position'] = $data[
'position'];
235 $attr[
'subscriptionTime'] = $data[
'time'];
248 if ($this->course_obj->getOfflineStatus()) {
250 } elseif ($this->course_obj->getActivationUnlimitedStatus()) {
254 $this->
xmlElement(
'Start', null, $this->course_obj->getActivationStart());
255 $this->
xmlElement(
'End', null, $this->course_obj->getActivationEnd());
256 $this->
xmlEndTag(
'TemporarilyAvailable');
261 $this->
xmlElement(
'Syllabus', null, $this->course_obj->getSyllabus());
262 $this->
xmlElement(
'ImportantInformation', null, $this->course_obj->getImportantInformation());
263 $this->
xmlElement(
'TargetGroup', null, $this->course_obj->getTargetGroup());
267 $this->
xmlElement(
'Name', null, $this->course_obj->getContactName());
268 $this->
xmlElement(
'Responsibility', null, $this->course_obj->getContactResponsibility());
269 $this->
xmlElement(
'Phone', null, $this->course_obj->getContactPhone());
270 $this->
xmlElement(
'Email', null, $this->course_obj->getContactEmail());
271 $this->
xmlElement(
'Consultation', null, $this->course_obj->getContactConsultation());
278 $attr[
'registrationType'] =
'Confirmation';
280 $attr[
'registrationType'] =
'Direct';
282 $attr[
'registrationType'] =
'Password';
285 $attr[
'maxMembers'] = $this->course_obj->isSubscriptionMembershipLimited() ?
286 $this->course_obj->getSubscriptionMaxMembers() : 0;
287 $attr[
'notification'] = $this->course_obj->getSubscriptionNotify() ?
'Yes' :
'No';
288 $attr[
'waitingList'] = $this->course_obj->enabledWaitingList() ?
'Yes' :
'No';
298 $this->
xmlElement(
'Start', null, $this->course_obj->getSubscriptionStart());
299 $this->
xmlElement(
'End', null, $this->course_obj->getSubscriptionEnd());
300 $this->
xmlEndTag(
'TemporarilyAvailable');
302 if (strlen($pwd = $this->course_obj->getSubscriptionPassword())) {
307 $this->
xmlStartTag(
'Period', [
'withTime' => $this->course_obj->getCourseStartTimeIndication() ? 1 : 0]);
311 $this->course_obj->getCourseStart()
312 ? $this->course_obj->getCourseStart()->get(
IL_CAL_UNIX)
318 $this->course_obj->getCourseEnd()
319 ? $this->course_obj->getCourseEnd()->get(
IL_CAL_UNIX)
323 $this->
xmlElement(
'WaitingListAutoFill', null, (
int) $this->course_obj->hasWaitingListAutoFill());
327 ($this->course_obj->getCancellationEnd() && !$this->course_obj->getCancellationEnd()->isNull()) ? $this->course_obj->getCancellationEnd()->get(
IL_CAL_UNIX) : null
329 $this->
xmlElement(
'MinMembers', null, $this->course_obj->getSubscriptionMinMembers());
331 $this->
xmlElement(
'ViewMode', null, $this->course_obj->getViewMode());
333 $this->
xmlElement(
'TimingMode', null, $this->course_obj->getTimingMode());
339 'active' => $this->course_obj->isSessionLimitEnabled() ? 1 : 0,
340 'previous' => $this->course_obj->getNumberOfPreviousSessions(),
341 'next' => $this->course_obj->getNumberOfNextSessions()
348 'status' => $this->course_obj->getAutoNotification() ? 1 : 0
352 $this->
xmlElement(
'StatusDetermination', null, (
int) $this->course_obj->getStatusDetermination());
353 $this->
xmlElement(
'MailToMembersType', null, (
int) $this->course_obj->getMailToMembersType());
355 'enabled' => (
int) $this->course_obj->getEnableCourseMap(),
356 'latitude' => $this->course_obj->getLatitude(),
357 'longitude' => $this->course_obj->getLongitude(),
358 'location_zoom' => $this->course_obj->getLocationZoom()
371 $this->attach_users = (bool) $value;
const IL_CRS_SUBSCRIPTION_DIRECT
const IL_CRS_SUBSCRIPTION_DEACTIVATED
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(ilObjCourse $course_obj)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
xmlSetGenCmt(string $genCmt)
Sets generated comment.
appendXML(string $a_str)
append xml string to document
xmlEndTag(string $tag)
Writes an endtag.
static _exportContainerSortingSettings(ilXmlWriter $xml, int $obj_id)
sorting XML-export for all container objects
getAllUsers()
get all users on waiting list public
xmlHeader()
Writes xml header.
static _exportContainerSettings(ilXmlWriter $a_xml, int $a_obj_id)
static _appendXMLByObjId(ilXmlWriter $a_xml_writer, int $a_obj_id)
Get xml of object values.
modifyExportIdentifier($a_tag, $a_param, $a_value)
const IL_CRS_SUBSCRIPTION_UNLIMITED
const IL_CRS_SUBSCRIPTION_CONFIRMATION
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
xmlDumpMem(bool $format=true)
Returns xml document from memory.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__buildAdvancedMetaData()