sexta-feira, 6 de dezembro de 2013

Tipos de plugin do Moodle

A tabela abaixo lista os vários tipos de plugin que existem no Moodle.
A coluna local de instalação se refere a pasta do Moodle onde o plugin deve ficar instalado.


Tipo de Plugin Local de Instalação
Matrícula moodle/enrol
Autenticação moodle/auth
Relatório do curso moodle/course/reporter
Relatório de nota moodle/grade/reporter
Relatório no contexto do sistema moodle/admin/report (até versão 2.1)
moodle/report (a partir da verão 2.2)
Exportação de nota moodle /grade/export
Tema (interface gráfica) moodle/theme
Formato de curso moodle/course/format
Tipo de questão moodle/question/type
Atividade moodle/mod
Campos para base de dados moodle/mod/data/field
Tipo de Atividade tarefa moodle/mod/assignment/type
Relatório de questionário moodle/mod/quiz/report
Blocos moodle/blocks
Campo de perfil de usuário moodle/user/profile/field
Plugin deversos moodle/local

quinta-feira, 5 de dezembro de 2013

Diretrizes gerais de desenvolvimento para Mooodle


    Assim como qualquer framework, o Moodle oferece um ambiente de desenvolvimento em que o programador deve seguir um  conjunto de regras para implementar código que seja compatível ou reconhecidos pelo kernel do sistema.  Segue algumas regras básicas. 


1-    Modularização - Para implementar uma nova funcionalidade ou alterar uma já existente sem modificar o código da distribuição padrão do Moodle, crie um novo  módulo ou plugin.

Para cada tipo de funcionalidade há um tipo de plugin do Moodle. Por exemplo, há plugin  para cadastro/autenticação de usuário, matricula no curso, relatório de nota, relatório de curso etc.  A implementação de cata tipo de plugin deve seguir uma regra para se integrar ao sistema do Moodle. A implementação do código fora da estrutura de modularização dificulta ou inviabiliza não só a portabilidade, como também a atualização do Moodle para versão mais recente sem perder o código que implementa as novas funcionalidades. 


2-    Padronização Nomes
  – O framework Moodle  faz integração dos plugins através do nome.  O nome da pasta do plugin é a chave de identificação do plugin no framework. Dois plugin do mesmo tipo não podem ter o mesmo nome, ou seja, não podem ficar na mesma pasta. Cada tipo de plugin tem um local específico que deve ser instalado. Por exemplo, os plugins de matrícula ficam na pasta MOODLE_DIR/enrol. Cada subpasta da pasta enrol representa um plugin. Cada tipo de plugin deve ter uma estrutura de arquivos, classes e funções específicas. Por exemplo, o plugin de matrícula da versão 1.9 deve ter um arquivo enrol.php. Nesse arquivo deve existir uma classe enrolment_plugin_NOME_PASTA_PLUGIN. O nome do plugin deve compor o nome da classe para evitar duplicação de nome da classe. Dentro dessa classe deve existir um conjunto de função já definidas. Desse modo, o framework carrega dinamicamente o plugin e a classe.  Da mesma forma, as tabelas do banco de dados do plugin devem ter o  prefixo do nome do plugin. Isso evita duplicação de nome da tabela. Por outro lado, facilita a identificação das tabelas. 


3-    Permissão  - Para gerenciar as permissões de acesso as funcionalidade de um plugin, é necessário que todas as permissões do plugin sejam definidas no arquivo access.php. Na estrutura de arquivo padrão de qualquer plugin, o arquivo access.php deve ficar dentro da pasta bd. Esse arquivo é carregado automaticamente durante a instalação do plugin. O core do sistema lê as permissões definidas nesse arquivo e alimenta a tabela mdl_capabilities e mdl_role_capabilities


4-    Banco de dados – Para gerar a tabela do banco de dados automaticamente durante o processo de instalação de um plugin, é necessário definir a estrutura da tabela no arquivo install.xml. Esse arquivo deve ficar na pasta db do plugin. O core do moodle faz leitura desse arquivo durante o processo de instalação e gera  a tabela do banco de dados.  


5-    Internacionalização de idioma
– O core do framework Moodle gerencia o pacote de idioma de todos os plugins.  Para isso, é necessário que todas as mensagens  e textos do plugins  sejam definidos no arquivo específico do pacato de idioma. Por padrão em qualquer plugin o pacote de idioma deve ficar na pasta lang.

    Seguir essas regras durante o processo de desenvolvimento para Moodle garante total compatibilidade e portabilidade do código. Por outro lado, a atualização não compromete a customização já feita desde que não haja incompatibilidade do core da versão recente em relação a versão anterior.   Na contramão está o hacker do código que impacta a portabilidade  e a atualização.