You are on page 1of 9

Criar Curso no Moodle com Comando SQL

Se voc estiver fazendo migrao de dados ou integrao de um sistema acadmico 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 necessrio fazer apenas 4 INSERT bsicos. Bem, vamos l. So trs passos. Os comandos SQL foram testados na verso 1.9.3 do Moodle. Devem funcionar para qualquer verso 1.9.x e no para verso 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 importantes:


y y y

mdl_course tenha muitas colunas, nesse exe mplo foram usadas os mais

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 padro do Moodle, cujo id 1. Aps 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 necessr io 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 nvel do contexto. Para curso 50 o valor padro da tabela de domnio. O campo instanceid a instncia 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 varivel $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 atualizao 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 padro e o campo depth o nmero 3. Ainda no encontrei a resposta. Assim como voc, eu tambm estou perguntando. S sei que demorei trs semanas mudando de varivel at

que funcionou. Se no preencher esses campos, nenhum usurio consegue entrar no curso. Se voc encontrar alguma explicao no esquea de me avisar.
3 Passo Criar tpico/seo padro do curso Ao criar o curso no 1 passo, no foi definido o formato. Por padro, ser criado curso em formato de tpico. Assim, necessrio cria um primeiro tpico, o tpico nmero 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 parmetro o id do curso gerado automaticamente no 1 passo. A segunda coluna, a section define a ordem do tpico. Por se tratar do primeiro tpico, deixe zero como est. H outras colunas na tabela mdl_course_sections. No entanto, para efeito de simplificao, se restringiu aos mais importantes. Ao finalizar o 3 passo, o curso j est cri ado no Moodle. H muitas configuraes do curso que no 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 edio e adicione o bloco de administrao. Da, faa o restante das configuraes. Os comandos SQL foram testados apenas na verso 1.9.3. Deve funcionar em qualquer verso 1.9.x j a estrutura das tabelas so as mesmas. No deve funcionar para as verses anteriores a 1.9. Mas lgica muito parecida. No custa testar e fazer os ajustes necessrios. Agora boa programao, ou melhor, boa sorte na jornada de integrao do Moodle com o seu sistema acadmico.

A maneira como se denomina a organizao de dados do curso no banco de dados do Moodle diferente da linguagem do mundo acadmico e do mundo corporativo. No banco de dados do Moodle os cursos so organizados em trs nveis de hierarquia:
y y y

Categoria de curso Curso Grupo

Uma categoria de curso pode ter um ou mais curso. Dentro um curso, os alunos podem ser divididos em grupo. As tabelas do Moodle que armazena esses dados so:
y y y y

mdl_course_categories - Tabela de categoria de curso mdl_course - Tabela de curso mdl_groups - Tabela de grupo mdl_groups_members - Tabela de membros vinculados a um determinado grupo

Tabela de Traduo de Termos Moodle Ambiente Ambiente Acadmico Corporativo Categoria de Curso Curso Curso Disciplina Curso Grupo Turma Turma

Matricular Usurio no Grupo/Turma do Moodle com Comando SQL

Para cadastrar um usurio (aluno,tutor etc ) em um grupo grupo, ou seja, turma de um curso no Moodle sem ser pela interface grfica necessrio executar o comando SQL diretamente na base de dados ou em uma linguagem de programao. Para matricular um aluno em um grupo de usurio, primei ro necessrio matricul-lo no curso. Em seguida, adicion-lo a um grupo. Neste post no abordamos como efetuar matrcula no curso. Caso queira explorar isso, clique aqui e acesse o post que aborda esse assunto. Antes de avanar bom entender como o grupo de usurio organizado no banco de dados do Moodle. Os registros do grupo ficam em duas tabelas: mdl_groups - Tabela que armazena nome do grupo e curso que est vinculado mdl_groups_members - Tabela que armazena os membros de cada grupo O comando SQL que insere usurio no grupo : INSERT INTO mdl_groups_members (groupid,userid,timeadded) VALUES (?,?,?) Passe os parmetros: groupid Id do grupo. Chave primria da tabela mdl_groups. userid- Id do usurio. Chave primria da tabela mdl_user. timeadded Data do cadastro. Data em formato numrico: timestamp em segundos. Para processar cadastro em lote melhor exec utar o cdigo dentro de uma linguagem de programao.

