Depois de tentar distorcer as funcionalidades do sistema para atender a demandas especificas, em 2015, eu decidi iniciar os estudos sobre desenvolvimento para Moodle. E observo que as versoes mais recentes estao ficando cada vez melhor documentadas e com desenvolvimento mais facil. Entao se voce sabe um pouco de PHP vale a pena tentar. Aqui existem dois caminhos a seguir. Desenvolver um modulo completo do zero ou criar um clone de algum modulo ja existente e fazer modificacoes para que te atenda. Fazer um clone e muito simples, basta copiar o modulo para a pasta de execucao, renomear ele, e alterar o nome dele no clodigo (eu utilizo o Notpad++ para localizar e substituir em lote todas as ocorrencias que o nome do modulo aparece no codigo) e por ultimo trocar o nome do arquivo de linguas. Isso e muito bom para fazer pequenas alteracoes em alguma funcionalidade do sistema e evita modificar a estrutura core. Em um outro momento falarei mais detalhadamente sobre esse metodo. Mas tem alguns momentos que voce precisa desenvolver algo maior, um modulo completamente novo que nao cabe da estrutura padrao. Desde as primeiras versoes do Moodle ja foi lancado um tipo de modulo curinga para o Moodle chamado simplesmente de "Local", ate a versao 2.7 parece que ele nao tinha decolado ainda, mas foram feitas alguns modificacoes importantes na sua API que vem tornando interessante e transforma o Moodle numa forte framework de desenvolvimento. Digo isso pois antes quando voce precisava desenvolver algo diferente era mais facil desenvolver tudo em algum framework externo e integrar de alguma forma com o Moodle. Agora nao, voce pode desenvolver tudo dentro do Moodle mesmo, utilizando a sua API e ainda estendendo e incorporando novas APIs. Eu ate tentei localizar um modelo de Modulo Local para desenvolvimento, mas nao encontrei. Entao, a partir da documentacao oficial (https://docs.moodle.org/dev/Local_plugins), iniciei a desenvolver um projeto aberto com um modelo base para iniciar um projeto qualquer. Voce pode verificar e ate contribuir em: https://github.com/exavier28/localframework Nestepost apresentarei as configuracoes de funcoes do MOODLE para que voce possamelhor gerenciar as permissoes dos usuarios no seu projeto e para que possadefinir o que e onde cada usuario pode ou nao pode fazer. Mas antes da leituradesse post, sugiro a leitura de um outro post Uma geral sobre gestao depermissoes no MOODLE que mostra uma visao geral sobre a gestao de permissoes eapresenta alguns conceitos necessarios para o entendimento sobre permissoes. Segundomoodle.org uma funcao e uma colecao depermissoes que voce pode designar a nivel de sitema ou em contextosespecificos , ou seja, uma funcao e umconjunto de permissoes configuraveis para que um grupo de usuarios possadesempenhar um conjunto de acoes em um contexto do MOODLE, seja esse contextonos niveis de sistema, home page, categoria de cursos, subcategorias de cursos,no curso propriamente dito e no nivelmais baixo que sao os contextos blocos/recursos/atividades. Quandovoce instala o MOODLE ele ja vem com um conjunto de funcoes pre-configuradas,apresentando funcoes de Admin, Criador de Cursos, Professor (editor), Moderador(nao editor), Aluno, Visitante e User Registrado e cada uma destas funcoes vemcom um conjunto de