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.
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:
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:
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.
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.
sexta-feira, 13 de julho de 2012
Tornar o Campo Descrição Obrigatório ao Editar Perfil do Usuário pelo Código PHP
O campo descrição é opcional no formulário de cadastro e edição do perfil do usuário. Caso queira torná-lo obrigatório apenas ao editar o perfil, será necessário fazer um hacker no código do core do Moodle. O hacker será desnecessário se houver alguma opção de configuração na interface do Moodle. Pelas pesquisas que fiz, não encontrei essa opção. Então vamos ao hacker. Se você descobrir como fazer essa configuração na interface do Moodle, não esquece de me avisar.
Para obrigar o preenchimento do campo descrição na edição do perifl pelo código PHP, siga os seguintes passos:
1° Passo - Abrir o arquivo editlib.php
Abra em um editor de texto o seguinte arquivo:
$CFG->wwwroot /user/editlib.php
$CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalada.
Para obrigar o preenchimento do campo descrição na edição do perifl pelo código PHP, siga os seguintes passos:
1° Passo - Abrir o arquivo editlib.php
Abra em um editor de texto o seguinte arquivo:
$CFG->wwwroot /user/editlib.php
$CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalada.
2° Passo - Localizar o campo descrição do formulário de cadastro/edição
O código que gera o campo descrição no formulário de cadastro/edição do usuário fica geralmente na linha 230. Na versão 2.2.2 na linha 260.
Moodle 1.9
Na versão 1.9.x, localize a seguinte linha de código:
$mform->setHelpButton('description', array('text', get_string('helptext')));
Abaixo dessa linha insira o seguinte código:
if(optional_param('id', 0,PARAM_INT)>0) $mform->addRule('description', get_string('required'), 'required', null, 'client');
Moodle 2
Na versão 2.x , localize a seguinte linha de código:
$mform->addHelpButton('description_editor', 'userdescription');
Abaixo dessa linha insira o seguinte código:
if(optional_param('id', 0,PARAM_INT)>0) $mform->addRule('description_editor', get_string('required'), 'required', null, 'client');
O código adicionado define a obrigatoriedade do campo descrição apenas se for a edição do perfil e não o cadastro de um novo usuário. A diferença do código da versão 1.9.x para 2.x está apenas no nome do campo que mudou de description para description_editor.
O url de cadastro de usuário e de edição do perfil é o mesmo . A diferença está no parâmetro id.
Url para cadastro de usuário:
$CFG->wwwroot /user/editadvanced.php?id=-1
Url para edição do perfil do usuário:
$CFG->wwwroot /user/editadvanced.php?id=5
O parâmetro -1 indica é o processo de cadastro de um novo usuário. Se o parâmetro id for maior que zero, significa que se trata de edição do usuário. Id maior que zero é o id do usuário na base de dados.
O código if(optional_param('id', 0,PARAM_INT)>0) verifica se o valor do parâmetro id é maior que zero. Se for, a função addRule aplica a obrigatoriedade no campo descrição.
3° Passo - Gravar alteração do arquivo editlib.php
Para que a alteração seja efetivada, grave o arquivo. Feito isso, basta acessar o formulário de edição do perfil para verificar se o campo descrição ficou obrigatório.
Esse procedimento é um hacker do código, ou seja, altera o código padrão do Moodle. Em caso de atualização, esse código será perdido. Para manter, é necessário seguir os mesmos procedimentos após a atualização da versão.
sábado, 2 de junho de 2012
Moodle é um Framework de Ensino Online
A Plataforma Moodle não é apenas um sistema de gestão de ensino online. É também um framework de desenvolvimento PHP.
O ambiente de desenvolvimento do Moodle disponibiliza ao programador PHP um conjunto de diretrizes a serem seguidos e bibliotecas prontas para serem reaproveitadas de forma similar a outros frameworks PHP como Zend Framework e cakePHP.
Diretrizes de desenvolvimento do Moodle
Os diretrizes de desenvolvimento são um conjunto de regras que o programador PHP deve seguir para criar módulos/plugins seguindo o padrão do framework Moodle. Segue um breve resumo das principais diretrizes de desenvolvimento:
O ambiente de desenvolvimento do Moodle disponibiliza ao programador PHP um conjunto de diretrizes a serem seguidos e bibliotecas prontas para serem reaproveitadas de forma similar a outros frameworks PHP como Zend Framework e cakePHP.
Diretrizes de desenvolvimento do Moodle
Os diretrizes de desenvolvimento são um conjunto de regras que o programador PHP deve seguir para criar módulos/plugins seguindo o padrão do framework Moodle. Segue um breve resumo das principais diretrizes de desenvolvimento:
- Estrutura de arquivos – Define a estrutura de organização de pastas e arquivos padrões que os plugins devem ter para que possam ser reconhecidos automaticamente pelo core do sistema Moodle.
- Tabelas da base de dados – Define as especificações para gerar tabelas do banco de dados de forma automática durante a instalação de um plugin.
- Sistema de permissão - Define como os plugins devem tratar as permissões para serem gerenciadas pelo core do Moodle.
- Internacionalização de idiomas – Define como os plugins devem tratar as mensagens e textos, que são exibidos na interface do usuário, para que estes tenham suporte multilíngues e possam ser gerenciados pelo core do Moodle.
- Padronização de nomes – Define as regras sobre o nome do plugin. O nome do plugin funciona como uma chave de identidade para o core do sistema Moodle. A estrutura de alguns arquivos do plugin deve seguir o padrão de nomes para garantir a acoplagem ao core do Moodle.
Biblioteca de código do Moodle
Ao implementar o código no ambiente Moodle, o programador pode reduzir o tempo de trabalho ao reaproveitar as várias bibliotecas disponibilizadas na Plataforma Moodle. A seguir será apresentada alguns APIs acompanhado de uma breve descrição e link que aponta para a documentação oficial do Moodle.
- API do banco de dados - É um conjunto de funções para manipular o acesso ao banco de dados configurado no ambiente Moodle. Para mais detalhes, acesse o link: http://docs.moodle.org/dev/Data_manipulation_API
- API do formulário – O formlib do Moodle possibilita efetuar o gerenciamento de formulários: define tipo de entrada de dado, campos obrigatórios, captura e crítica os dados inseridos. Para mais detalhes, acesse o link: http://docs.moodle.org/dev/Form_API
- API de Acesso- Esse API oferece um conjunto de funções que controla permissão de acesso do usuário no ambiente Moodle. Para mais detalhes, acesse o link: http://docs.moodle.org/dev/Access_API
- API de Autenticação - Esse API tem um conjunto de funções que efetue cadastro e autenticação do usuário. Para mais detalhes, acesse o link: http://docs.moodle.org/dev/Authentication_API
- API do String – Define as regras como estruturar arquivos nos plugins para gerenciar string, ou seja, mensagens e texto exibidos na interface do usuário com suporte multilíngues. Para mais detalhes, acesse o link: http://docs.moodle.org/dev/String_API
- Theme – Define a estrutura de arquivos que o plugin do theme (interface gráfica) deve contemplar. Por outro lado, especifica as funções do core do Moodle para gerenciar theme. Para mais detalhes, acesse o link: http://docs.moodle.org/19/en/Theme_basics
Moodle não é meramente um website. É um ambiente de desenvolvimento com uma arquitetura voltado para o ensino online. É um framework de desenvolvimento modular que oferece ao usuário a possibilidade de adicionar novas funcionalidades. A distribuição padrão do Moodle traz o core do sistema e alguns módulos já acoplados. Há inúmeros outros módulos disponíveis na internet que podem ser baixados e instalados no Moodle.
Do ponto de vista técnico, o Moodle é um ambiente aberto. Pode ser ajustado para atender qualquer demanda pedagógica criando novos módulos/plugins. Para isso, basta seguir as diretrizes de desenvolvimento. Ainda o trabalho pode ser facilitado ao usar os APIs do Moodle.
Do ponto de vista técnico, o Moodle é um ambiente aberto. Pode ser ajustado para atender qualquer demanda pedagógica criando novos módulos/plugins. Para isso, basta seguir as diretrizes de desenvolvimento. Ainda o trabalho pode ser facilitado ao usar os APIs do Moodle.
terça-feira, 15 de maio de 2012
Bloquear Edição do Nome e Sobrenome dos Usuários Cadastrados no Moodle pelo Código PHP
Caso você queira impedir que o nome e o sobrenome dos usuários sejam alterados após o cadastro, é necessário desativar esses campos na configuração do plugin de autenticação ou fazer um hacker no código do core do Moodle. O caminho mais indicado é usar interface de configuração do Moodle. Aqui demonstraremos como fazer isso via código PHP.
Para bloquear a edição dos campos nome e sobrenome no formulário de edição pelo código PHP, siga os seguintes passos:
1° Passo - Abrir o arquivo editlib.php
Abra em um editor de texto o seguinte arquivo:
$CFG->wwwroot /user/editlib.php
$CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalada.
2° Passo - Inserir função de bloqueio edição
Insira o código abaixo em qualquer parte do arquivo editlib.php. Preferencialmente coloque antes da função useredit_shared_definition. Essa função fica geralmente na linha 70 na versão 1.9 e 80 na versão 2.x.
function readonly_form_element(){
if(has_capability('moodle/user:create',
get_context_instance(CONTEXT_SYSTEM))) return ' ';
else return ' READONLY ';
}
Essa função retorna o string READONLY apenas para usuários que não têm permissão de cadastrar usuário. O perfil de aluno e tutor não tem essa permissão. Já o perfil Administrador tem. O string READONLY é um código HTML que impede o campo do formulário de ser editado.
3° Passo - Localizar o campo nome e sobrenome do formulário de cadastro/edição
O código que gera campo de nome e sobrenome no formulário de cadastro/edição do usuário fica dentro da função useredit_shared_definition. Nessa função, localize os seguintes trechos do código:
if (fullname($nameordercheck) == 'b a' ) { // See MDL-4325
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"');
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');
} else {
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"');
}
4° Passo - Desativar a edição dos campos nome o sobrenome
No final de cada linha de código que começa com $mform->addElement... adicione a função readonly_form_element()definida no passo 2. Feito isso, o trecho do código deve ficar assim:
if (fullname($nameordercheck) == 'b a' ) { // See MDL-4325
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"'.readonly_form_element());
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'.readonly_form_element());
} else {
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'.readonly_form_element());
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"'.readonly_form_element());
}
Ao adicionar a função, o HTML gerado terá o código READONLY para os usuários que não têm permissão de adicionar novos usuários no Moodle tais como aluno e tutor. Estes não conseguirão editar os campos nome e sobrenome ao modificar o perfil no Moodle.
4° Passo - Gravar alteração do arquivo editlib.php
Para que a alteração seja efetivada, grave o arquivo. Feito isso, basta acessar o formulário de edição do perfil com a senha do aluno ou do tutor para verificar se os campos nome e sobrenome estão bloqueados para edição. Confirme também que esses mesmos campos não estão bloqueados para edição ao acessar o Moodle com a senha do administrador.
Esse procedimento é um hacker do código, ou seja, altera o código padrão do Moodle. Em caso de atualização, esse código será perdido. Para manter, é necessário seguir os mesmos procedimentos após a atualização da versão.
quinta-feira, 14 de abril de 2011
Extrair o Primeiro Acesso de um Participante no Curso do Moodle com Programação PHP
Este post apresenta a codificação PHP para extrair a data do primeiro acesso de um participante no curso do Moodle. Será apresentado código tanto para versão 1.9 quanto para versão 2.0 do Moodle.
Para explorar um pouco mais o comando SQL que efetiva a consulta do primeiro acesso no banco de dados, consulte o link: http://moodlesql.blogspot.com/2011/04/extrair-o-primeiro-acesso-do-aluno-no.html
A código apresentado a seguir, faz uma consulta da data do primeiro acesso no banco de dados e imprime na tela.
Então vamos iniciar a programação. Siga os passos a seguir.
1° Passo
Importe a biblioteca de funções do Moodle:
require_once("../config.php");
2° Passo
Receba os parâmetro do id do usuário e id do curso passados pelo método GET:
$user=$_GET['user'];
$course=$_GET['course'];
Faça crítica de dados caso os parâmetros não forem passados:
if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}
if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}
3° Passo
Faça a consulta no banco de dados:
$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";
Se estiver usando Moodle 2.0 , use esse código:
$access=$DB->get_record_sql($sql);
Para Moodle 1.9 e demais, use esse código:
$access=get_record_sql($sql);
Já deu para notar que a diferença da versão 1.9 para 2.0 é que as funções de acesso ao banco de dados são invocadas no objeto $DB na versão 2.0. Veja a diferença dos dois códigos destacado pela cor vermelha.
$access=get_record_sql($sql);
$access=$DB->get_record_sql($sql);
4° Passo
Imprima a data na tela:
Verifique se o usuário nunca acessou o curso:
if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}
Caso tenha acessado, informe a data:
echo date("d/m/Y H:i",$access->firstaccess);
Código Completo
<?
require_once("../config.php");
//receber parârmetro
$user=$_GET['user'];
$course=$_GET['course'];
//crítica de dados
if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}
if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}
//extrair primeiro acesso
$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";
//para Moodle 2.0
$access=$DB->get_record_sql($sql);
//para Moodle 1.9
// $access=get_record_sql($sql);
//mensagem caso ainda não tenha acesado
if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}
//imprimir data
echo date("d/m/Y H:i",$access->firstaccess);
?>
require_once("../config.php");
//receber parârmetro
$user=$_GET['user'];
$course=$_GET['course'];
//crítica de dados
if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}
if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}
//extrair primeiro acesso
$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";
//para Moodle 2.0
$access=$DB->get_record_sql($sql);
//para Moodle 1.9
// $access=get_record_sql($sql);
//mensagem caso ainda não tenha acesado
if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}
//imprimir data
echo date("d/m/Y H:i",$access->firstaccess);
?>
Implementar no Moodle
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado user_first_access_course.php dentro dessa pasta. Digite o código php nesse arquivo.
Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/user_first_access_course.php?user=2&course=1
Substitua os parâmetro pelo id do curso e id do usuário pelos dados da sua pesquisa
Download
Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso essa pasta não exista, crie-a. Agora faça o teste.
Esse código foi testado na versão 2.0 e 1.9.11. Pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Lembrando que nas versões inferiores a 2.0, as funções do acesso ao banco de dados não são invocados por meio de um objeto.
segunda-feira, 11 de abril de 2011
GMoodle X-Link – Bloco do Moodle que Gera Link Dinâmico
GMoodle X-Link é um bloco HTML do Moodle que pode gerar link dinâmico. É um bloco normal igual ao bloco HTML. A única diferença é que substitui todas as ocorrências @ID_USR pelo id do usuário logado e @ID_CURSO pelo id do curso em que o usuário está navegando. Gera link com parâmetros personalizados.
Vamos imaginar uma situação em que você precisa gerar um link dentro do ambiente de um curso que aponta para um sistema externo ou mesmo para o próprio Moodle. Um link que deve enviar dois parâmetro:
- id do curso do curso
- id do usuário que está logado
Desse modo, o url do link será:
http://www.qualquersite.com.br?user=15&curso=3
http://www.qualquersite.com.br?user=15&curso=3
Nesse exemplo, 15 é id do usuário e 3 é o id do curso. Para tornar esse link dinâmico, substitua o valor dos parâmetros pelo texto especial.
- @ID_USR – para id do usuário
- @ID_CURSO - para id do curso
Aplicando isso no link, o url deverá ficar assim:
http://www.qualquersite.com.br?user=@ID_USR&curso=@ID_CURSO
Assim, esse link será diferente para cada usuário que logar e para cada ambiente do curso em que estiver navegando. Coloque o link no bloco GMoodle X-Link. A programação do bloco substitui o texto especial pelo valor correspondente.
Vamos ver na prática como funciona o bloco GMoodle X-Link. Para isso, vamos fazer um exercício. Como o bloco não faz parte da instalação padrão do Moodle, é necessário instalá-lo. Para isso, siga as instruções no link: http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html
1° Passo – Acesse o Moodle
Logue no Moodle como tutor ou administrador. Acesse o ambiente do curso ou da página principal onde pretende criar o bloco.
2° Passo – Ative o modo de edição
Clique no botão ativar edição na parte superior direito da página. Feito isso, a opção para adicionar o bloco será exibido no lateral da página.

