quarta-feira, 18 de julho de 2012

Arquitetura do Sistema Moodle

    Moodle é um framework de desenvolvimento PHP. A sua arquitetura de organização e sistematização de dados é centralizada em curso, ou seja, na sala de aula virtual.
    A arquitetura da Plataforma Moodle é complexa. Para explicá-la de uma forma mais simples, vamos explorar a relação entre três elementos:
  •    Material didático;
  •    Curso;
  •    Matrícula.
Material didático
    Material didático é o conteúdo do curso. São textos, arquivos, imagens, vídeos, recursos de comunicação síncrona / assíncrona, questionários etc. No ambiente do curso do Moodle, há um sistema de editoração de conteúdo sistematizado em recursos e atividades. Cada recurso e atividade é gerenciado por um módulo específico. Por exemplo, para criar um questionário, será usado o módulo quiz. Para criar um texto, será usado o módulo page. O material didático é um item dependente do curso. Este só pode existir se estiver vinculado a um curso. Isso significa que os módulos de recursos e atividades do Moodle só podem ser instanciados dentro do ambiente do curso.

Curso
    O curso é a sala de aula virtual. É um espaço de publicação do material didático. O curso é organizado em categorias. Uma categoria pode ter vários níveis de subcategoria. Um curso deve ser vinculado a uma determinada categoria. Da mesma forma, uma atividade deve ser vinculada a um curso. Nessa estrutura de organização, há três níveis:

 1.  Categoria de curso
     1.1 Curso
        1.1.1 Atividades (material didático)

    A categoria ocupa o nível mais alto na hierarquia e a atividade o nível mais baixo. A categoria serve para sistematizar a oferta de curso. Em cada curso, há um conjunto de recursos e atividades que compõe o material didático.

Matrícula
    Matrícula é o vínculo de um usuário cadastrado na base do Moodle a um determinado curso. Um usuário pode ser vinculado a mais de um curso. Para efetuar a matrícula, é necessário definir o perfil. Pode ser aluno, tutor, professor etc. O perfil define a permissão do usuário no ambiente do curso. A matrícula pode ser efetuada em nível do curso, categoria de curso ou do sistema. A matrícula no contexto do sistema possibilita acesso a todos os cursos cadastrados do Moodle. Já no contexto da categoria de curso, dá acesso apenas aos cursos daquela categoria.
    O usuário matriculado no curso terá acesso a todas as atividades criadas dentro do curso. Quando o usuário realiza uma atividade, como postar uma mensagem no fórum, a postagem é vinculada à instância do usuário e não à da matrícula. Isso significa que os módulos de atividades são vinculados ao usuário e não à matrícula. O usuário só poderá ser instanciado na atividade se estiver matriculado no ambiente do curso ao qual a atividade está vinculada.
    Tendo em conta que o usuário é instanciado no módulo de atividade e não no de matrícula, em caso da exclusão  da matrícula, o histórico de participação do usuário nas atividades do curso não será excluído em efeito cascata. O histórico permanecerá inalterado. Se a matrícula for reativada, o aluno continuará no curso do ponto onde havia parado.
    A matrícula no curso ainda pode ser estruturada em grupo e agrupamento. Após cadastrar um aluno no curso, este pode ser vinculado a um ou mais grupos. Grupos servem para efetuar divisão de turmas dentro do ambiente de um curso. Ainda há possibilidade de criar agrupamentos, grupos de grupos. Um agrupamento pode ter um ou mais grupos de usuários. Serve para isolar uma atividade apenas a determinado grupo de usuários. Geralmente é usado para atividade recuperação que só determinados alunos devem fazer.

    Em suma, a arquitetura do Moodle é focada no ambiente do curso. O material didático é instanciado no curso. A matrícula é instância do usuário no ambiente do curso. O aluno acessa o material didático instanciado no curso. Pelo padrão da arquitetura, não há possibilidade de vincular um material didático ou atividade na instância da matrícula. Ou seja, não é possível alocar uma atividade só para um aluno. Isso gera uma grande restrição para projetos pedagógicos que demandam do professor uma atuação personalizada para cada aluno.
     Essa restrição fica muito evidente quando um aluno reprova em um curso e precisa refazê-lo novamente. Como não é possível rematricular na mesma sala de aula, será necessário replicar o curso numa nova sala de aula e inscrever o aluno.  É comum fazer backup de um curso inteiro e restaurar numa nova instância do curso apenas para um aluno que ficou em recuperação.
    Embora o Moodle seja um framework modularizado, toda sua estrutura seguem as regras da arquitetura.  É possível fazer um módulo que solucione essa restrição. No entanto, isso implica reescrever alguns APIs para atender ao desvio do padrão do framework.