Matricular Usurio no Curso do Moodle com Comando SQL

A partir da verso 1.7 do Moodle o gerenciamento da matrcula passou a ser feita na tabela mdl_role_assignments. Essa tabela composta por vrios campos. Os campos mais importantes para efetuar a inscrio do usurio no curso so: roleid perfil do usurio na tebela mdl_role; contextid Contexto curso no tabela mdl_context; userid - Id do usurio na tabela mdl_user. Sendo assim, o comando SQL para fazer a matrcula ser: INSERT INTO mdl_role_assignments (roleid,contextid,userid) VALUES (?,?,?) At aqui tudo parece moleza. O problema saber que valores colocar em cada campo. Bem, no desespere, vamos l. Valor do campo roleid O campo roleid define se o usurio a ser cadastrado no curso aluno, tutor, autor do curso etc. Por padro, a tabela md l_role traz 7 perfis cadastrados. 1 Administrator 2 -Course creator 3 Teacher (Tutor) 4 - Non-editing teacher 5 Student (Aluno) 6 Guest 7 - Authenticated user Bem roleid j est decifrado. Est claro que deve ser 3 para cadastrar o tutor e 5 p ara aluno. Valor do campo contextid Esse um pouco chato. Mas vamos l. Para explicar isso necessrio antes informar que Moodle no segue, a risca, a integridade de dados entre a chave primria e estrangeira. Em alguns casos, usa instanciamento de dado s como que se fosse uma programao orientado a objetos. Para decifrar a instancia do curso siga os seguintes passos: Primeiro Passo Localize o id do curso que pretenda matricular o aluno. Essa informao est na tabela mdl_course. Segundo Passo Extraia o id do contexto do curso na tabela mdl_context executando o seguinte comando SQL: SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=? No filtro do WHERE, contextlevel deve ser sempre 50. Esse valor padro. Representa o instancia do curso. O valor do filtro do campo instanceid deve ser o id do curso extrado no primeiro passo. O valor retornado da consulta SQL acima ser o valor do campo contextid. Valor do campo userid Esse valor j moleza. o id do usurio na tabela mdl_user. Caso e stiver cadastrando um usurio e, em seguida, inscrev -lo no curo, basta recuperar o id do cadastro recente usando a funo SQL LAST ID INSERT. Caso no saiba como cadastrar usurio via comando SQL clique aqui para ver. Agora que voc j tem o valor de todos os campos basta executar o comando SQL: INSERT INTO mdl_role_assignments (roleid,contextid,userid) VALUES (?,?,?) Substitudo a ? pelos valores correspondentes.

Cadastrar Usurio no Moodle pelo Comando SQL

Para cadastrar usurio no Moodle com comando SQL necessrio evitar duplicao de registro no campos email,username. Esses campos devem ter valor nico para cada usurio inserido. A outra recomendao certificar que os campos confirmed e mnethostid estejam recebendo valar 1. Se tiver valor 0 ou NULL o usurio no consegue logar. A tabela mdl_user do Moodle tem vrios campos. Os mais importantes para cadastrar um usurio so: firstname,lastname,email,username,password,confirmed como mostra o cdigo SQL abaixo. INSERT INTO mdl_user (firstname,lastname,email,username,password,confirmed,description, mnethostid) VALUES ('Joao','Silva',' jsilva@gmail.com','joao',MD5('silva'),1,'Cabra Bom',1); Execute esse comando no banco de dados e faa um teste. Para verificar se funcionou tudo certinho logue no Moodle: Login: joao Senha: silva Se funcionar porque deu tudo certo. Observao: O campo mnethostid s existe a partir da verso 1.8. Na verso inferior a 1.8 retire esse campo para evitar erro.Caso queira saber para que serve esse campo, esse o seguinte link: http://moodlesql.blogspot.com/ 2011/02/campo-mnethostid-da-tabela-mdluser-do.html

Redirecionar Login do Moodle Para Um Sistema Externo

Quanto o Moodle integrado com outro sistema, o formulrio de login pode ser desativado se os usurios logam no sistema externo e depois acessam o Moodle. Neste caso, o Moodle deve ser customizado para redirecionar pgina de login do sistema externo todas as vezes que os usurios clicarem no link Acesso no ambiente do Moodle. Essa implementao deve ser feita por meio de alterao do cdigo PHP do Moodle. Para redirecionar o login do Moodle para um sistema externo, siga os seguintes passos:
1 Passo - Abrir o arquivo que processa o login Abra em um editor de texto o seguinte arquivo:

