Vous êtes sur la page 1sur 20

Desenvolvimento para Moodle

Desenvolvimento para Moodle



Estrutura do banco de dados e principais API

Lino Vaz Moniz

linovazmoniz@gmail.com

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 Usurio


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 Matrcula


mdl_role_assignments
mdl_enrol (verso 2.x)
mdl_user_enrolments (verso 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 Matrcula


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 Matrcula com Comando SQL Verso 1.9



Banco de Dados do Moodle
Efetuar Matrcula com Comando SQL Verso 1.9

Recuperar Id do contexto do curso

SELECT id FROM mdl_context WHERE contextlevel=50 AND
instanceid=?

Efetuar matrcula

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 Matrcula com Comando SQL Verso 2.x












Recuperar identificador mtodo de Inscrio do curso
SELECT id FROM mdl_enrol WHERE courseid=? AND enrol='manual'

Vincular usurio ao mtodo de inscrio
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 matrcula
INSERT INTO mdl_role_assignments (roleid,contextid,userid,timemodified)
VALUES (?,?,?,?)

http://moodlesql.blogspot.com.br/2010/07/matricular-usuario-no-curso-do-moodle.html?
showComment=1317436246579#c1869475564775276003








Banco de Dados do Moodle
Relatrio de Matrcula pelo Comando SQL






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







Perfil (mdl_role)
1 Administrator
2 -Course creator
3 Teacher (Tutor)
4 - Non-editing teacher
5 Student (Aluno)
6 Guest
7 - Authenticated user

Banco de Dados do Moodle
Tabela de domnio do contexto





SISTEMA 10
USURIO 30
CATEGORIA DE CURSO 40
CURSO 50
MDULO 70
BLOCO 80







API do Moodle
Principais APIs




Banco de dados
http://docs.moodle.org/dev/Data_manipulation_API

Permisso
http://docs.moodle.org/dev/Access_API

Formulrio
http://docs.moodle.org/dev/Form_API

String
http://docs.moodle.org/dev/String_API

Thema
http://docs.moodle.org/19/en/Theme_basics

Autenticao
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-bibliotecas-
de-funcoes-do-sistema.html











API do Moodle
Variveis Globais













require_once("MOODLE_DIR_INSTALL/config.php");
global $CFG;
global $DB; ( a partir da verso 2.x)
global $COURSE;
global $USER;

function get_course(){
global $CFG;
global $DB; //s aplica na verso 2.x
global $COURSE;

$sql ="SELECT id,fullname,shortname FROM
{$CFG->prefix}course WHERE id =$COURSE->id";
return $DB->get_record_sql($sql);// para verso 2.x
//return get_record_sql($sql);// para verso 1.9
}










API do Moodle
Manipulao 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 Mdulo/Plugin



Matrcula
moodle/enrol
Autenticao
moodle/auth
Relatrio do curso
moodle/course/reporter
Relatrio de nota
moodle/grade/reporter
Relatrio no contexto do sistema
moodle/admin/report / moodle/report
Exportao de nota
moodle /grade/export
Tema (interface grfica)
moodle/theme
Formato de curso
moodle/course/format
Arquitetura Modular do Moodle
Tipos de Mdulo/Plugin



Tipo de questo
moodle/question/type
Atividade
moodle/mod
Campos para base de dados
moodle/mod/data/field
Tipo de Atividade tarefa
moodle/mod/assignment/type
Relatrio de questionrio
moodle/mod/quiz/report
Blocos
moodle/blocks
Campo de perfil de usurio
moodle/user/profile/field
Plugin deversos
moodle/local

Programar para Moodle
Diretrizes de Desenvolvimento




! Usar API do Moodle

! Evitar hacker do cdigo

! Implementar/alterar funcionalidades atravs de plugin
! Usar API do Moodle

! Usar sistema de permisso do Moodle

! Seguir padronizao de nomes

! Seguir padro de Internacionalizao de idioma

! Alterar interface grfica usando plugin do thema

Conhea 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 (reflexes acadmicas)
http://moodledi.blogspot.com

! Badiu GMoodle Sistema de Gesto do Moodle
http://gmoodle.blogspot.com.br/



Lino Vaz Moniz
Telefone
(61) 9937-8258

E-mail
linovazmoniz@gmail.com

Skype
badiu.net