45 comentários:

  1. Boa Tarde,

    Será se poderia me ajudar?
    Como adiciono um campo de BUSCAR CURSO?

    ResponderExcluir
    Respostas
    1. Carlos,
      No Moodle você pode fazer busca de curso pela palavra chave no seguinte url: http://enderecodomoodle/ course/search.php
      Você pode colocar esse link em um bloco HTML para ficar visível na página principal.

      Excluir
  2. Bom dia,

    Meu calendário está metade português, metade inglês. Como faço para ajeitar? Os nomes dos meses e das semanas aparecem em inglês.

    ResponderExcluir
    Respostas
    1. Verifique as seguintes configurações no seu Moodle:

      1) Na configuração de idioma em
      ► Administração / ► Idioma / ► Configurações de idiomas
      veja se a variável lang (Idioma padrão) está definido com o valor Português - Brasil (pt_br). Também observe se a variável locale (locale do site) está definido com o valor pt_BR

      Se essa configuração não estiver ativada, ative-a e verifique se solucionou o problema.

      2) Se a configuração do item anterior não solucionar o problema, verifique a tradução do pacote de língua. Navegue em / ► Administração / ► Idioma / ► Edição de idiomas e selecione e a opção calendar.php e verifique se todas as expressões estão traduzidas.

      Excluir
    2. onde eu acho essa variavel "locale" no moodle 2.1 ?
      já deixei o idioma protugues Brasil (pt_br)

      Excluir
  3. Respostas
    1. Que bom que deu certo. Qual configuração você fez?

      Excluir
    2. Entrei e contato com o Servidor para mudar idioma do SO para pt_BR.utf8

      Excluir
    3. Valeu Eliezer
      Já fica registrada a solução para quem tiver o mesmo problema.

      Excluir
  4. ótima matéria... vou estar seguindo seu blog, aliás já está nos meus favoritos.
    Parabéns !!!

    ResponderExcluir
  5. Badiu, boa tarde.
    Necessito de desabilitar os campos usuário/senha dos alunos quando estes campos já estão preenchidos. Nossos alunos não podem alterar esses 2 campos. Os outros campos que não queremos que ele altere, já encontramos o lugar, mas para esses 2 não. Tem como me ajudar?

    ResponderExcluir
  6. Olá,

    preciso mexer no php que cria o curso em si... Você sabe me dizer qual é o arquivo que devo mexer? Preciso colocar o nome do curso, as capabilities e tudo mais através deste php.

    Abração!

    ResponderExcluir
    Respostas
    1. Para mapear o API do Moodle que cria curso e atribui permissão no curso, sugiro fazer mapeamento de código. A partir daí será possível localizar as funções responsáveis para cada operação. Para fazer o mapeamento, sugiro o seguinte procedimento:

      1- Copie o endereço que aparece no navegador para identificar qual arquivo php e invocado. Por exemplo, ao criar o curso, aparece no navegador o seguinte url: URL_MOODLE/course/edit.php Isso indica que o arquivo edit.php é invocado para processar a lógica.

      2- Abra o arquivo que processa a lógica e analise o código;

      3- Insere dentro do código um comando para imprimir na tela e parar o processamento. Isso possibilita mapear os diferentes pontos de funcionalidade do código. O comando echo “xx”; exit; imprime na tela o string xx e para o processamento. Recomendo fazer isso em um ambiente de teste / desenvolvimento e não de produção.

      4- Além dos passos acima, uma outra alternativa é pesquisar API do Moodle no site http://docs.moodle.org/dev/Core_APIs

      Excluir
  7. Olá,

    Queria transformar um formato de curso, acrescentar um menu com 7 itens , porém está um pouco complicado entender como se faz um formato no Moodle, sei que existem 5 formatos: (Tópicos, Semanas, Social, LAMS, SCORM) eu queria fazer o meu próprio formato baseado em Tópicos, mas primeiro teria que aprender como se faz um formato do Moodle tem alguma sugestão?

    Muito obrigado.

    ResponderExcluir
    Respostas
    1. Daniel,

      O formato de curso é um tipo de plugin. Sendo assim, você pode criar seu próprio formato além dos já existente. O caminho mais fácil para criar um novo formato seria clonar um já existente e alterar o código.

      MOODLE_DIR_INSTALL/course/format é a estrutura de arquivo onde fica os formatos do curso. Dependendo do nível de customização, pode ser necessário conhecimento sobre API do Moodle e estrutura de organização de tópicos e atividades no banco de dados.

      Excluir
  8. Bom dia, Gostaria de saber se existe alguma maneira de bloquear os modulos e ir desbloqueando na medida em que o anterior for completado. Eu trabalho com videos e gostaria que o modulo 2 desbloqueasse apenas quando o primeiro módulo (que são 2 vídeos) fossem completados. Bom dia e obrigado.

    ResponderExcluir
    Respostas
    1. Eu também estou tendo este outro problema. Gostaria de bloquear o acesso do usuário em mais computadores com a mesma conta, Exemplo. Usuário1 tem a Conta1 então o usuário1 empresta sua conta pra um amigo(que chamaremos de usuário2), então usuário1 e usuário2 conseguem assistir ao mesmo tempo os vídeos e o conteúdo do curso. Como eu poderia bloquear isso ? Obrigado e bom dia.

      Excluir
    2. Dê uma olhada nesse post http://moodleeduc.blogspot.com.br/2011/05/atividade-condicionada-no-moodle.html

      Explica como configurar atividade com base em pré-requisito.

      Excluir
    3. Para bloquear acesso para que o mesmo login e senha não seja usado simultaneamente, ou seja, por mais uma pessoas, a alternativa que vejo é criar um plugin de autenticação que recuse novo login de um ip deferente caso o mesmo usuário já esteja logado.

      Excluir
    4. Muito obrigado Badiu, mas poderia me clarear a ideia de como criar esse plugin ? Muito obrigado pelo feedback

      Excluir
    5. Para criar um plugin do Moodle, o caminho mais indicado é clonar um plugin que já existe. A partir daí, alterar aregra do código para atender a sua necessidade. Isso requer conhecimento da arquitetura / API do Moodle. Na pasta MOODLE_DIR_INSTALACAO/auth fica os plugins de autenticação. Basta clonar um deles e customizar o código.

      Excluir
    6. Muito obrigado badiu, me ajudou de forma inimaginavel.

      Excluir
  9. Badiu e Amigos,

    tenho a seguinte situação e gostaria de saber se os amigos sabem como proceder.
    O curso que será oferecido através do Moodle terá o seguinte formato: todos os dias alunos serão matriculados e os mesmo terão um prazo em dias (em média 15 dias) para finalizar o curso. Ou seja, o mesmo curso irá iniciar e finalizar em dias diferentes para cada aluno. Não achei prático abrir uma turma para cada dia. Existe alguma outra solução?
    Em resumo, quero que o aluno ao se matricular na turma, sua inscrição automaticamente seja encerrada em 15 dias e ele perca acesso ao SCORM.

    ResponderExcluir
    Respostas
    1. Adeilton,
      Para definir o período da validade da matrícula dos alunos é necessário habilitar no Moodle o período da validade de inscrição. Isso deve ser feita no plugin de inscrição caso estiver usando versão 2.x do Moodle e na config do curso caso estiver usando versão 1.9 do Moodle.

      Excluir
    2. Obrigado pela resposta!
      Indo pelo caminho: Administração do Site > Plugins > Inscrições > Autoinscrição? A questão é que alterando a Duração da Inscrição será aplicado o mesmo número de dias para todos os cursos e aqui tenho vários cursos (7 no momento) teria como fazer individualmente?

      Excluir
    3. Adeiton,

      Para personalizar período da validade de inscrição por curso, siga os seguintes passos:

      Moodle 2.x
      a) Acesse o ambiente do curso
      b) No bloco de administração do curso, navegue em: Usuários/ Métodos de inscrição
      c) Clique no ícone de configuração do plugin de inscrição
      d) Configure o campo Duração da inscrição

      Moodle 1.9.x
      a) Acesse o ambiente do curso
      b) No bloco de administração do curso, clique no link Configurações
      c) Configure o campo Período de validade da inscrição

      Excluir
    4. Perfeito, estava na minha frente e não tinha visto.
      Muito obrigado mais uma vez. \o/

      Estou começando a deixa o moodle aqui do jeito que quero graças as dicas dos blogs Moodle Educ, Moodle SQL, Moodle PHP do Badiu. Como forma de retribuir estou sempre divulgando as blogs onde falo em Adm. de Moodle.

      Um abraço.

      Excluir
  10. Boa tarde Badiu, estou tendo um problema no moodle. Utilizo o UOLHost para instalar o meu Moodle, agora depois de instalado ele só funciona no meu computador se você acessar www.formacaorio.com.br/moodle e logar como visitante verá que o os menus Cursos e páginas do curso assim como calendário não descem ou abrem os submenus nem com conta de administrador isso em outros computadores pois no meu funciona . Outro problema é a centralização do texto do curso está totalmente para a esquerda. Teria como eu modificar isso ? Muito obrigado pela atenção e tenha um bom dia.

    ResponderExcluir
    Respostas
    1. Raphael,

      A questão da formatação e exibição de dados se refere ao thema do Moodle.
      Sugiro você mudar de thema e observar se os problemas continuam. Tente usar o thema padrão do Moodle.

      Se o problema aparece só em um determinado thema, a solução é corrigir esse thema.

      Excluir
    2. Ai é que está eu já modifiquei os themes e em todos ficam assim. E não entendo o pq, Mas e na questão dos menus você teria alguma ideia do que poderia ser ?

      Excluir
    3. Badiu, eu estava verificando o código fonte no site do moodle e existe 2 blocos no meu principal onde aparece o curso. 1 Onde aparece o nome do curso e outro para a descrição do curso. E o da descrição está em baixo do outro bloco que está ocupando a maior parte da tela ( pode verificar se quiser, você entendera melhor ) qual arquivo eu altero para deixar o bloco da descrição por cima ? Obrigado Raphael Barbosa

      Excluir
    4. Raphael,
      Na própria interface dos blocos há um um ícone para mudar o bloco de lugar. Isso aparece quanto a edição do curso ou da página principal for ativada.

      Excluir
    5. Muito obrigado Badiu, Sua ajuda foi muito boa. Muito obrigado mesmo

      Excluir
  11. Erro de permissão:


    IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS permissions are set incorrectly.


    A hipótese que levanto para esse erro é que u usuário sob o qual está rodando o serviço da Web (IIS) ou execução do script php não tem permissão de escrita na pasta MOODLEDATA.
    Sugiro você solicitar um suporte técnico do seu servidor de hospedagem no sentido de verificar se o script PHP executado pelo servidor IIS tem permissão de escrita na pasta definido na variável $CFG->dataroot no arquivo config.php

    ResponderExcluir
  12. Por favor me ajude,

    Sou novo na plataforma MOODLE e anida não consegui aprender muito sobre ela, estou precisando fazer um backup apenas dos cursos e disciplinas, como posso fazer isso?

    ResponderExcluir
    Respostas
    1. Enyo,
      Para você efetuar o backup do curso, siga as seguintes instruções:
      1) Acesse o ambiente do curso com a senha de tutor ou admin;
      2) No bloco de administração do curso, click na opção backup;
      3) Siga os procedimentos e no final será gerado um arquivo zip.

      Excluir
  13. Edmara,
    Quanto ao processo de script para fazer upload de arquivo Moodle, dê uma olhada na especificação desse que deve ajudar:
    http://docs.moodle.org/dev/File_API

    Ainda não tenho nenhum post que mostra como fazer isso.

    Você pode montar código que faça isso automaticamente.

    ResponderExcluir
  14. cara como modifico esta nota de rodapé "Copyright © 2016 - Desenvolvido por xxxxxxx. Fornecido por xxxxx"?

    ResponderExcluir
  15. Badiu

    Segue trecho do seu texto para localização do contexto:
    " A matrícula no curso ainda pode ser estruturada em grupo e agrupamento. Após cadastrar um aluno no curso, este pode ser vinculado a um ou mais grupos. Grupos servem para efetuar divisão de turmas dentro do ambiente de um curso. Ainda há possibilidade de criar agrupamentos, grupos de grupos. Um agrupamento pode ter um ou mais grupos de usuários. Serve para isolar uma atividade apenas a determinado grupo de usuários. Geralmente é usado para atividade recuperação que só determinados alunos devem fazer.

    Em suma, a arquitetura do Moodle é focada no ambiente do curso. O material didático é instanciado no curso. A matrícula é instância do usuário no ambiente do curso. O aluno acessa o material didático instanciado no curso. Pelo padrão da arquitetura, não há possibilidade de vincular um material didático ou atividade na instância da matrícula. Ou seja, não é possível alocar uma atividade só para um aluno. Isso gera uma grande restrição para projetos pedagógicos que demandam do professor uma atuação personalizada para cada aluno.
    Essa restrição fica muito evidente quando um aluno reprova em um curso e precisa refazê-lo novamente. Como não é possível rematricular na mesma sala de aula, será necessário replicar o curso numa nova sala de aula e inscrever o aluno. É comum fazer backup de um curso inteiro e restaurar numa nova instância do curso apenas para um aluno que ficou em recuperação.
    Embora o Moodle seja um framework modularizado, toda sua estrutura seguem as regras da arquitetura. É possível fazer um módulo que solucione essa restrição. No entanto, isso implica reescrever alguns APIs para atender ao desvio do padrão do framework.


    Mais especificamente, referente, ao trecho do último parágrafo do texto acima:

    "É possível fazer um módulo que solucione essa restrição. No entanto, isso implica reescrever alguns APIs para atender ao desvio do padrão do framework."

    Saberias me dizer quais APIS devem ser reescritos? Ou quais devo levar em conta? Pergunto, pois tenho centenas de turmas, as quais, necessitam de acesso ao histórico do ano de 2018.

    ResponderExcluir
  16. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article.
    davv ba 2nd year result | ba 2nd year result rajasthan university | ba 2nd year result mgsu

    ResponderExcluir
  17. Este comentário foi removido pelo autor.

    ResponderExcluir