LMSouq
moodle-core Open

get user role by user id in moodle

PR
Pritesh Mahajan
1 month ago
3 views
Problem Description
I want to get user role from user id. I am using loop in my code where i want to show all user except admin. i used below code but its not working. $context = get_context_instance (CONTEXT_SYSTEM); $roles = get_user_roles($context, $USER->id, false); $role = key($roles); $roleid = $roles[$role]->roleid; Its provide me blank array as like screenshot. Also below my all code. https://prnt.sc/gq8p12 $allUsers = $DB->get_records('user'); $SQL = "SELECT * FROM `".$CFG->prefix."config` WHERE `name` LIKE 'siteadmins'"; $getSiteAdmins = $DB->get_record_sql($SQL); $explodeAdminIds = explode(',', $getSiteAdmins->value); $context = get_context_instance (CONTEXT_SYSTEM); if(!empty($allUsers)) { foreach ($allUsers as $allUser) { if(!in_array($allUser->id, $explodeAdminIds)) { $roles = get_user_roles($context, $allUser->id, false); $role = key($roles); $roleid = $roles[$role]->roleid; echo 'USER ID -- '.$allUser->id.' >>> '; print_r($roles); echo '<br>'; $name = '<a href="' . $CFG->wwwroot . '/user/profile.php?id='.$allUser->id.'&mid=4">'.$allUser->id.'_'.$allUser->firstname.' '.$allUser->lastname.'</a>'; $confirmed = ($allUser->confirmed == 1) ? 'Active' : 'In-active'; $table->data[] = array( $i, $name, 'Team Name', $allUser->email, $allUser->phone1, 'Role', $confirmed, //empty($coachusrarr)?'--':implode(',',$coachusrarr), //empty($tmpleaderarr)?'--':implode(',',$tmpleaderarr), //$coach, ); $i++; } } }

AI-Generated Solution

Powered by LMSouq AI · GPT-4.1-mini

✓ Solution Ready
Analyzing problem and generating solution…
Was this solution helpful?
Back to Knowledge Base