API de serviço web¶
tool_painelava registra uma única função no subsistema nativo de web services do Moodle:
tool_painelava_get_user_courses, implementada em
classes/external/get_user_courses.php e registrada em db/services.php.
Registro do serviço¶
Propriedade |
Valor |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Parâmetros¶
Parâmetro |
Tipo |
Padrão |
Descrição |
|---|---|---|---|
|
|
|
ID do usuário alvo. |
Permissões¶
Um usuário sempre pode consultar os próprios cursos (
userid == $USER->id, ouuserid = 0).Para consultar cursos de outro usuário é exigida a capacidade
tool/painelava:viewothercoursesno contexto de sistema (require_capability) — por padrão concedida apenas ao papelmanager.O usuário alvo precisa existir e não estar marcado como excluído (
deleted = 0); caso contrário a função lançamoodle_exceptioncom o código de erroinvaliduser.
Classificação dos cursos¶
Para cada curso em que o usuário está matriculado (via enrol_get_users_courses()), o tipo é
resolvido por resolve_course_type() na seguinte ordem de prioridade:
Campo personalizado de curso cujo shortname seja igual a
get_config('tool_painelava', 'coursetypefield')— se ausente, cai para o valor padrão embutido no código'tipo_curso'. O valor do campo é normalizado (minúsculas, acentos tratados) pornormalise_type_value()para um dos tipos conhecidos.Caso o campo não determine o tipo, o shortname do curso é comparado (
stripos, prefixo) contra os prefixos configuráveisprefix_fic(padrãoFIC-),prefix_coordenacao(padrãoCOORD-),prefix_laboratorio(padrãoLAB-) eprefix_modelo(padrãoMODELO-); depois, contraprefix_diario(padrão vazio — portanto normalmente inativo).Se nada bater, o tipo cai em
outros.
Warning
Nenhuma dessas chaves de configuração (coursetypefield, prefix_fic,
prefix_coordenacao, prefix_laboratorio, prefix_modelo, prefix_diario) tem
campo correspondente em settings.php — ver o aviso em Instalação. Na prática, sem
edição manual da tabela config_plugins, a classificação depende inteiramente dos valores
padrão embutidos no código e dos testes em tests/external/external_test.php cobrem
exatamente esses padrões (prefixos FIC-, COORD-, LAB-, MODELO-).
Estrutura de retorno¶
A resposta é um objeto com seis listas, uma por tipo de curso reconhecido:
{
"diario": [...], "fic": [...], "coordenacao": [...],
"laboratorio": [...], "modelo": [...], "outros": [...]
}
Cada item de curso segue esta estrutura:
Campo |
Tipo |
Descrição |
|---|---|---|
|
— |
Campos padrão do registro de curso do Moodle. |
|
|
Um de |
|
|
Shortname do primeiro papel retornado por |
|
lista de objetos |
Todos os papéis do usuário no curso: |
|
lista de objetos |
Todos os campos personalizados de curso: |
Evento disparado¶
Se a configuração enablelogging estiver habilitada (ver aviso acima sobre a ausência dessa
configuração na UI), cada chamada dispara o evento
tool_painelava\event\user_courses_requested (classes/event/user_courses_requested.php),
registrado com crud = 'r' e associado ao usuário que fez a chamada e ao relateduserid
(usuário alvo).
Note
Este é o único evento definido pelo plugin. db/events.php registra a lista de
observers que o plugin escuta de outros componentes — atualmente vazia
($observers = [];).
Testes¶
tests/external/external_test.php cobre, via externallib_advanced_testcase: permissões
(usuário comum não pode ver curso de outro sem a capacidade; manager pode; usuário excluído
lança invaliduser), classificação por prefixo de shortname para cada um dos quatro tipos
configuráveis, agregação de múltiplos cursos e a presença de todas as chaves esperadas na
estrutura de retorno. Execução local (a partir da raiz do Moodle):
vendor/bin/phpunit admin/tool/painelava/tests/external/external_test.php