Se você está programando para o Moodle, você provavelmente precisará entender o que são os context level.
Definido, a partir do Moodle 1.7, em /moodle/lib/accesslib.php
// context definitions
define(‘CONTEXT_SYSTEM’, 10);
define(‘CONTEXT_USER’, 30);
define(‘CONTEXT_COURSECAT’, 40);
define(‘CONTEXT_COURSE’, 50);
define(‘CONTEXT_MODULE’, 70);
define(‘CONTEXT_BLOCK’, 80);
Por exemplo : na tabela mdl_course_categories temos as categorias de cursos que por sua vez se relaciona com a tabela mdl_context
sendo:
mdl_couse_categories.id = mdl_context.instancedid
onde todas as categorias de cursos encontradas na tabela mdl_context estão com o campo contextlevel=40 (CONTEXT_COURSECAT = contexto de categoria de curso)
Um exemplo de uma consulta que irá retornar todos os estudantes e professores de um curso chamado ‘Matematica’.
roleid = 5 => students e
roleid =3 =>teachers
SELECT c.id AS id, c.fullname, u.username, u.firstname, u.lastname, u.email
FROM mdl_role_assignments ra, mdl_user u, mdl_course c, mdl_context cxt
WHERE ra.userid = u.id
AND ra.contextid = cxt.id
AND cxt.contextlevel =50
AND cxt.instanceid = c.id
AND c.shortname =’Matematica’
AND (roleid =5 OR roleid=3);
Vejam que neste caso : cxt.contextlevel =50 ou seja apenas contexto de CONTEXT_COURSE
Obrigado pelo post, muito bom
me ajudou bastante com a integração do moodle !
Que bom Kevin. Precisando é só falar. Até mais
Boa tarde. Ainda não encontrei um post que defina realmente o que são os contextlevel… para que EXATAMENTE serve a tabela mdl_context. Pode me ajudar ?
Olá Flávio,
Veja essas documentações:
https://docs.moodle.org/dev/Roles_and_modules#Context
http://www.enovation.ie/blog/2012/05/moodle-development-ids-coursemodules-and-contexts/
https://docs.moodle.org/dev/Roles#Context