A Plataforma Moodle tem uma excelente biblioteca. Trata-se de um conjunto de funções que compõe o core do sistema. Essas funções são utilizadas para implementar os módulos que compõem a Plataforma.
O trabalho de desenvolvimento e customização do Moodle se torna muito mais rápido e fácil com o uso dessa biblioteca.
Toda biblioteca fica organizada na pasta lib no endereço raiz da instalação do Moodle. Para torná-la disponível basta incluir o arquivo config.php no início do arquivo de programação php com o seguinte comando:
require_once("config.php");
Exercício
Para não ficar só na conversa, vamos fazer um exercício.
1° Passo
Crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Dentro dessa pasta, crie um arquivo testelib.php. A pasta _extra será o local parta testes todos os exercícios de programação do Moodle. O nome _extra é para não confundir com as outras pastas que são padrões do Moodle.
2° Passo
Coloque o seguinte código no arquivo:
<?php
require_once("../config.php");
$sql="SELECT COUNT(id) AS cont FROM {$CFG->prefix}user ";
$usr=get_record_sql($sql);
echo $usr->cont;
?>
3° Passo
Execucte o arquivo no navegador chamando pelo http://[endereço do moodle]/testelib.php
Feito isso, será impresso na tela a quantidade de usuários cadastrados na tabela usuário do Moodle.
Decifrar o Código
Viu como é moleza. Agora vamos decifrar o código:
Primeira Linha de Código
require_once("config.php");
Esse comando importa as bibliotecas de função e inicializa as variáveis globais e sessão do Moodle.
Observação
Você já deve ter notado que os arquivos config.php e testelib.php estão na mesma pasta, ou seja, a raiz da instalação do Moodle. Caso você crie uma subpasta teste para colocar o arquivo testelib.php, altere o endereço de importação do arquivo config.php para require_once("../config.php");
Segunda Linha de Código
$sql="SELECT COUNT(id) AS cont FROM {$CFG->prefix}user ";
Esse comando monta SQL para consulta no banco de dados. O comando {$CFG->prefix} indica o prefixo da tabela.
Terceira Linha de Código
$usr=get_record_sql($sql);
Esse linha de comando executa a consulta no banco. Você deve estar perguntando: - Uai cadê o código que faz conexão como o banco? Bem, para sua surpresa, a biblioteca do Moodle cuida disso. Cabe você cuidar apenas da lógica de programação.
Quarta Linha de Código
echo $usr->cont;
Esse comando você já está careca de saber que apenas imprime na tela o resultado da consulta feita no banco.
Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download desse exemplo. Descompacte o arquivo testelib.php e coloque na pasta raiz do seu Moodle e bom teste.
Bem, é primeiro teste é o nosso alou mundo de programação do Moodle. Mais novidades virão por aí.
Para não ficar só na conversa, vamos fazer um exercício.
1° Passo
Crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Dentro dessa pasta, crie um arquivo testelib.php. A pasta _extra será o local parta testes todos os exercícios de programação do Moodle. O nome _extra é para não confundir com as outras pastas que são padrões do Moodle.
2° Passo
Coloque o seguinte código no arquivo:
<?php
require_once("../config.php");
$sql="SELECT COUNT(id) AS cont FROM {$CFG->prefix}user ";
$usr=get_record_sql($sql);
echo $usr->cont;
?>
3° Passo
Execucte o arquivo no navegador chamando pelo http://[endereço do moodle]/testelib.php
Feito isso, será impresso na tela a quantidade de usuários cadastrados na tabela usuário do Moodle.
Decifrar o Código
Viu como é moleza. Agora vamos decifrar o código:
Primeira Linha de Código
require_once("config.php");
Esse comando importa as bibliotecas de função e inicializa as variáveis globais e sessão do Moodle.
Observação
Você já deve ter notado que os arquivos config.php e testelib.php estão na mesma pasta, ou seja, a raiz da instalação do Moodle. Caso você crie uma subpasta teste para colocar o arquivo testelib.php, altere o endereço de importação do arquivo config.php para require_once("../config.php");
Segunda Linha de Código
$sql="SELECT COUNT(id) AS cont FROM {$CFG->prefix}user ";
Esse comando monta SQL para consulta no banco de dados. O comando {$CFG->prefix} indica o prefixo da tabela.
Terceira Linha de Código
$usr=get_record_sql($sql);
Esse linha de comando executa a consulta no banco. Você deve estar perguntando: - Uai cadê o código que faz conexão como o banco? Bem, para sua surpresa, a biblioteca do Moodle cuida disso. Cabe você cuidar apenas da lógica de programação.
Quarta Linha de Código
echo $usr->cont;
Esse comando você já está careca de saber que apenas imprime na tela o resultado da consulta feita no banco.
Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download desse exemplo. Descompacte o arquivo testelib.php e coloque na pasta raiz do seu Moodle e bom teste.
Bem, é primeiro teste é o nosso alou mundo de programação do Moodle. Mais novidades virão por aí.
Muito interessante.;D
ResponderExcluirPoste mais novidades
Bem Bacana,
ResponderExcluirEstou pesquisando o funcionamento do Moodle, para fazer uma customização, já fiz até algumas coisas de pequena monta. No futuro podemos até trocar umas figurinhas...
CTRL + D =]
Anthony,
ResponderExcluirSerá bacana. Atualmente estou desenvolvimento alguns plugins do Moodle. Podemos compartilhar experiências.
Olá Anthony e Badiu, também estou pensando em desenvolver um plugin para o moodle, podemos trocar informações? Grato
ResponderExcluirQue tipo de plugin você pensa desenvolver?
ResponderExcluirOlá amigo, também preciso desenvolver um plugin para o moodle. Poderia me ajudar por favor?
ResponderExcluirEstou fazendo isso como meu trabalho de conclusão de curso, estou começando a entender o Moodle agora e preciso terminar em 2 meses.
Se possível, aguardo contato.
Poderia me deixar um e-mail ou msn para contato?
Eu agradeço desde já.
No Moodle há vários tipos de plugin. Que tipo de plugin você quer fazer?
ExcluirEntão, o propósito do meu plugin é criar "comunidades" mais voltadas para agrupar conhecimento, exemplo, uma comunidade de PHP, em que os alunos, independente do campus, podem entrar e se registrar para trocar conhecimento.
ExcluirE eu também terei que criar módulos de cadastro e gerencia de projetos de pesquisa e projetos de extensão. É isso, basicamente. Será que poderia me ajudar?
Para desenvolver para o ambiene do Moodle, o primeiro passo é definir qual tipo de plugin é mais apropriado para o seu projeto.
ExcluirPara comunidade me parece que plugin de atividade do curso é mais apropriado. O problema é que esse tipo de plugin fica muito atrelado ao curso. Talvez a solução ideal seria desenvolver um plugin local. A mesma sugestão se aplica ao projeto de pesquisa.
O plugin local é mais apropriado para versão 2 que é habilitado para acomodar vários plugins locais. Já a versão 1.9 só possibilita ter um plugin local.
O framework do Moodle é muito voltado para o ambiente de curso. Bem, faça uma pesquisa sobre os tipos de plugins do Moodle para ver qual é mais apropriado. Uma vez definido, crie seu plugin, clonando um do mesmo tipo que já existe e altere a codificação.
Boa noite... Tmb estou tentando desenvolver algo para o moodle como trabalho de conclusão de curso...
ResponderExcluirA idéia era desenvolver um repositório para TCCs, do tipo acesso aberto aos TCCs já concluídos e uma parte fechado somente para alunos que estão desenvolvendo e seus orientadores, estou procurando documentação, vc tem algo a me indicar?
Desde já agradeço
Jose Carlos
o que você poderia me aconselhar?
ExcluirFui recentemente ao PHPnRio e me indicaram esse blog... achei bastante coisa interessante!
José Carlos,
ExcluirVocê pode criar um módulo de atividade do Moodle para gerenciar repositórios de TCCs. Não há uma documentação bem estruturada e detalhada que mostra o passo a passo. Sugiro você consultar o link: http://docs.moodle.org/dev/Activity_modules
obrigado pela resposta... minha idéia inicial seria um sistema externo mas que aproveitasse a estrutura de login do moodle e os perfis de usuários (papéis) já definidos pelo moodle...
ExcluirJose Vieira,
ExcluirSe você precisa reaproveitar a estrutura de login e sistema de permissão do Moodle em um outro sistema, a solução que vejo é acessar o Moodle diretamente na base de dados a partir de outro sisteme. Neste caso, segue o mapa das tabelas que vai precisar acessar:
mdl_user – Armazena login e senha do usuário entre outros dados
mdl_role_assignments – Registra as matriculas nos contextos (sistema, categoria de curso, curso …) o as permissões estão vinculadas a matrícula.
mdl_role - Registra os papeis
Oi Badiu, tem alguma forma simples de imprimir cursos por categoria em php ? na visão do my cursos..
ResponderExcluirLucas,
ExcluirUse a biblioteca do Moodle para montar a lista de cursos por categoria. Para exibir a lista de curso na categoria, ordenando a categoria em forma de árvore, sega os seguintes passos:
1)Importe a o arquivo de configuração require_once("config.php");
2)Use a função make_categories_list com o seguinte código:
$displaylist = array();
$parentlist = array();
make_categories_list($displaylist, $parentlist);
A variável $displaylist retorna um array com id e nome das categorias em forma de árvore separado por barra.
A variável $parentlist retorna um array com id das categorias e id das categorias pai no nível de hierarquia.
Para visualizar isso imprima o resultado na tela com os seguintes comandos:
print_r($displaylist);
print_r($parentlist);
3)Use as as variáveis $displaylis e $parentlist para montar a árvore de hierarquia dos cursos.
Caso queira testar isso, crie um arquivo tree.php e coloque na pasta _extra ou qualquer outra pasta criada dentro da raiz da instalação do Moodle. No arquivo tree.php coloque o seguinte código:
require("../config.php");
$displaylist = array();
$parentlist = array();
make_categories_list($displaylist, $parentlist);
print_r($displaylist);
print_r($parentlist);
Acesse no navegador http://[endereço do moodle]/_extra/tree.php e veja a estrutura de hierarquia das categorias.
Badiu, eu fiz tudo certo, mas não consegui exibir nada, apenas "nao localiza" a página. Não sei se é pq estou testando em um servidor local, ou se é pq minha versão do moodle é a 2.4.1, mas não deu certo. Você poderia me ajudar?.
ResponderExcluirOlá Badiu, a impressão pra mim é essa :
ResponderExcluirArray ( [4] => Categoria A [5] => Categoria B ) Array ( )
tem algum email ou msn ou skype que posso entrar em contato ?
Muito Obrigado !
Lucas,
ExcluirEssa impressão indica que o id da categoria A é 4 e id da Categoria B 5. O segundo array vazio indica que as categorias A e B não estão vinculados a nenhuma categoria pai. Meu e-mail de contato é: linovazmoniz@gmail.com
Olá,
ResponderExcluirEstou tentando executar a query que você passou em um arquivo teste mas está aparecendo tudo em branco como se eu tivesse passado algum código errado para ele, você pode me ajudar?
Espero resposta,
Braz Alves
Se a tela aparece em branco, é sinal que algum erro pode estar ocorrendo. Nessa situação, ative o debug para ver a mensagem de erro. Siga o procedimento no link:
Excluirhttp://moodlephp.blogspot.com.br/2011/03/ativar-exibicao-do-erro-no-moodle.html
Evite ativar debug no moodle de produção. Se tiver aluno online, ele vai ver um monte de sopa de letrinhas na tela.
Boa tarde !
ResponderExcluirEstou realizando o TCC é decidimos implementar o plugin check list do moodle para ser utilizado para dispositivos móveis . Você tem alguma documentação de apoio para identificar quais ferramentas utilizar .? Você já utilizou a tecnologia phonegap ?? . Bom quando possível me retorne .
Agradeço a atenção..
Angela,
ResponderExcluirPara desenvolver app ainda estou pesquisando qual é a melhor ferramenta. A minha tendência atual é usar a linguagem nativa de sistema operacional para tirar maior proveito de cada plataforma móvel. Ainda não tenho uma opinião formada.
Este comentário foi removido pelo autor.
ResponderExcluirOi Badiu,
ResponderExcluirSou iniciante em PHP e Moodle. Fiz o comando no caminho seguinte e ficou em branco:
http://localhost/moodle/_extra/testelib.php
Depois, fiz o debugging e deu o seguinte erro:
Fatal error: Call to undefined function get_record_sql() in C:\xampp\htdocs\moodle\_extra\testelib.php on line 4
Se possível, dê uma força.
Grato
Ribeiro,
ExcluirVocê deve estar usando a versão 2.x do Moodle
Se for, chame as funções do banco usando objeto $DB a função get_record_sql($sql); deve ser alterada para $DB->get_record_sql($sql);
Sim, to usando a última versão disponível no momento (2.8.5).
ExcluirAntes de tudo, obrigado pela ajuda. Vou testar o que voce disse... mas voce recomendaria instalar uma versão mais antiga? Ou alguma leitura de artigo ou livro?
Ribeiro,
ResponderExcluirRecomendo sempre usar a versão mais recente.
Uso sempre como referência o site https://docs.moodle.org/dev/Main_Page
Este comentário foi removido pelo autor.
Excluirfiz o que vc indicou, daí o arquivo ficou assim:
Excluirget_record_sql($sql);
echo $usr->cont;
?>
Porém, quando eu ia executar o http://localhost/moodle/_extra/testelib.php ficava em branco... daí eu fiz o debugging e ia executar no navegador e aparece o seguinte:
Notice: Undefined variable: usr in C:\xampp\htdocs\moodle\_extra\testelib.php on line 5
Notice: Trying to get property of non-object in C:\xampp\htdocs\moodle\_extra\testelib.php on line 5
Aparentemente ele não localizou a variável 'usr', mas eu já lancei um aluno fictício com notas e tudo.
Como disse, meu conhecimento em php é baixo, to começando um curso técnico e to chegando em banco de dados agora. Pode ser uma questão simples, mas estou perdido, Badiu :(
Este comentário foi removido pelo autor.
ResponderExcluirRibeiro,
ExcluirPoste aqui o treco do código que está dando erro para analisar.
Olhando o código, posso ver causa do erro.
Badiu, coloquei o erro acima, é esse aqui:
ResponderExcluirNotice: Undefined variable: usr in C:\xampp\htdocs\moodle\_extra\testelib.php on line 5
Notice: Trying to get property of non-object in C:\xampp\htdocs\moodle\_extra\testelib.php on line 5
Alou Ribeiro,
ExcluirIsso não necessariamente é um erro. O erro é quando aparece fatal error. É difícil analisar assim, sem ver o código. Pode me mandar o código para meu e-mail: linovazmoniz@gmail.com
Este comentário foi removido pelo autor.
ResponderExcluirOpa, tarde galera,recentemente comecei desenvolver um relatório de Log do Moodle,por intervalo de tempo.Gostaria de Help para regra de aceso ao base de dados,segue um exemplos da consulta.
ResponderExcluir$sql = "SELECT ACTION, TARGET, USERID,
TIMECREATED FROM {$CFG->prefix}logstore_standard_log LIMIT 10";
$start_consulta=get_record_sql($sql)or die("Erro da Consulta");
/*$resultado = mysql_query($sql) or die("Erro ao tentar cadastra registro");*/
echo $start_consulta;
Não retorna nada,gostaria de HELP.
Sugiro que faça algumas alterações no código:
ResponderExcluir1) No comando SQL, adicione a coluna id depois de SELECT. Isso garante que todos os registros serão retornados. Deve ficar assim: SELECT id, action ...
2) Teste o comando SQL gerado no terminal do banco como PhpMyAdmin para ter certeza que está funcionando;
3) Como essa consulta retorna mais de um registro, use a função get_records_sql e não get_record_sql