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
Download

Desenvolvimento para Moodle