get users list from group_members_selector

Issue #417 resolved
Tran Hieu created an issue

Это код для получения список user c использованием $groupid

Screen Shot 2016-03-14 at 2.04.50 PM.png

**
     * 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)

  1. Log in to comment