Plugin de inscrição do Moodle que matricula usuários em cursos — e cria os agrupamentos e grupos correspondentes — a partir dos relationships definidos pelo plugin local_relationship.
Adaptado de enrol_cohort. Cada instância liga um curso a um relationship; a partir daí, a sincronização cuida de matrículas, papéis, grupos e membros automaticamente.
- Moodle com versão mínima
2013110500(declarado emversion.php). - Plugin
local_relationshipinstalado (versão mínima2026052202). - Acesso ao usuário do servidor web (
www-dataou equivalente) para rodar o sync via CLI.
- Copie este diretório para
enrol/relationship/dentro da raiz do Moodle. - Acesse Administração do site → Notificações para que o Moodle execute o registro do plugin.
- Habilite o plugin em Administração do site → Plugins → Inscrições → Gerenciar plugins de inscrição.
Via Composer (a partir de composer.json):
composer require moodle-ufsc/enrol_relationship| Capacidade | Onde se aplica | Para quê |
|---|---|---|
enrol/relationship:config |
Curso | Criar, editar e excluir instâncias do plugin no curso. |
enrol/relationship:unenrol |
Curso | Remover manualmente um usuário matriculado por este plugin. |
local/relationship:view |
Contexto do relationship | Necessária para que o relationship apareça no formulário de criação. |
moodle/course:managegroups |
Curso | Sem ela, só o modo "somente usuários" fica disponível no formulário. |
- No curso, vá em Participantes → Métodos de inscrição (ou Usuários → Métodos de inscrição).
- Em "Adicionar método", selecione Relationship.
- Preencha:
- Nome personalizado da instância (opcional).
- Habilitado:
Sim/Não. - Relationship: escolha entre os relationships cujo contexto é pai do curso e nos quais você tem
local/relationship:view. - Tipo de sincronização (veja abaixo).
- Ação ao remover do relationship:
Cancelar inscriçãoouManter inscrição.
| Constante | Valor | Comportamento |
|---|---|---|
RELATIONSHIP_SYNC_USERS_AND_GROUPS |
0 | Padrão. Sincroniza matrículas e grupos. |
RELATIONSHIP_ONLY_SYNC_GROUPS |
1 | Apenas membros de grupo. Os usuários precisam já estar matriculados por outro método; o plugin os adiciona ao grupo correto quando entram. |
RELATIONSHIP_ONLY_SYNC_USERS |
2 | Apenas matrículas e papéis. Nenhum agrupamento ou grupo é criado/mantido. |
ENROL_EXT_REMOVED_UNENROL: cancela a inscrição (ou apenas remove o papel, se o usuário tiver outros papéis atribuídos por este plugin).ENROL_EXT_REMOVED_KEEP: preserva a inscrição mesmo após a remoção do relationship.
O plugin identifica seus próprios objetos pelo campo idnumber:
- Agrupamento:
relationship_{relationshipid} - Grupo:
relationship_{relationshipid}_{relationshipgroupid}
Não edite esses idnumber manualmente — o sync depende deles para reconciliar o estado.
A sincronização roda nos seguintes momentos:
- Eventos do
local_relationship: criação/remoção/atualização de relationships, grupos e membros disparam atualizações incrementais (verdb/events.php). - Tarefa agendada do Moodle: a cada 5 minutos (ver
db/tasks.php), executa o sync completo como rede de segurança. - Salvamento de instância: ao criar ou editar uma instância no formulário, o sync é executado para o curso.
Útil para depuração ou aplicação imediata após mudanças em massa:
sudo -u www-data /usr/bin/php enrol/relationship/cli/sync.phpOpções:
-v,--verbose: imprime cada operação realizada.-h,--help: ajuda.
O comando deve ser executado a partir da raiz do Moodle e com o usuário do servidor web.
Remova o plugin pela interface administrativa (Plugins → Visão geral). O hook xmldb_enrol_relationship_uninstall (em db/uninstall.php) cuida de excluir todas as instâncias, grupos criados pelo plugin e atribuições de papel marcadas com component = 'enrol_relationship'.
GPL v3 ou posterior — ver cabeçalhos dos arquivos.