terça-feira, 25 de janeiro de 2011

Extrair id da Matrícula do Aluno no Curso do Moodle com Comando SQL

    No Moodle a matrícula dos alunos, tutores, admin e.t.c  é feita na tabela mdl_role_assignments. Cada registro nessa tabela corresponde ao vínculo de um usuário no contexto do sistema, categoria do curso e curso. O id gerado nessa tabela é uma chave única de identificação da matrícula no sistema Moodle.
  
 Para extrair o id da matrícula de um determinado aluno, execute o seguinte comando     SQL:

SELECT rs.id, u.firstname,u.lastname FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=? AND rs.userid=?

Passe o parâmetro id do curso em e.instanceid=? e id do usuário em rs.userid=?. rs.roleid=5 define que será feito filtro por aluno. Caso pretenda extrair pelo perfil do tutor, altere o valor para 3.

Essa consulta extrai os seguintes campos:
  • rs.id - Id da matrícula gerado na tabela mdl_role_assignments
  • u.firstname - Nome do usuário na tabela mdl_user
  • u.lastname - Sobrenome usuário na tabela mdl_user

Para extrair uma lista com  id da matrícula de todos os alunos em um determinado curso, execute o seguinte comando     SQL:

SELECT rs.id, u.firstname,u.lastname FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=?

Passe o parâmetro id do curso em e.instanceid=?. rs.roleid=5 define que será feito filtro por aluno. Caso pretenda extrair lista de tutor, altere o valor para 3.

A única diferença desse comando com a anterior é que o filtro  do usuário rs.userid=? foi retirado do comando WHERE. Os campos retornados são os mesmos da consulta anterior.

Até então já deve ter ficado claro que o  id gerado na tabela mdl_role_assignments é a chave única de inscrição  de cada usuário. Essa chave não é usada como chave estrangeira na tabela de log ou atividades que o aluno faz no curso. Isso porque caso a matrícula for cancelada, essa chave será excluída, as atividades e os  logs gerados não serão apagados em cascata. Os registros do aluno no curso continuam mesmo que a inscrição tenha sido cancelada. 

No sistema de log e atividades feitas pelos participantes do curso, a chave de identificação é a combinação do id do usuário gerado na tabela mdl_user e id do curso gerado na tabela mdl_course.
    Entender como é a estrutura da tabela da matrícula, ou seja, da inscrição dos usuários no curso do Moodle é fundamental para programar o Moodle ou efetuar integração do Moodle com um sistema acadêmico.

2 comentários:

  1. Olá Badiu, bom dia.
    Tenho uma dúvida: no moodle 2.x as tabelas de matrículas se dividem em 2: a mdl_role_assignments e mdl_user_enrolments. Para eu listar os alunos matriculados em um determinado curso, preciso ir nas duas tabelas, ou basta eu ir na tablea mdl_role_assignments conforme colocou no post?
    Obrigado.

    ResponderExcluir
    Respostas
    1. Fernanda,
      Na versão 2.x você pode usar o mesmo código sql apresentado neste post para extrair a matrícula usando a tabela tabela mdl_role_assignments. Já a tabela mdl_user_enrolments pode ser usado se precisar extrair o período da inscrição dos alunos.

      Excluir