Development:Novo módulo
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.
- http://phpdocs.moodle.org/ - Trata-se da documentação das funções internas do Moodle geradas pelo phpdocumentor.