/** * Get participants and responsible users */ function getParticipantsAndResponsibles() { $participants = array(); if ($this->app_id > 0) { include_once "./Services/Calendar/classes/class.ilCalendarEntry.php"; $app = new ilCalendarEntry($this->app_id); $resp_users = $app->readResponsibleUsers(); foreach ($resp_users as $v) { $n = ilObjUser::_lookupName($v["user_id"]); $participants[$v["user_id"]] = array_merge($n, array("type" => "non-member")); $this->resp_users[] = $v["user_id"]; } } include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $part = ilGroupParticipants::_getInstanceByObjId($this->grp_id); $admins = $part->getAdmins(); $members = $part->getMembers(); foreach ($members as $v) { $n = ilObjUser::_lookupName($v); $participants[$v] = array_merge($n, array("type" => "member")); } foreach ($admins as $v) { $n = ilObjUser::_lookupName($v); $participants[$v] = array_merge($n, array("type" => "admin")); } $this->setData($participants); }
/** * Constructor * * @access public * @param object parent gui object * @return void */ public function __construct($a_parent_obj) { global $lng, $ilCtrl; $this->lng = $lng; $this->lng->loadLanguageModule('grp'); $this->ctrl = $ilCtrl; $this->container = $a_parent_obj; include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; $this->privacy = ilPrivacySettings::_getInstance(); $this->participants = ilGroupParticipants::_getInstanceByObjId($a_parent_obj->object->getId()); parent::__construct($a_parent_obj, 'editMembers'); $this->setFormName('participants'); $this->setFormAction($this->ctrl->getFormAction($a_parent_obj)); $this->addColumn($this->lng->txt('name'), 'name', '20%'); $this->addColumn($this->lng->txt('login'), 'login', '25%'); if ($this->privacy->enabledGroupAccessTimes()) { $this->addColumn($this->lng->txt('last_access'), 'access_time'); } $this->addColumn($this->lng->txt('grp_notification'), 'notification'); $this->addColumn($this->lng->txt('objs_role'), 'roles'); $this->addCommandButton('updateMembers', $this->lng->txt('save')); $this->addCommandButton('members', $this->lng->txt('cancel')); $this->setRowTemplate("tpl.edit_participants_row.html", "Modules/Group"); $this->disable('sort'); $this->enable('header'); $this->enable('numinfo'); $this->disable('select_all'); }
/** * constructor * @param string xml version * @param string output encoding * @param string input encoding * @access public */ function ilGroupXMLWriter($group_obj) { global $ilias; parent::ilXmlWriter(); $this->EXPORT_VERSION = "3"; $this->ilias =& $ilias; $this->group_obj =& $group_obj; $this->participants = ilGroupParticipants::_getInstanceByObjId($this->group_obj->getId()); }
/** * Get instance by obj type * * @param int $a_obj_id * @return ilParticipants */ public static function getInstanceByObjId($a_obj_id) { $type = ilObject::_lookupType($a_obj_id); switch ($type) { case 'crs': include_once './Modules/Course/classes/class.ilCourseParticipants.php'; return ilCourseParticipants::_getInstanceByObjId($a_obj_id); case 'grp': include_once './Modules/Group/classes/class.ilGroupParticipants.php'; return ilGroupParticipants::_getInstanceByObjId($a_obj_id); } // @todo proper error handling return null; }
/** * @param int $a_obj_id * @return ilParticipants|mixed|null|object */ public static function getInstanceByObjId($a_obj_id) { $type = ilObject::_lookupType($a_obj_id); switch ($type) { case 'crs': include_once './Modules/Course/classes/class.ilCourseParticipants.php'; return ilCourseParticipants::_getInstanceByObjId($a_obj_id); case 'grp': include_once './Modules/Group/classes/class.ilGroupParticipants.php'; return ilGroupParticipants::_getInstanceByObjId($a_obj_id); case 'sess': include_once './Modules/Session/classes/class.ilSessionParticipants.php'; return ilSessionParticipants::_getInstanceByObjId($a_obj_id); default: include_once 'class.ilAdobeConnectParticipantsNullObject.php'; return new ilAdobeConnectParticipantsNullObject(); } }
/** * Get instance by obj type * * @param int $a_obj_id * @return ilParticipants * @throws InvalidArgumentException */ public static function getInstanceByObjId($a_obj_id) { $type = ilObject::_lookupType($a_obj_id); switch ($type) { case 'crs': include_once './Modules/Course/classes/class.ilCourseParticipants.php'; return ilCourseParticipants::_getInstanceByObjId($a_obj_id); case 'grp': include_once './Modules/Group/classes/class.ilGroupParticipants.php'; return ilGroupParticipants::_getInstanceByObjId($a_obj_id); case 'sess': include_once './Modules/Session/classes/class.ilSessionParticipants.php'; return ilSessionParticipants::_getInstanceByObjId($a_obj_id); default: $GLOBALS['ilLog']->logStack(); $GLOBALS['ilLog']->write(__METHOD__ . ': Invalid obj_id given: ' . $a_obj_id); throw new InvalidArgumentException('Invalid obj id given'); } }
/** * find groups in course, exclude groups in groups */ function initGroups() { global $tree, $ilAccess; $parent_node = $tree->getNodeData($this->ref_id); $groups = $tree->getSubTree($parent_node, true, "grp"); if (is_array($groups) && sizeof($groups)) { include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $this->participants = $this->groups = $this->groups_rights = array(); foreach ($groups as $idx => $group_data) { // check for group in group if ($group_data["parent"] != $this->ref_id && $tree->checkForParentType($group_data["ref_id"], "grp", true)) { unset($groups[$idx]); } else { $this->groups[$group_data["ref_id"]] = $group_data["title"]; $this->groups_rights[$group_data["ref_id"]]["write"] = (bool) $ilAccess->checkAccess("write", "", $group_data["ref_id"]); $this->groups_rights[$group_data["ref_id"]]["edit_permission"] = (bool) $ilAccess->checkAccess("edit_permission", "", $group_data["ref_id"]); $gobj = ilGroupParticipants::_getInstanceByObjId($group_data["obj_id"]); $this->participants[$group_data["ref_id"]]["members"] = $gobj->getMembers(); $this->participants[$group_data["ref_id"]]["admins"] = $gobj->getAdmins(); } } } }
/** * Lookup registration info * @global ilDB $ilDB * @global ilObjUser $ilUser * @global ilLanguage $lng * @param int $a_obj_id * @return array */ public static function lookupRegistrationInfo($a_obj_id) { global $ilDB, $ilUser, $lng; $query = 'SELECT registration_type, registration_enabled, registration_unlimited, registration_start, ' . 'registration_end, registration_mem_limit, registration_max_members FROM grp_settings ' . 'WHERE obj_id = ' . $ilDB->quote($a_obj_id); $res = $ilDB->query($query); $info = array(); while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $info['reg_info_start'] = new ilDateTime($row->registration_start, IL_CAL_DATETIME); $info['reg_info_end'] = new ilDateTime($row->registration_end, IL_CAL_DATETIME); $info['reg_info_type'] = $row->registration_type; $info['reg_info_max_members'] = $row->registration_max_members; $info['reg_info_mem_limit'] = $row->registration_mem_limit; $info['reg_info_unlimited'] = $row->registration_unlimited; $info['reg_info_max_members'] = 0; if ($info['reg_info_mem_limit']) { $info['reg_info_max_members'] = $row->registration_max_members; } $info['reg_info_enabled'] = $row->registration_enabled; } $registration_possible = $info['reg_info_enabled']; // Limited registration (added $registration_possible, see bug 0010157) if (!$info['reg_info_unlimited'] && $registration_possible) { $dt = new ilDateTime(time(), IL_CAL_UNIX); if (ilDateTime::_before($dt, $info['reg_info_start'])) { $info['reg_info_list_prop']['property'] = $lng->txt('grp_list_reg_start'); $info['reg_info_list_prop']['value'] = ilDatePresentation::formatDate($info['reg_info_start']); } elseif (ilDateTime::_before($dt, $info['reg_info_end'])) { $info['reg_info_list_prop']['property'] = $lng->txt('grp_list_reg_end'); $info['reg_info_list_prop']['value'] = ilDatePresentation::formatDate($info['reg_info_end']); } else { $registration_possible = false; $info['reg_info_list_prop']['property'] = $lng->txt('grp_list_reg_period'); $info['reg_info_list_prop']['value'] = $lng->txt('grp_list_reg_noreg'); } } else { // added !$registration_possible, see bug 0010157 if (!$registration_possible) { $registration_possible = false; $info['reg_info_list_prop']['property'] = $lng->txt('grp_list_reg_period'); $info['reg_info_list_prop']['value'] = $lng->txt('grp_list_reg_noreg'); } } if ($info['reg_info_mem_limit'] && $registration_possible) { // Check if users are on waiting list // @todo // Check for free places include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $part = ilGroupParticipants::_getInstanceByObjId($a_obj_id); if ($part->getCountMembers() <= $info['reg_info_max_members']) { $info['reg_info_list_prop_limit']['property'] = $lng->txt('grp_list_reg_limit_places'); $info['reg_info_list_prop_limit']['value'] = max(0, $info['reg_info_max_members'] - $part->getCountMembers()); } else { $info['reg_info_list_prop_limit']['property'] = ''; $info['reg_info_list_prop_limit']['value'] = $lng->txt('grp_list_reg_limit_full'); } } return $info; }
/** * Parse user data * @param array $a_user_data * @return */ public function parse($a_user_data) { include_once './Services/User/classes/class.ilUserQuery.php'; $additional_fields = $this->getSelectedColumns(); unset($additional_fields["firstname"]); unset($additional_fields["lastname"]); unset($additional_fields["last_login"]); unset($additional_fields["access_until"]); unset($additional_fields['consultation_hour']); unset($additional_fields['prtf']); switch ($this->type) { case 'admin': $part = ilGroupParticipants::_getInstanceByObjId($this->getParentObject()->object->getId())->getAdmins(); break; case 'member': $part = $GLOBALS['rbacreview']->assignedUsers($this->getRole()); break; case 'role': $part = $GLOBALS['rbacreview']->assignedUsers($this->getRole()); break; } $udf_ids = $usr_data_fields = $odf_ids = array(); foreach ($additional_fields as $field) { if (substr($field, 0, 3) == 'udf') { $udf_ids[] = substr($field, 4); continue; } if (substr($field, 0, 3) == 'odf') { $odf_ids[] = substr($field, 4); continue; } $usr_data_fields[] = $field; } $usr_data = ilUserQuery::getUserListData('login', 'ASC', 0, 9999, '', '', null, false, false, 0, 0, null, $usr_data_fields, $part); // Custom user data fields if ($udf_ids) { include_once './Services/User/classes/class.ilUserDefinedData.php'; $data = ilUserDefinedData::lookupData($part, $udf_ids); foreach ($data as $usr_id => $fields) { if (!$this->checkAcceptance($usr_id)) { continue; } foreach ($fields as $field_id => $value) { $a_user_data[$usr_id]['udf_' . $field_id] = $value; } } } // Object specific user data fields if ($odf_ids) { include_once './Modules/Course/classes/Export/class.ilCourseUserData.php'; $data = ilCourseUserData::_getValuesByObjId($this->getParentObject()->object->getId()); foreach ($data as $usr_id => $fields) { if (!$this->checkAcceptance($usr_id)) { continue; } foreach ($fields as $field_id => $value) { if ($a_user_data[$usr_id]) { $a_user_data[$usr_id]['odf_' . $field_id] = $value; } } } // add last edit date include_once './Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php'; foreach (ilObjectCustomUserFieldHistory::lookupEntriesByObjectId($this->getParentObject()->object->getId()) as $usr_id => $edit_info) { if (!isset($a_user_data[$usr_id])) { continue; } include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php'; if ($usr_id == $edit_info['update_user']) { $a_user_data[$usr_id]['odf_last_update'] = ''; $a_user_data[$usr_id]['odf_info_txt'] = $GLOBALS['lng']->txt('cdf_edited_by_self'); if (ilPrivacySettings::_getInstance()->enabledAccessTimesByType($this->getParentObject()->object->getType())) { $a_user_data[$usr_id]['odf_last_update'] .= '_' . $edit_info['editing_time']->get(IL_CAL_UNIX); $a_user_data[$usr_id]['odf_info_txt'] .= ', ' . ilDatePresentation::formatDate($edit_info['editing_time']); } } else { $a_user_data[$usr_id]['odf_last_update'] = $edit_info['edit_user']; $a_user_data[$usr_id]['odf_last_update'] .= '_' . $edit_info['editing_time']->get(IL_CAL_UNIX); $name = ilObjUser::_lookupName($edit_info['update_user']); $a_user_data[$usr_id]['odf_info_txt'] = $name['firstname'] . ' ' . $name['lastname'] . ', ' . ilDatePresentation::formatDate($edit_info['editing_time']); } } } foreach ($usr_data['set'] as $user) { // Check acceptance if (!$this->checkAcceptance($user['usr_id'])) { continue; } // DONE: accepted foreach ($usr_data_fields as $field) { $a_user_data[$user['usr_id']][$field] = $user[$field] ? $user[$field] : ''; } } // consultation hours if ($this->isColumnSelected('consultation_hour')) { include_once './Services/Booking/classes/class.ilBookingEntry.php'; foreach (ilBookingEntry::lookupManagedBookingsForObject($this->getParentObject()->object->getId(), $GLOBALS['ilUser']->getId()) as $buser => $booking) { if (isset($a_user_data[$buser])) { $a_user_data[$buser]['consultation_hour'] = $booking[0]['dt']; $a_user_data[$buser]['consultation_hour_end'] = $booking[0]['dtend']; $a_user_data[$buser]['consultation_hours'] = $booking; } } } return $this->setData($a_user_data); }
protected function initContainer($a_init_participants = false) { global $tree; $is_course = $is_group = false; $this->container_ref_id = $tree->checkForParentType($this->object->getRefId(), 'crs'); if ($this->container_ref_id) { $is_course = true; } if (!$this->container_ref_id) { $this->container_ref_id = $tree->checkForParentType($this->object->getRefId(), 'grp'); if ($this->container_ref_id) { $is_group = true; } } if (!$this->container_ref_id) { ilUtil::sendFailure('No container object found. Aborting'); return true; } $this->container_obj_id = ilObject::_lookupObjId($this->container_ref_id); if ($a_init_participants && $this->container_obj_id) { if ($is_course) { include_once './Modules/Course/classes/class.ilCourseParticipants.php'; return ilCourseParticipants::_getInstanceByObjId($this->container_obj_id); } else { if ($is_group) { include_once './Modules/Group/classes/class.ilGroupParticipants.php'; return ilGroupParticipants::_getInstanceByObjId($this->container_obj_id); } } } }
/** * @see ilMembershipRegistrationCodes::register() * @param int user_id * @param int role * @param bool force registration and do not check registration constraints. */ public function register($a_user_id, $a_role = IL_GRP_MEMBER, $a_force_registration = false) { include_once './Services/Membership/exceptions/class.ilMembershipRegistrationException.php'; include_once "./Modules/Group/classes/class.ilGroupParticipants.php"; $part = ilGroupParticipants::_getInstanceByObjId($this->getId()); if ($part->isAssigned($a_user_id)) { return true; } if (!$a_force_registration) { // Availability include_once './Modules/Group/classes/class.ilObjGroupAccess.php'; if (!ilObjGroupAccess::_registrationEnabled($this->getId())) { $this->lng->loadLanguageModule('crs'); throw new ilMembershipRegistrationException('456', $this->getRefId()); } // Max members if (!$this->isRegistrationUnlimited()) { $free = max(0, $this->getMaxMembers() - $part->getCountMembers()); include_once './Modules/Group/classes/class.ilGroupWaitingList.php'; $waiting_list = new ilGroupWaitingList($this->getId()); if ($this->isWaitingListEnabled() and (!$free or $waiting_list->getCountUsers())) { throw new ilMembershipRegistrationException('123', $this->getRefId()); } } } $part->add($a_user_id, $a_role); $part->sendNotification($part->TYPE_NOTIFICATION_REGISTRATION, $a_user_id); return true; }
/** * check access for an object * * @param integer $a_user_id * @param string $a_permission * @param string $a_cmd * @param int $a_node_id * @param string $a_type (optional) * @return bool */ public function checkAccessOfUser($a_user_id, $a_permission, $a_cmd, $a_node_id, $a_type = "") { global $rbacreview, $ilUser, $ilSetting; // #12059 if (!$ilSetting->get('user_portfolios')) { return false; } // :TODO: create permission for parent node with type ?! $pf = new ilObjPortfolio($a_node_id, false); if (!$pf->getId()) { return false; } // portfolio owner has all rights if ($pf->getOwner() == $a_user_id) { return true; } // #11921 if (!$pf->isOnline()) { return false; } // other users can only read if ($a_permission == "read" || $a_permission == "visible") { // get all objects with explicit permission $objects = $this->getPermissions($a_node_id); if ($objects) { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessGUI.php"; // check if given user is member of object or has role foreach ($objects as $obj_id) { switch ($obj_id) { case ilWorkspaceAccessGUI::PERMISSION_ALL: return true; case ilWorkspaceAccessGUI::PERMISSION_ALL_PASSWORD: // check against input kept in session if (self::getSharedNodePassword($a_node_id) == self::getSharedSessionPassword($a_node_id) || $a_permission == "visible") { return true; } break; case ilWorkspaceAccessGUI::PERMISSION_REGISTERED: if ($ilUser->getId() != ANONYMOUS_USER_ID) { return true; } break; default: switch (ilObject::_lookupType($obj_id)) { case "grp": // member of group? if (ilGroupParticipants::_getInstanceByObjId($obj_id)->isAssigned($a_user_id)) { return true; } break; case "crs": // member of course? if (ilCourseParticipants::_getInstanceByObjId($obj_id)->isAssigned($a_user_id)) { return true; } break; case "role": // has role? if ($rbacreview->isAssigned($a_user_id, $obj_id)) { return true; } break; case "usr": // direct assignment if ($a_user_id == $obj_id) { return true; } break; } break; } } } } return false; }
protected function assignGroups() { if (count($this->getAssignedGroupes()) == 0) { return false; } foreach ($this->getAssignedGroupes() as $grp_obj_id) { if (ilObject2::_lookupType($grp_obj_id) != 'grp') { continue; } $part = ilGroupParticipants::_getInstanceByObjId($grp_obj_id); $usr_id = $this->getUsrObject()->getId(); $part->add($usr_id, IL_GRP_MEMBER); $all_refs = ilObject2::_getAllReferences($grp_obj_id); $first = array_shift(array_values($all_refs)); ilObjUser::_dropDesktopItem($usr_id, $first, 'grp'); } }
/** * Show user's courses */ public function showMyGroups() { global $lng, $ilUser, $ilObjDataCache, $tree; include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $this->tpl->setTitle($this->lng->txt('mail_addressbook')); $searchTpl = new ilTemplate('tpl.mail_search_template.html', true, true, 'Services/Contact'); $_GET['view'] = 'mygroups'; $lng->loadLanguageModule('crs'); $this->ctrl->setParameter($this, 'view', 'mygroups'); include_once 'Services/Contact/classes/class.ilMailSearchCoursesTableGUI.php'; $table = new ilMailSearchCoursesTableGUI($this, 'grp', $_GET["ref"]); $table->setId('search_grps_tbl'); $grp_ids = ilGroupParticipants::_getMembershipByType($ilUser->getId(), 'grp'); $counter = 0; $tableData = array(); if (is_array($grp_ids) && count($grp_ids) > 0) { include_once "./Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php"; foreach ($grp_ids as $grp_id) { if (ilObject::_hasUntrashedReference($grp_id)) { $oGroupParticipants = ilGroupParticipants::_getInstanceByObjId($grp_id); $grp_members = $oGroupParticipants->getParticipants(); foreach ($grp_members as $key => $member) { $tmp_usr = new ilObjUser($member); if ($tmp_usr->checkTimeLimit() == false || $tmp_usr->getActive() == false) { unset($grp_members[$key]); } } unset($tmp_usr); $ref_ids = ilObject::_getAllReferences($grp_id); $ref_id = current($ref_ids); $path_arr = $tree->getPathFull($ref_id, $tree->getRootId()); $path_counter = 0; $path = ''; foreach ($path_arr as $data) { if ($path_counter++) { $path .= " -> "; } $path .= $data['title']; } $path = $this->lng->txt('path') . ': ' . $path; $current_selection_list = new ilAdvancedSelectionListGUI(); $current_selection_list->setListTitle($this->lng->txt("actions")); $current_selection_list->setId("act_" . $counter); $this->ctrl->setParameter($this, 'search_grp', $grp_id); $this->ctrl->setParameter($this, 'view', 'mygroups'); if ($_GET["ref"] == "mail") { if ($this->mailing_allowed) { $current_selection_list->addItem($this->lng->txt("mail_members"), '', $this->ctrl->getLinkTarget($this, "mail")); } } else { if ($_GET["ref"] == "wsp") { $current_selection_list->addItem($this->lng->txt("wsp_share_with_members"), '', $this->ctrl->getLinkTarget($this, "share")); } } $current_selection_list->addItem($this->lng->txt("mail_list_members"), '', $this->ctrl->getLinkTarget($this, "showMembers")); $this->ctrl->clearParameters($this); $rowData = array('CRS_ID' => $grp_id, 'CRS_NAME' => $ilObjDataCache->lookupTitle($grp_id), 'CRS_NO_MEMBERS' => count($grp_members), 'CRS_PATH' => $path, 'COMMAND_SELECTION_LIST' => $current_selection_list->getHTML()); $counter++; $tableData[] = $rowData; } } } $table->setData($tableData); if ($counter > 0) { $this->tpl->setVariable('TXT_MARKED_ENTRIES', $lng->txt('marked_entries')); } $searchTpl->setVariable('TABLE', $table->getHtml()); $this->tpl->setContent($searchTpl->get()); if ($_GET["ref"] != "wsp") { $this->tpl->show(); } }
function printMembersOutputObject() { $list = $this->initAttendanceList(); $list->initFromForm(); $list->setCallback(array($this, 'getAttendanceListUserData')); $part = ilGroupParticipants::_getInstanceByObjId($this->object->getId()); $this->members_data = $this->readMemberData($part->getParticipants()); echo $list->getFullscreenHTML(); exit; }
/** * Refresh status of course member assignments * @param object $course_member * @param int $obj_id */ protected function refreshAssignmentStatus($course_member, $obj_id, $sub_id, $assigned) { include_once './Services/WebServices/ECS/classes/Course/class.ilECSCourseMemberAssignment.php'; $type = ilObject::_lookupType($obj_id); if ($type == 'crs') { include_once './Modules/Course/classes/class.ilCourseParticipants.php'; $part = ilCourseParticipants::_getInstanceByObjId($obj_id); } else { include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $part = ilGroupParticipants::_getInstanceByObjId($obj_id); } $course_id = (int) $course_member->lectureID; $usr_ids = ilECSCourseMemberAssignment::lookupUserIds($course_id, $sub_id, $obj_id); // Delete remote deleted foreach ((array) $usr_ids as $usr_id) { if (!isset($assigned[$usr_id])) { $ass = ilECSCourseMemberAssignment::lookupAssignment($course_id, $sub_id, $obj_id, $usr_id); if ($ass instanceof ilECSCourseMemberAssignment) { $acc = ilObjUser::_checkExternalAuthAccount(ilECSSetting::lookupAuthMode(), (string) $usr_id); if ($il_usr_id = ilObjUser::_lookupId($acc)) { // this removes also admin, tutor roles $part->delete($il_usr_id); $GLOBALS['ilLog']->write(__METHOD__ . ': Deassigning user ' . $usr_id . ' ' . 'from course ' . ilObject::_lookupTitle($obj_id)); } else { $GLOBALS['ilLog']->write(__METHOD__ . ': Deassigning unknown ILIAS user ' . $usr_id . ' ' . 'from course ' . ilObject::_lookupTitle($obj_id)); } $ass->delete(); } } } // Assign new participants foreach ((array) $assigned as $person_id => $person) { $role = $this->lookupRole($person['role']); $role_info = ilECSMappingUtils::getRoleMappingInfo($role); $acc = ilObjUser::_checkExternalAuthAccount(ilECSSetting::lookupAuthMode(), (string) $person_id); $GLOBALS['ilLog']->write(__METHOD__ . ': Handling user ' . (string) $person_id); if (in_array($person_id, $usr_ids)) { if ($il_usr_id = ilObjUser::_lookupId($acc)) { $GLOBALS['ilLog']->write(__METHOD__ . ': ' . print_r($role, true)); $part->updateRoleAssignments($il_usr_id, array($role)); // Nothing to do, user is member or is locally deleted } } else { if ($il_usr_id = ilObjUser::_lookupId($acc)) { if ($role) { // Add user $GLOBALS['ilLog']->write(__METHOD__ . ': Assigning new user ' . $person_id . ' ' . 'to ' . ilObject::_lookupTitle($obj_id)); $part->add($il_usr_id, $role); } } else { if ($role_info['create']) { $this->createMember($person_id); $GLOBALS['ilLog']->write(__METHOD__ . ': Added new user ' . $person_id); } } $assignment = new ilECSCourseMemberAssignment(); $assignment->setServer($this->getServer()->getServerId()); $assignment->setMid($this->mid); $assignment->setCmsId($course_id); $assignment->setCmsSubId($sub_id); $assignment->setObjId($obj_id); $assignment->setUid($person_id); $assignment->save(); } } return true; }
/** * Parse user data * @param array $a_user_data * @return */ public function parse($a_user_data) { include_once './Services/User/classes/class.ilUserQuery.php'; $additional_fields = $this->getSelectedColumns(); unset($additional_fields["firstname"]); unset($additional_fields["lastname"]); unset($additional_fields["last_login"]); unset($additional_fields["access_until"]); unset($additional_fields['consultation_hour']); unset($additional_fields['prtf']); switch ($this->type) { case 'admin': $part = ilGroupParticipants::_getInstanceByObjId($this->getParentObject()->object->getId())->getAdmins(); break; case 'member': $part = $GLOBALS['rbacreview']->assignedUsers($this->getRole()); break; case 'role': $part = $GLOBALS['rbacreview']->assignedUsers($this->getRole()); break; } $udf_ids = $usr_data_fields = $odf_ids = array(); foreach ($additional_fields as $field) { if (substr($field, 0, 3) == 'udf') { $udf_ids[] = substr($field, 4); continue; } if (substr($field, 0, 3) == 'odf') { $odf_ids[] = substr($field, 4); continue; } $usr_data_fields[] = $field; } $usr_data = ilUserQuery::getUserListData('login', 'ASC', 0, 9999, '', '', null, false, false, 0, 0, null, $usr_data_fields, $part); // Custom user data fields if ($udf_ids) { include_once './Services/User/classes/class.ilUserDefinedData.php'; $data = ilUserDefinedData::lookupData($part, $udf_ids); foreach ($data as $usr_id => $fields) { if (!$this->checkAcceptance($usr_id)) { continue; } foreach ($fields as $field_id => $value) { $a_user_data[$usr_id]['udf_' . $field_id] = $value; } } } // Object specific user data fields if ($odf_ids) { include_once './Modules/Course/classes/Export/class.ilCourseUserData.php'; $data = ilCourseUserData::_getValuesByObjId($this->getParentObject()->object->getId()); foreach ($data as $usr_id => $fields) { if (!$this->checkAcceptance($usr_id)) { continue; } foreach ($fields as $field_id => $value) { if ($a_user_data[$usr_id]) { $a_user_data[$usr_id]['odf_' . $field_id] = $value; } } } } foreach ($usr_data['set'] as $user) { // Check acceptance if (!$this->checkAcceptance($user['usr_id'])) { continue; } // DONE: accepted foreach ($usr_data_fields as $field) { $a_user_data[$user['usr_id']][$field] = $user[$field] ? $user[$field] : ''; } } // consultation hours if ($this->isColumnSelected('consultation_hour')) { include_once './Services/Booking/classes/class.ilBookingEntry.php'; foreach (ilBookingEntry::lookupManagedBookingsForObject($this->getParentObject()->object->getId(), $GLOBALS['ilUser']->getId()) as $buser => $booking) { if (isset($a_user_data[$buser])) { $a_user_data[$buser]['consultation_hour'] = $booking[0]['dt']; $a_user_data[$buser]['consultation_hour_end'] = $booking[0]['dtend']; $a_user_data[$buser]['consultation_hours'] = $booking; } } } return $this->setData($a_user_data); }
/** * @return ilParticipants for course or group */ public function getParticipantsObject() { global $tree, $ilErr; $grp_ref_id = $tree->checkForParentType($this->object->getRefId(), 'grp'); $crs_ref_id = $tree->checkForParentType($this->object->getRefId(), 'crs'); if ($this->isParentObjectCrsOrGrp() == false) { $ilErr->raiseError($this->lng->txt('msg_no_perm_read'), $ilErr->MESSAGE); } /** * @var $oParticipants ilParticipants */ $oParticipants = null; if ($grp_ref_id > 0) { $parent_obj = ilObjectFactory::getInstanceByRefId($grp_ref_id); include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $oParticipants = ilGroupParticipants::_getInstanceByObjId($parent_obj->getId()); return $oParticipants; } else { if ($crs_ref_id > 0) { $parent_obj = ilObjectFactory::getInstanceByRefId($crs_ref_id); include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $oParticipants = ilCourseParticipants::_getInstanceByObjId($parent_obj->getId()); return $oParticipants; } } return $oParticipants; }
/** * Get course status body * @param int $a_usr_id * @return string */ protected function createGroupStatus($a_usr_id) { $part = ilGroupParticipants::_getInstanceByObjId($this->getObjId()); $body = $this->getLanguageText('grp_new_status') . "\n"; $body .= $this->getLanguageText('role') . ': '; if ($part->isAdmin($a_usr_id)) { $body .= $this->getLanguageText('il_grp_admin') . "\n"; } else { $body .= $this->getLanguageText('il_grp_member') . "\n"; } if ($part->isAdmin($a_usr_id)) { $body .= $this->getLanguageText('grp_notification') . ': '; if ($part->isNotificationEnabled($a_usr_id)) { $body .= $this->getLanguageText('grp_notify_on') . "\n"; } else { $body .= $this->getLanguageText('grp_notify_off') . "\n"; } } return $body; }
/** * @param integer $ref_id ref_id of ilias ac-object * @param integer $sco_id * @param array $member_ids */ public function addCrsGrpMembers($ref_id, $sco_id, $member_ids = null) { global $tree; $parent_crs_ref = $tree->checkForParentType($ref_id, 'crs'); $parent_grp_ref = $tree->checkForParentType($ref_id, 'grp'); $type = null; $obj_id = 0; if ($parent_crs_ref && empty($parent_grp_ref)) { $obj_id = ilObject::_lookupObjectId($parent_crs_ref); include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $oParticipants = ilCourseParticipants::_getInstanceByObjId($obj_id); $type = 'crs'; } else { if ($parent_grp_ref) { $obj_id = ilObject::_lookupObjectId($parent_grp_ref); include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $oParticipants = ilGroupParticipants::_getInstanceByObjId($obj_id); $type = 'grp'; } } if ($type == 'crs' || $type == 'grp') { $role_map = ilAdobeConnectServer::getRoleMap(); $owner_id = ilObject::_lookupOwner(ilObject::_lookupObjectId($ref_id)); /** @var $oParticipants ilGroupParticipants | ilCourseParticipants */ $admins = $oParticipants->getAdmins(); $tutors = $oParticipants->getTutors(); $members = $oParticipants->getMembers(); if (is_array($member_ids) && count($member_ids) > 0) { $all_participants = $member_ids; $admins = array_uintersect($member_ids, $admins, 'strcmp'); $tutors = array_uintersect($member_ids, $tutors, 'strcmp'); $members = array_uintersect($member_ids, $members, 'strcmp'); } else { $all_participants = array_unique(array_merge($admins, $tutors, $members)); } $this->pluginObj->includeClass('class.ilAdobeConnectRoles.php'); $xavcRoles = new ilAdobeConnectRoles($ref_id); if (ilAdobeConnectServer::getSetting('user_assignment_mode') != ilAdobeConnectServer::ASSIGN_USER_SWITCH) { foreach ($all_participants as $user_id) { $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php'); //check if there is an adobe connect account at the ac-server $ilAdobeConnectUser = new ilAdobeConnectUserUtil($user_id); $ilAdobeConnectUser->ensureAccountExistance(); // add to desktop if (ilAdobeConnectServer::getSetting('add_to_desktop') == 1) { ilObjUser::_addDesktopItem($user_id, $ref_id, 'xavc'); } } } // receive breeze session $session = self::getSession(); $this->pluginObj->includeClass('class.ilXAVCMembers.php'); if ($session != NULL && $this->xmlApi->login($this->adminLogin, $this->adminPass, $session)) { foreach ($admins as $user_id) { $xavcRoles->addAdministratorRole($user_id); $is_member = ilXAVCMembers::_isMember($user_id, $ref_id); // local member table $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id); $status = $role_map[$type . '_admin']; $xavcMemberObj->setStatus($status); $xavcMemberObj->setScoId($sco_id); if ($is_member) { $xavcMemberObj->updateXAVCMember(); } else { $xavcMemberObj->insertXAVCMember(); } $xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id); if (!empty($xavc_login)) { $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status); } } foreach ($tutors as $user_id) { if (($xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id)) != $this->adminLogin && $user_id != $owner_id) { $xavcRoles->addAdministratorRole($user_id); $is_member = ilXAVCMembers::_isMember($user_id, $ref_id); // local member table $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id); $status = $role_map[$type . '_tutor']; $xavcMemberObj->setStatus($status); $xavcMemberObj->setScoId($sco_id); if ($is_member) { $xavcMemberObj->updateXAVCMember(); } else { $xavcMemberObj->insertXAVCMember(); } if (!empty($xavc_login)) { $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status); } } } foreach ($members as $user_id) { if (($xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id)) != $this->adminLogin && $user_id != $owner_id) { $xavcRoles->addMemberRole($user_id); $is_member = ilXAVCMembers::_isMember($user_id, $ref_id); // local member table $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id); $status = $role_map[$type . '_member']; $xavcMemberObj->setStatus($status); $xavcMemberObj->setScoId($sco_id); if ($is_member) { $xavcMemberObj->updateXAVCMember(); } else { $xavcMemberObj->insertXAVCMember(); } if (!empty($xavc_login)) { $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status); } } } $xavcRoles->addAdministratorRole($owner_id); // local member table $xavcMemberObj = new ilXAVCMembers($ref_id, $owner_id); $status = $role_map[$type . '_owner']; $xavcMemberObj->setStatus($status); $xavcMemberObj->setScoId($sco_id); $is_member = ilXAVCMembers::_isMember($owner_id, $ref_id); if ($is_member) { $xavcMemberObj->updateXAVCMember(); } else { $xavcMemberObj->insertXAVCMember(); } $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($owner_id), $session, $status); } } }
/** * Get participant ids for given object * * @param int $a_ref_id * @return array */ public static function getParticipantsForObject($a_ref_id) { global $tree; $obj_id = ilObject::_lookupObjectId($a_ref_id); $obj_type = ilObject::_lookupType($obj_id); // try to get participants from (parent) course/group switch ($obj_type) { case "crs": include_once "Modules/Course/classes/class.ilCourseParticipants.php"; $member_obj = ilCourseParticipants::_getInstanceByObjId($obj_id); return $member_obj->getMembers(); case "grp": include_once "Modules/Group/classes/class.ilGroupParticipants.php"; $member_obj = ilGroupParticipants::_getInstanceByObjId($obj_id); return $member_obj->getMembers(); default: // walk path to find course or group object and use members of that object $path = $tree->getPathId($a_ref_id); array_pop($path); foreach (array_reverse($path) as $path_ref_id) { $type = ilObject::_lookupType($path_ref_id, true); if ($type == "crs" || $type == "grp") { return self::getParticipantsForObject($path_ref_id); } } break; } $a_users = null; // no participants possible: use tracking/object data where possible switch ($obj_type) { case "sahs": include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; $subtype = ilObjSAHSLearningModule::_lookupSubType($obj_id); if ($subtype == "scorm2004") { // based on cmi_node/cp_node, used for scorm tracking data views include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php"; $mod = new ilObjSCORM2004LearningModule($obj_id, false); $all = $mod->getTrackedUsers(""); if ($all) { $a_users = array(); foreach ($all as $item) { $a_users[] = $item["user_id"]; } } } else { include_once "./Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php"; $a_users = ilObjSCORMTracking::_getTrackedUsers($obj_id); } break; case "exc": include_once "./Modules/Exercise/classes/class.ilExerciseMembers.php"; include_once "./Modules/Exercise/classes/class.ilObjExercise.php"; $exc = new ilObjExercise($obj_id, false); $members = new ilExerciseMembers($exc); $a_users = $members->getMembers(); break; case "tst": include_once "./Services/Tracking/classes/class.ilLPStatusTestFinished.php"; $a_users = ilLPStatusTestFinished::getParticipants($obj_id); break; default: // no sensible data: return null break; } return $a_users; }
/** * check access for an object * * @param ilTree $a_tree * @param integer $a_user_id * @param string $a_permission * @param string $a_cmd * @param int $a_node_id * @param string $a_type (optional) * @return bool */ public function checkAccessOfUser(ilTree $a_tree, $a_user_id, $a_permission, $a_cmd, $a_node_id, $a_type = "") { global $rbacreview, $ilUser; // :TODO: create permission for parent node with type ?! // tree root is read-only if ($a_permission == "write") { if ($a_tree->readRootId() == $a_node_id) { return false; } } // node owner has all rights if ($a_tree->lookupOwner($a_node_id) == $a_user_id) { return true; } // other users can only read if ($a_permission == "read" || $a_permission == "visible") { // get all objects with explicit permission $objects = $this->getPermissions($a_node_id); if ($objects) { // check if given user is member of object or has role foreach ($objects as $obj_id) { switch ($obj_id) { case ilWorkspaceAccessGUI::PERMISSION_ALL: return true; case ilWorkspaceAccessGUI::PERMISSION_ALL_PASSWORD: // check against input kept in session if (self::getSharedNodePassword($a_node_id) == self::getSharedSessionPassword($a_node_id) || $a_permission == "visible") { return true; } break; case ilWorkspaceAccessGUI::PERMISSION_REGISTERED: if ($ilUser->getId() != ANONYMOUS_USER_ID) { return true; } break; default: switch (ilObject::_lookupType($obj_id)) { case "grp": // member of group? if (ilGroupParticipants::_getInstanceByObjId($obj_id)->isAssigned($a_user_id)) { return true; } break; case "crs": // member of course? if (ilCourseParticipants::_getInstanceByObjId($obj_id)->isAssigned($a_user_id)) { return true; } break; case "role": // has role? if ($rbacreview->isAssigned($a_user_id, $obj_id)) { return true; } break; case "usr": // direct assignment if ($a_user_id == $obj_id) { return true; } break; } break; } } } } return false; }
/** * Get members for object * @param int $a_obj_id * @return array */ protected static function getMembers($a_obj_id) { global $ilObjDataCache, $tree; switch ($ilObjDataCache->lookupType($a_obj_id)) { case 'crs': include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $member_obj = ilCourseParticipants::_getInstanceByObjId($a_obj_id); return $member_obj->getMembers(); case 'grp': include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $member_obj = ilGroupParticipants::_getInstanceByObjId($a_obj_id); return $member_obj->getMembers(); case 'fold': $folder_ref_ids = ilObject::_getAllReferences($a_obj_id); $folder_ref_id = current($folder_ref_ids); if ($crs_id = $tree->checkForParentType($folder_ref_id, 'crs')) { include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $member_obj = ilCourseParticipants::_getInstanceByObjId(ilObject::_lookupObjId($crs_id)); return $member_obj->getMembers(); } break; } return array(); }
public function showMembersObject() { /** * @var $tree ilTree * @var $tpl ilTemplate * @var $ilTabs ilTabsGUI * @var $ilAccess ilAccessHandler * @var $ilErr ilErr */ global $tree, $tpl, $ilTabs, $ilAccess, $ilErr; if (!$ilAccess->checkAccess('write', '', $this->ref_id)) { $ilErr->raiseError($this->lng->txt('msg_no_perm_read'), $ilErr->MESSAGE); } $tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.forums_members_list.html', 'Modules/Forum'); $ilTabs->setTabActive('settings'); $this->settingsTabs(); // instantiate the property form if (!$this->initNotificationSettingsForm()) { // if the form was just created set the values fetched from database $this->notificationSettingsForm->setValuesByArray(array('notification_type' => $this->objProperties->getNotificationType(), 'adm_force' => (bool) $this->objProperties->isAdminForceNoti(), 'usr_toggle' => (bool) $this->objProperties->isUserToggleNoti())); } // set form html into template $tpl->setVariable('NOTIFICATIONS_SETTINGS_FORM', $this->notificationSettingsForm->getHTML()); include_once 'Modules/Forum/classes/class.ilForumNotification.php'; include_once 'Modules/Forum/classes/class.ilObjForum.php'; $frm_noti = new ilForumNotification($this->object->getRefId()); // check if there a parent-node is a grp or crs $grp_ref_id = $tree->checkForParentType($this->object->getRefId(), 'grp'); $crs_ref_id = $tree->checkForParentType($this->object->getRefId(), 'crs'); if ($grp_ref_id == 0 && $crs_ref_id == 0) { $ilErr->raiseError($this->lng->txt('msg_no_perm_read'), $ilErr->MESSAGE); } /** * @var $oParticipants ilParticipants */ $oParticipants = null; if ($grp_ref_id > 0) { $parent_obj = ilObjectFactory::getInstanceByRefId($grp_ref_id); include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $oParticipants = ilGroupParticipants::_getInstanceByObjId($parent_obj->getId()); } else { if ($crs_ref_id > 0) { $parent_obj = ilObjectFactory::getInstanceByRefId($crs_ref_id); include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $oParticipants = ilCourseParticipants::_getInstanceByObjId($parent_obj->getId()); } } $moderator_ids = $frm_noti->_getModerators($this->object->getRefId()); $admin_ids = $oParticipants->getAdmins(); $member_ids = $oParticipants->getMembers(); $tutor_ids = $oParticipants->getTutors(); $moderators = array(); $admins = array(); $members = array(); $tutors = array(); $all_forum_users = array_merge($moderator_ids, $admin_ids, $member_ids, $tutor_ids); $all_forum_users = array_unique($all_forum_users); if ($this->objProperties->getNotificationType() == 'default') { // update forum_notification table include_once 'Modules/Forum/classes/class.ilForumNotification.php'; $forum_noti = new ilForumNotification($this->object->getRefId()); $forum_noti->setAdminForce($this->objProperties->isAdminForceNoti()); $forum_noti->setUserToggle($this->objProperties->isUserToggleNoti()); $forum_noti->setForumId($this->objProperties->getObjId()); if (isset($_POST['notification_type']) && $_POST['notification_type'] == 'default') { // delete all notifications set by admin $forum_noti->deleteNotificationAllUsers(); } } else { if ($this->objProperties->getNotificationType() == 'per_user') { $counter = 0; foreach ($moderator_ids as $user_id) { $frm_noti->setUserId($user_id); #$admin_force_noti = $frm_noti->isAdminForceNotification(); $user_toggle_noti = $frm_noti->isUserToggleNotification(); $icon_ok = $this->getIcon(!$user_toggle_noti); $moderators[$counter]['user_id'] = ilUtil::formCheckbox(0, 'user_id[]', $user_id); $moderators[$counter]['login'] = ilObjUser::_lookupLogin($user_id); $name = ilObjUser::_lookupName($user_id); $moderators[$counter]['firstname'] = $name['firstname']; $moderators[$counter]['lastname'] = $name['lastname']; $moderators[$counter]['user_toggle_noti'] = $icon_ok; $counter++; } $counter = 0; foreach ($admin_ids as $user_id) { $frm_noti->setUserId($user_id); #$admin_force_noti = $frm_noti->isAdminForceNotification(); $user_toggle_noti = $frm_noti->isUserToggleNotification(); $icon_ok = $this->getIcon(!$user_toggle_noti); $admins[$counter]['user_id'] = ilUtil::formCheckbox(0, 'user_id[]', $user_id); $admins[$counter]['login'] = ilObjUser::_lookupLogin($user_id); $name = ilObjUser::_lookupName($user_id); $admins[$counter]['firstname'] = $name['firstname']; $admins[$counter]['lastname'] = $name['lastname']; $admins[$counter]['user_toggle_noti'] = $icon_ok; $counter++; } $counter = 0; foreach ($member_ids as $user_id) { $frm_noti->setUserId($user_id); #$admin_force_noti = $frm_noti->isAdminForceNotification(); $user_toggle_noti = $frm_noti->isUserToggleNotification(); $icon_ok = $this->getIcon(!$user_toggle_noti); $members[$counter]['user_id'] = ilUtil::formCheckbox(0, 'user_id[]', $user_id); $members[$counter]['login'] = ilObjUser::_lookupLogin($user_id); $name = ilObjUser::_lookupName($user_id); $members[$counter]['firstname'] = $name['firstname']; $members[$counter]['lastname'] = $name['lastname']; $members[$counter]['user_toggle_noti'] = $icon_ok; $counter++; } $counter = 0; foreach ($tutor_ids as $user_id) { $frm_noti->setUserId($user_id); #$admin_force_noti = $frm_noti->isAdminForceNotification(); $user_toggle_noti = $frm_noti->isUserToggleNotification(); $icon_ok = $this->getIcon(!$user_toggle_noti); $tutors[$counter]['user_id'] = ilUtil::formCheckbox(0, 'user_id[]', $user_id); $tutors[$counter]['login'] = ilObjUser::_lookupLogin($user_id); $name = ilObjUser::_lookupName($user_id); $tutors[$counter]['firstname'] = $name['firstname']; $tutors[$counter]['lastname'] = $name['lastname']; $tutors[$counter]['user_toggle_noti'] = $icon_ok; $counter++; } $this->__showMembersTable($moderators, $admins, $members, $tutors); } else { $frm_noti = new ilForumNotification($this->object->getRefId()); $all_notis = $frm_noti->read(); foreach ($all_forum_users as $user_id) { $frm_noti->setUserId($user_id); $frm_noti->setAdminForce(1); $frm_noti->setUserToggle($this->objProperties->isUserToggleNoti()); if (array_key_exists($user_id, $all_notis)) { $frm_noti->update(); } else { if ($frm_noti->existsNotification() == false && !in_array($user_id, $moderator_ids)) { $frm_noti->insertAdminForce(); } } } } } }
public static function checkParentNodeTree($ref_id) { global $tree; $parent_ref_id = $tree->getParentId($ref_id); $parent_obj = ilObjectFactory::getInstanceByRefId($parent_ref_id); if ($parent_obj->getType() == 'crs') { include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $oParticipants = ilCourseParticipants::_getInstanceByObjId($parent_obj->getId()); } else { if ($parent_obj->getType() == 'grp') { include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $oParticipants = ilGroupParticipants::_getInstanceByObjId($parent_obj->getId()); } } $result = array(); if ($parent_obj->getType() == 'crs' || $parent_obj->getType() == 'grp') { $moderator_ids = self::_getModerators($ref_id); $admin_ids = $oParticipants->getAdmins(); $tutor_ids = $oParticipants->getTutors(); $result = array_unique(array_merge($moderator_ids, $admin_ids, $tutor_ids)); } return $result; }
/** * Parse user data * @param array $a_user_data * @return */ public function parse($a_user_data) { include_once './Services/User/classes/class.ilUserQuery.php'; $additional_fields = $this->getSelectedColumns(); unset($additional_fields["firstname"]); unset($additional_fields["lastname"]); unset($additional_fields["last_login"]); unset($additional_fields["access_until"]); switch ($this->type) { case 'admin': $part = ilGroupParticipants::_getInstanceByObjId($this->getParentObject()->object->getId())->getAdmins(); break; case 'member': $part = ilGroupParticipants::_getInstanceByObjId($this->getParentObject()->object->getId())->getMembers(); break; } $udf_ids = $usr_data_fields = $odf_ids = array(); foreach ($additional_fields as $field) { if (substr($field, 0, 3) == 'udf') { $udf_ids[] = substr($field, 4); continue; } if (substr($field, 0, 3) == 'odf') { $odf_ids[] = substr($field, 4); continue; } $usr_data_fields[] = $field; } $usr_data = ilUserQuery::getUserListData('login', 'ASC', 0, 9999, '', '', null, false, false, 0, 0, null, $usr_data_fields, $part); // Custom user data fields if ($udf_ids) { include_once './Services/User/classes/class.ilUserDefinedData.php'; $data = ilUserDefinedData::lookupData($part, $udf_ids); foreach ($data as $usr_id => $fields) { if (!$this->checkAcceptance($usr_id)) { continue; } foreach ($fields as $field_id => $value) { $a_user_data[$usr_id]['udf_' . $field_id] = $value; } } } // Object specific user data fields if ($odf_ids) { include_once './Modules/Course/classes/Export/class.ilCourseUserData.php'; $data = ilCourseUserData::_getValuesByObjId($this->getParentObject()->object->getId()); foreach ($data as $usr_id => $fields) { if (!$this->checkAcceptance($usr_id)) { continue; } foreach ($fields as $field_id => $value) { if ($a_user_data[$usr_id]) { $a_user_data[$usr_id]['odf_' . $field_id] = $value; } } } } foreach ($usr_data['set'] as $user) { // Check acceptance if (!$this->checkAcceptance($user['usr_id'])) { continue; } // DONE: accepted foreach ($usr_data_fields as $field) { $a_user_data[$user['usr_id']][$field] = $user[$field] ? $user[$field] : ''; } } return $this->setData($a_user_data); }
function add() { global $ilErr, $ilObjDataCache, $lng, $ilAccess; if (sizeof($_POST["usrs"])) { if (!$ilAccess->checkAccess("write", "", $_POST["grp_id"])) { ilUtil::sendFailure($lng->txt("permission_denied"), true); $this->show(); return; } include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $members_obj = ilGroupParticipants::_getInstanceByObjId($ilObjDataCache->lookupObjId($_POST["grp_id"])); foreach ($_POST["usrs"] as $new_member) { if (!$members_obj->add($new_member, IL_GRP_MEMBER)) { $ilErr->raiseError("An Error occured while assigning user to group !", $ilErr->MESSAGE); } include_once './Modules/Group/classes/class.ilGroupMembershipMailNotification.php'; $members_obj->sendNotification(ilGroupMembershipMailNotification::TYPE_ADMISSION_MEMBER, $new_member); } ilUtil::sendSuccess($lng->txt("grp_msg_member_assigned")); } $this->show(); }
/** * Init member object * @return */ protected function initMembers() { if ($this->getType() == 'crs') { $this->members = ilCourseParticipants::_getInstanceByObjId($this->getObjId()); } if ($this->getType() == 'grp') { $this->members = ilGroupParticipants::_getInstanceByObjId($this->getObjId()); } return true; }
function isAssignedToGroup($sid, $group_id, $user_id) { $this->initAuth($sid); $this->initIlias(); if (!$this->__checkSession($sid)) { return $this->__raiseError($this->__getMessage(), $this->__getMessageCode()); } if (!is_numeric($group_id)) { return $this->__raiseError('No valid group id given. Please choose an existing id of an ILIAS group', 'Client'); } global $rbacsystem; if (($type = ilObject::_lookupType(ilObject::_lookupObjId($group_id))) != 'grp') { $group_id = end($ref_ids = ilObject::_getAllReferences($group_id)); if (ilObject::_lookupType(ilObject::_lookupObjId($group_id)) != 'grp') { return $this->__raiseError('Invalid group id. Object with id "' . $group_id . '" is not of type "group"', 'Client'); } } if (ilObject::_lookupType($user_id) != 'usr') { return $this->__raiseError('Invalid user id. User with id "' . $user_id . ' does not exist', 'Client'); } if (!($tmp_group = ilObjectFactory::getInstanceByRefId($group_id, false))) { return $this->__raiseError('Cannot create group instance!', 'Server'); } if (!$rbacsystem->checkAccess('read', $group_id)) { return $this->__raiseError('Check access failed. No permission to read group data', 'Server'); } include_once './Modules/Group/classes/class.ilGroupParticipants.php'; $participants = ilGroupParticipants::_getInstanceByObjId(ilObject::_lookupObjId($group_id)); if ($participants->isAdmin($user_id)) { return 1; } if ($participants->isMember($user_id)) { return 2; } return 0; }
function _checkGroupingDependencies(&$container_obj, $a_user_id = null) { global $ilUser, $lng, $tree; include_once './Services/AccessControl/classes/class.ilConditionHandler.php'; $user_id = is_null($a_user_id) ? $ilUser->getId() : $a_user_id; $trigger_ids = array(); foreach (ilConditionHandler::_getConditionsOfTarget($container_obj->getRefId(), $container_obj->getId(), $container_obj->getType()) as $condition) { if ($condition['operator'] == 'not_member') { $trigger_ids[] = $condition['trigger_obj_id']; break; } } if (!count($trigger_ids)) { return true; } $matriculation_message = $assigned_message = ''; self::$assignedObjects = array(); foreach ($trigger_ids as $trigger_id) { foreach (ilConditionHandler::_getConditionsOfTrigger('crsg', $trigger_id) as $condition) { // Handle deleted items if ($tree->isDeleted($condition['target_ref_id'])) { continue; } if ($condition['operator'] == 'not_member') { switch ($condition['value']) { case 'matriculation': if (!strlen(ilObjUser::lookupMatriculation($user_id))) { if (!$matriculation_message) { $matriculation_message = $lng->txt('crs_grp_matriculation_required'); } } } if ($container_obj->getType() == 'crs') { include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $members = ilCourseParticipants::_getInstanceByObjId($condition['target_obj_id']); if ($members->isGroupingMember($user_id, $condition['value'])) { if (!$assigned_message) { self::$assignedObjects[] = $condition['target_obj_id']; $assigned_message = $lng->txt('crs_grp_already_assigned'); } } } elseif ($container_obj->getType() == 'grp') { include_once 'Modules/Group/classes/class.ilGroupParticipants.php'; $members = ilGroupParticipants::_getInstanceByObjId($condition['target_obj_id']); if ($members->isGroupingMember($user_id, $condition['value'])) { if (!$assigned_message) { self::$assignedObjects[] = $condition['target_obj_id']; $assigned_message = $lng->txt('crs_grp_already_assigned'); } } } else { if (ilObjGroup::_isMember($user_id, $condition['target_ref_id'], $condition['value'])) { if (!$assigned_message) { self::$assignedObjects[] = $condition['target_obj_id']; $assigned_message = $lng->txt('crs_grp_already_assigned'); } } } } } } if ($matriculation_message) { $container_obj->appendMessage($matriculation_message); return false; } elseif ($assigned_message) { $container_obj->appendMessage($assigned_message); return false; } return true; }