Neste post, vamos mostrar como excluir aluno do ambiente de curso no Moodle usando comando SQL. Vamos usar o comando DELETE. Isso e perigoso, uma vez exclui os dados. Vamos mostrar como excluir os dados em em lote, ou seja, todos os alunos de um determinado curso. Tambem vamos mostrar como excluir apenas alguns alunos. O registro da matricula fica na tabela mdl_role_assignments. O contexto da matricula fica na tabela mdl_context. Sendo assim, o comando da exclusao deve ser:SQL 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 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=?) AND userid IN(?,?,?) A unica diferenca do comando anterior e userid IN(?,?,?) que delimita quais alunos devem ser excluidos Parametros Descricao roleid=5 Define filtro de exclusao apenas para alunos. Veja na tabela mdl_role valor de parametro para outros perfis. Por padrao, 5 e o aluno. Confirme se de fato voce esta usando 5 para alunos e nao alterou o padrao. Ja que esta excluindo, todo o cuidado e pouco. contextlevel=50 Especifica que se trata do contexto do curso. Na tabela de dominio, 50 se refere ao contexto do curso. De 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 excluidos. O id dos alunos deve ser extraido da tabela mdl_user Caso estiver usando a versao 2.x do Moodle, e necessario tambem apagar os dados da tabela mdl_user_enrolments. Esta tabela foi criada na versao 2 do Moodle. Contem informacoes metodo de inscricao e data de inscricao. O campo enrolid faz ligacao com a tabela mdl_enrol. E a chave estrangeira do campo id da tabela mdl_enrol que faz registros dos plugins de inscricao habilitados no curso. Sql para excluir informacoes de dados da inscricao de todos os alunos de um curso (apenas para versao 2.x) DELETE FROM mdl_user_enrolments WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE courseid=?)Sql para excluir informacoes de dados da inscricao de alguns os alunos de um curso (apenas para versao 2.x)DELETE FROM mdl_user_enrolments WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE courseid=?) AND userid IN(?,?,?) A unica diferenca do comando anterior e userid IN(?,?,?) que delimita quais alunos devem ser excluidosNestes dois ultimos comando, ficou claro que deve passar o id do curso no parametro courseid=?. O valor desse parametro deve ser extraido da tabela mdl_course. Para o parametro userid IN(?,?,?) vale a mesma explicacao apontada na tabela acima. Os comandos listados aqui apenas retira o aluno do curso. Cancela a inscricao. Nao excluir o historico do aluno. Caso o aluno venha a ser reinscrito, ele continuara o curso do ponto onde havia parado, ou seja, reaproveita todo o historico. Bem, isso e tudo que voce precisa saber para excluir alunos de um curso. Agora tome cuidado para nao fazer nada errado. Teste primeiro no seu Moodle de desenvolvimento antes de levar para producao. Sempre