30 include_once
'./webservice/soap/classes/class.ilSoapAdministration.php';
42 public function addCourse(
string $sid,
int $target_id,
string $crs_xml)
53 $rbacsystem = $DIC[
'rbacsystem'];
56 return $this->
raiseError(
'No valid target given.',
'Client');
60 return $this->
raiseError(
"Parent with ID $target_id has been deleted.",
'CLIENT_OBJECT_DELETED');
63 if (!$rbacsystem->checkAccess(
'create', $target_id,
'crs')) {
64 return $this->
raiseError(
'Check access failed. No permission to create courses',
'Server');
67 include_once(
"Modules/Course/classes/class.ilObjCourse.php");
70 $newObj->setType(
'crs');
71 $newObj->setTitle(
'dummy');
72 $newObj->setDescription(
"");
73 $newObj->create(
true);
74 $newObj->createReference();
75 $newObj->putInTree($target_id);
76 $newObj->setPermissions($target_id);
78 include_once
'Modules/Course/classes/class.ilCourseXMLParser.php';
82 $xml_parser->setXMLContent($crs_xml);
83 $xml_parser->startParsing();
84 return $newObj->getRefId() ?:
"0";
99 include_once
"./Services/Utilities/classes/class.ilUtil.php";
102 $rbacsystem = $DIC[
'rbacsystem'];
106 $course_id = end($ref_ids);
109 'Invalid course id. Object with id "' . $course_id .
'" is not of type "course"',
115 if (!$rbacsystem->checkAccess(
'delete', $course_id)) {
116 return $this->
raiseError(
'Check access failed. No permission to delete course',
'Server');
120 $tree = $DIC->repositoryTree();
121 $user = $DIC->user();
122 $rbacadmin = $DIC[
'rbacadmin'];
125 if ($tree->isDeleted($course_id)) {
126 return $this->
raiseError(
'Node already deleted',
'Server');
129 $subnodes = $tree->getSubTree($tree->getNodeData($course_id));
130 foreach ($subnodes as $subnode) {
131 $rbacadmin->revokePermission($subnode[
"child"]);
133 if (!$tree->moveToTrash($course_id,
true, $user->getId())) {
134 return $this->
raiseError(
'Node already deleted',
'Client');
137 $log->write(
"SOAP ilObjectGUI::confirmedDeleteObject(), moved ref_id " . $course_id .
" to trash");
155 $rbacsystem = $DIC[
'rbacsystem'];
159 $course_id = end($ref_ids);
162 'Invalid course id. Object with id "' . $course_id .
'" is not of type "course"',
168 if (!$rbacsystem->checkAccess(
'manage_members', $course_id)) {
169 return $this->
raiseError(
'Check access failed. No permission to write to course',
'Server');
173 return $this->
raiseError(
'Invalid user id. User with id "' . $user_id .
' does not exist',
'Client');
175 if ($type !==
'Admin' &&
177 $type !==
'Member') {
179 'Invalid type given. Parameter "type" must be "Admin", "Tutor" or "Member"',
185 return $this->
raiseError(
'Cannot create course instance!',
'Server');
189 return $this->
raiseError(
'Cannot create user instance!',
'Server');
192 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
198 require_once(
"Services/Administration/classes/class.ilSetting.php");
201 $course_members->updateNotification(
203 (bool)
$settings->get(
'mail_crs_admin_notification',
"1")
232 $rbacsystem = $DIC[
'rbacsystem'];
236 $course_id = end($ref_ids);
239 'Invalid course id. Object with id "' . $course_id .
'" is not of type "course"',
246 return $this->
raiseError(
'Invalid user id. User with id "' . $user_id .
' does not exist',
'Client');
250 return $this->
raiseError(
'Cannot create course instance!',
'Server');
253 if (!$rbacsystem->checkAccess(
'manage_members', $course_id)) {
254 return $this->
raiseError(
'Check access failed. No permission to write to course',
'Server');
257 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
260 if (!$course_members->checkLastAdmin(array($user_id))) {
261 return $this->
raiseError(
'Cannot deassign last administrator from course',
'Server');
263 $course_members->delete($user_id);
270 public function isAssignedToCourse(
string $sid,
int $course_id,
int $user_id)
281 $rbacsystem = $DIC[
'rbacsystem'];
285 $course_id = end($ref_ids);
288 'Invalid course id. Object with id "' . $course_id .
'" is not of type "course"',
295 return $this->
raiseError(
'Invalid user id. User with id "' . $user_id .
' does not exist',
'Client');
300 return $this->
raiseError(
'Cannot create course instance!',
'Server');
303 if (!$rbacsystem->checkAccess(
'manage_members', $course_id)) {
304 return $this->
raiseError(
'Check access failed. No permission to write to course',
'Server');
307 include_once
'./Modules/Course/classes/class.ilCourseParticipants.php';
310 if ($crs_members->isAdmin($user_id)) {
313 if ($crs_members->isTutor($user_id)) {
316 if ($crs_members->isMember($user_id)) {
325 public function getCourseXML(
string $sid,
int $course_id)
336 $rbacsystem = $DIC[
'rbacsystem'];
340 if ($this->
isFault($tmp_course)) {
344 include_once
'Modules/Course/classes/class.ilCourseXMLWriter.php';
346 $xml_writer->start();
347 return $xml_writer->getXML();
353 public function updateCourse(
string $sid,
int $course_id,
string $xml)
364 $rbacsystem = $DIC[
'rbacsystem'];
368 $course_id = end($ref_ids);
371 'Invalid course id. Object with id "' . $course_id .
'" is not of type "course"',
379 return $this->
raiseError(
'Cannot create course instance!',
'Server');
382 if (!$rbacsystem->checkAccess(
'write', $course_id)) {
383 return $this->
raiseError(
'Check access failed. No permission to write course',
'Server');
387 include_once
'Services/MetaData/classes/class.ilMD.php';
389 $md =
new ilMD($tmp_course->getId(), 0,
'crs');
392 include_once
'Modules/Course/classes/class.ilCourseParticipants.php';
395 include_once
'Modules/Course/classes/class.ilCourseWaitingList.php';
398 include_once
'Modules/Course/classes/class.ilCourseXMLParser.php';
402 $xml_parser->setXMLContent($xml);
403 $xml_parser->startParsing();
404 $tmp_course->MDUpdateListener(
'General');
423 $rbacreview = $DIC[
'rbacreview'];
424 $ilObjDataCache = $DIC[
'ilObjDataCache'];
425 $tree = $DIC[
'tree'];
427 include_once
'webservice/soap/classes/class.ilXMLResultSetParser.php';
430 $parser->startParsing();
432 return $this->
raiseError($exception->getMessage(),
"Client");
434 $xmlResultSet = $parser->getXMLResultSet();
436 if (!$xmlResultSet->hasColumn(
"user_id")) {
437 return $this->
raiseError(
"parameter user_id is missing",
"Client");
440 if (!$xmlResultSet->hasColumn(
"status")) {
441 return $this->
raiseError(
"parameter status is missing",
"Client");
444 $user_id = (
int) $xmlResultSet->getValue(0,
"user_id");
445 $status = (
int) $xmlResultSet->getValue(0,
"status");
449 if (self::MEMBER == ($status & self::MEMBER) ||
450 self::TUTOR == ($status & self::TUTOR) ||
451 self::ADMIN == ($status & self::ADMIN)) {
452 foreach ($rbacreview->assignedRoles($user_id) as $role_id) {
454 #echo $role->getType(); 455 if ($role->getType() !==
"role") {
461 $role_title = $role->getTitle();
468 if (self::MEMBER == ($status & self::MEMBER) && strpos(
473 } elseif (self::TUTOR == ($status & self::TUTOR) && strpos(
478 } elseif (self::ADMIN == ($status & self::ADMIN) && strpos(
483 } elseif (($status & self::OWNER) == self::OWNER && $ilObjDataCache->lookupOwner($ilObjDataCache->lookupObjId(
$ref_id)) == $user_id) {
490 if (($status & self::OWNER) == self::OWNER) {
493 foreach ($owned_objects as $obj_id) {
495 foreach ($allrefs as
$r) {
496 if ($tree->isDeleted($r)) {
499 if ($tree->isInTree($r)) {
503 if (count($refs) > 0) {
504 $ref_ids[] = array_pop($refs);
508 $ref_ids = array_unique($ref_ids);
510 $ref_ids = array_unique($ref_ids);
512 include_once
'webservice/soap/classes/class.ilXMLResultSetWriter.php';
513 include_once
'Modules/Course/classes/class.ilObjCourse.php';
514 include_once
'Modules/Course/classes/class.ilCourseXMLWriter.php';
517 $xmlResultSet->addColumn(
"ref_id");
518 $xmlResultSet->addColumn(
"xml");
519 $xmlResultSet->addColumn(
"parent_ref_id");
523 $ilUser = $DIC[
'ilUser'];
526 $permission = $user_id === $ilUser->getId() ?
'read' :
'write';
528 foreach ($ref_ids as $course_id) {
532 $row->setValue(
"ref_id", $course_id);
534 $xmlWriter->setAttachUsers(
false);
536 $row->setValue(
"xml", $xmlWriter->getXML());
537 $row->setValue(
"parent_ref_id", $tree->getParentId($course_id));
538 $xmlResultSet->addRow($row);
542 $xmlResultSetWriter->start();
543 return $xmlResultSetWriter->getXML();
addCourse(string $sid, int $target_id, string $crs_xml)
XML Writer for XMLResultSet.
static _getAllReferences(int $id)
get all reference ids for object ID
raiseError(string $a_message, $a_code)
Row Class for XMLResultSet.
SaxParserException thrown by ilSaxParser if property throwException is set.
getCoursesForUser(string $sid, string $parameters)
static _lookupObjId(int $ref_id)
static _deleteAll(int $a_obj_id)
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
static _getInstanceByObjId(int $a_obj_id)
static getObjectsForOwner(string $object_type, int $owner_id)
returns all objects of an owner, filtered by type, objects are not deleted!
deleteCourse(string $sid, int $course_id)
checkSession(string $sid)
static _isInTrash(int $ref_id)
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
checkObjectAccess(int $ref_id, array $expected_type, string $permission, bool $returnObject=false)
check access for ref id: expected type, permission, return object instance if returnobject is true ...
excludeCourseMember(string $sid, int $course_id, int $user_id)
assignCourseMember(string $sid, int $course_id, int $user_id, string $type)
static _deleteAllEntries(int $a_obj_id)
Delete all entries Normally called in case of object deletion.
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupType(int $id, bool $reference=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static __extractRefId(string $role_title)
extract ref id from role title, e.g.