$CFG->wwwroot/login/index.php
2 Passo - Inserir URL do sistema externo No final do arquivo, antes da linha do cdigo print_header("$site->... aproximadamente na linha 319, insera seguinte trecho do cdigo: header( 'Location: http://NOVO_ENDERECO_LOGIN') ;

Substitua o texto NOVO_ENDERECO_LOGIN pelo url de login do sistema externo. Esse trecho do cdigo interrompe e execuo e redireciona para o site do sisteme externo.
3 Passo - Gravar alterao do arquivo Para que a alterao seja efetivada, grave o arquivo. Feito isso, o Moodle redireciona os usurios para logarem em um sistema externo.

Com essa alterao, o formulrio de login do Moodle fica desativada. Esse procedimento recomendado em caso de integrao em que o sistema externo assume a autenticao dos usurios.

Tornar Campo Sobrenome Opcional no Formulrio de Cadastro de Usurio no Moodle

Caso voc queira customizar o formulrio de cadastro de usurio do Moodle para que o campo sobrenome no seja obrigatrio, necessrio alterar o cdigo PHP. Para tornar opcional o preenchimento do campo sobrenome, siga os seguintes passos:
1 Passo - Abrir o arquivo editlib.php Abra em um editor de texto o segu inte arquivo: $CFG->wwwroot /user/editlib.php

$CFG->wwwroot se refere ao endereo da pasta em que a aplicao do Moodle est instalado.


2 Passo - Localizar a regra do campo sobrenome Localize no arquivo o seguinte cdigo:

$mform->addRule('lastname', $strrequired, 'required', null, 'client'); Esse cdigo fica normalmente na linha 97. Define que o campo sobrenome do usurio deve ser preenchido.

3 Passo - Desativar a regra do campo sobrenome Faa comentrio na linha do cdigo que de fine a regra de obrigatoriedade ou simplesmente apague a linha de cdigo. Se fizer o comentrio, a linha de cdigo deve ficar assim:

//$mform->addRule('lastname', $strrequired, 'required', null, 'client');

4 Passo - Gravar alterao do arquivo editlib .php Para que a alterao seja efetivada, grave o arquivo. Feito isso, basta acessar o formulrio de cadastro e verificar que o campo sobrenome se tornou opcional.

5 Passo - Desabilite a obrigatoriedade do sobrenome na biblioteca do sistema Para evitar que o formulrio de perfil tranque a navegao aps o login, desabilite o sobrenome na funo funo user_not_fully_set_up. Para isso, siga as instruo no link: http://moodlephp.blogspot.com/2011/02/cancelar -atualizacao-obrigatoria-do.html

Essa alterao no recomendado nos campos que so definidos obrigat rios a nvel do banco de dados como a caso dos campos nome e e-mail.

Matricular Usurio no Grupo/Turma do Moodle com Comando SQL

Para cadastrar um usurio (aluno,tutor etc) em um grupo grupo, ou seja, turma de um curso no Moodle sem ser pela interface grfica necessrio executar o comando SQL diretamente na base de dados ou em uma linguagem de programao. Para matricular um aluno em um grupo de usurio, primeiro necessrio matricul -lo no curso. Em seguida, adicion-lo a um grupo. Neste post no abordamos como efetuar matrcula no curso. Caso queira explorar isso, clique aqui e acesse o post que aborda esse assunto. Antes de avanar bom entender como o grupo de usurio organizado no banco de dados do Moodle. Os registros do grupo ficam em duas tabelas: mdl_groups - Tabela que armazena nome do grupo e curso que est vinculado mdl_groups_members - Tabela que armazena os membros de cada grupo O comando SQL que insere usurio no grupo : INSERT INTO mdl_groups_members (groupid,userid,timeadded) VALUES (?,?,?) Passe os parmetros: groupid Id do grupo. Chave primria da tabela mdl_groups. userid- Id do usurio. Chave primria da tabela mdl_user. timeadded Data do cadastro. Data em formato numrico: timestamp em segundos. Para processar cadastro em lote melhor executar o cdigo dentro de uma linguagem de programao.

You might also like