Muitos desenvolvedores do Moodle levantam a mesma questão: Para que serve o campo mnethostid da tabela de usuário mdl_user do Moodle?
A resposta é simples. Mas requer algumas horas ou dias de pesquisa devido a escassa documentação técnica do Moodle.
O campo mnethostid é uma chave estrangeira do campo id da tabela mdl_mnet_host. O nome dessa tabela é resultado da abreviatura de Moodle Network Host.
Moodle Network é uma funcionalidade que foi adicionada na versão 1.8 para acesso remoto. Isso possibilita um usuário cadastrado em determinado Moodle acessar outras instâncias do ambiente Moodle. Por isso que na tabela de usuário foi adicionado o campo mnethostid para identificar o host do usuário.
Por padrão, o primeiro registro lançado na tabela mdl_mnet_host é o host do Moodle local. O valor do campo mnethostid na tabela mdl_user geralmente é 1 para usuários do Moodle local.
Quando o usuário for logar diretamente no Moodle, será verificado a combinação de login e senha referente ao host do Moodle local. Com frequência, ocorre a mudança do id do Moodle local ao fazer atualização da versão. Neste caso, os usuários não conseguem logar, mesmo que o login e a senha estiverem corretos. A solução é verificar o novo id referente ao host do Moodle local e atualizar a chave estrangeira no campo mnethostid na tabela de usuário mdl_user. Isso não é feito automaticamente uma vez que o Moodle é deficiente na questão da integridade de chaves primária e estrangeira.
SQL para Extrair id do Host Local do Moodle
Para identificar o id referente ao host do Moodle local, execute uma das seguintes alternativas de comando SQL:
Alternativa I
SELECT id FROM mdl_mnet_host WHERE wwwroot=?
Passe o parâmetro URL do Moodle em wwwroot=?
Alternativa II
SELECT value FROM mdl_config WHERE name='mnet_localhost_id'
O primeiro comando extrai diretamente da tabela mdl_mnet_host que é a fonte original de armazenamento dos hosts do Moodle. O segundo comando extrai a cópia do id do host local do Moodle registrada na tabela de configuração mdl_config.
Quando você faz um cadastro de usuário no Moodle, o valor do campo mnethostid é recuperado da tabela mdl_config na variável mnet_localhost_id.
Então se você estiver cadastrando um usuário no Moodle com comando SQL, o valor do campo mnethostid deve ser extraído com um dos comandos SQL mencionados acima na alternativa I e II.
Bem, agora você encontrou a resposta que estava procurando. Caso ainda não esteja satisfeito, explore mais a documentação do Moodle. Inicie a pesquisa estudando a estrutura das tabelas que começam com o prefixo mdl_mnt_*. Certamente vai descobrir muita coisa. Se for fazer isso, não esqueça de me avisar o que descobriu.
A resposta é simples. Mas requer algumas horas ou dias de pesquisa devido a escassa documentação técnica do Moodle.
O campo mnethostid é uma chave estrangeira do campo id da tabela mdl_mnet_host. O nome dessa tabela é resultado da abreviatura de Moodle Network Host.
Moodle Network é uma funcionalidade que foi adicionada na versão 1.8 para acesso remoto. Isso possibilita um usuário cadastrado em determinado Moodle acessar outras instâncias do ambiente Moodle. Por isso que na tabela de usuário foi adicionado o campo mnethostid para identificar o host do usuário.
Por padrão, o primeiro registro lançado na tabela mdl_mnet_host é o host do Moodle local. O valor do campo mnethostid na tabela mdl_user geralmente é 1 para usuários do Moodle local.
Quando o usuário for logar diretamente no Moodle, será verificado a combinação de login e senha referente ao host do Moodle local. Com frequência, ocorre a mudança do id do Moodle local ao fazer atualização da versão. Neste caso, os usuários não conseguem logar, mesmo que o login e a senha estiverem corretos. A solução é verificar o novo id referente ao host do Moodle local e atualizar a chave estrangeira no campo mnethostid na tabela de usuário mdl_user. Isso não é feito automaticamente uma vez que o Moodle é deficiente na questão da integridade de chaves primária e estrangeira.
SQL para Extrair id do Host Local do Moodle
Para identificar o id referente ao host do Moodle local, execute uma das seguintes alternativas de comando SQL:
Alternativa I
SELECT id FROM mdl_mnet_host WHERE wwwroot=?
Passe o parâmetro URL do Moodle em wwwroot=?
Alternativa II
SELECT value FROM mdl_config WHERE name='mnet_localhost_id'
O primeiro comando extrai diretamente da tabela mdl_mnet_host que é a fonte original de armazenamento dos hosts do Moodle. O segundo comando extrai a cópia do id do host local do Moodle registrada na tabela de configuração mdl_config.
Quando você faz um cadastro de usuário no Moodle, o valor do campo mnethostid é recuperado da tabela mdl_config na variável mnet_localhost_id.
Então se você estiver cadastrando um usuário no Moodle com comando SQL, o valor do campo mnethostid deve ser extraído com um dos comandos SQL mencionados acima na alternativa I e II.
Bem, agora você encontrou a resposta que estava procurando. Caso ainda não esteja satisfeito, explore mais a documentação do Moodle. Inicie a pesquisa estudando a estrutura das tabelas que começam com o prefixo mdl_mnt_*. Certamente vai descobrir muita coisa. Se for fazer isso, não esqueça de me avisar o que descobriu.
Entao no meu caso como na instalacao eu ja determino que nao e local host e sim coloco o id do bd nesse caso deveria funcionar com o mesmo id do bd. Certo?
ResponderExcluirAmei encontrar este blog. Obrigada! Estou tendo dificuldade em criar no excel, a função createpassord para que o moodle crie a senha e envie mensagem para o aluno com os dados do login tal como ocorre quando insiro um a um os alunos dentro do moodle... Podes me ajudar? Agradeço desde já e de coração!
ResponderExcluirAlou tudo bem?
ExcluirÉ uma satisfação saber que gostou do blog.
Você está tentado dar carga no Moodle pelo arquivo csv?
Se for, estude essa documentação:
https://docs.moodle.org/22/en/Upload_users#Valid_upload_file_for_testing
Depois dá o feedback do resultado.