Verificar se um usuário está inscrito no curso do Moodle com comando SQL

Verificar se um usuário está inscrito no curso do Moodle com comando SQL

por Lino Vaz Moniz -
Número de respostas: 0

Para consultar na base de dados do Moodle, se um determino usuário está inscrito e coma matrícula ativa,  execute o seguinte comando SQL:

SELECT COUNT(DISTINCT ue.id) AS countrecord FROM mdl_role_assignments rs INNER JOIN mdl_context e ON rs.contextid=e.id INNER JOIN mdl_enrol en ON e.instanceid=en.courseid INNER JOIN mdl_user_enrolments ue ON en.id=ue.enrolid WHERE e.contextlevel=50 AND rs.userid=ue.userid AND rs.userid=? AND en.courseid =? AND ue.status = 0 AND en.status = 0 AND (ue.timestart IS NULL OR ue.timestart = 0 OR ue.timestart <= ? ) AND (ue.timeend IS NULL OR ue.timeend = 0 OR ue.timeend >= ? )

Passe o parâmetro id do usuário em rs.userid=?

Passe o parâmetro id do curso em em en.courseid =?

Passe o parâmetro data atual em formato timestamp em ue.timestart <= ? e ue.timeend >= ?

Esse comando é recomendado usar para checar se o usuário está inscrito na versão 2.x ou superior do Moodle para efeito de cadastro de matrícula. Esse comando foi testado no Moodle 3.5. É compatível com a versão 2.x e 3.x.

O comando verifica se a inscrição existe e está ativa, com base no seguintes critérios:


a) Usuário está inscrito na tabela de controle de perfil na tabela mdl_role_assignments

b) Usuário está inscrito em um método de inscrição na tabela mdl_user_enrolments

c) Método de inscrição do usuário está ativa. Isso é feito pelo filtro en.status = 0

d) Inscrição do usuário não está suspenso. Isso é feito pelo filtro ue.status = 0

e) Período de inscrição é uma data vigente, ou seja, a data de início não é uma data futura e a data de expiração não é uma data passada.