Development:Novo módulo

From MoodleDocs

Como programar / implementar um módulo

Para desenvolver um módulo para o Moodle existem passos e regras que necessitam ser respeitadas de forma a que a aplicação reconheça aquele grupo de arquivos como um módulo.


Assim um módulo deve respeitar as seguintes regras:

- Todos os arquivos que compõem o módulo devem estar num diretório com um nome que não deverá conter números ou caracteres especiais e deve ser uma palavra única sem espaços. Esse diretório deverá ficar localizado na pasta /mod do moodle.

- Todos os arquivos de código deverão ter a extensão .php

- Todos os arquivos de modelo deverão ter a extensão .html

- Todos os acessos a base de dados deverão ser feitos usando as funções que constam do arquivo datalib.php existente na pasta /lib do Moodle

- Todos os textos deverão ser manuseados através das funções pré-definidas pelo moodle (get_string() e print_string()). Assim é forçado que parte do código seja standard e facilite a tradução do texto para outras línguas. Estas funções buscam as palavras chave no arquivo de língua localizado no directório /lang do módulo. Este arquivo tem de ter o nome do módulo seguido da extensão .php.

- O nome do módulo é definido no arquivo de língua, atribuíndo o nome desejado à variável modulename. Para definir o plural deve-se atribuir o nome no plural à variável modulenames.

- Cada arquivo de código deve incluir o arquivo config.php do moodle require_once("../../config.php"); necessário para identificação do utilizador através de require_login() e isadmin(), isteacher(), iscreator() ou isstudent().

- Todos os arquivos de ajuda devem ser passíveis de tradução, colocando novos arquivos de ajuda no diretório adequado. Por ex. lang/pt/help

- Todos os textos dentro do Moodle, especialmente aqueles que são provenientes de utilizadores devem ser impressos usando a função format_text(). Isto assegura que o texto está filtrado e devidamente limpo.


Além disso os seguintes arquivos são obrigatórios:

mod.html – um formulário inicial que será apresentado no moodle, serve para criar e modificar uma instância (objecto resultante do módulo, ex. inquérito X, inquérito Y, etc.) do módulo.

version.php – indica a versão do módulo e é útil para posteriormente fazer upgrades. Também deve indicar o intervalo de tempo em que o script cron.php do moodle atualiza os dados relativos ao módulo.

icon.gif – pequena imagem representativa do módulo

index.php – página que lista todas as instâncias existentes do módulo

view.php – página que permite ver uma instância em particular

lib.php – Neste arquivo devem estar as seguintes funções (exemplo para um módulo chamado modulo):


Acrescenta-se ainda que também os seguintes métodos são de implementação obrigatória:

modulo_add_instance() – código para adicionar uma nova instância

modulo_update_instance() – código para actualizar uma instância

modulo_delete_instance() – código para apagar uma instância

modulo_user_outline() – código que lista resumo sobre o utilizador

modulo_user_complete() – código que fornece toda a informação do utilizador


Se o módulo necessitar de utilizar com uma base de dados, deve existir um directório db/ dentro do directório do módulo com um arquivo mysql.php e/ou postgres.php e também um arquivo mysql.sql e/ou postgres.sql consoante o SGBD sobre o qual a aplicação Moodle está a funcionar.

o arquivo .php é utilizado para fazer actualizações na base de dados para a eventualidade de já existir uma versão anterior do mesmo módulo instalada no sistema.

o arquivo .sql consiste nas instruções SQL que vão criar as tabelas na base de dados que o módulo irá usar. Todas as tabelas deverão ter como início do nome prefix_ seguido de um nome. O valor de prefix é depois atribuído pelo Moodle aquando da execução do código SQL.


A tabela principal devera ter o mesmo nome que o módulo (ex: prefix_modulo) e deve conter no mínimo os seguintes campos:

id – INT 10 autoincremental como indice primário

course – com o id do curso à qual a instância pertence

name – o nome completo de cada instância do módulo


As outras tabelas devem ser nomeadas seguindo a regra prefix_modulo_nome. Após cumprir todos estes passos, passa-se então à restante implementação do módulo.



Informação Adicional:

  • http://download.moodle.org/plugins/mod/NEWMODULE.zip - Trata-se de um "esqueleto" para um módulo, e pode ser servir de base para a implementação de novos módulos para o Moodle. Este foi desenvolvido pelos programadores do Moodle, sendo que não assumimos qualquer responsabilidade por qualquer erro que o mesmo possa conter. Os ficheiros de código estão comentados em inglês e não são da nossa autoria.