Desenvolvimento para Moodle
Desenvolvimento de Plugin de
Relatório para Moodle
Lino Vaz Moniz
[email protected]
http://www.badiu.net/
Moodle Moot 2014
Sumário
 Tipos de plugin
 Estrutura básica de um plugin de relatório
 Instalação do plugin
 Cabeçalho e Rodapé do Thema
 Listar usuário
 Formulário de filtro de usuário
Tipos de Módulo/Plugin
Matrícula
moodle/enrol
Autenticação
moodle/auth
Relatório do curso
moodle/course/reporter
Relatório de nota
moodle/grade/repórter
Relatório no contexto do sistema
moodle/admin/report (até moodle 2.1)
moodle/report (a partir de moodle 2.2)
Exportação de nota
moodle /grade/export
Tema (interface gráfica)
moodle/theme
Formato de curso
moodle/course/format
Tipos de Módulo/Plugin
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
Banco de Dados do Moodle
Estrutura Básica do Plugin
badiu
lang/en/report_badiu.php
settings.php
version.php
index.php
lang/en/report_badiu.php
?PHP
<
$string['pluginname']='Badiu';
$string['alou']='Alou só alegria!';
?>
settings.php
<?php

defined('MOODLE_INTERNAL') || die;
defined('MOODLE_INTERNAL') || die;
$ADMIN->add(
'reports',
new admin_externalpage(
'badiu',
get_string('pluginname', 'report_badiu'),
"$CFG->wwwroot/report/badiu/index.php“
)
);
$settings = null;
?>
version.php
<?PHP

defined('MOODLE_INTERNAL') || die;
$plugin->version = 2014052500;
$plugin->requires = 2012112900;
$plugin->component = 'report_badiu';
?>
index.php
<?php

require("../../config.php");
echo get_string('alou', 'report_badiu');
?>
Instalação
Local:

MOODLE_DIR_INSTALACAO/report
Finalizar Instalação

Acessar o Plugin

Página Principal

Adicionar Cabeçalho e Rodapé do Thema
<?php
require("../../config.php");
//Cabeçalho do thema
$context = get_context_instance(CONTEXT_SYSTEM ,1);
$PAGE->set_context($context);
$PAGE->set_url('/report/badiu/index.php');
$PAGE->navbar->add(get_string('pluginname','report_badiu'),
new moodle_url("$CFG->httpswwwroot/report/badiu/index.php"));
$PAGE->navbar->add(get_string('lista_usuario','report_badiu'));
$PAGE->set_title(get_string('lista_usuario','report_badiu'));
$PAGE->set_pagelayout('report');
$PAGE->set_heading(get_string('lista_usuario','report_badiu'));
//imprimir cabeçalho
echo $OUTPUT->header();
echo get_string('alou', 'report_badiu');
//imprimir rodapé
echo $OUTPUT->footer();
?>
Aplicação do Cabeçalho e Rodapé

Lista de Usuário
 Adicionar string no pacote de língua
 Extrair lista de usuário do banco de dados
 Imprimir lista de usuário
