sexta-feira, 7 de janeiro de 2011

Mapear Alunos Inscritos nos Cursos do Moodle com Comando SQL

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.



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. 

2 comentários:

  1. Olá,
    queria 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!

    ResponderExcluir
    Respostas
    1. Alfredo,
      Se 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

      Excluir