Demonstração de Relatórios

31
Desenvolvimento para Moodle Desenvolvimento de Plugin de Relatório para Moodle Lino Vaz Moniz [email protected] http://www.badiu.net/ Moodle Moot 2014

Transcript of Demonstração de Relatórios

Page 1: Demonstração de Relatórios

Desenvolvimento para Moodle

Desenvolvimento de Plugin de Relatório para Moodle

Lino Vaz [email protected]://www.badiu.net/

Moodle Moot 2014

Page 2: Demonstração de Relatórios

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

Page 3: Demonstração de Relatórios

Tipos de Módulo/Plugin

Matrículamoodle/enrolAutenticaçãomoodle/authRelatório do cursomoodle/course/reporterRelatório de notamoodle/grade/repórter

Relatório no contexto do sistemamoodle/admin/report (até moodle 2.1)

moodle/report (a partir de moodle 2.2)

Exportação de notamoodle /grade/exportTema (interface gráfica)moodle/themeFormato de cursomoodle/course/format

Page 4: Demonstração de Relatórios

Tipos de Módulo/Plugin

Tipo de questãomoodle/question/typeAtividademoodle/modCampos para base de dados moodle/mod/data/fieldTipo de Atividade tarefamoodle/mod/assignment/typeRelatório de questionáriomoodle/mod/quiz/reportBlocos moodle/blocksCampo de perfil de usuáriomoodle/user/profile/fieldPlugin deversosmoodle/local

Page 5: Demonstração de Relatórios

Banco de Dados do Moodle

Estrutura Básica do Plugin

badiu lang/en/report_badiu.php

settings.php version.php index.php

Page 6: Demonstração de Relatórios

lang/en/report_badiu.php

<?PHP $string['pluginname']='Badiu';$string['alou']='Alou só alegria!';?>

Page 7: Demonstração de Relatórios

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;?>

Page 8: Demonstração de Relatórios

version.php

<?PHP defined('MOODLE_INTERNAL') || die;

$plugin->version = 2014052500; $plugin->requires = 2012112900; $plugin->component = 'report_badiu';

?>

Page 9: Demonstração de Relatórios

index.php

<?php require("../../config.php");

echo get_string('alou', 'report_badiu'); ?>

Page 10: Demonstração de Relatórios

Instalação

Local:MOODLE_DIR_INSTALACAO/report

Page 11: Demonstração de Relatórios

Finalizar Instalação

Page 12: Demonstração de Relatórios

Acessar o Plugin

Page 13: Demonstração de Relatórios

Página Principal

Page 14: Demonstração de Relatórios

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();

?>

Page 15: Demonstração de Relatórios

Aplicação do Cabeçalho e Rodapé

Page 16: Demonstração de Relatórios

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

Page 17: Demonstração de Relatórios

Lista de Usuário

Adicionar String no Pacote de Língua

$string['id']='ID';$string['nome']='Nome';$string['email']='E-mail';

Page 18: Demonstração de Relatórios

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; }

Page 19: Demonstração de Relatórios

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);}

Page 20: Demonstração de Relatórios

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();

Page 21: Demonstração de Relatórios

Lista de Usuário

Página Principal com a Lista de Usuários

Page 22: Demonstração de Relató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

Page 23: Demonstração de Relatórios

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; }} ?>

Page 24: Demonstração de Relatórios

Formulário de filtro de usuário

Instanciar Formulário

//importar index_form.phprequire("$CFG->dirroot/report/badiu/index_form.php");

//instanciar form$form= new usuario_form();

//imprimir form $form->display();

Page 25: Demonstração de Relatórios

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;

}

Page 26: Demonstração de Relatórios

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; }

Page 27: Demonstração de Relatórios

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();

Page 28: Demonstração de Relatórios

Formulário de filtro de usuário

Tela com Formulário de Filtro

Page 29: Demonstração de Relatórios

CÓDIGO FONTE DO PLUGIN BADIU

Compatível com a versão 2.2 ou superior do Moodle

Versão Descrição Link1.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

Page 30: Demonstração de Relatórios

API do MoodleAPI Usado

Banco de dadoshttp://docs.moodle.org/dev/Data_manipulation_API

Formuláriohttp://docs.moodle.org/dev/Form_API

Stringhttp://docs.moodle.org/dev/String_API

Themahttp://docs.moodle.org/19/en/Theme_basics

Page 31: Demonstração de Relatórios

Lino Vaz MonizTelefone

(61) 9937-8258

E-mail [email protected]

http://www.badiu.net

Skypebadiu.net