sábado, 18 de março de 2017

Explorando SQL da enquete do Moodle (questionnaire)


    Caso você quer explorar a estrutura do SQL da enquete da Plataforma Moodle, o plugin questionnaire, explore os posts publicados na comunidade Badiu.

Desvendando estrutura das tabelas do plugin questionnaire – enquete do Moodle
http://comunidade.badiu.com.br/mod/forum/discuss.php?d=58

Extrair quantidade de usuários que preencheram a enquete do Moodle com comando SQL
http://comunidade.badiu.com.br/mod/forum/discuss.php?d=69

Listar as questões e alternativas de respostas de uma enquete plugin - questionnaire do Moodle com comando SQL
http://comunidade.badiu.com.br/mod/forum/discuss.php?d=67

Extrair lista de alternativas de resposta de uma questão da enquete - questionnaire do Moodle com comando SQL
http://comunidade.badiu.com.br/mod/forum/discuss.php?d=62

Listar as questões com opção de escolha (objetivas) de uma enquete plugin - questionnaire do Moodle com comando SQL
http://comunidade.badiu.com.br/mod/forum/discuss.php?d=103

Extrair quantidade de resposta atribuída nas questões objetivas de tipo única escolha de uma enquete do Moodle com comando SQL
http://comunidade.badiu.com.br/mod/forum/discuss.php?d=68

 Extrair quantidade de resposta atribuída nas questões objetivas de tipo múltipla escolha de uma enquete do Moodle com comando SQL
 http://comunidade.badiu.com.br/mod/forum/discuss.php?d=75



domingo, 29 de novembro de 2015

Moodle Moot Brasília 2015

E ai galera, só alegria?
Na 11º edição do  Moodle Moot realizado nos dias  27 e 28 de novembro  no UniCEUB - Centro Universitário de Brasília, o final não foi diferente 
Moodle Moot 2013 e Moodle Moot  Maio/2014. A merecida cerveja gelada com a galera da comunidade do Moodle Brasil para fechar o evento foi no Beirute.

Neste evento participei com as seguintes palestras:


Segue um breve resumo de cada Palestra:

 Arquitetura do Banco de Dados do Moodle 3 [Power Point]

Essa palestra teve
por objetivo analisar a arquitetura do banco de dados da versão 3 do Moodle  para verificar se ocorreu alguma mudança de estrutura nas tabelas que constituem o núcleo do sistema.

Rastreamento de conclusão do curso pelo comando SQL/PHP [Power Point]
Essa palestra teve como foco apresentar como efetuar rastreamento de conclusão de curso do Moodle usando comando SQL e programação PHP. Será explorado as tabelas do banco que armazenam informações sobre controle de progresso das atividades e do curso. Será apresentado script PHP que faz leitura sobre o progresso do curso em um plugin de inscrição. Será apresentado a evolução do plugin Badiu Grade Curricular que incorporar a lógica de liberar acesso no curso se o curso pré-requisito tiver sido concluído, com base no critério de rastreamento de conclusão do Moodle 2.

Participo do Moodle Moot desde 2013.  Veja todas palestra que já ministrei no Moodle Moot na comunidade Badiu: http://comunidade.badiu.com.br/mod/forum/discuss.php?d=189
 

Programação completa do Moodle Moot Brasília 2015
Site do Moodle Brasil: http://www.moodlebrasil.org

sábado, 11 de outubro de 2014

Moodle Moot Floripa 2014

E ai galera, só alegria?
Na 8º edição do  Moodle Moot realizado nos dias 9 e 10 de outubro na Universidade Federal de Santa Catarina, o final não foi diferente
Moodle Moot 2013 e Moodle Moot  Maio/2014. A merecida cerveja gelada com a galera da comunidade do Moodle Brasil foi bar chamado Meu Escritório.  

Neste evento participei com as seguintes palestras:


Segue um breve resumo de cada Palestra:

 Arquitetura do Banco de Dados do Moodle [Power Point]

Essa palestra teve por objetivo apresentar as tabelas que fazem parte do core da arquitetura do Moodle. Além disso, abordou as alterações que ocorreram na estrutura do banco na versão 2.7. Também foi abordado as dúvidas mais frequentes dos programadores do Moodle mapeados neste blog.

Desenvolvimento de Plugin de Matrícula para  Moodle 2 [Power Point]

Essa palestra teve como foco apresentar um método de desenvolvimento de plugin para a Plataforma Moodle. Foi mostrado um passo a passo para desenvolver um plugin de inscrição para a versão 2.x do Moodle e que também seja compatível com a versão 2.7 do Moodle. Além disso, foi abordado as regras do framework e estrutura de banco de dados que regem o funcionamento do plugin de inscrição.


