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