/** * return list of users following dtd users_3_7 */ function getUsersForContainer($sid, $ref_id, $attachRoles, $active) { $this->initAuth($sid); $this->initIlias(); if (!$this->__checkSession($sid)) { return $this->__raiseError($this->__getMessage(), $this->__getMessageCode()); } global $ilDB, $tree, $rbacreview, $rbacsystem; if ($ref_id == -1) { $ref_id = USER_FOLDER_ID; } $object = $this->checkObjectAccess($ref_id, array("crs", "cat", "grp", "usrf", "sess"), "read", true); if ($this->isFault($object)) { return $object; } $data = array(); switch ($object->getType()) { case "usrf": $data = ilObjUser::_getUsersForFolder(USER_FOLDER_ID, $active); break; case "cat": $data = ilObjUser::_getUsersForFolder($ref_id, $active); break; case "crs": // GET ALL MEMBERS $roles = $object->__getLocalRoles(); foreach ($roles as $role_id) { $data = array_merge($rbacreview->assignedUsers($role_id, array()), $data); } break; case "grp": $member_ids = $object->getGroupMemberIds(); $data = ilObjUser::_getUsersForGroup($member_ids, $active); break; case "sess": $course_ref_id = $tree->checkForParentType($ref_id, 'crs'); if (!$course_ref_id) { return $this->__raiseError("No course for session", "Client"); } $event_obj_id = ilObject::_lookupObjId($ref_id); include_once 'Modules/Session/classes/class.ilEventParticipants.php'; $event_part = new ilEventParticipants($event_obj_id); $member_ids = array_keys($event_part->getParticipants()); $data = ilObjUser::_getUsersForIds($member_ids, $active); break; } if (is_array($data)) { include_once './Services/User/classes/class.ilUserXMLWriter.php'; $xmlWriter = new ilUserXMLWriter(); $xmlWriter->setObjects($data); $xmlWriter->setAttachRoles($attachRoles); if ($xmlWriter->start()) { return $xmlWriter->getXML(); } } return $this->__raiseError('Error in processing information. This is likely a bug.', 'Server'); }