No Moodle, há o link para exibição de todos os participantes inscritos em certo curso. Preciso da query que faça essa seleção dos participantes de um curso X, porém não consegui identificá-la.
Desculpem-me pela pergunta, por ser muito básica, mas não consegui montar essa query sozinha mesmo.
Obrigada.
Em resposta à Paula Marin Leite
Re: Query para exibir os participantes de certo curso
por Daniel Neis Araujo -
Olá, Paula
na versão 1.9 do Moodle, a associação de usuários com cursos se dá através da tabela role_assignment.
Dado um id de curso C_ID, a consulta que traz todos os participantes desse curso seria:
Note que esta consulta retorna todos os campos da tabela user, e você provavelmente não precisará deles todos.
O "contextlevel" é definido no arquivo lib/accesslib.php por volta da linha 140:
// context definitions
define('CONTEXT_SYSTEM', 10);
define('CONTEXT_USER', 30);
define('CONTEXT_COURSECAT', 40);
define('CONTEXT_COURSE', 50);
define('CONTEXT_MODULE', 70);
define('CONTEXT_BLOCK', 80);
Atenciosamente,
Daniel
na versão 1.9 do Moodle, a associação de usuários com cursos se dá através da tabela role_assignment.
Dado um id de curso C_ID, a consulta que traz todos os participantes desse curso seria:
SELECT u.* FROM user u JOIN role_assignments ra ON ra.userid = u.id JOIN context c ON c.id = ra.contextid WHERE c.contextlevel = 50 AND c.instanceid = C_ID AND u.deleted = 0
Note que esta consulta retorna todos os campos da tabela user, e você provavelmente não precisará deles todos.
O "contextlevel" é definido no arquivo lib/accesslib.php por volta da linha 140:
// context definitions
define('CONTEXT_SYSTEM', 10);
define('CONTEXT_USER', 30);
define('CONTEXT_COURSECAT', 40);
define('CONTEXT_COURSE', 50);
define('CONTEXT_MODULE', 70);
define('CONTEXT_BLOCK', 80);
Atenciosamente,
Daniel
Em resposta à Daniel Neis Araujo
Re: Query para exibir os participantes de certo curso
por Paula Marin Leite -
Obrigada, Daniel!
Em resposta à Daniel Neis Araujo
Re: Query para exibir os participantes de certo curso
por Thiago Mendes -
muito bom daniel .....
mas se no meu caso eu tenho a categoria 'curso extensão' e dentro dela eu tenho tres cursos 'curso A', 'curso B' e 'curso C' usando esta mesma query eu consigo uma lista com os alunos da categoria extensão...
resumindo em vez de pesquisar pelo id do curso tem como pesuisar pelo id da categoria que os cursos pertencem???
mas se no meu caso eu tenho a categoria 'curso extensão' e dentro dela eu tenho tres cursos 'curso A', 'curso B' e 'curso C' usando esta mesma query eu consigo uma lista com os alunos da categoria extensão...
resumindo em vez de pesquisar pelo id do curso tem como pesuisar pelo id da categoria que os cursos pertencem???
Em resposta à Thiago Mendes
Re: Query para exibir os participantes de certo curso
por Daniel Neis Araujo -
Olá, Thiago
basta alterar o contextlevel para o de categorias e utilizar o id da categoria ao invés do id do curso.
Abraço,
Daniel
basta alterar o contextlevel para o de categorias e utilizar o id da categoria ao invés do id do curso.
Abraço,
Daniel
Em resposta à Daniel Neis Araujo
Re: Query para exibir os participantes de certo curso
por Thiago Mendes -
justamente, fiz isso mas quando executo retorna um conjunto vazio
Em resposta à Thiago Mendes
Re: Query para exibir os participantes de certo curso
por Daniel Neis Araujo -
Olá, Thiago
ao trocar o context level pelo da categoria, a consulta retornará as pessoas que estão inscritas na categoria, o que no seu caso realmente deve ser um conjunto vazio.
O que você pode fazer é manter o contextlevel como o do curso, fazer mais um join com a tabela course e filtrar course.categoryid = id_da_categoria_em_questão. Talvez isso funcione do jeito que você quer.
Outra possibilidade é procurar alguma função em lib/accesslib.php que faça a busca em todos os contextos "do curso pra cima", pois na consulta acima, caso um curso esteja numa subcategoria da que você especificou, ele não será mostrado.
Abraço,
Daniel
ao trocar o context level pelo da categoria, a consulta retornará as pessoas que estão inscritas na categoria, o que no seu caso realmente deve ser um conjunto vazio.
O que você pode fazer é manter o contextlevel como o do curso, fazer mais um join com a tabela course e filtrar course.categoryid = id_da_categoria_em_questão. Talvez isso funcione do jeito que você quer.
Outra possibilidade é procurar alguma função em lib/accesslib.php que faça a busca em todos os contextos "do curso pra cima", pois na consulta acima, caso um curso esteja numa subcategoria da que você especificou, ele não será mostrado.
Abraço,
Daniel
Em resposta à Daniel Neis Araujo
Re: Query para exibir os participantes de certo curso
por André Gonzaga -
Olá Daniel,
Muito boa a sua explicação. Parabéns.
Estou com a seguinte dúvida. Quero selecionar as turmas de alguns cursos. Qual tabela que armazena as informações das turmas dos cursos?
Procurei no forum Geral do Moodle e aqui no banco de dados, mas não consegui achar uma relação.
Obrigado!
A tabela que armazena as informações das turmas é a mdl_groups, a que armazena os alunos das turmas é a mdl_groups_members.
[]s.
Brigado Heitor. É essa mesma.
abraços!
Não por isso.
Vamos compartilhar conhecimento .
Abraços