/** * Parse object data * @return * @param object $a_ids */ public function parseObjectIds($a_ids) { foreach ($a_ids as $object_id) { $row = array(); $type = ilObject::_lookupType($object_id); $row['title'] = ilObject::_lookupTitle($object_id); $row['desc'] = ilObject::_lookupDescription($object_id); $row['id'] = $object_id; switch ($type) { case 'crs': case 'grp': include_once './Services/Membership/classes/class.ilParticipants.php'; if (ilParticipants::hasParticipantListAccess($object_id)) { $row['member'] = count(ilParticipants::getInstanceByObjId($object_id)->getParticipants()); } else { $row['member'] = 0; } break; case 'role': global $rbacreview; include_once './Services/User/classes/class.ilUserFilter.php'; $row['member'] = count(ilUserFilter::getInstance()->filter($rbacreview->assignedUsers($object_id))); break; } $data[] = $row; } $this->setData($data ? $data : array()); }
/** * List users of course/group/roles * @return */ protected function listUsers() { // get parameter is used e.g. in exercises to provide // "add members of course" link if ($_GET["list_obj"] != "" && !is_array($_POST['obj'])) { $_POST['obj'][0] = $_GET["list_obj"]; } if (!is_array($_POST['obj']) or !$_POST['obj']) { ilUtil::sendFailure($this->lng->txt('select_one')); $this->showSearchResults(); return false; } $_SESSION['rep_search']['objs'] = $_POST['obj']; // Get all members $members = array(); foreach ($_POST['obj'] as $obj_id) { $type = ilObject::_lookupType($obj_id); switch ($type) { case 'crs': case 'grp': include_once './Services/Membership/classes/class.ilParticipants.php'; if (ilParticipants::hasParticipantListAccess($obj_id)) { $members = array_merge((array) $members, ilParticipants::getInstanceByObjId($obj_id)->getParticipants()); } break; case 'role': global $rbacreview; include_once './Services/User/classes/class.ilUserFilter.php'; $members = array_merge($members, ilUserFilter::getInstance()->filter($rbacreview->assignedUsers($obj_id))); break; } } $members = array_unique((array) $members); $this->__appendToStoredResults($members); $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.rep_search_result.html', 'Services/Search'); $this->addNewSearchButton(); $this->showSearchUserTable($_SESSION['rep_search']['usr'], 'storedUserList'); return true; }
/** * Assign mmissing course/groups to new user accounts * @param ilObjUser $user */ protected static function handleMembership(ilObjUser $user) { $GLOBALS['ilLog']->write(__METHOD__ . ': Handling ECS assignments '); include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php'; if ($user->getAuthMode() != ilECSSetting::lookupAuthMode()) { $GLOBALS['ilLog']->write(__METHOD__ . ': Not user with authmode ' . ilECSSetting::lookupAuthMode()); return TRUE; } include_once './Services/WebServices/ECS/classes/Course/class.ilECSCourseMemberAssignment.php'; $assignment_ids = ilECSCourseMemberAssignment::lookupMissingAssignmentsOfUser($user->getExternalAccount()); foreach ($assignment_ids as $obj_id) { include_once './Services/Membership/classes/class.ilParticipants.php'; $part = ilParticipants::getInstanceByObjId($obj_id); $part->add($user->getId(), IL_CRS_MEMBER); } }
/** * refuse subscribers * * @access public * @return */ public function refuseSubscribersObject() { global $lng; $this->checkPermission('write'); if (!count($_POST['subscribers'])) { ilUtil::sendFailure($this->lng->txt('no_checkbox')); $this->membersObject(); return false; } include_once './Services/Membership/classes/class.ilParticipants.php'; $part = ilParticipants::getInstanceByObjId($this->object->getId()); foreach ($_POST['subscribers'] as $usr_id) { $part->deleteSubscriber($usr_id); include_once './Modules/Session/classes/class.ilSessionMembershipMailNotification.php'; $noti = new ilSessionMembershipMailNotification(); $noti->setRefId($this->object->getRefId()); $noti->setRecipients(array($usr_id)); $noti->setType(ilSessionMembershipMailNotification::TYPE_REFUSED_SUBSCRIPTION_MEMBER); $noti->send(); } ilUtil::sendSuccess($this->lng->txt("sess_msg_applicants_removed")); $this->membersObject(); return true; }
public function findSharedObjects(array $a_filter = null, array $a_crs_ids = null, array $a_grp_ids = null) { global $ilDB, $ilUser; if (!$a_filter["acl_type"]) { $obj_ids = $this->getPossibleSharedTargets(); } else { include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessGUI.php"; switch ($a_filter["acl_type"]) { case "all": $obj_ids = array(ilWorkspaceAccessGUI::PERMISSION_ALL); break; case "password": $obj_ids = array(ilWorkspaceAccessGUI::PERMISSION_ALL_PASSWORD); break; case "registered": $obj_ids = array(ilWorkspaceAccessGUI::PERMISSION_REGISTERED); break; case "course": $obj_ids = $a_crs_ids; break; case "group": $obj_ids = $a_grp_ids; break; case "user": $obj_ids = array($ilUser->getId()); break; } } $res = array(); $sql = "SELECT ref.wsp_id,obj.obj_id,obj.type,obj.title,obj.owner," . "acl.object_id acl_type, acl.tstamp acl_date" . " FROM object_data obj" . " JOIN object_reference_ws ref ON (obj.obj_id = ref.obj_id)" . " JOIN tree_workspace tree ON (tree.child = ref.wsp_id)" . " JOIN acl_ws acl ON (acl.node_id = tree.child)" . " WHERE " . $ilDB->in("acl.object_id", $obj_ids, "", "integer") . " AND obj.owner <> " . $ilDB->quote($ilUser->getId(), "integer"); if ($a_filter["obj_type"]) { $sql .= " AND obj.type = " . $ilDB->quote($a_filter["obj_type"], "text"); } if ($a_filter["title"] && strlen($a_filter["title"]) >= 3) { $sql .= " AND " . $ilDB->like("obj.title", "text", "%" . $a_filter["title"] . "%"); } if ($a_filter["user"] && strlen($a_filter["user"]) >= 3) { $usr_ids = array(); $set = $ilDB->query("SELECT usr_id FROM usr_data" . " WHERE (" . $ilDB->like("login", "text", "%" . $a_filter["user"] . "%") . " " . "OR " . $ilDB->like("firstname", "text", "%" . $a_filter["user"] . "%") . " " . "OR " . $ilDB->like("lastname", "text", "%" . $a_filter["user"] . "%") . " " . "OR " . $ilDB->like("email", "text", "%" . $a_filter["user"] . "%") . ")"); while ($row = $ilDB->fetchAssoc($set)) { $usr_ids[] = $row["usr_id"]; } if (!sizeof($usr_ids)) { return; } $sql .= " AND " . $ilDB->in("obj.owner", $usr_ids, "", "integer"); } if ($a_filter["acl_date"]) { $dt = $a_filter["acl_date"]->get(IL_CAL_DATE); $dt = new ilDateTime($dt . " 00:00:00", IL_CAL_DATETIME); $sql .= " AND acl.tstamp > " . $ilDB->quote($dt->get(IL_CAL_UNIX), "integer"); } if ($a_filter["crsgrp"]) { include_once "Services/Membership/classes/class.ilParticipants.php"; $part = ilParticipants::getInstanceByObjId($a_filter['crsgrp']); $part = $part->getParticipants(); if (!sizeof($part)) { return; } $sql .= " AND " . $ilDB->in("obj.owner", $part, "", "integer"); } // we use the oldest share date $sql .= " ORDER BY acl.tstamp"; $set = $ilDB->query($sql); while ($row = $ilDB->fetchAssoc($set)) { if (!isset($res[$row["wsp_id"]])) { $row["acl_type"] = array($row["acl_type"]); $res[$row["wsp_id"]] = $row; } else { $res[$row["wsp_id"]]["acl_type"][] = $row["acl_type"]; } } return $res; }