Quais são os níveis de contexto no Moodle?

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