- changed status to resolved
get users list from group_members_selector
Issue #417
resolved
Это код для получения список user c использованием $groupid
**
* Finds users to display in this control.
* @param string $search
* @return array
*/
public function find_users($search) {
list($wherecondition, $params) = $this->search_sql($search, 'u');
list($sort, $sortparams) = users_order_by_sql('u', $search, $this->accesscontext);
$roles = groups_get_members_by_role($this->groupid, $this->courseid,
$this->required_fields_sql('u') . ', gm.component',
$sort, $wherecondition, array_merge($params, $sortparams));
return $this->convert_array_format($roles, $search);
}
и это функция groups_get_members_by_role
function groups_get_members_by_role($groupid, $courseid, $fields='u.*',
$sort=null, $extrawheretest='', $whereorsortparams=array()) {
global $DB;
// Retrieve information about all users and their roles on the course or
// parent ('related') contexts
$context = context_course::instance($courseid);
// We are looking for all users with this role assigned in this context or higher.
list($relatedctxsql, $relatedctxparams) = $DB->get_in_or_equal($context->get_parent_context_ids(true), SQL_PARAMS_NAMED, 'relatedctx');
if ($extrawheretest) {
$extrawheretest = ' AND ' . $extrawheretest;
}
if (is_null($sort)) {
list($sort, $sortparams) = users_order_by_sql('u');
$whereorsortparams = array_merge($whereorsortparams, $sortparams);
}
$sql = "SELECT r.id AS roleid, u.id AS userid, $fields
FROM {groups_members} gm
JOIN {user} u ON u.id = gm.userid
LEFT JOIN {role_assignments} ra ON (ra.userid = u.id AND ra.contextid $relatedctxsql)
LEFT JOIN {role} r ON r.id = ra.roleid
WHERE gm.groupid=:mgroupid
".$extrawheretest."
ORDER BY r.sortorder, $sort";
$whereorsortparams = array_merge($whereorsortparams, $relatedctxparams, array('mgroupid' => $groupid));
$rs = $DB->get_recordset_sql($sql, $whereorsortparams);
return groups_calculate_role_people($rs, $context);
}
Я хочу использовать msessionid для получения список студентов взамен mgroupid. Но не получается.
$whereorsortparams = array_merge($whereorsortparams, $relatedctxparams, array('msessionid' => $msessionid));
Comments (1)
-
reporter - Log in to comment