Fóruns

Resultados da busca: 10

O camando SQL  a seguir faz filtro de usuários no Moodle, exibindo informação do campo do perfil. Além disso, faz filtro pela chave do campo do perfil. 

SELECT DISTINCT u.id, u.firstname,u.lastname,u.email,u.username, d.data AS proflifefied1,u.lastaccess FROM mdl_user u INNER  JOIN mdl_user_info_data d ON d.userid=u.id INNER JOIN mdl_user_info_field f ON f.id=d.fieldid WHERE u.deleted=0 AND u.confirmed=1 AND  u.suspended =0 AND f.shortname=? ORDER BY u.firstname,u.lastname

Passe o parâmetro chave do campo de perfil em f.shortname=?

Kiko,

Para pupular campos do perfil do usuário, siga orientação nesses posts:

Criar e editar categoria de campo de perfil de usuário no Moodle com comando SQL
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=241


Tabelas que registram dados do usuário no Moodle
https://comunidade.badiu.com.br/mod/forum/discuss.php?d=193


Filtro geral pelo campo de perfil
https://comunidade.badiu.com.br/mod/forum/search.php?id=2&search=mdl_user_info_data

Marta, 

O que você precisa é inserir informação do usuário no campo CPF criado no campo do perfil? É isso?

Vc precisa inserir informação com comando PHP? 

Me explica melhor o contexto. O código PHP que vc colocou foi extraído de qual parta do Moodle. Apresenta um pouco mais detalhado o contexto e o resultado que pretende alcançar. 

 

Tenho um campo CPF na tabela `mdl_user_info_data` com fieldid= 1  e tento atualizar ou criar quando insiro um aluno, mas parece que há algoerrado com o código

 

if ($DB->record_exists('user_info_data', array('userid'=>$userid,'fieldid'=>$user_info_field))){
$updateuser_info_data = get_complete_user_data('userid', $userid);
$updateuser_info_data->data = $cpf;
$DB->update_record('user_info_data', $updateuser_info_data);

}else{
$newuser_info_data = new stdClass();
$newuser_info_data->userid = $userid;
$newuser_info_data->fieldid = $user_info_field;
$newuser_info_data->data = $cpf;
$newuser_info_data->dataformat = 0;
$newuser_info_data->id = $DB->insert_record('user_info_data', $newuser_info_data);
$user_info_data = get_complete_user_data('id', $newuser_info_data->id);

}

Consege me informar o que pode estar errado?

Anexo CPF-FORM-MOODLE.png
Anexo TABELA-USER-INFO_DATA.png
Anexo TABELA-USER-INFO_FIED.png

Boa tarde Lino!

 

Muito obrigado pela ajuda. (Vou guardar esses selects para outras consultas) Mas me restou mais uma dúvida. 

 

id firstname "lastname email cidade estado curso1 curso2 curso3
2 Luiz Andre luiz_nac@hotmai.com Belo Horizonte Minas Gerais      

Usei esse select aqui para gerar essa informação acima. Os campos em negrito e o que eu queria adicionar.

 

SELECT DISTINCT u.id, u.firstname,u.lastname,u.email, d.data AS Cidade, d1.data AS Estado FROM mdl_user u LEFT JOIN mdl_user_info_data d ON d.userid=u.id LEFT JOIN mdl_user_info_data d1 ON d1.userid=u.id WHERE u.confirmed=1 AND d.fieldid=4

 

Existe a possibilidade de eu extrair o curso que o usuário está inscrito igual nessa tabela acima? Porque com os selects que me mandou eu consigo listar quantos usuários inscritos em cada curso, mas queria ter um controle maior. Exemplo, o usuário luiz esta inscrito no curso x e curso y e curso z, e possivel fazer dessa forma?

 

Desculpa tantas perguntas, e que realmente não tenho mais a quem recorrer. Caso não dê pra fazer desse jeito agradeço da mesma forma 

 

Obrigado

Boa tarde. Li todo o conteudo das 4 paginas dos comandos SQL. Ate consegui fazer em partes o que eu queria.

 

Eu gostaria de listar todos os usuários cadastrados na plataforma moodle juntamente com o curso que ele está inscrito. 

Eu achei esse comando e ele me atendeu em partes. Nesse codigo adicionei o campo Cidade e municipio com campos personalizados. 

 

Mas não consigo gerar a lista com o curso cadastrado

 

SELECT DISTINCT u.id, u.firstname,u.lastname,u.email, d.data AS Cidade, d1.data AS Estado FROM mdl_user u LEFT JOIN mdl_user_info_data d ON d.userid=u.id LEFT JOIN mdl_user_info_data d1 ON d1.userid=u.id WHERE u.confirmed=1 AND d.fieldid=4

 