Lista de Usuário
Adicionar String no Pacote de Língua
$string['id']='ID';
$string['nome']='Nome';
$string['email']='E-mail';
Lista de Usuário
Extrair Lista de Usuário do Banco
function get_usuarios(){
global $DB;
global $CFG;
$sql="SELECT id,firstname,email FROM {$CFG->prefix}user ";
$lista=$DB->get_records_sql($sql);
return $lista;
}
Lista de Usuário
Imprimir Lista de Usuário
function imprimir_usuarios($lista){
$table = new html_table();
$table->head = array(
get_string('id', 'report_badiu'),
get_string('nome', 'report_badiu'),
get_string('email', 'report_badiu')
);
$table->align = array('left', 'left','left');
$table->width = '95%';
$table->class = 'generaltable';
$table->data = array();
foreach ($lista as $usr) {
$table->data[] = array($usr->id,$usr->firstname,$usr->email);
}
echo html_writer::table($table);
Lista de Usuário
Lista de usuário na Página Principal
index.php
//imprimir cabeçalho
echo $OUTPUT->header();
//extrair lista de usuários
$lista=get_usuarios();
//imprimir lista de usuarios
imprimir_usuarios($lista);
//imprimir rodapé
echo $OUTPUT->footer();
Lista de Usuário
Página Principal com a Lista de Usuários
Formulário de Filtro do Usuário
 Adicionar string no pacote de língua
 Criar formulário
 Instanciar formulário
 Capturar parâmetro
 Passar parâmetro para SQL
Formulário de filtro de usuário
Criar Formulário index_form.php
<?php
require_once $CFG->libdir.'/formslib.php';
class usuario_form extends moodleform {
function definition() {
global $param;
$mform =& $this->_form;
$renderer =& $mform->defaultRenderer();
$mform->addElement('header', '',get_string('pesquisar_usr','report_badiu'), '');
$mform->addElement('text', 'nome', get_string('nome','report_badiu'),'size="20"');
$mform->setType('nome', PARAM_TEXT);
$mform->setDefault('nome', $param->nome);
$mform->addElement('text', 'email', get_string('email','report_badiu'),'size="20"');
$mform->setType('nome', PARAM_TEXT);
$mform->setDefault('email', $param->email);
$this->add_action_buttons(true,get_string('pesquisar','report_badiu'));
}
function validation($data, $files) {
$errors = parent::validation($data, $files);
return $errors;
}
} ?>
Formulário de filtro de usuário
Instanciar Formulário
//importar index_form.php
require("$CFG->dirroot/report/badiu/index_form.php");
//instanciar form
$form= new usuario_form();
//imprimir form
$form->display();
Formulário de filtro de usuário
Capturar Parâmetro
function get_form_parametros(){
$param= new object();
$param->nome=optional_param('nome', NULL,PARAM_TEXT);
$param->email=optional_param('email', NULL,PARAM_TEXT);
return $param;
}
Formulário de filtro de usuário
Adicionar Filtro SQL no WHERE
function get_usuarios($param){
global $DB;
global $CFG;
$wsql= get_filtro_sql($param);
$sql="SELECT id,firstname,email
FROM {$CFG->prefix}user
WHERE id > 0 $wsql ";
$lista=$DB->get_records_sql($sql);
return $lista;
}
Formulário de filtro de usuário
Juntar Tudo na Página Principal index.php
//imprimir cabeçalho
echo $OUTPUT->header();
//receber parâmetros do form
$param = get_form_parametros();
//instanciar form
$form= new usuario_form();
//imprimir form
$form->display();
//extrair lista de usuários
$lista=get_usuarios($param);
//imprimir lista de usuarios
imprimir_usuarios($lista);
//imprimir rodapé
echo $OUTPUT->footer();
Formulário de filtro de usuário
Tela com Formulário de Filtro
CÓDIGO FONTE DO PLUGIN BADIU
Compatível com a versão 2.2 ou superior do Moodle
Versão
Descrição
Link
1.0
Estrutura básico do plugin
http://badiu.net/download/badiu/badiu_1.0.zip
1.1
Adiciona cabeçalho e rodapé do
thema
http://badiu.net/download/badiu/badiu_1.1.zip
1.2
Relatório de lista de usuário
cadastrado no Moodle
http://badiu.net/download/badiu/badiu_1.2.zip
1.3
Relatório de lista de usuário
cadastrado no Moodle com
formulário de filtro
http://badiu.net/download/badiu/badiu_1.3.zip
API do Moodle
API Usado
Banco de dados
http://docs.moodle.org/dev/Data_manipulation_API
Formulário
http://docs.moodle.org/dev/Form_API
String
http://docs.moodle.org/dev/String_API
Thema
http://docs.moodle.org/19/en/Theme_basics
Lino Vaz Moniz
Telefone
(61) 9937-8258
E-mail
[email protected]
http://www.badiu.net
Skype
badiu.net
Download

Lista de Usuário Imprimir Lista de Usuário