Desenvolvimento para Moodle Desenvolvimento para Moodle Estrutura do banco de dados e principais API Lino Vaz Moniz [email protected] Moodle Moot 2013 Banco de Dados do Moodle Tabelas do Core do Sistema mdl_context mdl_config mdl_modules mdl_capabilities mdl_role mdl_role_capabilities mdl_log Banco de Dados do Moodle Tabelas do Usuário mdl_user mdl_user_preferences mdl_user_info_category mdl_user_info_data mdl_user_info_field Banco de Dados do Moodle Tabelas do Curso mdl_course mdl_course_categories mdl_course_modules mdl_course_sections Banco de Dados do Moodle Tabelas da Matrícula mdl_role_assignments mdl_enrol (versão 2.x) mdl_user_enrolments (versão 2.x) Tabelas de referencia mdl_context mdl_role mdl_user Banco de Dados do Moodle Tabelas de Nota mdl_grade_items mdl_grade_grades mdl_grade_letters Banco de Dados do Moodle Layout da Tabela de Matrícula mdl_role_assignments id bigint(10) NOT NULL AUTO_INCREMENT roleid bigint(10) NOT NULL (FK mdl_role) contextid bigint(10) NOT NULL (FK mdl_context) userid bigint(10) NOT NULL (FK mdl_user) Banco de Dados do Moodle Efetuar Matrícula com Comando SQL Versão 1.9 Recuperar Id do contexto do curso SELECT id FROM mdl_context WHERE contextlevel=50 AND instanceid=? Efetuar matrícula INSERT INTO mdl_role_assignments (roleid,contextid,userid) VALUES (?,?,?) http://moodlesql.blogspot.com.br/2010/07/matricular-usuario-no-curso-do-moodle.html Banco de Dados do Moodle Efetuar Matrícula com Comando SQL Versão 2.x Recuperar identificador método de Inscrição do curso SELECT id FROM mdl_enrol WHERE courseid=? AND enrol='manual' Vincular usuário ao método de inscrição INSERT INTO mdl_user_enrolments (status,enrolid,userid,timestart,timeend,timecreated,timemodified) VALUES (?,?,?,?,?,?,?) Recuperar Id do contexto do curso SELECT id FROM mdl_context WHERE instanceid=? AND contextlevel=50 Efetuar matrícula INSERT INTO mdl_role_assignments (roleid,contextid,userid,timemodified) VALUES (?,?,?,?) http://moodlesql.blogspot.com.br/2010/07/matricular-usuario-no-curso-domoodle.html?showComment=1317436246579#c1869475564775276003 Banco de Dados do Moodle Relatório de Matrícula pelo Comando SQL Perfil (mdl_role) 1 – Administrator 2 -Course creator 3 –Teacher (Tutor) 4 - Non-editing teacher 5 – Student (Aluno) 6 –Guest 7 - Authenticated user SELECT u.id, u.firstname,u.lastname FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=? Banco de Dados do Moodle Tabela de domínio do contexto SISTEMA USUÁRIO CATEGORIA DE CURSO CURSO MÓDULO BLOCO 10 30 40 50 70 80 API do Moodle Principais APIs Banco de dados http://docs.moodle.org/dev/Data_manipulation_API Permissão http://docs.moodle.org/dev/Access_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 Autenticação http://docs.moodle.org/dev/Authentication_API http://moodlephp.blogspot.com.br/2012/06/moodle-e-um-framework-de-ensino-online.html API do Moodle Importar Bibliotecas do Core require_once("MOODLE_DIR_INSTALL/config.php"); http://moodlephp.blogspot.com.br/2010/11/usar-bibliotecasde-funcoes-do-sistema.html API do Moodle Variáveis Globais require_once("MOODLE_DIR_INSTALL/config.php"); global $CFG; global $DB; ( a partir da versão 2.x) global $COURSE; global $USER; function get_course(){ global $CFG; global $DB; //só aplica na versão 2.x global $COURSE; $sql ="SELECT id,fullname,shortname FROM {$CFG->prefix}course WHERE id =$COURSE->id"; return $DB->get_record_sql($sql);// para versão 2.x //return get_record_sql($sql);// para versão 1.9 } API do Moodle Manipulação de Banco de Dados Manipular Tabela mdl_teste //adicionar registro function save($dto) { global $CFG; global $DB; return $DB->insert_record('teste', $dto); } //alterar registro function edit($dto) { global $CFG; global $DB; return $DB->update_record('teste', $dto); } //excluir registro function delete_by_id($id) { global $CFG; global $DB; return $DB->delete_records_select('teste', "id=$id"); } Arquitetura Modular do Moodle 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/reporter Relatório no contexto do sistema moodle/admin/report / moodle/report Exportação de nota moodle /grade/export Tema (interface gráfica) moodle/theme Formato de curso moodle/course/format Arquitetura Modular do Moodle 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 Programar para Moodle Diretrizes de Desenvolvimento Usar API do Moodle Evitar hacker do código Implementar/alterar funcionalidades através de plugin Usar sistema de permissão do Moodle Seguir padronização de nomes Seguir padrão de Internacionalização de idioma Alterar interface gráfica usando plugin do thema Conheça meus Blogs Moodle SQL - Para Desenvolvedor e Programador do Moodle http://moodlesql.blogspot.com Moodle PHP - Para Programador do Moodle http://moodlephp.blogspot.com Moodle Educ - Para Administrador e Tutor do Moodle http://moodleeduc.blogspot.com Moodle DI - Para Professor e Pesquisador (reflexões acadêmicas) http://moodledi.blogspot.com Badiu GMoodle – Sistema de Gestão do Moodle http://gmoodle.blogspot.com.br/ Lino Vaz Moniz Telefone (61) 9937-8258 E-mail [email protected] Skype badiu.net