Se você estiver fazendo migração de dados ou integração de um sistema acadêmico com a Plataforma Moodle, certamente vai precisar criar curso no Moodle diretamente no banco de dados sem usar a interface do Moodle.
Isso implica conhecer a estrutura das tabelas da base de dados do Moodle e fazer INSERT nas tabelas certas. Bem, isso me custou muitas horas de pesquisa. No final descobri que é necessário fazer apenas 4 INSERT básicos. Bem, vamos lá. São três passos.
Os comandos SQL foram testados na versão 1.9.3 do Moodle. Devem funcionar para qualquer versão 1.9.x e não para versão inferior a 1.9.
1º Passo – Criar o Curso
Essa parte é mais moleza. Basta fazer um INSERT na tabela mdl_course com o seguinte comando SQL:
INSERT INTO mdl_course (category,fullname,shortname) VALUES (1,'Curso1','C1')
Embora a tabela mdl_course tenha muitas colunas, nesse exemplo foram usadas os mais importantes:
- category - Chave estrangeira da tabela de categoria de curso - mdl_course_categories
- fullname – Nome complete do curso
- shortname – Abreviatura do curso
No comando INSERT, foi criado um curso denominado Curso1 na categoria de curso padrão do Moodle, cujo id é 1.
Após executar o INSERT, recupera o id do curso gerado automaticamente pelo banco de dados. No MySQL use o comando LAST_INSERT_ID().
2º Passo – Criar Contexto do Curso
Com o curso criado, agora é necessário criar contexto do curso na tabela mdl_context com o seguinte comando SQL:
INSERT INTO mdl_context (contextlevel,instanceid) VALUES (50,?)
O campo contextlevel define o nível do contexto. Para curso 50 é o valor padrão da tabela de domínio. O campo instanceid é a instância do curso. Preencha esse campo com o valor do Id do curso gerado automaticamente no 1º passo.
Ao executar o comando SQL, recupere o id do contexto gerado automaticamente. Use esse id para atualizar duas colunas: path e depth. Para isso, execute o seguinte comando SQL:
UPDATE mdl_context SET path='/1/3/$ID_CONTEXT', depth=3 WHERE id=$ID_CONTEXT
Você precisa substituir a variável $ID_CONTEXT pelo id gerado automaticamente do INSERT anterior, ao executar o comando para criar o contexto do curso. Se o id for 10, o comando SQL de atualização será:
UPDATE mdl_context SET path='/1/3/10', depth=3 WHERE id=10
Nesse momento você deve estar perguntando por que o campo path recebe '/1/3/$ID_CONTEXT' como valor padrão e o campo depth o número 3. Ainda não encontrei a resposta. Assim como você, eu também estou perguntando. Só sei que demorei três semanas mudando de variável até que funcionou. Se não preencher esses campos, nenhum usuário consegue entrar no curso. Se você encontrar alguma explicação não esqueça de me avisar.
3º Passo – Criar tópico/seção padrão do curso
Ao criar o curso no 1º passo, não foi definido o formato. Por padrão, será criado curso em formato de tópico. Assim, é necessário cria um primeiro tópico, o tópico número zero, do curso. Para isso, execute o seguinte comando SQL:
INSERT INTO mdl_course_sections (course,section) VALUES (?,0)
Na coluna course o valor do parâmetro é o id do curso gerado automaticamente no 1º passo. A segunda coluna, a section define a ordem do tópico. Por se tratar do primeiro tópico, deixe zero como está.
Há outras colunas na tabela mdl_course_sections. No entanto, para efeito de simplificação, se restringiu aos mais importantes.
Ao finalizar o 3º passo, o curso já está criado no Moodle. Há muitas configurações do curso que não foram abordado nesse poste. Você pode fazer isso preenchendo todos as outras colunas das tabelas mdl_course , mdl_course_sections e entre outros. Agora que o curso já está criado, acesse o ambiente Moodle com a senha do admin, ative a edição e adicione o bloco de administração. Daí, faça o restante das configurações.
Os comandos SQL foram testados apenas na versão 1.9.3. Deve funcionar em qualquer versão 1.9.x já a estrutura das tabelas são as mesmas. Não deve funcionar para as versões anteriores a 1.9. Mas lógica é muito parecida. Não custa testar e fazer os ajustes necessários. Agora boa programação, ou melhor, boa sorte na jornada de integração do Moodle com o seu sistema acadêmico.
Veja Também
Matricular Usuário no Curso do Moodle com Comando SQL
Após executar o INSERT, recupera o id do curso gerado automaticamente pelo banco de dados. No MySQL use o comando LAST_INSERT_ID().
2º Passo – Criar Contexto do Curso
Com o curso criado, agora é necessário criar contexto do curso na tabela mdl_context com o seguinte comando SQL:
INSERT INTO mdl_context (contextlevel,instanceid) VALUES (50,?)
O campo contextlevel define o nível do contexto. Para curso 50 é o valor padrão da tabela de domínio. O campo instanceid é a instância do curso. Preencha esse campo com o valor do Id do curso gerado automaticamente no 1º passo.
Ao executar o comando SQL, recupere o id do contexto gerado automaticamente. Use esse id para atualizar duas colunas: path e depth. Para isso, execute o seguinte comando SQL:
UPDATE mdl_context SET path='/1/3/$ID_CONTEXT', depth=3 WHERE id=$ID_CONTEXT
Você precisa substituir a variável $ID_CONTEXT pelo id gerado automaticamente do INSERT anterior, ao executar o comando para criar o contexto do curso. Se o id for 10, o comando SQL de atualização será:
UPDATE mdl_context SET path='/1/3/10', depth=3 WHERE id=10
Nesse momento você deve estar perguntando por que o campo path recebe '/1/3/$ID_CONTEXT' como valor padrão e o campo depth o número 3. Ainda não encontrei a resposta. Assim como você, eu também estou perguntando. Só sei que demorei três semanas mudando de variável até que funcionou. Se não preencher esses campos, nenhum usuário consegue entrar no curso. Se você encontrar alguma explicação não esqueça de me avisar.
3º Passo – Criar tópico/seção padrão do curso
Ao criar o curso no 1º passo, não foi definido o formato. Por padrão, será criado curso em formato de tópico. Assim, é necessário cria um primeiro tópico, o tópico número zero, do curso. Para isso, execute o seguinte comando SQL:
INSERT INTO mdl_course_sections (course,section) VALUES (?,0)
Na coluna course o valor do parâmetro é o id do curso gerado automaticamente no 1º passo. A segunda coluna, a section define a ordem do tópico. Por se tratar do primeiro tópico, deixe zero como está.
Há outras colunas na tabela mdl_course_sections. No entanto, para efeito de simplificação, se restringiu aos mais importantes.
Ao finalizar o 3º passo, o curso já está criado no Moodle. Há muitas configurações do curso que não foram abordado nesse poste. Você pode fazer isso preenchendo todos as outras colunas das tabelas mdl_course , mdl_course_sections e entre outros. Agora que o curso já está criado, acesse o ambiente Moodle com a senha do admin, ative a edição e adicione o bloco de administração. Daí, faça o restante das configurações.
Os comandos SQL foram testados apenas na versão 1.9.3. Deve funcionar em qualquer versão 1.9.x já a estrutura das tabelas são as mesmas. Não deve funcionar para as versões anteriores a 1.9. Mas lógica é muito parecida. Não custa testar e fazer os ajustes necessários. Agora boa programação, ou melhor, boa sorte na jornada de integração do Moodle com o seu sistema acadêmico.
Veja Também
Matricular Usuário no Curso do Moodle com Comando SQL