Corrigir data de inscrição no Moodle com comando SQL
Autor: Badiu | Publicado: 2013-08-26T18:32:00-07:00

Neste post vamos mostrar como atualizar o cadastro de matrícula do aluno para inserir a data de inscrição caso estiver faltando. &nbsp;&nbsp;&nbsp; A data de inscrição do aluno no curso do Moodle é de extrema importância para gerar relatórios gerenciais. Ainda mais nos cursos em que a inscrição é aberta, ou seja, pode ocorrer a qualquer momento.&nbsp;&nbsp;&nbsp; &nbsp;Para computar evasão, a data de inscrição é o ponto de&nbsp; referência. Pois, a falta desse registro dificulta emissão de relatórios. Por exemplo, há administradores do Moodle que usam sistema Badiu GMoodle para automatizar o cálculo da evasão tendo como regra os alunos que deixaram de acessar o curso durante 15 dias após a data de inscrição. Essa regra não será viável caso não houver registro de quanto o aluno ingressou no curso.&nbsp;&nbsp;&nbsp; A data de inscrição pode não ser lançada ou cadastrada de forma errada quando a carga de dados no Moodle vem de um sistema externo. Para corrigir isso, é necessário usar o comando UPDATE na tabela mdl_user_enrolments na versão 2.x e mdl_role_assignments na versão&nbsp; 1.9.Versão 2.x do MoodlePara corrigir data inscrição na versão 2.x do Moodle, execute os seguintes comandos SQL:1° Passo – Recupere método de inscrição do curso SELECT id FROM mdl_enrol WHERE courseid=? AND enrol=?

 <!--
  @page { margin: 2cm }
  TD P { margin-bottom: 0cm }
  P { margin-bottom: 0.21cm }
 -->
 








 

 
 

  
Parâmetro

  
Descrição

 

  
courseid=?

  
Passe o valor do id
   do curso. Esse valor fica registrado na tabela mdl_course.
   Trata-se do curso em que se pretende corrigir  a data de inscrição

 

  
enrol=?

  
Trata-se do método
   de inscrição do curso. Na versão 2.x um curso pode ter mais de
   um método de inscrição. O método padrão é manual. Se for
   manual o parâmetro deve ficar assim:  enrol='manual'

 








O id retornado pelo SELECT é o método de inscrição. Esse valor deve ser usado para dar entrada de dados na tabela&nbsp; mdl_user_enrolments no campo enrolid.2° Passo – Atualizar data de inscrição&nbsp;

UPDATE mdl_user_enrolments SET timestart=?,timeend=?,timemodified=? WHERE enrolid=? AND userid=?






 <!--
  @page { margin: 2cm }
  TD P { margin-bottom: 0cm }
  P { margin-bottom: 0.21cm }
 -->
 




 

 
 

  
Parâmetro

  
Descrição

 

  
timestart=?

  
Data do início da
   inscrição em formato timestamp

 

  
timeend=?

  
Data da validade  de
   inscrição em formato timestamp. Use esse campo apenas se houver
   data de validade da matrícula.

 

  
timemodified=?

  
Data em que a
   atualização do registro da matrícula foi feita.  Também e em
   formato timestamp.

 

  
enrolid=?

  
Método de inscrição
   recuperado pelo comando SQL do 1°
   passo

 

  
userid=?

  
Id  do usuário que
   se pretende alterar a data de inscrição. O valor do id deve ser
   recuperado na tabela mdl_user

 


Para ficar mais prático, vamos juntar os dois comandos em um só.&nbsp; Código abaixo mostra o resultado dessa junção.&nbsp; UPDATE mdl_user_enrolments SET timestart=?,timeend=?,timemodified=? WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE courseid=? AND enrol=?)&nbsp; AND userid=?A execução desse comando dá o mesmo resultado que os dois comandos anteriores. É mais prático quando se estiver processando SQL na base de forma manual. Versão 1.9.x do MoodlePara corrigir data inscrição na versão 1.9.x e também nas versões inferiores 1.8 e 1.7 do Moodle, execute os seguintes comandos SQL:1° Passo – Recupere o contexto da inscriçãoSELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=?


 <!--
  @page { margin: 2cm }
  TD P { margin-bottom: 0cm }
  P { margin-bottom: 0.21cm }
  A:link { so-language: zxx }
 -->
 




 

 
 

  
Parâmetro

  
Descrição

 

  
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 se pretende corrigir a data de
   inscrição. O valor desse parâmetro deve ser extraído na tabela
   mdl_course
   quando o
   nível do contexto for 50.
   
   

 



2° Passo – Atualizar data de inscriçãoUPDATE mdl_role_assignments SET timestart=?,timeend=?,timemodified=? WHERE contextid=? AND userid=?
Para ficar mais prático, vamos juntar os dois comandos em um só.&nbsp; Código abaixo mostra o resultado dessa junção.&nbsp; UPDATE mdl_role_assignments SET timestart=?,timeend=?,timemodified=? WHERE contextid IN (SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=?) AND userid=?
A execução desse comando dá o mesmo resultado que os dois comandos anteriores. É mais prático quando se estiver processando SQL na base de forma manual. &nbsp;&nbsp;&nbsp; Agora você já sabe como corrigir a sua base de dados. Há um detalhe importante a ser levado em conta&nbsp; caso a carga no Moodle for feita por um sistema externo. Se a base externa tiver registro da data de ingresso de cada aluno no curso, para automatizar essa informação no Moodle,&nbsp; é necessário que as duas bases estejam sincronizadas. Ou seja, a base externa deve possuir uma chave de identificação, de forma precisa, de cada registro de usuário e curso no Moodle. Tendo isso,&nbsp; basta fazer um loop numa rotina de programação, extraindo a data de matrícula de cada aluno no curso e atualizar o Moodle. Não tendo a sincronização, a alternativa&nbsp; é fazer manualmente.&nbsp;&nbsp;&nbsp; Na eventualidade de não ter a base externa, a data de inscrição pode ser atualizada com a data do primeiro acesso do aluno no ambiente do curso. Há uma margem de erro&nbsp; que deve ser levada em conta uma vez que não necessariamente o aluno&nbsp; acessou o curso no dia em que foi inscrito. Comando SQL que extrai o primeiro acesso no cursoSELECT MIN(time) FROM mdl_log WHERE course=?&nbsp; AND&nbsp; userid=? &nbsp;&nbsp;&nbsp; Essa alternativa atualiza a data de inscrição apenas dos alunos que acessaram o curso. Os que ainda não acessaram vão continuar sem registro da data de ingresso. &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Agora tudo que você precisa é solicitar ao seu desenvolvedor que faça uma rotina de programação para corrigir as informações no Moodle. Geralmente você dá conta desse problema quando precisa gerar relatórios que usam a data de inscrição.&nbsp;&nbsp;