Neste post vamos mostrar como atualizar o cadastro de matrícula do aluno para inserir a data de inscrição caso estiver faltando.
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.
Para computar evasão, a data de inscrição é o ponto de 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.
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 1.9.
Versão 2.x do Moodle
Para 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=?
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 mdl_user_enrolments no campo enrolid.
2° Passo – Atualizar data de inscrição
UPDATE mdl_user_enrolments SET timestart=?,timeend=?,timemodified=? WHERE enrolid=? AND userid=?
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ó. Código abaixo mostra o resultado dessa junção.
UPDATE mdl_user_enrolments SET timestart=?,timeend=?,timemodified=? WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE courseid=? AND enrol=?) 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 Moodle
Para 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ção
SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=?
Parâmetro
|
Descrição
|
contextlevel=50
|
|
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ção
UPDATE mdl_role_assignments SET timestart=?,timeend=?,timemodified=? WHERE contextid=? AND userid=?
Para ficar mais prático, vamos juntar os dois comandos em um só. Código abaixo mostra o resultado dessa junção.
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.
Agora você já sabe como corrigir a sua base de dados. Há um detalhe importante a ser levado em conta 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, é 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, 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 é fazer manualmente.
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 que deve ser levada em conta uma vez que não necessariamente o aluno acessou o curso no dia em que foi inscrito.
Comando SQL que extrai o primeiro acesso no curso
SELECT MIN(time) FROM mdl_log WHERE course=? AND userid=?
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.
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.