Vocês conseguem me auxiliar? Sou +- leigo em SQL e estou tentando a dias resolver esse problema =(

Caso o cadastro de um usuário estiver duplicado no Moodle, e cada cadastro tem inscrição nos cursos e estiver acessando, a solução seria unificar os cadastros. 

Vamos supor que usuário 1 com id 10 seja o mesmo que usuário 2 com id 11. Neste caso, o processo de unificação requer um trabalho no nível cirúrgico. Ta claro que tou falando do operação em nível de SQL e PHP. 

Bem vamos lá:

Nos comandos SQL  a seguir você substituir id 11 para id 10, ou seja, vai transferir tudo que estiver no usuário 2 usuário 1

1) Unificar inscrição no curso 

UPDATE  mdl_role_assignments SET userid=? WHERE userid=?

2) Unificar status de inscrição  no curso 

UPDATE  mdl_user_enrolments  SET userid=? WHERE userid=?

3) Unificar registro de nota no quadro geral de nota / atividades

UPDATE  mdl_grade_grades  SET userid=? WHERE userid=?


Observação

    A mesma operação deve ser feita no histórico de notas em todas as tabelas dos plugins que têm registro de nota e que registro atividades do aluno como enquete, questionário, fórum etc. 

4) Unificar registro de atividades concluídas

UPDATE  mdl_course_modules_completion  SET userid=? WHERE userid=?

5) Unificar registro de cursos concluídos

UPDATE  mdl_course_completions   SET userid=? WHERE userid=?

5) Unificar registro de log

UPDATE  mdl_course_modules_completion   SET userid=? WHERE userid=?

6) Unificar registro de campos do perfil

UPDATE  mdl_user_info_data   SET userid=? WHERE userid=?

7) Outros

Faça uma mapeamento em todas as tabelas onde tiver coluna userid, processa essa operação. Neste caso o PHP vai ser uma mão na roda. Só apontei exemplos das tabelas mais comuns.

Nesse caso Lino, vamos imaginar:

 

No sistema A, o aluno tem 3 disciplinas a distancia, são elas: Disciplina A, Disciplina B e disciplina C.

Dentro do moodle eu tenho a table de usuários, nela eu posso criar vários outros campo de forma dinâmica, isso utilizando as funções padrões do moodle.

(Essas informações que podemos criar ficam armazenadas nas tabelas: mdl_user_info_data e mdl_user_info_field ). 

 

utilizando o moodle, na importação de usuários, eu posso preencher as informações desse campos extras com as informações das disciplinas que o aluno irá cursar. O problema ocorre quando o aluno possui mais de uma disciplina. Porque não só tem uma disciplina eu salvo as informações da disciplina no cadastro do aluno e pronto, só que, com duas disciplinas ou mais, não tenho como salvar tantas informações.

 

Tem alguma ideia, ou plugin que permita criar campos complementares (extras) associados ao curso e não somente ao usuário?

 

A primeira e a ultima opção me agrada muito, acho que transportar as notas de um sistema para outro não vai ser um problema, acredito que atrelar as informações dos sistemas é o desafio atual.

 

No Moodle os dados do perfil são cadastrados nas tabelas de campo do perfil mas especificamente na tabela mdl_user_info_data 

Para conhecer as tabelas do campo do perfil, consulte esse link: http://comunidade.badiu.com.br/mod/forum/discuss.php?d=193

Para adicionar os campos de dados no relatório do  usuário, ou seja, junto com os campos nome e e-mail do usuário, execute no banco o seguinte comando:

SELECT DISTINCT u.id, u.firstname,u.lastname,u.email,u.city, d.data AS campoperfil, d1.data AS campoperfil2 FROM mdl_user u LEFT  JOIN mdl_user_info_data d ON d.userid=u.id LEFT  JOIN mdl_user_info_data d1 ON d1.userid=u.id  WHERE u.confirmed=1 AND d.fieldid=? AND d1.fieldid=? 

 

Nesse SQL adicionamos 2 campos com  nome campoperfil e campoperfil1. Para adicionar mais campo, basta seguir a mesma lógica de junção.  Para cada campo é necessário fazer um LEFT JOIN na tabela mdl_user_info_data e além disso, fazer filtro no campo fieldid

É necessário passar parâmetro referente ao id do campo em d.fieldid=? e d1.fieldid=? etc

O valor do id que deve ser passado fica na tabela mdl_user_info_field que registra os campos. 

Segue a descrição das tabelas do usuário

Tabela

Descrição

mdl_user

Regra o cadastro de usuários

mdl_user_info_category

Registra cadastro de categorias dos campos do perfil

mdl_user_info_field

Registra cadastro dos campos do perfil

mdl_user_info_data

Registra cadastro dos dados perfil do usuário

mdl_user_preferences

Registra configuração do usuário