A partir da versão 1.7 do Moodle o gerenciamento da matrícula passou a ser feita na tabela mdl_role_assignments. Essa tabela é composta por vários campos. Os campos mais importantes para efetuar a inscrição do usuário no curso são:
roleid – perfil do usuário na tebela mdl_role;
contextid – Contexto curso no tabela mdl_context;
userid - Id do usuário na tabela mdl_user.
contextid – Contexto curso no tabela mdl_context;
userid - Id do usuário na tabela mdl_user.
Sendo assim, o comando SQL para fazer a matrícula 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, não desespere, vamos lá.
Valor do campo roleid
O campo roleid define se o usuário a ser cadastrado no curso é aluno, tutor, autor do curso etc. Por padrão, a tabela mdl_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
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 para aluno.
Valor do campo contextid
Esse é um pouco chato. Mas vamos lá. Para explicar isso é necessário antes informar que Moodle não segue, a risca, a integridade de dados entre a chave primária e estrangeira. Em alguns casos, usa instanciamento de dados como que se fosse uma programação 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 informação está na tabela mdl_course.
Localize o id do curso que pretenda matricular o aluno. Essa informação 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=?
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 é padrão. Representa o instancia do curso. O valor do filtro do campo instanceid deve ser o id do curso extraído 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 usuário na tabela mdl_user. Caso estiver cadastrando um usuário e, em seguida, inscrevê-lo no curo, basta recuperar o id do cadastro recente usando a função SQL LAST ID INSERT. Caso não saiba como cadastrar usuário 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 (?,?,?)
Substituído a ? pelos valores correspondentes.
Os comandos descritos neste post só valem para a versão 1.7 a 1.9 do Moodle. Não versão 2.0 houve uma alteração da estrutura das tabelas de matrícula. Para a versão 2.x, siga os procedimentos explicados no comentário: http://moodlesql.blogspot.com/2010/07/matricular-usuario-no-curso-do-moodle.html?showComment=1317436246579#c1869475564775276003
Veja Também Os comandos descritos neste post só valem para a versão 1.7 a 1.9 do Moodle. Não versão 2.0 houve uma alteração da estrutura das tabelas de matrícula. Para a versão 2.x, siga os procedimentos explicados no comentário: http://moodlesql.blogspot.com/2010/07/matricular-usuario-no-curso-do-moodle.html?showComment=1317436246579#c1869475564775276003
Cadastrar Usuário no Moodle pelo Comando SQL