/**
  * 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');
 }