Programação completa do Moodle Moot Floripa 2014
Site do Moodle Moot 2014: http://www.moodlebrasil.org

sexta-feira, 30 de maio de 2014

Palestra no Moodle Moot 2014

E ai galera, só alegria?
Novamente estou aqui no Moodle Moot 2014.  Naturalmente, tomei aquela cerva gelada com o pessoal. Não foi diferente do Moodle Moot 2013.

Desta vez participei com as seguintes palestras:


Segue um breve resumo de cada Palestra:

 Monitorar evasão no Moodle com o sistema Badiu GMoodle [Power Point]

O objetivo principal dessa temática  visa apresentar como usar o sistema Badiu GMoodle  para efetuar monitoramento da evasão dos alunos no Moodle com base no indicador de acesso. Monitorar evasão diretamente no Moodle exige um trabalho manual, o que é muito demorado. Com a ferramenta Badiu GMoodle é possível automatizar esse processo, o que  oportuniza tomar medidas preventivas para evitar a evasão.

Criar plugin de Relatório do Moodle [Power Point]


O foco central dessa 
temática  é compartilhar as técnicas e os procedimentos para criar um plugin de relatório seguindo o padrão do framework Moodle. Será apresentado passo a passo para: criar plugin, gerenciar permissão de acesso, configurar pacote de idioma, acessar banco de dados e impressão de dados na tela.  Tudo isso aproveitando o máximo possível da biblioteca de API do Moodle.

Programação completa do Moodle Moot 2014
Site do Moodle Moot 2014: http://www.moodlemoot.com.br/2014

terça-feira, 10 de dezembro de 2013

Desativar data do questionário no Moodle com comando SQL

O objetivo deste post é mostrar como desativar a data de preenchimento do questionário do Moodle com comando SQL.

Na plataforma  Moodle  o questionário pode ser configurado para ser preenchido por um determinado período de tempo. O aluno só consegue iniciar o preenchimento dentro no período que for habilitado.  


Na estrutura da tabela do questionário mdl_quiz os campos que controlam a data de preenchimento são:



  • timeopen – define data de abertura do questionário
  • timeclose - define data de encerramento do questionário

    O valor zero nesses campos significa que a data está desabilitada. Então para desabilitar, basta executar os seguintes comandos:


Desabilitar data de um determinado questionário
UPDATE mdl_quiz SET timeopen=0 AND timeclose=0  WHERE id=?

  Passe o parâmetro id do questionário 
 
Desabilitar data de todos os questionários de um determinado curso
UPDATE mdl_quiz SET timeopen=0 AND timeclose=0  WHERE course=?

Passe o parâmetro id do curso
 
Desabilitar data de todos os questionários  de todos os curso do Moodle
UPDATE mdl_quiz SET timeopen=0 AND  timeclose=0

 
O comando SQL facilita o processos de atualização caso for necessário fazer atualização em lote. Imagina desativar a data de mais de 20 questionário na interface do Moodle! Ninguém merece isso. Vai fundo no SQL  mas com cuidado. Comando errado pode lhe deixar em apuros com a equipe pedagógica.

segunda-feira, 26 de agosto de 2013

Corrigir data de inscrição no Moodle com comando SQL

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
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çã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.  



segunda-feira, 12 de agosto de 2013

Excluir alunos do curso do Moodle com comando SQL

Neste post, vamos mostrar como  excluir aluno do ambiente de curso no Moodle  usando comando SQL.  Vamos usar o comando DELETE. Isso é perigoso, uma vez exclui os dados. 
   
    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.

    O registro da  matrícula fica na tabela  mdl_role_assignments. O contexto da matrícula fica na tabela   mdl_context. Sendo assim, o comando da exclusão deve ser:

SQL  para excluir todos os alunos de um curso
DELETE 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 curso
DELETE FROM mdl_role_assignments WHERE roleid=5 AND contextid IN (SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=?)  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  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)
 DELETE FROM mdl_user_enrolments WHERE enrolid IN (SELECT id FROM mdl_enrol WHERE  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  courseid=?) AND userid IN(?,?,?)

A única diferença do comando anterior é userid IN(?,?,?) que delimita quais alunos devem ser excluídos

Nestes dois últimos comando, ficou claro que deve passar o id do curso no parâmetro  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. 
   
    Os comandos listados aqui apenas retira o aluno do curso. Cancela a inscrição. Não excluir o histórico  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.

    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!