3° Passo – Selecione o bloco GMoodle X-Link
No menu de seleção para adicionar bloco, selecione a opção GMoodle X-Link.
http://www.qualquersite.com.br?user=@ID_USR&curso=@ID_CURSO
Assim, esse link será diferente para cada usuário que logar e para cada ambiente do curso em que estiver navegando. Coloque o link no bloco GMoodle X-Link. A programação do bloco substitui o texto especial pelo valor correspondente.
Vamos ver na prática como funciona o bloco GMoodle X-Link. Para isso, vamos fazer um exercício. Como o bloco não faz parte da instalação padrão do Moodle, é necessário instalá-lo. Para isso, siga as instruções no link: http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html
1° Passo – Acesse o Moodle
Logue no Moodle como tutor ou administrador. Acesse o ambiente do curso ou da página principal onde pretende criar o bloco.
2° Passo – Ative o modo de edição
Clique no botão ativar edição na parte superior direito da página. Feito isso, a opção para adicionar o bloco será exibido no lateral da página.

3° Passo – Selecione o bloco GMoodle X-Link
No menu de seleção para adicionar bloco, selecione a opção GMoodle X-Link.
Ao selecionar, será adicionada uma instância do bloco na página.
Se essa opção não aparecer, significa GMoodle X-Link não foi instalado ainda. Neste caso, siga as instruções de instalação no link: http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html
4° Passo – Adicionar conteúdo no bloco
Clique no ícone de edição do bloco.
Feito isso, será exibido o formulário de edição de conteúdo.
5° Passo – Crie um link
Preencha o formulário com um título qualquer. No conteúdo, coloque qualquer coisa. Nessa demonstração, vamos criar um link.
Digite o texto do link, selecione-o e clique no ícone do link. Feito isso, será aberta uma janela para colocar o URL do link.
6° Passo – Coloque URL do link
Coloque o URL com texto especial no valor do parâmetro como mostra a figura abaixo.
Você pode passar ambos os parâmetros ou apenas um. O texto especial será substituído pelo valor do id na hora de execução.
7° Passo – Salvar a configuração
Clique no botão Salvar mudanças. Feito isso, será redirecionado ao ambiente do curso. O conteúdo do bloco será exibido. Clique no link e verifique se texto especial foi realmente substituído por id.
Esse bloco é útil para fazer integração do Moodle com sistema externo. O usuário do Moodle pode acessar outro sistema passando o parâmetro id do usuário. Neste caso, a integração deve ter sincronização do usuário. Esse bloco foi projetado pela empresa Badiu para os usuários do Moodle (tutor, aluno , coordenador, administrador etc.) acessarem relatórios gerenciais do Moodle no sistema GMoodle.
Assinar:
Postagens (Atom)



