2012-05-14 36 views
8

¿Cómo obtener el contexto/rol del usuario conectado en moodle? Estoy intentando implementar un bloque sensible al contexto. El bloque sugiere los cuestionarios correctos para sus usuarios en función de sus estados de ánimo.Moodle cómo averiguar el rol del usuario conectado

Rol puede ser un maestro, estudiante, asistente de maestro o administrador. Ya encontré las funciones get_context_instance() & has_compatibility(), pero no sé cómo usarlas para este propósito.

+0

roles y contextos son uno de los conceptos más complicados en Moodle, pero la versión corta es un contexto general se aplica a un solo curso, a una sola categoría o a todo el sitio. Se otorga un rol dentro de ese contexto y se le asignan capacidades al usuario dentro de ese contexto. –

Respuesta

3

En moodle los roles se basan en el contexto. Creo que este fragmento de código será útil para usted.

global $ CURSO, $ USUARIO;

$context = get_context_instance(CONTEXT_COURSE,$COURSE->id); 

if (has_capability('moodle/legacy:student', $context, $USER->id, false)) { 
echo "Student"; 
} 

if (has_capability('moodle/legacy:editingteacher', $context, $USER->id, false)) { 
echo "is Teacher<br/>"; 
} 
if (has_capability('moodle/legacy:admin', $context, $USER->id, false)) { 
echo "is ADMIN<br/>"; 
} 

Tenga en cuenta que es perfectamente posible (aunque poco probable) que tienen un sitio Moodle sin que el estudiante defecto y los roles del profesor

+0

Este código es bueno, pero hay un problema. Como no estoy en la vista/curso, supongo que estoy en la página de inicio y quiero averiguar cuál es el papel. esto no funcionará – Ehsan

9
$context = get_context_instance (CONTEXT_SYSTEM); 
$roles = get_user_roles($context, $USER->id, false); 
$role = key($roles); 
$roleid = $roles[$role]->roleid; 

funciona para mí

6

En Moodle 2. x puede usar la función get_user_roles y esto le devolverá la lista de roles asignados a un usuario en particular en el contexto del curso o sitio o módulo.

$context = get_context_instance(CONTEXT_COURSE, $courseid, true); 
$roles = get_user_roles($context, $USER->id, true); 

También puede obtener los roles en el contexto del módulo.

$context = get_context_instance(CONTEXT_MODULE, $cm->id, true); 
$roles = get_user_roles($context, $USER->id, true); 
1

Puede comprobar qué funciones de un usuario tiene en la siguiente forma:

if (user_has_role_assignment($user1->id, $roleid)) 
    echo "User is a teacher in some course"; 

La Identificación del papel de un maestro es generalmente de 3, y el identificador de papel de un estudiante es por lo general 5, pero Puede probar esto mirando la tabla en Administración del sitio-> Usuarios-> Permisos-> Definir roles

Tenga en cuenta que un usuario puede tener varias funciones. La función user_has_role_assignment parece probar los roles que tiene en todo el sistema.

8

usuario de cheques es un administrador o no

$admins = get_admins(); 
$isadmin = false; 
foreach($admins as $admin) { 
    if ($USER->id == $admin->id) { 
     $isadmin = true; 
     break; 
    } 
} 

utilizar el resultado para funciones

if ($isadmin) { 
    echo "you are an admin";  
} else { 
    echo "you are not an amidn"; 
} 
Cuestiones relacionadas