Para mapear os usuários cadastrados no Moodle que estão inscritos em algum curso com perfil aluno, certamente a soluções é consultar diretamente o banco de dados do Moodle com comando SQL.
Tabelas
Para fazer esse mapeamento, é necessário fazer a consulta nas seguintes tabelas:
- mdl_user – Tabela de usuário
- mdl_role_assignments – Tabela da matrícula, ou seja, da inscrição do usuário no curso
Comando SQL
SELECT DISTINCT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid WHERE rs.roleid=5
Essa consulta filtra apenas os alunos. O filtro é feito no comando WHERE rs.roleid=5. Por padrão, 5 é o id do perfil do aluno na tabela mdl_role. Caso um aluno estiver inscrito em mais de um curso, o comando DISTINCT elimina a duplicação.
Foi adicionado a parte do código em destaque que exclua todos os administradores.
A primeira consulta não retorna nenhum usuário que não tenha perfil do aluno. A segunda exclui da lista os alunos que tenham também perfil de administrador.
SELECT DISTINCT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid WHERE rs.roleid=5
Essa consulta filtra apenas os alunos. O filtro é feito no comando WHERE rs.roleid=5. Por padrão, 5 é o id do perfil do aluno na tabela mdl_role. Caso um aluno estiver inscrito em mais de um curso, o comando DISTINCT elimina a duplicação.
Se um usuário tiver perfil de aluno em um curso e administrador em outro ele será incluído na lista. Caso você queira excluir esse tipo de usuário, altere o comando SQL para fazer exclusão dos usuários com perfil de aluno e administrador compartilhado. O novo comando ficará assim:
SELECT DISTINCT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid WHERE rs.roleid =5 AND rs.userid NOT IN(SELECT userid FROM mdl_role_assignments WHERE roleid=1)
Foi adicionado a parte do código em destaque que exclua todos os administradores.
A primeira consulta não retorna nenhum usuário que não tenha perfil do aluno. A segunda exclui da lista os alunos que tenham também perfil de administrador.
Olá,
ResponderExcluirqueria saber como faço para permitir que um aluno só possa se matricular a partir da autoinscrição em apenas um curso. Desde já, agradeço!
Alfredo,
ExcluirSe você estiver usando versão 2.x do Moodle, ative o método de autoinscrição no ambiente do curso. No formulário de configuração, defina o limite de usuário no campo Máximo de usuários inscritos