Excluir alunos do curso do Moodle com comando SQL
Autor: Badiu | Publicado: 2013-08-12T09:39:00-07:00

Neste post, vamos mostrar como&nbsp; excluir aluno do ambiente de curso no Moodle&nbsp; usando comando SQL.&nbsp; Vamos usar o comando DELETE. Isso é perigoso, uma vez exclui os dados.&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Vamos mostrar como excluir os dados em em lote, ou seja, todos os alunos de um determinado curso. Também vamos mostrar como excluir apenas alguns alunos. &nbsp;&nbsp;&nbsp; O registro da&nbsp; matrícula fica na tabela&nbsp; mdl_role_assignments. O contexto da matrícula fica na tabela&nbsp;&nbsp; mdl_context. Sendo assim, o comando da exclusão deve ser:SQL&nbsp; para excluir todos os alunos de um cursoDELETE FROM mdl_role_assignments WHERE roleid=5 AND contextid IN (SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=?)SQL&nbsp; para excluir alguns alunos de um cursoDELETE FROM mdl_role_assignments WHERE roleid=5 AND contextid IN (SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=?)&nbsp; AND userid IN(?,?,?) A única diferença do comando anterior é userid IN(?,?,?) que delimita quais alunos devem ser excluídos




 
 
 





 

 
 

  
Parâmetros

  
Descrição

 

  
 roleid=5 
   

  
Define filtro de exclusão apenas para alunos. 
   Veja na tabela mdl_role
   valor de parâmetro para outros perfis.  Por padrão, 5 é o
   aluno. Confirme se de fato você está usando 5 para alunos e não
   alterou o padrão. Já que está excluindo, todo o cuidado é
   pouco.

 

  
contextlevel=50

  
Especifica que se trata do contexto do curso.
   Na tabela de domínio, 50 se refere ao contexto do curso. Dê uma
   olhada nesse link:http://docs.moodle.org/dev/Roles_and_modules#Context

 

  
instanceid=?

  
Aqui passa o id do curso, o qual pretende
   excluir os alunos. Esse valor fica na tabela mdl_course. 
   

 

  
userid
   IN(?,?,?)

  
Especifique quais alunos devem ser excluídos.
   O id dos alunos deve ser extraído da tabela mdl_user

 




Caso estiver usando a versão 2.x do Moodle, é necessário também apagar os dados da tabela mdl_user_enrolments. Esta tabela foi criada na versão 2 do Moodle. Contêm informações método de inscrição e data de inscrição. O campo enrolid faz ligação com a tabela mdl_enrol. É a chave estrangeira do campo id da tabela&nbsp; mdl_enrol que faz registros dos plugins de inscrição habilitados no curso. Sql para excluir informações de dados da inscrição de todos os alunos de um curso (apenas para versão 2.x)&nbsp;DELETE FROM mdl_user_enrolments WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE&nbsp; courseid=?)Sql para excluir informações de dados da inscrição de alguns os alunos de um curso (apenas para versão 2.x)DELETE FROM mdl_user_enrolments WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE&nbsp; courseid=?) AND userid IN(?,?,?) A única diferença do comando anterior é userid IN(?,?,?) que delimita quais alunos devem ser excluídosNestes dois últimos comando, ficou claro que deve passar o id do curso no parâmetro&nbsp; courseid=?. O valor desse parâmetro deve ser extraído da tabela mdl_course. Para o parâmetro userid IN(?,?,?) vale a mesma explicação apontada na tabela acima.&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Os comandos listados aqui apenas retira o aluno do curso. Cancela a inscrição. Não excluir o histórico&nbsp; do aluno. Caso o aluno venha a ser reinscrito, ele continuará o curso do ponto onde havia parado, ou seja, reaproveita todo o histórico. &nbsp;&nbsp;&nbsp; Bem, isso é tudo que você precisa saber para excluir alunos de um curso. Agora tome cuidado para não fazer nada errado. Teste primeiro no seu Moodle de desenvolvimento antes de levar para produção. Sempre recomendo ter um clone de produção no ambiente de desenvolvimento. Isso evita prejuízo e falha humanas. Lembre, estamos usando comando DELETE. Você não quer que a equipe pedagógica fique no seu cangote reclamando que o aluno simplesmente sumiu!