You are on page 1of 85

APOSTILA DE INTRODUO PROGRAMAO NO MOODLE

SUMRIO
Descrio do Curso. 2
Metas e viso geral do curso. 3
Principais Objetivos do Curso. 3
Trabalho final
Participao classe.
!ueda de Curso. "
#loja$ento Defici%ncia estudante. "
!uestion&rios. "
#tribui'es. "
Participao. "
Projeto (inal "
)nidade *+ ,etting -tarted e Conceitos ,erais. .
)nidade 2+ Criando e trabalhando no a$biente de desenvolvi$ento. /
#cessibilidade 0eb. *2
)nidade 3+ gerencia$ento de c1digo fonte. *3
)nidade " Parte #+ 2strutura de Diret1rios do Moodle. */
O 3 lang. 2*
O diret1rio 3 $od. 22
)nidade " Parte 4+ 5ari&veis ,lobais. 23
,lobals Moodle. 23
6 C(,.. 23
6 -7T2. 28
)nidade C Parte "+ 4ibliotecas Moodle. 39
)nidade .+ 5iso geral de pr&ticas de progra$ao. 3:
2rros na progra$ao. 3:
Cross;-ite -cripting <=--> 9
O ?ue @ =--A. 9
Co$o pode$os proteger contra =-- no MoodleA. 2
!uais so as inje'es de -!BA. 3
)nidade 8 C Parte # C 4loco 4&sico. "9
)nidade 8 C Parte 4 C (or$ul&rios. ":
)nidade 8 C Parte C C Definar a 7nterface de )su&rio. 8*
)nidade 8 C Parte D C #dicionar recursos de edio. 8:
)nidade 8 C Parte 2 C definir u$ papel para o 4loco. :"
#p%ndice #+ Conven'es de no$enclatura Moodle. /2
)nidade 8 C #p%ndice 4 C O 2ditor =MBDb. /2
#p%ndice D+ # atualiEao de u$ 4loco. /
)nidade :+ Teste de M@todos. //
)nidade *9 C Progra$ao de u$ 4loco Moodle. **"


Descrio do Curso
2ste curso ir& fornecer u$a introduo aos conheci$entos necess&rios para criar u$ bloco de
Moodle. Os participantes vo eFa$inar as diretriEes Moodle aceita codificaoG incluindo ?uest'es
de segurana e docu$entao. Os $ateriais do curso so projetados para Moodle verso *.:.
Metas e viso geral do curso
2ste curso total$ente on;line co$ea co$ u$a viso geral de alguns conceitos gerais e cul$ina
co$ u$ projeto final de u$ bloco de progra$ao Moodle. Os participantes deve$ esperar para
colocar u$a $@dia de *9 horas para cada unidade do curso para co$pletar leituras e atividades
atribuHdas. #l@$ das tarefas especHficas de progra$ao e testesG outras atividades inclue$ a
participao e$ discuss'es e oferecer feedbacI aos colegas de classe e facilitador.
Principais Objetivos do Curso
J Kunte;se e eFplore a co$unidade on;line Moodle
J Deconhecer as ?uest'es de acessibilidade Leb para os indivHduos co$ diferentes capacidades
fHsicas e li$ita'es de hardLare
J Co$ent&rio de u$a variedade de ferra$entas de edio para testesG depurao e desenvolvi$ento
PMP
J )se o 2clipse para desenvolvi$ento PMP
J 7niciar e parar o #pache e servios MN-!B usando =#MPP
J -aHda de c1digo fonte Moodle apropriadas para o a$biente de desenvolvi$ento
J Moodle 7nstale no a$biente de desenvolvi$ento local
J Configure Moodle co$ u$ bloco de terceiros j& eFistentes e $1dulo
J Dever a estrutura do diret1rio MoodleG reconhecendo os ar?uivos de biblioteca $ais co$u$
acessados por desenvolvedores
J 7dentificar as fun'es $ais usadas no #P7 Moodle
J #plicar estilo de codificao Moodle e diretriEes
J #plicar pr@;re?uisito PMP e habilidades de progra$ao -!B para recriar u$ bloco Moodle
pr@;definidos
J Co$por a docu$entao pertinente e$ todas as fases do processo de progra$ao
J 7dentificar u$a funo para testar e$ u$ bloco si$ples e desenvolver u$ teste para ele
J Detectar seguranaG acessibilidadeG docu$entaoG orientao e erros de codificao e$ u$a
a$ostra de c1digo
J Design e produEir u$ docu$ento de re?uisitos co$pleto para u$ projeto de progra$ao co$ os
processos de neg1cio identificados e os re?uisitos funcionais
J Criar u$ progra$a co$ u$a se?O%ncia l1gica de co$andos eFecut&veisG resultando e$ u$ bloco
Moodle funciona$ento
J Deveja as etapas para liberao do c1digo para a co$unidade Moodle Moodle.
Pr@;re?uisitos
Participantes do curso devero ter+
J PHvel b&sico eFperi%ncia nHvel de progra$aoG incluindo PMP e -!B
J Conheci$ento b&sico de -!B geral C onde as cl&usulasG por fi$G o grupo porG diferentes tipos de
junoG etc
J # fa$iliaridade co$ a interface de usu&rio do Moodle co$ privil@gios de edio
J # eFperi%ncia passada de instalar softLare
J 2Fperi%ncia co$ progra$ao orientada a objeto
J Co$preenso funda$ental de =MTMB e MTMB tags e atributos
J # consci%ncia do -ubversion <-5P> ou Concurrent 5ersions -Nste$ <C5-> e$ u$ a$biente local
J 0inQip ou outro progra$a para desco$pactar ar?uivos e gerenciar tarballs
J Privil@gios de ad$inistrador <pode instalar o softLare e$> u$ co$putador $oderno <no $ais de
. anos de idade>G co$ u$a tela de resoluo *92R8.:G ligao S 7nternet de alta velocidadeG e u$
$Hni$o de 2,b de D#M.
J 0indoLs =P ou 5ista siste$a operacional <BinuF ou Mac O- pode ser usadoG $as as instru'es e
ilustra'es so para o siste$a operacional 0indoLs>
Monestidade #cad%$ica
# $enos ?ue especifica$ente $encionado e$ dire'es para u$a atividade particularG todas as
atribui'es apresentadas neste curso so para ser concluHda de for$a independente. Pl&gio batotaG e
outras for$as de desonestidade acad%$ica no sero aceitos nesta classe. Defere$;se S
)niversidade 2stadual Mu$boldt PolHtica de Monestidade #cad%$ica para $ais detalhes.
Trabalho final
)$ a$biente de progra$ao profissional depende de praEos do projeto. Muitas veEes trabalha$
outros $e$bros da e?uipe @ afetado ?uando u$ co$panheiro de e?uipe no cu$prir u$ praEo.
Participantes de classe so u$a e?uipe de aprendiEage$. Co$o resultadoG a apresentao de
trabalho atribuHdos at@ S data li$ite @ aspecto i$portante deste curso. Po justificadas trabalhar at@
tarde ser& penaliEada de "9T. #tribui'es atrasados no sero aceitos se$ penalidadeG ?uando
dispensado pelo facilitador de anteced%ncia.
Co$ent&rios sobre #tribui'es.
Os participantes pode$ esperar feedbacI sobre atribui'es dentro de 3 dias da data de venci$ento.
Participao classe
7nterao co$ os participantes outra classe @ u$ aspecto i$portante da aprendiEage$ neste curso.
(1runs de discusso on;line oferece$ a oportunidade de co$partilhar id@ias e co$ent&rios.
Binguage$ respeitosa @ livre de palavr'es e co$ent&rios inapropriados ou insulto. Co$unicao
desrespeitosos no sero tolerados nesta classe.
!ueda de Curso
-e voc% no entrar e participar activa$ente neste curso nas pri$eiras duas se$anasG voc% ser&
deiFado co$ este curso.
#loja$ento Defici%ncia estudante
-e voc% @ elegHvel para aco$oda'es relacionadas co$ a defici%ncia co$o a deter$inao por pelo
nosso Centro de Decursos ca$pus Defici%nciaG entre e$ contato co$ o facilitador o $ais
rapida$ente possHvel para discutir estas. Posso ca$pus DisabilitN Desource Center <DDC> pode
ajud&;lo a deter$inar a elegibilidade para aco$oda'es e pode ser alcanado e$+ <898> :2.;.8:G
<898> :2.;"3/2 TDD. DepUblica De$ocr&tica do Congo est& localiEada na Casa 8* <#part$ents
Bittle> off CHrculo BibrarN.
#valia'es e classificao
Os participantes ?ue to$ara$ esta classe para u$a classe sero $atriculados para o cr@dito
obrigat1rio 3 no classificao de cr@dito. 5eja a p&gina de #tribuio Detalhes de u$a co$pilao
de todas as avalia'es para o curso.
!uestion&rios
#lgu$as )nidades e$ curso inclue$ testes para verificar a co$preenso b&sica. Duas tentativas
so per$itidas.
#tribui'es
2$ cada u$a das unidades do cursoG voc% vai proporcionar atividades aut%nticas Vhands;onW
eFperi%ncias co$ os conceitos;chave da unidade. #tribui'es e as discuss'es vo ajudar a
prepar&;lo para concluir co$ sucesso o projeto final.
Participao
#l@$ da participao nas discuss'es e$ aulaG os participantes tero v&rias oportunidades para
fornecer feedbacI aos colegas de classe e 3 ou o facilitador. 2ssas intera'es so cruciais no s1 para
seu pr1prio aprendiEadoG $as o aprendiEado dos outros no curso.
Projeto (inal
O projeto final @ u$a atividade cul$inante no ?ual cada participante co$pleta a progra$ao de
u$ novo bloco. O projeto final pode ser co$pletado individual$ente ou co$o parte de u$ grupo.

)nidade *+ 7ntroduo e Conceitos ,erais
4e$;vindo a este curso de 7ntroduo ao Moodle Progra$ao desenvolvidos e oferecidos na
Mu$boldt -tate )niversitNX

Desde 299G a e?uipe da Mu$boldt -tate )niversitNG assu$iu u$ papel de liderana na co$unidade
internacional no apoio de Moodle. 2ssa liderana foi reconhecida pela #ndreL 0. Mellon
(oundation co$ u$a doao para apoiar o desenvolvi$ento deste curso para eFpandir ainda $ais
nossas contribui'es.
O ?ue @ o MoodleA Moodle @ u$ softLare ?ue pode ser usado para produEir cursos baseados na
Leb e Leb sites para apoiar projetos colaborativos. 2le @ projetado para suportar u$ $odelo de
construtivis$o social da educao.
M& $uitas $aneiras de personaliEar Moodle C tanto a nHvel de siste$aG tanto ao nHvel do curso. #
interface do Moodle consiste e$ Vse'esW e VblocosW. O conteUdo de Vse'esW @ gerido pelo
Professor ou Design 7nstrucional do cursoG adicionando teFtos e3ou atividades. V4locosW so criados
por progra$adores e instalado no nHvel do siste$a co$o op'es o professor pode selecionar a partir
de personaliEar a sala de aula online. 4locos tipica$ente aparece$ nas colunas direita e es?uerda da
p&gina do curso principalG en?uanto se'es aparece$ abaiFo a coluna central. #lguns blocos so
u$a parte VpadroW do nUcleo do Moodle e outros so as op'es disponHveis de terceiros na
co$unidade Moodle. 2Fe$plos de padro VblocosW selecionado para ser utiliEado neste curso
inclue$ o VCalend&rioW e VPessoasW.
Os V$1dulosW do Moodle geral$ente cont%$ o c1digo de controle das atividades de ensinoG co$o
u$ ?uiE ou u$ f1ru$ de discusso.
Moodle @ fornecido livre$ente co$o softLare Vopen sourceW. 2ste $odelo de distribuio te$
contribuHdo para a crescente popularidade do MoodleG e feE dela u$ projeto de desenvolvi$ento e$
curso co$ o apoio de desenvolvedores ao redor do $undo. Por?ue o Moodle usa codificao e$
PMPG a co$unidade de desenvolvedores @ bastante grande e at@ $es$o pe?uenas organiEa'es
pode$ apoi&;lo por encontrar pessoal co$ eFperi%ncia e$ progra$ao orientada a objetos
si$ples.
2ste curso ir& gui&;lo co$ os princHpios introdut1rios de criar u$ VblocoW ?ue pode ser adicionado S
sua instalao Moodle pr1priaG ou C ?uando co$partilhada C os outros sites YMoodle e$ todo o
$undoG co$o u$ acess1rio opcional.
Desenvolvedores Moodle fiEera$ progressos significativos e i$pressionantes para faEer Moodle
u$ siste$a de gesto de aprendiEage$ ?ue @ a$pla$ente adotado e$ todo o $undo. )$a das &reas
crHticas onde se co$parado favoravel$ente Ss alternativas co$erciais @ a sua ateno para a
acessibilidade universal. 2n?uanto os fornecedores co$erciais t%$ sido lentas para responder Ss
preocupa'es levantadas pelos usu&rios de acessibilidadeG o a$biente de c1digo aberto do Moodle
para as adapta'es a sere$ feitas $ais rapida$ente. Despeito pelos princHpios de Vacessibilidade
universalW garante ?ue todos os usu&riosG independente$ente da sua entrada de co$putador e
dispositivos de saHdaG t%$ acesso e?uivalente. 7ndivHduos co$ defici%ncia fHsica so particular$ente
afetados ?uando usa$ tecnologias assistivas para acessar a 0orld 0ide 0eb. Z i$perativo ?ue os
progra$adores de aderir aos princHpios de acessibilidade co$o eles cria$ $elhorias e $odifica'es
Moodle para seus usu&rios ou a co$unidade Moodle e$ geral para ?ue a adopo do Moodle e
utiliEao no cair devido ao fato de no cu$prir nor$as de acessibilidade. PortantoG na lio desta
se$anaG voc% encontrar& u$a introduo S acessibilidade Leb ?ue fornece$ a base para as
refer%ncias S acessibilidade ?ue ocorre$ no decorrer deste curso.
# co$unidade Moodle reUne para troca de infor$a'es e$ Moodle.org. 2sta pri$eira se$anaG
co$o parte de nossas atividades introdut1riasG crie u$a conta para si $es$o e$ Moodle.org e login
para eFplorar por si $es$o a ri?ueEa de infor$a'es l&.
)se esta se$ana para ta$b@$ rever os funda$entos de -!B e PMP para preparar;se para as
atividades nas pr1Fi$as se$anas.
2sperar para ver cada unidade deste curso no $es$o for$ato+
J 5iso ,eral
J V(aEerW lista resu$indo todas as atividades dos participantes para a se$anaG incluindo sites de
tarefas de leitura ou de suporte Leb para visitar
Confira a progra$ao do curso e bloco Calend&rio curso para praEos de atribui'es.
Certifi?ue;se de postar ?ual?uer dUvida ?ue voc% tenha no VPerguntasAW f1ru$ na seo superior da
p&gina principal deste curso.
VTo DoW Bista.
Povas janelas do navegador abertas para cada recurso eFterno.
*. #presente;se aos participantes da classe outras pessoas no (1ru$ de discusso designado.
Cu$pri$ente os outros.
2. 5isite Moodle.org. Participe da co$unidade on;lineG criando u$a nova conta. Pavegue pelo siteG
incluindo a seo de Desenvolvi$ento Moodle e os linIs no $enu principal na $arge$ es?uerda de
VDocu$entaoWG VMoodle 4uEEGW e V7ssue TracIerW. D% u$a olhada no TracIer e localiEar u$a
passage$ e$ aberto ?ue lhe interessa.
3. 2nviar a )DB do bilhete aberto selecionado no 4ug TracIer no VOpen TicIetW &rea de atribuio
deste curso.
.O ?ue eFata$ente @ Vopen sourceW softLareA Beia a definio de Open -ource <#notada> da Open
-ource 7nitiative.
".Beia 7ntroduo S #cessibilidade 0eb do 03C 0eb #ccessibilitN 7nitiative. Certifi?ue;se de
eFplorar as infor$a'es relacionadas abrangente sobre [ Defici%ncia diferentes ?ue pode$ afetar a
#cessibilidade 0eb.
.. #nalisar cuidadosa$ente a lista de verificao -eo 0eb#7M "9:. 2stes padr'es so
a$pla$ente adotado e $elhorar significativa$ente a acessibilidade. O ?ue @ V-eo "9:AW
V-eo "9: <a 2$enda de *//: a -eo "9: do \dos 2)#] Dehabilitation #ct> eFige ?ue a \2)#]
governo federal para faEer todos os bens e serviosG incluindo p&ginas 0ebG total$ente acessHvel.
7dentifica nor$as especHficas para 7nternet e acessibilidade 0ebG ?ue so $uitas veEes utiliEados
co$o base para avaliar se ou no sites atender re?uisitos de acessibilidade. W )niversitN of
MarNland )niversitN College de #cessibilidade na 2ducao a Dist^ncia ,loss&rio.
8. Deviso esta descrio de Progra$ao orientada a objetos da 0iIipedia.
:. Beia o Moodle seis pri$eiros Coding ,uidelinesG be$ co$o a seo 2stilo de codificao.
/.Co$pletar os tutoriais para o PMP <PMP Tutorial C de Dados Defsnes> e -!B <-!B Curso C
7nteractive Training Online do -!B para iniciantes>. -e voc% j& estiver fa$iliariEados co$ os
conceitos b&sicos de PMP e -!BG $as pode usar u$a reviso para refrescar sua $e$1ria pr&ticaG
co$ estes tutoriais online. (oco na lista PMP 4&sico para entender co$pleta$enteG assi$ co$o
7ncluirG -essionsG e data a partir da lista PMP #vanado. Olhar atrav@s de outros t1picos PMP
#vanado ta$b@$G co$o e;$ail e de ar?uivos.
*9.Dever a ter$inologia i$portantes incluHdos no gloss&rioG be$ co$o os tutoriais PMP e -!B
antes de faEer o ?uiE.
**. (aa o teste antes do praEo anotado no calend&rio do curso <canto superior es?uerdo da p&gina
do curso principal>. Duas tentativas so per$itidas.
*2. Colo?ue sua resposta para as ?uest'es para discusso atribuHdo logo ap1s o inHcio da )nidade *
?uanto possHvel. Preste ateno para as respostas dos outros e responder a pelo $enos dois colegas
de classe C co$eando co$ a?ueles se$ respostas j&.

)nidade 2+ Criando e trabalhando no a$biente de desenvolvi$ento
5iso geral _ )nidade 2 VfaEerW lista
Decursos eFternos abertos e$ novas janelas do navegador.
Pesta unidadeG estare$os eFa$inando u$a variedade de ferra$entas para faEer o trabalho de
criao e edio de c1digo do Moodle $ais f&cil. Co$o acontece co$ ?ual?uer tarefa criativaG ter
as ferra$entas certas far& o trabalho $ais f&cil. #o faEer a $ec^nica $ais transparenteG ?ue nos
per$ite concentrar nossos pensa$entos sobre o processo criativo <o c1digo real ?ue ?uere$os> e$
veE de se atrapalhar co$ o processo de gravao de nossos pensa$entos.
2Fiste$ v&rias ferra$entas de desenvolvi$ento ?ue ser& introduEido nesta se$ana junto co$
eFercHcios pr&ticos para ?ue possa eFplorar as caracterHsticas de cada u$.
O broLser dois plug;ins introduEido ajudar na criao e depurao de proble$as co$ o navegador.
#$bos so instru$entos preciosos para ajudar a soluo de proble$as C especial$ente os
proble$as C-- e Kavascript.
diagra$a de 5enn de softLare descritos neste unit`ou pode estar fa$iliariEado co$ outras
ferra$entas ?ue eFecuta$ tarefas si$ilares C por favorG co$partilhar essas eFperi%ncias na
discusso esta se$ana.
Mais desenvolvi$ento para o Moodle co$ea co$ u$ progra$ador trabalhando e$ seu
co$putador local. # fi$ de desenvolver local$ente voc% precisa pri$eiro configurar o seu
a$biente de desenvolvi$ento. Pesta unidadeG va$os instalar e configurar as ferra$entas ?ue voc%
precisa desenvolver para Moodle local$ente.
0eb local e servidor de banco
Moodle re?uer u$ servidor Leb ?ue pode interpretar o c1digo PMPG be$ co$o u$ servidor de
banco de dados para ?ue voc% pode salvar o conteUdo. =#MPP @ u$ servidor Leb e banco de dados
pr@;configurado para u$ conjunto especHfico de siste$as operacionais. =#MPP foi pr@;configurado
para ?uatro siste$as operacionais 0indoLsG Mac O- =G BinuF e -olaris. 5a$os nos concentrar e$
0indoLsG Mac O- = e BinuF co$o a$bientes de desenvolvi$ento.
=#MPPG M#MP e B#MPP so siglas para 0indoLsG Mac ou BinuFG respectiva$enteG e #pacheG
MN-!BG Perl e PMP.
#$biente de Desenvolvi$ento 7ntegrado
2ntrada reviso 0iIipedia est& descrevendo o a$biente de desenvolvi$ento integrado <7D2>.
Depois de instalar u$ servidor Leb e banco de dadosG voc% precisar& instalar e configurar o seu
a$biente de desenvolvi$ento integrado <7D2>. Pa Mu$boldt -tate )niversitN usa$os 2clipseG ?ue
@ u$a fonte aberta livre baseado e$ Kava 7D2. Outras )niversidadesG co$o -an (rancisco -tate
)niversitN uso Php2DG ?ue ta$b@$ @ u$a 7D2 co$ercial caracteriEado cheio co$ u$ depurador
PMP. Outros a$bientes de desenvolvi$ento potencial de desenvolvi$ento do Moodle so vi$G da
#dobe Drea$LeaverG Pvu ou ?ual?uer editor de teFto. Para os fins deste cursoG va$os usar o
2clipse.
#lternativa #$bientes de Desenvolvi$ento
Php2D
Php2D @ u$ 7D2 so$ente para 0indoLs desenvolvido por Pu-phere. Te$ u$ depurador integrado
ea $aioria dos $es$os recursos ?ue o 2clipse.
57M
5i$ @ u$ editor de teFto alta$ente configur&vel construHdo para per$itir a edio de teFto
eficiente. Z u$a verso $elhorada do editor vi distribuHdo co$ a $aioria dos siste$as )P7=.
5i$ $uitas veEes @ cha$ado de Veditor do progra$adorW e @ to Util para a progra$ao ?ue
$uitos considera$ u$a 7D2 inteiro. Po @ s1 para progra$adoresG no entanto. 5i$ @ perfeito para
todos os tipos de edio de teFtoG de co$por e;$ail para editar ar?uivos de configurao. 7nstru'es
sobre co$o configurar o 5i$ para uso co$ o Moodle.
#dobe Drea$Leaver
Drea$Leaver @ u$a ferra$enta co$ercial co$u$ente utiliEado para desenvolvi$ento Leb ?ue
ta$b@$ pode ser usado para desenvolver progra$as PMP. 2le vai funcionar to be$ para o
desenvolvi$ento de MoodleG $as carece de algu$as das caracterHsticas de u$a 7D2 co$o o 2clipse
total ou Php2D.
Pavegador desenvolvedor 4arras de (erra$entas
Firebug para Firefox
(irebug @ u$ plugin para o navegador (irefoF indispens&vel para dina$ica$ente a visualiEao e
edio do MTMBG Kavascript e C-- c1digo;fonte de u$a p&gina Leb.
-el%nio para o (irefoF
O sel%nio @ u$a ferra$enta de teste para aplica'es Leb. Testes -eleniu$ eFecutado direta$ente
e$ u$ navegador e agir co$o u$ usu&rio real faria. )$ teste de sel%nio ser& eFecutado no 7nternet
2FplorerG MoEilla e (irefoF e$ 0indoLsG BinuF e Macintosh. 2Fecuo -eleniu$ para outros
navegadores envolve o doLnload do nUcleo -el%nio e desco$pactao da pasta principal para o
diret1rio raiE do seu Leb instalar o =#MPP.
Molibd%nio para o (irefoF
O $olibd%nio @ u$ outro add;on para (irefoF ?ue pode editar e eFecutar os testes co$ -eleniu$
ponto de eFcla$ao
Dica i$portanteX
Todos os validadores de linIs Ypara testes eFecutados e$ sites eFternosG de $odo ?ue o )DB usado
para validar os sites deve$ estar publica$ente visHvel. Para utiliEar os validadores e$ seu endereo
de localhost voc% ter& ?ue abrir a porta :9 no fireLall do 0indoLsG ?ue voc% deve ser convidado a
faEer a pri$eira veE ?ue voc% iniciar o #pache atrav@s do =#MPP. 5oc% ta$b@$ vai precisar de
usar o endereo 7P para o seu co$putador e$ veE de localhost <por eFe$ploG
http+33./."8.23.:/3test3test.php>. -e voc% est& atr&s de u$ router fireLall voc% ter& ?ue enca$inhar
a porta :9 para o co$putador ?ue voc% est& usando. -e voc% estiver usando D-BG o seu endereo 7P
provavel$ente ir& $udar nu$a base di&riaG o ?ue significa ?ue voc% vai precisar alterar localhost
para o seu novo endereo 7P para os validadores para o trabalho.
0eb Developer para (irefoF
# eFtenso eb De!e"oper @ projetado para (irefoFG (locIG MoEilla e (irefoFG e ser& eFecutado e$
?ual?uer platafor$a ?ue suporte esses navegadoresG incluindo 0indoLsG Mac O- = e BinuF. <Pota
da #juda disponHvel se voc% precisar de ajuda co$ a instalao>. O 0eb eFtenso desenvolvedor @
u$a eFcelente ferra$enta para a visualiEao de for$as vari&veisG C-- e MTMB e$ linhaG be$
co$o validar cssG ht$l e acessibilidade. PatricI BauIe faE u$ eFcelente trabalho de eFplicar co$o
usar a eFtenso 0eb Developer para validao de acessibilidadeG be$ co$o eFplicando as
diferentes partes do cu$pri$ento "9: C ver a leitura atribuHdas nesta )nidade VfaEerW lista.
0eb Developer para o 7nternet 2Fplorer
O 0eb Developer Toolbar para 7nternet 2Fplorer @ se$elhante ao de eFtenso 0eb Developer para
(irefoF. 2le per$ite ?ue voc%+
J 2Fplorar e $odificar o $odelo de objeto docu$ento <DOM> de u$a p&gina 0eb.
J BocaliEar e selecionar ele$entos especHficos e$ u$a p&gina 0eb atrav@s de u$a variedade de
t@cnicas.
J -eletiva$ente desabilitar as configura'es do 7nternet 2Fplorer.
J 5er MTMB objeto no$es de classesG 7Ds e detalhes co$o ca$inhos de ligaoG os valores de
Hndice de tabulao e teclas de acesso.
J Tabelas ContornoG c@lulas da tabelaG i$agens ou tags selecionadas.
J 5alidar MTMBG C--G 0#7G e linIs feed D-- Leb.
J DisplaN di$ens'es da i$age$G ta$anho do ar?uivoG infor$a'es sobre o ca$inhoG e teFto <#BT>
alternativo.
J 7$ediata$ente redi$ensione a janela do navegador para u$a nova resoluo.
J -eletiva$ente li$par o cache do navegador e cooIies salvos. 2scolha a partir de todos os objetos
ou a?ueles associados co$ u$ deter$inado do$Hnio.
J #presentar u$a r@gua de design co$ todos os recursos para ajudar a alinhar e $edir co$ preciso
objetos e$ suas p&ginas.
J 2ncontrar as regras de estilo utiliEada para definir os valores estilo especHfico e$ u$ ele$ento.
J 5er a fonte for$atado e sintaFe colorida de MTMB e C--.
2ditor de =MBDb
=MBDb @ u$a ca$ada de abstrao de banco de dados ?ue fornece u$a $aneira co$u$ de criar e
atualiEar tabelas de banco de dados para o Moodle. Definio de cada tabela <ca$posG chaves e
Hndices> @ salvo e$ u$ for$ato =MB. 2ste ar?uivo @ lido ?uando o banco de dados do Moodle @
criada pela pri$eira veE e se$pre ?ue u$ $1dulo ou plugin @ instalado. 7sso significa ?ue os
desenvolvedores a criar u$a definio de tabela <s> usado pelo seu $1dulo ou plugin e
ad$inistradores de siste$a pode$ optar por utiliEar ?ual?uer siste$a de banco de dados
suportadosG tais co$o OracleG M--!BG MN-!B ou Postgre-!B. 5oc% vai usar o 2ditor de =MBDb
na )nidade 8G ?uando a edio de banco de dados do Moodle. Mais detalhes sero fornecidos na
)nidade 8.
#cessibilidade 0eb
-ites avaliar a acessibilidade @ facilitada por u$a variedade de verificadores de acessibilidade e
ferra$entas de validao. 2n?uanto verifica'es $anuais so ?uase se$pre necess&riasG o softLare
pode agiliEar a avaliao de u$ site local e os erros ?ue poderia ser negligenciada pelo designer
nu$a avaliao $anual. # leitura atribuHdo para esta unidadeG PatricI BauIe de V#valiao de
#cessibilidade 0eb -ites co$ o (irefoFGW ilustra co$o barra de ferra$entas do (irefoF
Desenvolvedor 0eb pode$ ser valiosos na deteco de proble$as de acessibilidade.
M& certa$ente outras ferra$entas de softLare disponHveis para au$entar a produtividade no
a$biente de desenvolvi$ento e verificar se h& proble$as de acessibilidade universal. -e voc% j&
tentou outras ferra$entas ?ue voc% prefereG por favor partilhe as suas eFperi%ncias no f1ru$ desta
)nidade de discusso.
topo
VTo DoW Bista
*.
7nstalar u$ servidor 0eb e banco de dados local
7nstale =#MPP 3 M#MP 3 B#MPP
-iga as instru'es abaiFo para seu siste$a operacional para baiFar e instalar =#MPP 3 M#MP 3
B#MPP+
Kanelas http+33LLL.apachefriends.org3en3Fa$pp;LindoLs.ht$l
Mac O- = http+33LLL.apachefriends.org3en3Fa$pp;$acosF.ht$l
BinuF http+33LLL.apachefriends.org3en3Fa$pp;linuF.ht$l
7niciar o #pache e MN-!B
Para iniciar o #pache eo MN-!BG localiEe a pasta e$ ?ue voc% instalou o =#MPPG M#MP ou
B#MPP e encontrar o Hcone correspondente e d% u$ duplo cli?ue nele.


)nidade 3+ gerencia$ento de c1digo fonte
5iso geral _ )nidade 3 VfaEerW lista
Decursos eFternos abre$ e$ novas janelas do navegador.
-iste$as de gesto de orige$ so essenciais para o desenvolvi$ento de softLare.
VPo usar u$ @ co$o dirigir u$ carro $uito r&pido+ @ divertido e voc% pode chegar ao seu destino
$ais r&pidoG $as u$ acidente @ inevit&vel.W M. Ti$ Kones no controle de verso para BinuF+ 5iso
de ar?uiteturasG $odelos e eFe$plos.
-iste$as de gesto fonte fornece$ u$a $aneira confi&vel para+
J Controlar altera'es
J Colaborar co$ outros desenvolvedores
J (ornecer gerencia$ento de ar?uivos
J Deverte para vers'es antigas
J 5ersioning C agrupa$ento e tagging ar?uivos juntos para ?ue voc% possa recuperar a configurao
eFata e$ u$ ponto posterior no te$po.
Pesta unidade abordare$os conceitos b&sicos necess&rios para usar o gerencia$ento de c1digo
fonte para desenvolvi$ento de softLare.
Para os fins deste cursoG voc% estar& usando C5- eFclusiva$enteG $as e$ seu desenvolvi$ento
Moodle di&ria haver& $o$entos e$ ?ue voc% estar& usando -5PG C5-G ou a$bos.
topo
VTo DoW Bista
*.
Beia sobre co$o usar o C5- para controle de verso de c1digo fonte
Pensa$entos tutorial usando (luid YC5-G ler sobre os co$andos co$u$ente usados C5-.
Certifi?ue;se de cobrir adicionarG co$eterG atualiEar e re$over. 2$bora estes co$andos so
se$elhantes aos co$andos -5PG alguns deles se co$porta$ de $aneira diferente do ?ue suas
contrapartes -5P.
2.
Beia sobre co$o usar o -5P para controle de verso de c1digo fonte
5er as op'es disponHveis para a instalao de -5P. Depois de analisar algu$as das op'es de
instalao disponHveisG verifi?ue se voc% tiver u$ deles instalado no seu a$biente de
desenvolvi$ento. -e voc% no tiver u$ instaladoG escolha u$ pacote de instalao apropriado e siga
as instru'es para instalar esse pacote.
Beia a seoG VChecIout inicialW no capHtulo 2 do livro onlineG VControle de 5erso co$
-ubversionWG ?ue descreve os passos ?ue se aplicaria a verificar u$a c1pia de trabalho do Moodle a
partir de u$ servidor -5P.
Percorrer a V4asic trabalho realiEado no cicloW no CapHtulo 2 do livro onlineG VControle de 5erso
co$ -ubversionWG para estudar os co$andos ?ue @ prov&vel ?ue voc% precisa durante u$ dia de
trabalho tHpico. Preste ateno especial aos cinco co$andos ?ue voc% usar& $ais+
J -vn update
J -vn status
J -vn co$$it
J -vn add
J -vn delete
Dever os outros co$andos na seo deste capHtulo para ?ue voc% entenda co$o e ?uando eles so
usados. Be$bre;se ?ue
svn ajudar aco$andob <por eFe$ploG ajuda svn co$$it>
ir& $ostrar;lhe desejar ?ue o co$ando @ usado para e algu$as das op'es v&lidas. -e voc% estar&
usando Tortoise-5P ento d% u$a olhada no $anual de a$bos disponHveis atrav@s da aplicao ou
online e$ Tortoise-5P.
Beia Melhores Pr&ticas de -ubversion do Open Collabnet.
3.
Obter Moodle para o seu a$biente de desenvolvi$ento.
)sando o C5-
C5- para 0indoLs
*. 2ncontrar o diret1rio Moodle e$ C+ c =#MPP c htdocs.
2. Direito do $ouse cli?ue sobre o diret1rio $oodle e escolha VC5- ChecIoutW no $enu. 5oc%
dever& ver u$a caiFa de di&logo.
3. Digite este teFto no ca$po C5-DOOT+
+ Pserver+ anonN$ousd-2D52D.cvs.$oodle.org+ 3 cvsroot 3 $oodle <para desenvolvedores
norte;a$ericanaG substitua o VservidorW co$ Vn1sW
TortoiseC5- verificao captura de tela $1dulo
. -ob o VM1duloW ca$poG digite V$oodleW para obter o diret1rio $oodle.
". Cli?ue no boto VDevis'esW tab.
.. -elecione o Vra$o 2scolha ou tagW boto de r&dio.
8. Cli?ue no boto V#tualiEar a lista [W boto.
:.
ponto de eFcla$ao
Dica i$portanteX
-e voc% ?uiser verificar para fora u$a verso diferente do Moodle <por eFe$ploG *./ ou 2.9> ou
u$a verso especHfica <por eFe$plo *.:. ou *.:.3> voc% vai ?uerer $udar o no$e no ra$o ou
ca$po de no$e da $arca. Depois de clicar no V#tualiEar a listaA 4otoW voc% ver& u$a lista no
drop doLn de todos os ra$os Moodle possHvel checI;out.
Mais tardeG para atualiEar sua c1pia local do $oodle para a verso $ais atual *.: e$ C5-G apenas
direito do $ouse cli?ue no diret1rio do $oodle e escolha VC5- )pdateW.
-elecione MOODB2e*:e-T#4B2 da lista de todas as revis'es Moodle possHvel.
TortoiseC5- verificao $1dulo captura de tela reviso
/. Pressione o boto VOfW e tudo deve ser verificado para o diret1rio $oodle.
C5- para Mac e BinuF
5erifi?ue se voc% te$ u$ cliente C5- instalado e funcionando e$ seu a$biente. -e voc% estiver
trabalhando e$ u$ a$biente BinuF ou )niF voc% j& deve ter C5- instalado. -e voc% estiver
trabalhando e$ u$ a$biente Mac O- = voc% ta$b@$ deve j& te$ C5- instalado ?ue pode ser
acessado atrav@s do pro$pt de co$ando. -e voc% estiver trabalhando e$ u$ a$biente 0indoLs
baiFar C5- de TortoiseC5-.
2Fplorar esta docu$entao sobre checI;out u$a c1pia do C5- Moodle localiEado e$ Moodle.org
e Carto de Defer%ncia D&pida C5-.
Para conectar e login pela pri$eira veE para o servidor C5-+
cvs;d+ pserver+ anonN$ousd$oodlecvs.sfsu.edu+ 3 cvsroot 3 $oodle de login
Po h& senhaG ?uando pediu para u$G apenas pressione 2nter. Para faEer o checIout <doLnload> o
c1digo do Moodle toda a pela pri$eira veEG use este co$ando para obter a Ulti$a verso -T#4B2+
cvs;E3;d+ pserver+ anonN$ousd$oodlecvs.sfsu.edu+ 3 cvsroot 3 $oodle co;r
MOODB2e*:e-T#4B2 $oodle
Ou a Ulti$a verso de desenvolvi$ento+
cvs;E3;d+ pserver+ anonN$ousd$oodlecvs.sfsu.edu+ 3 cvsroot 3 $oodle $oodle co
topo
Mais tardeG para atualiEar sua c1pia local do Moodle para a verso atual do C5-G voc% s1 precisa
entrar e$ seu diret1rio Moodle local e digite+
cvs update;dP
Para atualiEar sua c1pia local e para salvar o log do processo+
cvs update;dP;r MOODB2e*:e-T#4B2 _ tee upgrade.log
Para atualiEar sua c1pia local do Moodle para u$a nova verso <por eFe$ploG de *G8 g *G:>G v& para
o diret1rio Moodle local e digite+
cvs update;dP;r MOODB2e*:e-T#4B2
2nto olha para o upgrade.logG no$eada$ente procurar linhas ?ue co$ea$ co$ VCW <conflito>+
Yh Ci grep upgrade.log
tricIPote $&gicaX
Conflitos pode$ aparecer se voc% tiver $odificado $anual$ente os ar?uivos de orige$. 5oc% te$
?ue resolver os conflitos antes de usar o site. 5eja C5- para desenvolvedores para obter $ais
detalhes.
Outras alternativas para obter o c1digo Moodle
0indoLs
DoLnload de VPacotes de Moodle para o 0indoLsW do Moodle.org. 2scolha o Moodle *.:.F verso
g <para 0indoLsG geral$ente @ cha$ado co$o VMoodle0indoLs7nstaller;latest;*:.Eip Y>.
Mac O- =
5oc% vai encontrar algu$as infor$a'es sobre C5- e Mac O- = na docu$entao para a
instalao do pacote co$pleto MoodleMac. Por favorG leia Co$o atualiEar seu MoodleMac. 2le
funciona be$ co$ os novos servidores C5-.
)se as infor$a'es desta )nidade para selecionar o tipo de caiFa ?ue se aplica a voc%G e$ seguidaG
checI;out u$a c1pia do Moodle para u$ diret1rio no seu Lebroot local do seu a$biente de
desenvolvi$ento.
.
(aa o teste.
".
Contribuir para o t1pico de discusso.
!ual o $@todo ?ue voc% usou para faEer checIout Moodle para o seu a$biente de
desenvolvi$entoA !uais so as circunst^ncias ?ue influenciara$ a sua deciso de usar o -5P ou
C5-A
-5P <-ubversion> ou C5- <Concurrent 5ersioning -Nste$> para o Desenvolvi$ento MoodleA
#penas usando C5-
# configurao $ais co$u$ para desenvolvedores de vers'es de c1digo fonte co$ Moodle @ usar
C5- e checI;out a verso $ais recente do ra$o Moodle est&vel do reposit1rio C5- do Moodle.
Pesta configuraoG o desenvolvedor obt@$ todas as atualiEa'es atrav@s do Moodle Moodle
reposit1rio do C5-. O desenvolvedor ento faE altera'es local$ente e testes co$ a verso atual do
C5- Moodle. O desenvolvedor ta$b@$ pode decidir faEer o checIout da C5- contribuir ra$o do
reposit1rio MoodleG a fi$ de testar e $odificar terceiros M1dulos e Plugins. O desenvolvedor pode
ou no ter per$iss'es para confir$ar as altera'es de volta ao reposit1rio C5- do Moodle ou
sucursais. Peste cen&rio os co$andos $ais co$uns o desenvolvedor precisa saber so C5- update
eG se eles t%$ privil@gios co$eterG C5- co$eter.
-1 ?ue$ faE C5- trabalhaA
J Os desenvolvedores ?ue s1 ?uer ajudar Moodle
J Os desenvolvedores ?ue no t%$ u$ a$biente de produo
J Os desenvolvedores ?ue se sente$ confort&veis e$ desenvolvi$ento e$ seu a$biente de
produo
J Desenvolvedor grupos ?ue no precisa$ co$partilhar seus c1digos co$ outras pessoas e$ seu
grupo
J Os desenvolvedores ?ue ?uere$ controle de verso de seu c1digo fonte pr1prioG $as no $e
i$porto sobre o controle de verso do Moodle
topo
#penas usando -5P
2sta opo @ para pessoas ?ue prefere$ faEer o doLnload do Moodle e$ u$ for$ato Eip e precisa$
de u$a for$a de controle de verso do c1digo ?ue esto criando. Pode haver v&rias configura'es
para issoG co$ o $ais prov&vel ?ue voc% baiFar o c1digo fonte a partir de Moodle
http+33LLL.$oodle.org e $escl&;lo e$ seu reposit1rio -5P. 5oc% gerenciar todo o seu c1digo
atrav@s de -5P. Peste casoG voc% poderia usar todos os co$andos dentro -5PG $as os co$andos
$ais prov&vel ser& svn updateG svn co$$it e svn $erge.
-1 ?ue$ faE -5P trabalhaA
J #lgu@$ ?ue gostaria de controle de verso o seu pr1prio c1digoG $as no se preocupa$ co$ o
controle de verso para o Moodle
J )$ grupo de desenvolvedores ?ue esto e$ locais diferentes $as ?ue partilha$ u$a base de
c1digo co$u$
)sando C5- e -5P Kuntos
2sta opo @ a $ais co$u$ para u$a organiEao ?ue te$ v&rios desenvolvedores e v&rios
servidores. Os desenvolvedores geral$ente o checIout da verso $ais atual do Moodle a partir do
reposit1rio C5- e depois $esclar as altera'es e$ seu reposit1rio -5P. 7sso per$ite ?ue eles use$
todo o poder do -5PG $ini$iEando o te$po ?ue leva para obter o bug $ais atual e corre'es de
segurana dos desenvolvedores $oodle.org Ys. Peste cen&rio voc% ir& usar o co$ando update C5-
junto co$ potencial$ente todos os co$andos -5P.
!ue$ faE o C5- e -5P trabalhaA
J 5&rios grupos de desenvolvedores
J #s organiEa'es co$ v&rios servidores ?ue usa$ diferentes $1dulos ou blocos
J jnico desenvolvedores ?ue esto interessados e$ aprender -5P
-e voc% vai se desenvolver no Moodle se$ utiliEar -5P para controle de versoG ento voc% s1
precisa seguir os passos para verificar para fora do MoodleG de u$ reposit1rio C5-.
-e voc% vai ser e$ desenvolvi$ento e$ Moodle e$ u$a loja ?ue gerencia u$a base de c1digo no
-5PG ento voc% pode precisar apenas de seguir os passos para verificar para fora do MoodleG de
u$ reposit1rio -5P.
2$ alguns casosG co$o e$ CourseLare Mu$boldt -tate )niversitN do Centro de Desenvolvi$entoG
u$ reposit1rio -5P usado pela $aioria dos desenvolvedores @ $antido atualiEado atrav@s de
atualiEa'es de u$ reposit1rio C5- C5- Moodle. Peste casoG o desenvolvedor ad$inistrador 3
chu$bo deve ser entendido co$ a$bos os siste$as. -e este for o seu casoG siga as etapas para a
verificao de c1pias de a$bos os siste$as.

)nidade " Parte #+ 2strutura de Diret1rios do Moodle
5iso geral _ )nidade " VfaEerW lista
Decursos eFternos abertos e$ novas janelas do navegador.
2sta )nidade se refere S estrutura de diret1rios no Moodle verso *.:.
O bloco de ad$inistrao 3 ad$in directorNsite
#r?uivos sob este diret1rio lidar co$ todos os recursos sob o V-ite #d$inistrationW bloco.
2$ nove$bro de 2998G h& .3" ar?uivos espalhados e$ *38 diret1rios sob o diret1rio 3 ad$in <no
Moodle *.:.3 g verso>. Para os prop1sitos deste cursoG va$os concentrar apenas no ar?uivo $ais
i$portante+ 3 ad$in 3 cron.php
#lguns dos $1dulos do Moodle precisa$ de verificao continua para eFecutar tarefas. Por
eFe$ploG Moodle precisa verificar os f1runs de discusso para ?ue ele possa enviar as $ensagens
para as pessoas ?ue subscrevera$. O script ?ue eFecuta essas verifica'es contHnua est& localiEado
no diret1rio ad$in e @ cha$ado cron.php. ,eral$ente $onta$os u$ $ecanis$o para esse script @
eFecutado regular$enteG por si s1G e$bora voc% ta$b@$ pode eFecut&;lo $anual$ente direta$ente
de u$ navegador da 0ebG ou a partir de u$a linha de co$ando. Cron.php cria Vbati$ento cardHacoW
para dese$penhar fun'es e$ intervalos definidos por cada $1dulo. 2ste tipo de $ecanis$o @
tipica$ente i$ple$entado usando u$ dae$on cron 3 servio atrav@s do cron.
O script cron.php+
*. Procura na tabela $dle$odules <assu$indo ?ue o prefiFo da tabela padroG @ claro> no banco de
dados para os $1dulos Moodle progra$ado para ter as suas fun'es de eFecutar cron
2. 2$ cada $1duloG tais localiEa diret1rio ?ual?uer funo cha$ada $1dulo na$eecron;in o
ar?uivo e eFecuta;lo lib.php
3. Procura na tabela $dleblocI para os blocos progra$ados para os seus $@todos de cron <fun'es
de objeto> para ser eFecutado
. para cada bloco talG eFecuta o $@todo cron para u$ novo objeto associados a esse bloco
2sses ar?uivos <os ar?uivos lib.php e os ar?uivos de onde as classes so definidas bloco> pode
conter fun'es de li$peEaG fun'es de e;$ail ou ?ual?uer coisa ?ue precisa ser eFecutado e$ u$a
base regular. Por eFe$ploG o cron ir& acionar o siste$a para criar os bacIups dos cursos no hor&rio
especificado nas defini'es de ad$inistrao. Ta$b@$ desencadeia todas as notifica'es de e;$ail
$ensagens $1dulo ou foru$G $as ne$ todas as fun'es so cha$adas cada veE ?ue o cron ser&
eFecutado. #lgu$as fun'esG co$o desinscrever estudantes ?ue no t%$ logado ou eFcluir c1pias
antigas dos ar?uivos de logG s1 so eFecutadas ocasional$ente. O ar?uivo cron.php te$ u$a seo
?ue ir& cha$ar aleatoria$ente essas tarefas centrais aproFi$ada$ente * e$ cada " veEes o cron
ser& eFecutado.
Pote;se ?ue a $&?uina eFecutando o cron no precisa ser a $es$a $&?uina ?ue est& eFecutando o
Moodle. Por eFe$ploG se voc% te$ u$ servio de hospedage$ li$itadoG ?ue no te$ u$ servio de
cronG ento voc% pode optar por eFecutar cron e$ outro servidor ou no co$putador de casa. Tudo o
?ue i$porta @ ?ue o ar?uivo cron.php seja cha$ado regular$ente.
O carrega$ento desse script no @ $uito altaG dessa for$a " $inutos usual$ente @ raEo&velG $as
voc% pode reduEir o perHodo de te$po para *" $inutos ou at@ $es$o 39 $inutos. Z $elhor no
faEer o perHodo de te$po de$asiado longoG co$o atrasar envio de e$ails pode$ di$inuir a
atividade e$ curso. Be$bre;se ?ue o correio;outs ta$b@$ esperar ?ue o te$po de edio para
eFpirar antes de ser enfileirado para envio. 2n?uanto cron @ eFecutado regular$ente e co$ bastante
fre?u%nciaG a carga no @ $uito alto. Po entantoG se no tiver sido eFecutado e$ u$ longo te$po ou
a fre?O%ncia proceessing est& $uito longe das cargas pode ser consider&vel dependendo da
atividade do site e todos os processos de fundo de loteG co$o se $atricular ou $atricular;un ?ue
pode$ precisar de ocorrer.
topo
Os blocos 3 diret1rio
#t@ agora voc% provavel$ente j& sabe sobre VblocosW no $oodle. 4locos Moodle tipica$ente
aparece$ nas $argens es?uerda e direita da p&gina principal de u$ curso. 2les geral$ente cont%$
u$a funo e difere$ das Vse'esW ?ue aparece$ abaiFo a coluna do centro da p&gina principal de
u$ curso ?ue cont%$ o conteUdo e actividades ou recursos adicionados pelo instrutor.
blocos identificados e$ u$ curso
!uando u$ curso Moodle @ criado ele auto$atica$ente gera v&rios VblocosW ?ue lhe per$ite$
controlar a for$a co$o voc% navegar ou encontrar infor$a'es no Moodle <eFe$plos destes
inclue$ o V-ite #d$inistrationW bloco para o ad$inistradorG o V(1ru$ de Pes?uisaW bloco ou o
Calend&rio W Vbloco para todos os usu&riosG etc.> #l@$ dos blocos ?ue aparece$ auto$atica$enteG
voc% vai notar ?ue voc% te$ v&rias op'es para os blocos ainda de ferra$entas <do 4locIs $enu
drop;doLnG ?uando a edio @ ligado> para adicionar ao seu curso. 2Fe$plos inclue$ o VDe$ote
D-- (eedsW blocoG o V4logW do blocoG etc.> Da $es$a for$aG voc% pode eFcluir ?ual?uer u$ dos
blocos eFistentesG se voc% sente ?ue so desnecess&rios ao seu curso e voc% ta$b@$ pode $over os
blocos para ?ue eles aparea$ e$ u$ Unico ladoG e$ veE de e$ a$bos os lados do conteUdo do
$eio <isto s1 pode ser conseguido usando a $over ou eFcluir bot'es co$ a edio ligado>.
2$ u$ tHpico Moodle *.: instalaoG voc% ver& u$ conjunto de blocos padro disponHveis para cada
criador curso.
blocos de lista do $enu suspenso seleo
-e voc% olhar para a sua instalao Moodle local e navegue at@ o diret1rio 3 blocosG voc% encontrar&
u$ diret1rio correspondente para cada bloco.
listage$ da pasta blocos
-e voc% precisa depurar o V4log MenuW do blocoG por eFe$ploG voc% ir para o Vbloge$enu diret1rio
Y. -e voc% precisa depurar oW -earch (oru$s Vdo blocoG co$ear co$ oW searcheforu$s diret1rio VG
etc Mais tarde neste curso va$os introduEir $ais sobre co$o escrever u$ bloco Moodle do ponto
de vista de u$ progra$ador. Detalhes adicionais sobre Vad$inistrao 4locIsW <geral$ente a partir
da perspectiva do ad$inistrador de siste$as>.
tru?ue de $&gica
Dica i$portante+
-e?O%ncias localiEadas deve ser e$ u$ diret1rio do idio$a separadoG co$o e#$%u&'o(. O padro @
u$a stringG se no for encontrado e$ u$a linguage$ ele volta para o e#$u'f). Desta for$aG as
altera'es substituir o padroG $as voc% no te$ ?ue incluir todos os string ou gerenciar $udanas
strings linguage$ central. 5oc% apenas te$ ?ue gerenciar as configura'es localiEadas.
O 3 lang
2ste diret1rio cont@$ todos os ar?uivos de idio$as diferentesG incluindo o seu conteUdo relacionado
ajudar boto. O para pagar $ais ateno @ o diret1rio Veneutf:k. -ob este diret1rioG voc% ser& capaE
de co$preender co$o Moodle define todas as cordas e$ diferentes $1dulos ou blocos. Por
eFe$ploG todas as cordas ?ue esto relacionados co$ o $1dulo de ad$inistrao definido na
ad$in.php.
O diret1rio 3 lib
Para u$ desenvolvedor MoodleG este @ provavel$ente u$ dos diret1rios $ais i$portantes ?ue voc%
ir& usar. O diret1rio 3 lib cont@$ $uitos ar?uivos de biblioteca <28" diret1rios e ar?uivos de 2*8/G a
partir de Moodle *.:.3 g> variando de ajaF e bibliotecas adodbG a bibliotecas <`ahoo )ser 7nterface>
e =MBDb Nui. Os tr%s $ais i$portantes ar?uivos da biblioteca soG provavel$ente* (oo+"e"ib,p-p*
.eb"ib,p-p e a%%e&&"ib,p-p. 2stes tr%s ar?uivos de biblioteca ser& discutido co$ $ais
profundidade na Parte 4 desta )nidade. Po entantoG este @ u$ breve resu$o destes tr%s ar?uivos de
biblioteca+
$oodlelib.php @ o Moodle biblioteca VprincipalW. 2ste ar?uivo cont@$ diversas fun'es de uso
geral Moodle <co$o seteuserepreferences <>G geteusereti$eEone <>G e assi$ por diante>.
Leblib.php cont@$ fun'es ?ue ajuda$ a produEir u$a saHda Moodle Leb. Por eFe$ploG te$
fun'es co$o for$ateteFtee$ail <>G printeheader <>G printegroupe$enu <>G etc
datalib.php cont@$ fun'es ?ue allloL $oodle para acessar o banco de dadosG ele ta$b@$ te$
fun'es ?ue lida$ co$ as capacidades de papelG co$o loadedefaultusererole <>G geteguesterole <>G
etc
O diret1rio 3 $od
2ste diret1rio cont@$ a $aioria dos principais $1dulos do Moodle. #tual$ente e$ *G: $oodle
eFiste$ *: $1dulos;chave no diret1rio 3 $od.
listage$ do diret1rio $od
topo
VTo DoW Bista
*.
2Fperi%ncia co$ o script cron eFecutando;o direta$ente do seu navegador
<http+33localhost3$oodle3ad$in3cron.php>. -e cron @ cha$ado na linha de co$ando por ?ual?uer
usu&rio conectado S sua Moodle ?ue ir& criar u$ a$biente de ad$inistrao te$por&riaG a fi$ de
eFecutar eG e$ seguidaG registrar o usu&rio para fora. 5oc% pode desativar linha de co$ando e$
eFecuo do cronG desativando a seo apropriada no ar?uivo cron.php. 5eja $ais detalhes sobre
co$o configurar a eFecuo auto$&tica do script <cron.php> e$ <*> 0indoLs <2>G servios de
hospedage$G ou <3> )sando o progra$a crontab e$ )niF. Por$al$ente @ esse o trabalho de u$
ad$inistrador de siste$as para configurar issoG @ al@$ do escopo do curso introdut1rio deste
progra$ador Moodle @.
2.
2Fecutar ad$in 3 auth.php do seu navegador 0eb
<http+33localhost3$oodle*:3$oodle3ad$in3auth.php> para ver o ?ue ele faE. 5oc% ta$b@$ pode
acessar o ar?uivo atrav@s do V-ite #d$inistrationW $enu <e$ )su&rios C #utenticaob>.


)nidade " Parte 4+ 5ari&veis ,lobais
Decursos eFternos abertos e$ novas janelas do navegador.
Pa parte 4G va$os focar as vari&veis globais do Moodle. Mais tardeG na Parte C desta unidade
va$os introduEir Moodle #P7 e alguns dos ar?uivos de biblioteca $ais i$portante Moodle.
,lobals Moodle
# $aioria dos progra$adores PMP deve saber ?ueG e$ geralG ?ue pretende evitar o uso de vari&veis
globaisG tanto ?uanto possHvel. 7ndependente$ente deste Moodle orientao geral ainda usa algu$as
vari&veis globais. Co$o u$ progra$ador MoodleG voc% no deve usar ?uais?uer outras vari&veis
globais ?ue no os listados nesta lio. 2$ geralG ?uando a progra$ao co$ Moodle voc% no
deve usar built;in PMP superglobals tanto C e$ veE dissoG voc% deve acessar os dados destas
vari&veis atrav@s de fun'es do Moodle #P7.
/ 0FG
O objeto 6 C(, te$ $uitas das directivas Moodle de configurao. 2$ geralG ?uando ligados a
itens ?ue voc% deseja utiliEar as vari&veis e$ 6 C(, para ?ue seu c1digo @ port&vel para outros
sitesG e a orde$ de cha$ada dos scripts no @ crHtica.
5oc% pode encontrar a $aioria das vari&veis 6 C(, no ar?uivo 3 config.php. P1s no va$os cobrir
todos os atributos de )- 6 C(,G $as va$os concentrar;nos sobre a?ueles ?ue so $ais propensos a
usar durante a progra$ao.
J 6 C(,;b LLLroot+ 2ste @ o endereo base da instalao do $oodle. )se este )DB ao construirG
de $odo ?ue no i$porta o ?ue outro script inclui o seu script. 7sto @G desde o seu script pode
potencial$ente ser incluHdos a partir de u$ diret1rio ?ual?uer ?ue voc% no vai ser capaE de for$a
confi&vel para construir )DBs relativos. D% u$a olhada no seu config.php e ver co$o esta vari&vel
foi definida.
J 6 C(,;b dirroot+ 2ste @ o ca$inho do ar?uivo de base da instalao Moodle. 2ste @ o diret1rio
onde o Moodle est& instalado. 2nto voc% vai encontrar a sua blocos e$ Vl6 C(,;b dirrootm 3
blocosW
J 6 C(,;b dataroot+ 2ste @ o diret1rio de dados para o seu site Moodle.
J 6 C(,;b ad$in+ 2ste @ o no$e de usu&rio ad$inistrador.
J 6 C(,;b httpsLLLroot+ https -e estiver habilitado este @ o endereo base segura LLLroot. -e
https no est& habilitado este @ o $es$o ?ue 6 C(,;b LLLroot.
J 6 C(,;b libdir+ 2ste @ o local dos ar?uivos de biblioteca $oodle.
J 6 C(,;b teFtfilters+ Z u$a lista separada por vHrgula dos filtros de teFto atual$ente habilitado.
J C(,;b 6 loginhttps+ Z u$ valor booleano ?ue indica se ou no est& habilitado para https login.
J 6 C(,;b noreplNaddress+ O endereo de e$ail para usar e;$ail ?ue no deve$ receber u$a
resposta.
J 6 C(,;b sessIeN+ O sessIeN atual. )se o sessIeN <> para obter a chave de sesso atual usu&rios
para o for$ul&rio e processa$ento de dados. )sando o sessIeN <> funo e no o valor e$ 6
)-2D;b sessIeN ou )- 6 C(,;b sessIeN @ o preferido co$o o sessIeN <> funo per$ite ?ue o #P7
para $udar e voc% no precisar& atualiEar seu c1digo.
J 6 C(,;b the$edir+ 2sta @ a localiEao do diret1rio do te$a atrav@s do siste$a de ar?uivos.
J 6 C(,;b the$eLLL+ # Leb )DB base acessHvel para o diret1rio do te$a.
J 6 C(,;b Te$a+ Z o te$a do site atual.
J 6 C(,;b piFpath+ # Leb acessHveis )DB base do diret1rio piF. 2ste @ o lugar onde os Hcones
$oodle vir&.
J 6 C(,;b $odpiFpath+ # Leb )DB base acessHvel dos Hcones $1dulo.
J 6 C(,;b $ailsessionti$e+ 2sta vari&vel ar$aEena o nU$ero de sess'es de hora e;$ail persistir <o
padro @ * $%s>. # funo do cron <funo de li$peEa>G escrito e$ ad$in 3 cron.php @ usado para
podar a tabela de sesso.
#l@$ dissoG se o seu c1digo ar$aEena todas as infor$a'es na tabela de configurao <geral$ente
no$eado co$o $dleconfig> depois ?ue a infor$ao ser& acessHvel atrav@s da vari&vel 6 C(,
ta$b@$.
topo
6 )-2D
O objeto 6 )-2D cont@$ infor$a'es referentes ao usu&rio conectado no $o$ento. 2sta vari&vel
global foi declarado e$ 3 lib 3 setup.php.0e no ir& cobrir todos os atributos deste objetoG $as e$
veE dissoG concentrar;se nos atributos ?ue so $ais propensos a usar. # $aioria desses atributos
v%$ do perfil de usu&rio.
J 6 )-2D;b id+ id do usu&rio do Moodle.
J 6 )-2D;b auth+ O $@todo de autenticao do usu&rio.
J 6 )-2D;b userna$e+ userna$e do usu&rio
J 6 )-2D;b idnu$ber+ idnu$ber do usu&rioG esta @ nor$al$ente usado para identificar o usu&rio
e$ u$ siste$a eFterno.
J 6 )ser;b no$e pr1prio+ firstna$e do usu&rio.
J 6 )-2D;b apelido+ sobreno$e do usu&rio
J 6 )-2D;b e$ail+ O endereo do usu&rio de e;$ail.
J 6 )-2D;b e$ailstop+ 7ndica se o usu&rio tiver desabilitado o seu e;$ail.
J 6 )-2D;b instituio+ # instituio do usu&rio.
J 6 )-2D;b Departa$ento+ Departa$ento do usu&rio.
J 6 )-2D;b endereo+ O endereo do usu&rio.
J 6 )-2D;b citN+ cidade do usu&rio.
J 6 )-2D;b paHs+ o paHs do )su&rio
J 6 )ser;b lang+ O idio$a padro do usu&rio
J 6 )-2D;b Te$a+ O te$a do usu&rio se te$as usu&rio @ per$itido.
J 6 )-2D;b lastlogin+ # Ulti$a veE ?ue o usu&rio feE o
J 6 )-2D;b currentlogin+ O te$po de login do usu&rio atual.
J 6 )-2D;b last7P+ # Ulti$a 7P do usu&rio logado partir.
J 6 )-2D;b i$age$+ -e o usu&rio te$ u$ conjunto de i$age$ ou no.
J 6 )-2D;b ti$e$odified+ # Ulti$a veE ?ue o perfil do usu&rio foi $odificado.
J 6 )-2D;b aluno+ u$a $atriE de nU$eros curso id do usu&rio @ u$ estudante dentro
J 6 )-2D;b ti$eaccess+ u$a $atriE chave por id curso ?ue relaciona o te$po de acesso para o
referido curso particular.
J 6 )-2D;b professor+ u$a $atriE de nU$eros de 7D de usu&rio @ claroG a u$ professor para.
J 6 )-2D;b teacheredit+ u$a $atriE de nU$eros curso id do usu&rio @ u$a edio para ensinar.
J 6 )-2D;b sessIeN+ chave de sesso do usu&rio atual.
topo
6 C)D-O
O objeto 6 C)D-O cont@$ infor$a'es referentes ao curso atual$ente visualiEando. 2sta vari&vel
global ta$b@$ foi declarado e$ 3 lib 3 setup.php.0e no ir& cobrir todos os atributos deste objetoG
$as e$ veE dissoG concentrar;se nos atributos ?ue so $ais propensos a usar no futuro.
J 6 CO)D-2;b id+ id do curso curso Moodle.
J 6 CO)D-2;b categoria+ categoria do curso. Por$al$ente ad$inistrador $oodle pode ter
configurao de v&rias categorias de cursoG por eFe$ploG VCi%nciaWG VCi%ncias Mu$anasWG V-aUde
PUblicaWG etc <ou co$ base no se$estre>. !uando voc% cria u$ novo curso $anual$enteG por
padroG a categoria ser& definido co$o VDiversosW para a ?ual o 7D da categoria @ *.
J 6 CO)D-2;b fullna$e+ no$e co$pleto do cursoG tais co$o VCo$puter Bogic Progra$$ing
Ci%ncia 4&sicaW
J 6 CO)D-2;b shortna$e+ O curso abreviadoG co$o C-*9*.
J 6 CO)D-2;b for$ato+ O Vfor$atoW do curso @ geral$ente VsiteW <para o curso de raiE Moodle>G
Vse$anasWG ou Vte$asW <baseado no for$ato ?ue o professor escolhe>.
J 6 CO)D-2;b visHvel+ 7sto especifica se o curso @ visHvel para os alunos ou no
J 6 CO)D-2;b group$ode+ 7sto especifica se o curso utiliEa o $odo de grupo ou no. 9 @ noG e *
@ si$.
J 6 CO)D-2;b ti$ecreated+ O te$po ?ue o curso foi criado. 2ste for$ato usa )niF cari$bo de
te$po para real$ente entender o ?ue a data real @G voc% precisa de algu$a converso <veja o linI
abaiFo para $ais detalhes>
J 6 CO)D-2;b ti$e$odified+ O te$po ?ue o curso foi $odificada pela Ulti$a veE. Mais u$a veE
ele est& usando )niF for$ato de cari$bo de te$po.
J 6 CO)D-2;b convidado+ V. #cesso de visitanteW -e o curso per$ite ?ue -e o valor for definido
para 9G ento noG $as se o valor for definido co$o *G ento si$.
J 6 CO)D-2;b startdate+ # data de inHcio do curso Moodle. Pote;se ?ue o Moodle utiliEa
Vti$esta$p )niFW para converter a data real 3 hora para startdate. #ssi$G por eFe$ploG se voc%
?uiser faEer u$a consulta -!B para listar todos os cursos ?ue te$ data de inHcio de 299839:39* a
299839/39* voc% pode escrever a consulta co$o esta usando VuniFeti$esta$pW+
selecionar fullna$eG no$e abreviadoG cat.na$e de $dlecourseG $dlecourseecategories co$o gato
onde
startdate uniFeti$esta$pb <i29989:9* 99+99+99 Y> e startdate auniFeti$esta$p <i29989/9*
99+99+99n>
e categoria order o cat.id por cat.na$e
Mais infor$a'es sobre o ti$esta$p )niF.
Para outros atributos no objeto 6 CO)D-2G navegar na tabela $dlecourse Moodle.
Na(e Defau"' 1a"ue T2pe
6CO)D-2 Object<stdClass> < ele$ents>
id V*k -tring
categorN V9k -tring
sortorder V*999k -tring
passLord VW -tring
fullna$e VMoodle *.:.F gW -tring
shortna$e V$dl*:FW -tring
idnu$ber VW -tring
su$$arN VtestW -tring
for$at VsiteW -tring
shoLgrades V*k -tring
$odinfo P)BB )ndefined
neLsite$s V3k -tring
teacher VTeacherW -tring
teachers VTeachersW -tring
student V-tudentW -tring
students V-tudentsW -tring
,uest V9k -tring
-tartdate V9k -tring
2nrolperiod V9k -tring
Pu$sections V9k -tring
MarIer V9k -tring
MaFbNtes V9k -tring
-hoLreports V9k -tring
5isible V*k -tring
Middensections V9k -tring
,roup$ode V9k -tring
,roup$odeforce i9n -tring
Bang VW -tring
The$e VW -tring
Cost VW -tring
CurrencN V)-DW -tring
Ti$ecreated V9k -tring
Ti$e$odified V**/8.8/"8k -tring
Metacourse V9k -tring
De?uested V9k -tring
Destrict$odules V9k -tring
2FpirNnotifN V9k -tring
2FpirNthreshold V9k -tring
PotifNstudents V9k -tring
2nrollable V*k -tring
2nrolstartdate V9k -tring
2nrolenddate V9k -tring
2nroll VW -tring
Defaultrole V9k -tring
top
topo
6 -7T2
5ari&veis site so configura'es ?ue deter$ina$ co$o suas fun'es site inteiro Moodle. #s
vari&veis 6 site so as configura'es $ais t@cnicas. 2sta @ a Unica vari&vel global ?ue no @
declarada no lib 3 3 ar?uivo setup.php. 2stes so alguns atributos co$u$ente usados e$ Moodle *.:+
J 6 -7T2;b fullna$e+ no$e co$pleto O site do Moodle. 2ste @ baseado no ?ue voc% descreveu
durante o processo de instalao do Moodle.
J 6 -7T2;b shortna$e+ no$e curto O site do Moodle. 2sta @ ta$b@$ baseado no ?ue voc% @
cha$ado durante o processo de instalao do Moodle.
J 6 -7T2;b nu$sections+ O nU$ero site Moodle de se'es.
J 6 -7T2;b id+ O Moodle nU$ero de identificao site. Por padroG ele @ designado co$o V*k.
J 6 -7T2;b categoria+ O Moodle nU$ero da categoria site. Por padroG ele @ designado co$o V9kG
?ue @ a categoria raiE. ,eral$ente apenas o Moodle Vcurso de raiEW C a pri$eira p&gina do MoodleG
?ue @ atribuHda a categoria 9. # categoria de curso VDiversosW @ categoria *.
J 6 -7T2;b senha+ 2sta @ a senha stite ad$in ad$inG ?ue @ o ad$inistrador super <no$e de usu&rio+
ad$in> senha. Pota+ Po confunda este co$ os )- 6 dbpass C(,;b C estes dois so diferentes. Os
)- 6 C(,;b dbpass @ geral$ente definida no config.php e @ a senha do banco de dados do Moodle.
Na(e Defau"' 1a"ue T2pe
6-7T2 Object<stdClass> < ele$ents>
5isible V*k -tring
Ti$e$odified V**:238"38/n -tring
Ti$ecreated V9k -tring
The$e VW -tring
Teachers VteachersW -tring
Teacher VteacherW -tring
-u$$arN VtestW -tring
-tudents VstudentsW -tring
-tudent VstudentW -tring
-tartdate V9k -tring
-ortorder V*999k -tring
-hoLreports V9k -tring
-hoLgrades V*k -tring
-hortna$e V$oodle*:pW -tring
Destrict$odules V9k -tring
De?uested V9k -tring
PassLord VW -tring
Pu$sections i9n -tring
PotifNstudents V9k -tring
PeLsite$s V3k -tring
Modinfo P)BB )ndefined
Metacourse V9k -tring
MaFbNtes V9k -tring
MarIer i9n -tring
Bang VW -tring
7dnu$ber VW -tring
7d V*k -tring
Middensections V9k -tring
,uest V9k -tring
,roup$odeforce V9k -tring
,roup$ode V9k -tring
(ullna$e VMoodle *.:.FgW -tring
(or$at VsiteW -tring
2FpirNthreshold V9k -tring
2FpirNnotifN V9k -tring
2nrolstartdate V9k -tring
2nrolperiod V9k -tring
2nrolenddate V9k -tring
2nroll VW -tring
Defaultrole V9k -tring
CurrencN V)-DW -tring
Cost VW -tring
CategorN V9k -tring
No'a3 Ou'ra& !ari4!ei& g"obai&* %o(o / T5EME* / +b* / M0A05E* e US /
5TTPSPAGERE6UIRED &7o e#%o#'ra+o& #o 8 "ib 8 &e'up,p-p,
VTo DoW Bista
*.
Beia DiretriEes Moodle adicionais de codificao+ p *9 na seo de regras geraisq p . na seo
?uest'es de segurana.
2.
)se printeobject <> <definida e$ 3 lib 3 datalib.php e$ torno da linha *.*9>G print <>
<http+33us2.php.net3print> ou echo <> <http+33us2.php.net 3 $anual 3 en 3 function.echo.php> para
escrever alguns dos valores das vari&veis globais $encionados nesta unidade para fins de
depurao.
3.
Contribuir co$ suas id@ias Ss discuss'es para esta )nidade de vari&veis globais.

)nidade C Parte "+ 4ibliotecas Moodle
5iso geral _ )nidade " Parte C VfaEerW lista
Decursos eFternos abre$ e$ novas janelas do navegador.
tru?ue de $&gica
Dica i$portante+
Discutir co$ a e?uipe principal Moodle <usando $oodle.org VDeveloper ,eralW do f1ru$> no
planeja$ento de $udanas a ?ual?uer u$ destes tr%s ar?uivosG e de prefer%ncia <se voc% tiver
acesso de gravao S &rvore C5- do Moodle> depois de aprovado pela e?uipe principal do MoodleG
voc% deve confir$ar as altera'es para o C5- Moodle
Pa parte # desta unidade voc% foi apresentado a u$ dos diret1rios $ais i$portantes para os
desenvolvedores MoodleG o diret1rio 3 lib. Pa parte CG voc% vai aprender $ais sobre esse diret1rioG
especifica$ente os tr%s grandes ar?uivos de biblioteca+ $oodlelib.phpG Leblib.php e datalib.php.
#o revisar eFe$plos de c1digo no Moodle e co$ear a preparar o c1digo co$o parte desta lioG
consulte a seo VProgra$ao ,eral e 5iso geral de seguranaW )nit neste curso.
Para u$a viso geralG levar& algu$ te$po para percorrer o Core Moodle #P7G geral$ente coberto
por esses tr%s ar?uivosG para ?ue voc% possa ter u$a id@ia da escala desses tr%s ar?uivos de
biblioteca. 2sta p&gina @ gerada auto$atica$ente usando PMP2dit <u$a ferra$enta de softLare
PMP> dos tr%s ar?uivos de biblioteca principal no $oodle 3 lib.
Progra$adores Moodle $uito poucos poderia do$inar cada funo ou classe entre esses tr%s
ar?uivos de biblioteca. Por$al$ente voc% olhar para ci$a destes tr%s ar?uivos de biblioteca
i$portante para o ?ue voc% precisa saber ?uando voc% est& solucionando u$ proble$a. 2Fiste u$
site $uito Util fornecida pelo MoodleG http+33Fref.$oodle.org3 <referida neste curso co$o VFrefW>.
Pavegue neste site para obter id@ias de co$o usar este site para procurar fun'es especHficasG
classesG ou vari&veis.
Pois pode no ser f&cil de do$inar cada funo dentro destes tr%s ar?uivos de bibliotecaG @
provavel$ente $elhor para eFplicar co$ alguns eFe$plos. #?ui esto tr%s eFe$plos de co$o voc%
pode solucionar proble$as co$ esses tr%s ar?uivos.
Caso # C $oodlelib.php
Co$o j& aprende$os co$ a Parte #G o $oodlelib.php Z o ar?uivo de biblioteca principal de
diversas fun'es de prop1sito geral Moodle. 7sso significa ?ue ele ta$b@$ cont@$ fun'es
relacionadas co$ loginG etc -e olhar$os para u$ caso eFe$plo MDB;*938" no 4ug TracIer voc%
vai notar ?ue o proble$a era $nethostid indefinido <?ue voc% pode i$aginar ?ue significa Vid
anfitrio MnetW>. Pa descrio do relat1rio de bug ?ue $enciona ?ue o plano @ criar u$a nova
createeguesteuser <> funciona$ sob $oodlelib.php co$ as configura'es corretas. 2ste @ o tipo de
funo ?ue nor$al$ente vai para $oodlelib.php
Caso 4 C Leblib.php
2sta @ a biblioteca de todas as fun'es de prop1sito geral Moodle PMP e constantes ?ue produEe$
saHda MTMB. Po c1digo do Moodle *.:G ?ue define u$a classe <tabobject> e nove fun'es. 5eja u$
caso de eFe$plo usando Leblib.php co$ MDB;**"9. no 4ug TracIer.
Caso C C datalib.php
2sta @ a biblioteca ?ue cont@$ fun'es para $anipulao de banco de dados. Po c1digo do Moodle
*.:G datalib.php define 3 fun'es. #lguns eFe$plos so getead$in <> <retorna 6 objeto de usu&rio
do usu&rio ad$inistrador principal>G &ear%-$u&er& 9: 9pe&;ui&a a'ra!<& +e u&u4rio& < %"aro:*
ge'$u&er& 9: 9re'or#a u( &ub%o#=u#'o +e u&u4rio&:* ge'$%our&e& 9: 9re'or#a "i&'a +e %ur&o&* por
'o+o &i'e* ou %a'egoria:* ge'$"og& 9:* e'%
O datalib.php Ss veEes pode ser confundida co$ d$llib.phpG ?ue @ outra biblioteca $uito
i$portante ?ue cont@$ fun'es para $anipulao de banco de dados ta$b@$. Po entantoG
d$llib.php e$ neg1cios e$ geral co$ o nHvel recorde <nHvel $ais $icro> tipo de $anipulao de
banco de dadosG en?uanto lida datalib.php co$ os usu&riosG ad$inistradoresG cursosG logs e outros
nHveis $ais elevados de $anipula'es de banco de dados. 5eja dois eFe$plos usando datalib.php no
4ug TracIer+ MDB;***3" e MDB;:"/.
Durante upgrades de verso principal do MoodleG geral$ente haver& $ais fun'es adicionais ?ue
esses tr%s ar?uivos <$oodlelib.phpG Leblib.php e datalib.php>.
Outras bibliotecas i$portantes
ponto de eFcla$ao
Be$bre;se+
#ssu$ir u$a funo eFiste antes de escrever a funcionalidade e$ seu pr1prio paHs.
#P7 Moodle @ bastante robustoG e fun'es pode$ ser divididas e$ v&rias categorias principais.
Co$preender onde partes do #P7 esto localiEados na estrutura do Moodle lib pode ser
eFtre$a$ente Util para deter$inar onde para verificar se u$a deter$inada funo eFiste ou co$o
cha$ar u$a funo particular.
2Fiste$ algu$as fun'es ?ue so usados co$ fre?O%ncia co$ a ?ual voc% deve se fa$iliariEar.
Co$o voc% ficar $ais fa$iliariEado co$ Moodle atrav@s da eFperi%ncia de progra$ao torna;se
1bvio ?ue estas so fun'es. 5a$os esperar at@ co$ear a escrever algu$ c1digoG antes de cobrir a
#P7 e$ detalhesG $as a seguir @ u$a breve descrio da funcionalidade e u$ bo$ ponto de partida
para procurar+
J Bib 3 d$llib.php+ inserirG atualiEar e recuperar dados do banco de dados. 2stas so fun'es de
nHvel $ais $icroG incluindo eFecutees?l <>G dbeuppercase <>G $odifNedatabase <>G counterecords <>G
geterecord <>G getefield <>G deleteerecord <>G inserterecord <>G updateerecord <>G etc # partir de
$oodle *.:.3 gG h& cerca de ./ fun'es definidas neste ar?uivo de biblioteca <para $ais
infor$a'es consulte o site Fref Moodle>. O $ais i$portante <ou $ais fre?uente$ente usados>
fun'es nesta biblioteca so+
o geterecord <> Obter u$ Unico registro co$o u$ VobjetoW. 2sta funo @ $uito utiliEado <ou sejaG
*"99 veEes referenciado e$ Moodle g c1digo *.:>.
o geterecords <> Obter u$ nU$ero de registros co$o u$ arraN de objetos. 2sta funo ta$b@$ @
fre?Oente$ente usado <ieG referenciada .9 veEes g e$ Moodle *.:. C1digo>. -e a consulta for
be$;sucedido e retorna pelo $enos u$ registroG o valor de retorno @ u$ arraN de objetosG u$ objeto
para cada registro encontrado. # chave do arraN @ o valor da pri$eira coluna do conjunto de
resultados. O objeto associado co$ essa chave te$ u$a vari&vel de $e$bro para cada coluna dos
resultados.
o geterecordes?l <> Obter u$ Unico registro co$o u$ objeto usando u$a instruo -!B. #
instruo -!B deveG nor$al$enteG s1 retorna u$ registro. Po $odo de depurao voc% receber& u$
aviso se $ais registros so retornados <a $enos ?ue voc% definir 6 eFpect$ultiple para true>. 2$
no;debug $odeG ele s1 retorna o pri$eiro registro.
tru?ue de $&gica
Dica i$portante+
#o acessar o banco de dados usa$ o banco de dados do Moodle #P7. O banco de dados #P7 abstrai
o banco de dados cha$adas per$itindo ?ue os ad$inistradores do siste$a para escolher ?ual banco
de dados relacional funciona $elhor para esta instalao. Po usar a #P7 de banco de dados fora o
desenvolvedor criar consultas -!B para todos os bancos de dados relacionais Moodle suporta
<MN-!BG Postgre-!BG M--!B e Oracle>.
J Bib 3 ddlib.php+ criarG $odificar ou eFcluir es?ue$a do banco. Po Moodle *.: ?ue cont@$ 28
fun'es. 2sta biblioteca inclui fun'es co$o tableecolu$n <>G tableeeFists <>G fieldeeFists <>G
indeFeeFists <>G findeindeFena$e <>G createetable <>G rena$eetable <>G addefield <>G dropefield <>G
rena$eefield <>G addeIeN <>G dropeIeN <>G etc #lgu$as das fun'es $ais i$portantes ou $ais
fre?Oente$ente utiliEadas neste ar?uivo de biblioteca so+
o tableecolu$n <> 2sta funo ir& adicionar u$ novo ca$po a u$a tabelaG ou alterar u$ j& eFistente
<se oldfield @ definido>. (oi referenciada :"9 veEes g e$ c1digos Moodle. #viso+ Tenha cuidado e$
chaves pri$&rias e$ tabelas diferentesG co$o esta funo vai co$er autoeincre$ents.
o createetable <> 2sta funo ir& criar a tabela passada co$o u$ argu$ento co$ todos os seus
ca$pos 3 chaves 3 Hndices 3 se?O%ncias C tudo co$ base no objeto =MBDb. Co$o voc% poderia
i$aginarG h& ta$b@$ DDOPeT#4B2 <>G rena$eetable <>G addefield <>G dropefield <>G rena$eefield
<>G e changeefieldetNpe <> fun'es. Todos esto relacionados co$ a $anipulao do es?ue$a do
banco de dados.
J Bib 3 accesslib.php+ 2ste @ u$ ar?uivo de biblioteca novo criado a partir de Moodle *.8. Cobre
principal$ente conteFtoG pap@is e fun'es relacionadas co$ per$isso. Po Moodle *.:.F h& cerca
de :9 fun'es definidas nesse ar?uivo accesslib.php. (un'es $ais utiliEadas so+
o re?uireecapabilitN <> 5erifica se h& u$a afir$ao capacidade de ser verdadeiro. -e no for
seguidaG a p&gina @ ter$inada perfeita$ente co$ u$a $ensage$ de erro padro.
o hasecapabilitN <> 5oc% ver& esta funo ?ue est& sendo referenciado u$ lote <no Moodle *.:.3 gG
pelo $enosG /*" veEesq ver o site do Moodle Fref para $ais detalhes>. 2sta funo retorna onde o
usu&rio atual te$ a capacidade de eFecutar u$a funo. Por eFe$ploG pode$os faEer hasecapabilitN
<$od 3 foru$+A DeplNpost YG 6 conteFto> no f1ru$. 2sta @ u$a funo recursivaG pelo ca$inho.
o geteconteFteinstance <> Obter a inst^ncia do conteFto co$o u$ objeto. 2sta funo @
fre?Oente$ente usado e ir& criar a inst^ncia do conteFto se no eFiste ainda.
o createerole <> e deleteerole <> Cria u$ papel e eFclui u$ papel <assi$ co$o li$p&;lo depois>
J Bib 3 blocIlib.php+ 2$ su$aG este ar?uivo de biblioteca inclui todas as fun'es necess&rias para
usar blocos e$ u$a p&gina do curso tHpico. # partir do Moodle *.:.3 gG h& cerca de 28 fun'es
incluHdas neste ar?uivo. #lguns dos $ais i$portantes <ou fre?uente$ente utiliEado> fun'es
inclue$+
o blocIeinstance <> Carrega os ar?uivos de classe necess&rios para u$ bloco. -e$pre ?ue voc%
?uiser carregar u$ blocoG use esta funo e$ pri$eiro lugar.
o blocIsehaveecontent <> 2sta funo ir& aceitar u$a $atriE de inst^ncias de blocos e verifica se
algu$ deles te$ conteUdo para $ostrar. 7r& retornar verdadeiro ou falso. 2le est& sendo referenciado
no curso 3 3 for$ato 3 scor$ 3 for$at.phpG 3 ad$in 3 settings.phpG e outros lugares.
o blocIeprintegroup <> 7$pri$e u$ grupo de blocos e$ u$a p&gina. Par^$etros passados por
refer%ncia para a velocidadeG no so $odificados.
J Bib 3 for$slib.php+ 2ste @ u$ ar?uivo de biblioteca $uito i$portante no Moodle *.:. 2sta @ a
biblioteca de classes para a criao de for$as no MoodleG co$ base e$ !uicI(or$s P2#D. !uer
saber $ais sobre as caracterHsticas de for$slibA #dicionais Uteis os recursos relacionados so de uso
(or$slibG definio de for$ul&rio (or$slib e 5alidao (or$slib.
7nfor$a'es ta$b@$ esto disponHveis sobre as altera'es $ais recentes para os ar?uivos de
biblioteca $encionados aci$a.
tru?ue de $&gica
Dica i$portante+
-aber para onde olhar eo ?ue funciona para uso se tornar& $ais f&cil co$ o te$po e fa$iliaridade
co$ o codebase Moodle. Pode parecer frustrante a princHpio C $as seja pacienteX
-elecionando ar?uivos de biblioteca para incluir
#o incluir as bibliotecas do nUcleo do MoodleG @ $elhor seguir a pr&tica de $enos @ $ais+ incluindo
apenas as bibliotecas ?ue cont%$ as fun'es ?ue voc% precisa para ?ue o progra$a funcione.
-e$pre use a funo re?uireeonce <> para evitar a incluso de ar?uivos ?ue pode$ j& ter sido
incluHda e$ outras partes do c1digo do Moodle. O ar?uivo $ais co$uns para incluir @ config.php.
2ste ar?uivo configura o global 6 C(, vari&vel <$ais cerca de )- 6 C(, para vir na )nidade "
Parte C>G be$ co$o inclui outros ar?uivos essenciais. Outra pr&tica co$u$ @ para ar$aEenar todas
as fun'es co$uns de u$ bloco ou $1dulo e$ u$ ar?uivo cha$ado ar?uivo de biblioteca lib.php.
2ste @ apenas u$ breve resu$o e os ar?uivos de biblioteca aci$a cobre$ $ais funcionalidade do
?ue @ sugerido pela lista aci$a. 2Fiste$ $uitas outras fun'es disponHveis atrav@s da #P7.
2Fe$plo trechos de c1digo usando fun'es de Tr%s ar?uivos de biblioteca principal
2Fe$plo *
Objetivo+ 7$ple$entar u$a instruo if para ver se u$ usu&rio co$ Yjoei userna$e eFiste no banco
de dados do usu&rio.
Passo *+ #nalisar a tarefa. Co$o a tarefa @ lidar co$ o banco de dados do usu&rioG olha$os para o 3
lib 3 d$llib.php procurar fun'es Uteis ?ue pode$os usar para recuperar dados do usu&rio.
2ncontra$os a funo VrecordeeFists <>W.
Passo 2+ 7$ple$entar os trechos de c1digo+
global 6 C(,q
re?uere$ u$a veE <6 C(,;b dirroot Yconfig.phpi.>q
re?uere$ u$a veE <6 C(,;b dirroot Y3 lib 3 d$llib.php.>q
if <recordeeFists <YuseriG Yuserna$eiG Yjoei>> l
print Yjoe @ u$ no$e de usu&rioiq
m
else l
print Yjoe no @ u$ no$e de usu&rioiq
m
Passo 3+ Testar o c1digo para ver se funciona. M@todos de ensaio so abordados co$ $ais
profundidade na )nidade :.
topo
2Fe$plo 2
Objetivo+ 7$pri$ir u$ si$ 3 no caiFa de co$binao para u$ for$ul&rio MTMB co$ o no$e do
ele$ento VativoWG VnoW co$o selecionados.
Passo *+ #nalisar a tarefa. Co$o a tarefa @ lidar co$ a saHda MTMBG olha$os para o 3 lib 3
Leblib.php procurar fun'es Uteis ?ue nos ajuda$ a alcanar o nosso objectivo. P1s encontra$os
Ychooseefro$e$enu <> Va funo <e$ torno de linha p .2>.
Passo 2+ 7$ple$entar os trechos de c1digo+
global 6 C(,q
re?uere$ u$a veE <6 C(,;b dirroot Yconfig.phpi.>q
re?uere$ u$a veE <6 C(,;b dirroot Y3 lib 3 Leblib.php.>q
6 Options o arraN <>q
6 Options \9] o getestring <Ynoi>q
6 Options \*] o getestring <Vsi$W>q
chooseefro$e$enu <6 optionsG YativoiG Ynoi>q
Passo 3+ Teste o c1digo.
2Fe$plo 3
Objetivo+ Bi$peEa e desinfeco de alguns dados apresentados a partir de u$ for$ul&rio e inserir
os dados e$ tabela Y$dlenotesi onde Y$dlei @ o prefiFo do banco de dados. #ssu$indo ?ue VnotasW
@ u$ teFtarea e Yurli @ u$a caiFa de teFto.
Passo *+ #nalisar a tarefa. # tarefa @ lidar co$ <*> li$peEa de dados enviados de u$ for$ul&rioG e
<b> inserir dados e$ u$a tabela Moodle. Percebe$os ?ueG provavel$enteG ter ?ue olhar para o 3 lib
Leblib.php 3 <para dados apresentados de u$a for$a> e 3 lib $oodlelib.php 3 <para li$peEa de
dados>G e 3 lib d$llib.php 3 <para inserir dados no tabela BogoG te$os ?ue lidar co$ tr%s ar?uivos de
biblioteca+. Leblib.php funoG $oodlelib.php e d$llib.php 2ncontra$os a dataesub$itted <funo>
e$ Leblib.php <e$ torno de linha p 2:">G e cleanepara$ <>. e$ $oodlelib.php <e$ torno de linha p
33.> eG final$enteG o inserterecord <> e$ d$llib.php. -e ?uere$os lidar co$ o c1digo escrito e$
u$a VMoodleW $ais u$a for$aG poderHa$os usar getestring <> <retorna u$ se?O%ncia localiEada>G e
printestring <> <i$pri$ir u$a string traduEida> funciona para $ostrar o sucesso 3 erro. Desta for$aG
seria per$itir ?ue a $ensage$ de erro a ser eFibido e$ diferentes idio$as <se a string @ definida e$
u$ pacote de idio$a particular>.
Passo 2+ 7$ple$entar os trechos de c1digo+
global 6 C(,q
re?uere$ u$a veE <6 C(,;b dirroot Yconfig.phpi.>q
re?uere$ u$a veE <6 C(,;b dirroot Y3 lib 3 d$llib.php.>q
re?uere$ u$a veE <6 C(,;b dirroot Y3 lib 3 Leblib.php.>q
re?uere$ u$a veE <6 C(,;b dirroot Y3 lib 3 $oodlelib.php.>q
if <6 dados o dataesub$itted <>> l
if <X e$ptN <6 data;b notas> r rX e$ptN <6 data;b url>> l
3 3 Construir u$ novo objeto para inserir no banco de dados
6 7nsert o neL stdClassq
6 7nserir;b notas o cleanepara$ <6 data;b notasG P#D#MeCB2#P>q
6 7nserir;b url o cleanepara$ <6 data;b urlG P#D#Me)DB>q
if <inserterecord <YnotasiG 6 inserir>> l
printestring <Ynotesinsertedi>q
m
else l
erro <getestring <Yinsertnoteserrori>>q
m
m
else l
erro <getestring <Y$issingre?uireddatai>>q
m
m
else l
erro <getestring <Ynodatasub$ittedi>>q
m
Passo 3+ Teste o c1digo.
topo
VTo DoW Bista
*. #bra seu editor de PMP favorito e percorrer a $oodlelib.php agora.
tru?ue de $&gica
Dica i$portante+
# VbuscaW recurso no site Fref @ por veEes difHcil de encontrar e utiliEar. O linI de pes?uisa est&
localiEada no canto superior direito do site e ?uando voc% V$ouse;overW no linIG voc% ver& u$
e$butido janela pop;up de op'es <funo de classeG vari&velG constanteG e tabela>.
2.
7r para Fref <http+33Fref.$oodle.org3> e percorrer o $es$o ar?uivo <$oodlelib.php>. Desta veEG voc%
ser& capaE de clicar e$ fun'es ou vari&veis i$ediata$ente e saber onde eles fora$ definidos ou
referenciados. 2ste site pode ser particular$ente Util ?uando voc% tenta percorrer todas as principais
fun'es cobertas de $oodlelib.php.
captura de tela de Fref
2ste Vrecurso de buscaW ta$b@$ ir& gravar o seu hist1rico de pes?uisa. -e voc% clicar e$ VMist1rico
de pes?uisa gW linI linIG voc% vai ver todo o seu hist1rico de busca neste site+
screen shot Fref
3.
2scolha u$ ar?uivo no abrangidos e$ discusso esta )nidade do diret1rio 3 lib e procurar o c1digo
para deter$inar o ?ue ele faE.
.
Pavegue e$ Leblib.php Fref.$oodle.org para ter u$a id@ia do ?ue fun'es so abordados neste
ar?uivo de biblioteca.
".
2screva u$ trecho si$ples ?ue listar todos os cursos <co$ a sua idG no$e abreviadoG e fullna$e>
?ue fora$ criados entre 299.3*939* a 29983*239*. <Dica+ voc% pode precisar usar u$a funo na
biblioteca $oodlelib.php para converter u$a data para u$ ti$esta$p uniF.> # saHda deve estar
usando o getestring <> funo <e$ veE de usar apenas eco ou i$presso para ?ue esteja e$
confor$idade co$ o Moodle padro <para tornar $ais f&cil para outros idio$as>. 2nvie seu trecho
co$o u$ ar?uivo de teFto na &rea de atribuio designada.
..
Co$partilhar seus co$ent&rios sobre as bibliotecas Moodle no f1ru$ de discusso designado.
8.
(aa o teste. Duas tentativas so per$itidas.
:. #dicionar S discusso sobre bibliotecas Moodle.Ouvir
Ber fonetica$ente
Ouvir
Ber fonetica$ente

)nidade .+ 5iso geral de pr&ticas de progra$ao
5iso geral _ )nidade . VfaEerW lista
Decursos eFternos abre$ e$ novas janelas do navegador.
M& desafios definitiva para criao e $anuteno de c1digo criado por progra$adores ao redor do
$undo ?ue pode$ ser acostu$ados aos seus padr'es de progra$ao pr1pria. Por isso no deveria
ser surpreendente ?ue o Moodle se desenvolveu diretriEes de codificao para agiliEar a integrao
de c1digo a partir de $uitas fontes. #l@$ da leitura atribuHdo sobre as orienta'es Moodle
codificaoG co$o voc% se prepara para escrever seus progra$as Moodle pr1priaG le$bre;se destas
dicas r&pidas+
J )se ?uatro espaos e$ veE da tecla Tab. 7sso pode ser facil$ente realiEado por configurar
correta$ente o seu editor co$o voc% feE na )nidade 2 para o 2clipse.
J Os no$es das vari&veis deve$ ser descritivos e Uteis
J 2screva seu c1digo para ser lido e$ veE de escrever co$ent&rios para eFplicar o c1digo $al
escrito.
!ual?uer recurso boa segurana e$ pri$eiro lugar cobrir aspectos de engenharia socialG por?ue
$uitas falhas de segurana so u$ resultado da falta de polHtica ou protocolo seguinte polHtica
eFistente. 2ste aparelho s1 breve$ente cobrir aspectos de engenharia social C ne$ todos os aspectos
possHveis de segurana. M& $uitos recursos de ?ualidade por aH ?ue vai faEer u$ trabalho $uito
$elhor <de refer%ncia aneFo> do ?ue poderia faEer a?ui. Por este $otivo va$os nos concentrar e$
co$o gerenciar riscos envolvidos co$ o banco de dados orientado aplica'es Leb. Ta$b@$
fare$os u$a breve cobrir outras ?uest'es de segurana e inclue$ algu$as das $elhores pr&ticas de
segurana.
V# grande $entira da segurana do co$putador @ ?ue a segurana $elhora atrav@s da i$posio de
senhas co$pleFas e$ usu&rios. Pa vida realG as pessoas escreve$ para baiFo ?ual?uer coisa ?ue
no $e le$bro. # segurana @ au$entada atrav@s da concepo para a for$a co$o os hu$anos
real$ente se co$porta$. W C KaIob Pielsen
Co$o a $aioria dos proble$as de segurana baseados e$ Leb ocorrerA
2rros na progra$ao
Dando per$isso de$ais para u$ usu&rio ou no restringir a per$isso do usu&rio+ 7sso acontece
?uando no o fiEer$osG ou no podeG ade?uada$ente verificar se u$ usu&rio te$ a autoridade para
eFecutar u$ co$ando. 7sto significa ?ue os usu&rios no deve$ ser capaE de editar conta de outro
usu&rioG a $enos ?ue tenha privil@gios ad$inistrativos. Ou u$ usu&rio no deve ser capaE de $udar
o cursoG a $enos ?ue eles so os professores para esse curso ou ?ue esto u$ ad$inistrador ou
outro usu&rio ?ue deve ter esse privil@gio.
2rros de l1gica geral+ M& erros de l1gica geral ?ue parece$ seguir os passos ade?uadosG $as talveE
u$ boolean condicional @ invertida ou indevida$ente negada. 7sto @G ?ue desce$os do ra$o errado
da eFecuo.
2rros no trata$ento dos dados
7ndevida$ente $anipulao de dados+ 2ssencial$ente no h& dados provenientes de usu&rios
deve$ se$pre ser confi&vel. O ?ue isto significa @ ?ueG independente$ente de ?ue$ @ nosso
usu&rio atual @ ?ue deve$os tratar os dados ?ue entra$ co$o se pode ter conteUdo $alicioso.
Deve$os dados se$pre ade?uada$ente li$pa e filtro proveniente do usu&rio. Dados ar$aEenados
no banco de dados foiG provavel$enteG inicial$ente apresentado por u$ usu&rio para ?ue os dados
precisa$ ser tratadas correta$ente ?uando reeFibida para os usu&rios.
(alta de fundio 3 tipo de verificao+ 2sta @ essencial$ente u$a eFtenso da $anipulao de
dados indevida$ente. !uando esta$os esperando u$ nU$ero co$o entrada do usu&rio deve$os
garantir ?ue u$ nU$ero @ fornecido. -e$pre ?ue possHvelG dados nu$@ricos deve ser usado por?ue
@ eFtre$a$ente f&cil de li$par. Po entantoG ainda precisa$os faEer verifica'es nHvel apropriado de
usu&rio para garantir ?ue eles tenha$ o direito de ver ou $odificar dados.
2Fpondo $uita infor$ao+ C #lguns siste$as t%$ sido referidos co$o Vl&bios soltaW ?uando eles
eFp'e$ as infor$a'es de$ais. )$ eFe$plo co$u$ @ u$ script de login ?ue pode responder co$
Vsenha incorreta para YKoei usu&rioW este siste$a @ solto l&bios por?ue alerta o usu&rio ?ue YKoei @
u$a conta de usu&rio v&lida. # $elhor $ensage$ seria Vuserna$e ou senha incorretaW isso
proporciona u$ usu&rio v&lido co$ infor$a'es sobre o ?ue correu $al e u$a pessoa tentando
cortar u$ login co$ essencial$ente nenhu$a infor$ao. Pa $aioria das veEes de$asiada
infor$ao @ eFposta atrav@s de $ensagens de erroG $asG infeliE$ente @ fre?uente$ente o caso ?ue
$uito pouca infor$ao @ retornada. -eu script s1 deve retornar infor$a'es suficientesG e no
$aisG para o usu&rio entender o ?ue aconteceu para ?ue eles possa$ corrigir seu erro.
#o $anusear os dados de u$ usu&rio ?ue deseja aplicar a filtrage$ $ais apertado possHvel. 5oc%
?uer deiFar apenas os dados ?ue voc% deseja passar. Pe$ $ais ne$ $enos. -e voc% est& esperando
u$ nU$eroG assegurar ?ue os dados fornecidos @ de fato u$ nU$ero. -e voc% est& esperando u$a
se?O%ncia alfanu$@ricaG garantir ?ue @ o ?ue @ fornecido.
# #P7 s1lido e robusto ter& for$as s1lidas para lidar co$ dados de entrada. 7nfeliE$ente Ss veEes
voc% pode no ser capaE de filtrar os dados de for$a $uito rigorosa. 2ste @ o lugar onde ela se torna
eFtre$a$ente i$portante ?ue voc% trata os dados de for$a ade?uada antes de tentar faEer ?ual?uer
coisa co$ o banco de dados envolvendo os dadosG ou tratar ade?uada$ente os dados antes de
reeFibio no navegador usu&rios.
#de?uada$ente a $anipulao de dados envolve no apenas a $anipulao de dados de entradaG
$as ta$b@$ devida$ente $anipulao de dados de saHda.
2rros no Confiana
Confiando e$ dados de u$ usu&rio no;confi&vel+ Co$o cobertos aci$aG voc% no deve confiar e$
dados provenientes de usu&rios. #ssi$G a declarao pode ser de for$a $ais sucinta Vdados
confiana de u$ usu&rio.W 7sto pode parecer de$asiado severa ou restritivaG $as a raEo para no
confiar usu&rios @ ?ue u$a pessoa indesejada pode obter acesso a u$a conta de usu&rio. Ou sejaG a
pessoa do outro lado pode no ser ?ue$ voc% pensa ?ue @.
Dados confiando do banco de dados+ 7sso j& foi abordado ta$b@$. )$ erro co$u$ @ a suposio
de ?ue a entrada do usu&rio foi li$po antes de ser colocado no banco de dados assi$ ?ue @ seguro
?uando se trata de volta a partir do banco de dados. 2sta @ u$a suposio eFtre$a$ente perigoso
co$o o usu&rio pode ter postado u$ c1digo $alicioso ?ue no foi eFecutado inicial$ente devido a
u$ $anusea$ento ade?uadoG $as agora se assu$ir$os ?ue @ seguro o eFploit original ainda pode
ser possHvel. # raEo para isto @ ?ueG ?uando inicial$ente tratados os dados ?ue pode$ ter protegido
contra o c1digo $aliciosoG $as o c1digo $alicioso ainda est& presente nos dados. Ou sejaG e$ veE
de eFecutar o c1digo $alicioso ?ue te$os ar$aEenados no banco de dados. #goraG se $ais tardeG
assu$ir ?ue @ seguroG ento pode$os inadvertida$ente eFecutar o c1digo $alicioso.
Por ?ue voc% no deve confiar usu&rios
7sto pode soar co$o u$a dura polHtica ou procedi$entoG $as isto @ u$a suposio justa e @ u$a
boa pr&tica.
J Os usu&rios co$ete$ erros. ss veEes faEe$os coisas ?ue no te$os a inteno de faEer
J )$ usu&rio pode no ser ?ue$ voc% acha ?ue eles so. Pode ser ?ue o usu&rio do outro lado do
co$putador pode$ no ser ?ue$ voc% acha ?ue eles so. 7sso pode acontecer por v&rias raE'es ?ue
esto fora do escopo deste docu$ento.
J )$ usu&rio pode precisar de educar os alunos sobre eFploits.7t @ plausHvel ?ue u$ usu&rio pode
ter de educar seus alunos sobre as faanhas de segurana co$u$. Durante este processoG eles
pode$ precisar para postar c1digo ?ue se no for devida$ente tratado seria $alicioso ou ter
conse?u%ncias inesperadas. O instrutor pode postar este c1digoG para ?ue voc% no ?uer confiar e$
?ue a infor$ao fornecida pelo instrutor @ seguro.
Confiando usu&rios leva a vulnerabilidades+ #o confiar seus usu&rios voc% est& colocando a
segurana de todo o seu site e$ sua base de usu&rios inteira. -e isso no deiF&;lo nervosoG talveE
voc% deve considerar u$a outra profissoG e certa$ente no o siste$a de ad$inistraoX !uando
voc% confia e$ usu&rios ?ue voc% est& assu$indo ?ue eles no vo faEer ?ual?uer coisa perigosa ou
$alicioso intencional ou acidental$ente. Por eFe$ploG u$a falha ?ue per$ite ?ue per$iss'es
elevadas @ u$a vulnerabilidade ?ue poderia per$itir ?ue u$ estudante para obter privil@gios
professor e u$ professor para ad?uirir privil@gios de ad$inistrador. )$a veE ?ue o siste$a @
penetradaG os proble$as parece$ au$entar e falhas de segurana vai se tornar cada veE $ais grave.
topo
0ro&&>Si'e S%rip'i#g 9?SS:
O ?ue @ =--A
2Fploits Cross;-ite -cripting so tipica$ente o resultado de confiar e$ dados de u$a fonte e
apresent&;lo para outro usu&rio se$ a devida digitaliEao e $anipulao de dados iniciais ou
devida$ente filtrage$ dos dados antes de envi&;lo para u$ segundo usu&rio a ser eFibido.
Por ?ue deve$os proteger contra =--G ou o ?ue so algu$as i$plica'es de u$ eFploit de =--A
Muitos vendedores $ini$iEar a gravidade dos eFploits =--. 7sto @ bastante la$ent&velG por?ueG
co$o vere$os =-- representar proble$as de segurana para outros sitesG be$ co$o infor$a'es
pessoais de u$ usu&rio @ ar$aEenado e$ seu co$putador. #baiFo esto alguns resultados
potenciais de e$pregar =--+
J Doubo CooIie+ Obteno de dados de cooIies de sites e$ u$ do$Hnio diferente. 2ste pode eFpor
infor$a'es pessoais ar$aEenadas e$ u$ cooIie e$itido por u$ site e$ u$ do$Hnio diferente.
2sta @ u$a evaso direta do DOM e pode eFpor infor$a'es pessoais do usu&rio ou dar acesso a
infor$a'es ar$aEenadas e$ u$ cooIie de outro site.
Conta J se?Oestro+ VBogging inW para dar conta de u$ usu&rio diferente. 7sso poderia ser
conseguido por roubar as infor$a'es do cooIie de outro site ?ue e$prega as coneF'es
persistentes. Ou talveE u$ usu&rio altera u$a conta para u$ aplicativo Leb especial para torn&;lo
to f&cil de login.
J #lterao de configura'es de aplicativos Leb+ #lterando a senha do usu&rio ou prefer%ncias de
u$ deter$inado site tornando;o indisponHvel ou inutiliEado pelo usu&rio correto.
J 2Fploit de u$ proble$a de segurana Leb broLser para acessar u$ siste$a do usu&rio
operacional subjacente+ 2sta @ u$a ?uesto de eFplorar dupla a?ui. 2$pregando u$ proble$a de
segurana conhecido por u$ navegador da 0eb e$ particular @ possHvel ?ue u$ usu&rio utiliEando
u$ ata?ue =-- pode ganhar privil@gios elevados para o siste$a operacional subjacente de ?ue o
broLser est& sendo eFecutado.
Co$o pode$os proteger contra =--A
M& dois pontos;chave i$portantes na proteo contra =--G e outra ?ue alguns pode$ argu$entar
no est& relacionado co$ =-- per seG $as no aliviar alguns dos proble$as potenciais de segurana
de algu@$ eFplorando u$a vulnerabilidade =--. Os dois pontos principais so+
J # validao da entrada+ #o validar entrada pode$os tentar reconhecer dados ?ue pode$ ter
conse?u%ncias inesperadas ?uando recuperados do banco de dados e enviados para o navegador ou
enviadas direta$ente para u$ navegador. M& v&rias op'es a to$ar ?uando se tenta $anipular a
entrada do usu&rio. Pode$os nos recusar a faEer ?ual?uer coisa para os dados ?ue parea suspeitoG
ou pode$os escolher para filtrar os dados recebidos. Desde eFploits =-- no so u$ alvo est&ticoG
@ funda$ental ?ue haja u$a Unica funo para lidar co$ a identificao e li$peEa de dados
potencial$ente proble$&ticos. <Moodle criou o %"ea#$para( fu#%'io# 9: para este fi$.> 7sso faE
co$ ?ue o c1digo gerenci&vel co$o novas eFplora'es so inventados h& u$ lugar para update para
garantir ?ue todo o c1digo;base @ seguro. 7stoG obvia$enteG pressup'e ?ue todos esto devida$ente
codificao e utiliEar as fun'es #P7 apropriada para ?ual?uer aplicao ?ue est& progra$ando
para.
J Codificao de dados antes de enviar para u$ usu&rio+ atrav@s da codificao de dados antes de
ser enviado para o usu&rioG pode$os garantir ?ue deter$inado teFto ?ue pode ser interpretado co$o
Kava-cript v&lida <ou c1digo de script> est& devida$ente escapou para ?ue ele seja $ostrado co$o
teFto e no interpretado co$o $arcao v&lido para ser eFecutado. 7sso evita ?ue o usu&rio de
eFecuo acidental de algu$ tipo de script. 5eja as regras gerais do Moodle Coding ,uidelines.
O outro $@todo @ a verificao de u$ toIen privadoG e real$ente protege contra a Vfalsificao
Cross -ite De?uestW <C-D(>G $as este @ $uitas veEes confundido co$ =--. <Moodle usa &e&&@e2 9:
co$o seu sH$bolo privada.> # falsificao Cross -ite De?uest @ ?uando u$ usu&rio artesanato u$a
)DB ?ue aparece para faEer u$a coisaG $as ?uando outro usu&rio clica nele algu$ co$ando ou
procedi$ento ser& eFecutado. Por eFe$plo Koe poderia criar u$ post pol%$ico e$ u$ f1ru$ ou
algo ?ue provavel$ente causaria usu&rios a clicar e$ u$ )DB crafted ?ue tira proveito de u$a
vulnerabilidade C-D( e$ u$ aplicativo. #gora va$os supor ?ue Maria @ ler o post de Koe e clica
na )DB. -e u$ aplicativo @ vulner&vel a ata?ues C-D(G Maria pode ter acabado de eFcluiu u$
ar?uivo ou inconsciente$ente alterou sua prefer%ncias do usu&rio. Para se proteger contra ata?ues
C-D( a aplicao pode gerar toIens privada ?ue deve ser apresentado junta$ente co$ pedidos de
atualiEaoG criar ou eFcluir dados. O toIen privada @ gerado para cada sesso e @ verificada a
?ual?uer $o$ento ?ue o usu&rio tenta alterar dados. 5eja a seo Proble$as de -egurana do
Moodle Coding ,uidelines.
Co$o pode$os proteger contra =-- no MoodleA
J # validao de entrada+ lib co$ent&rio 3 $oodlelib.php para obter infor$a'es apropriadas
P#D#MeT`P2
o re?uiredepara$ <6 par^$etroG P#D#MeT`P2>q
)se esta funo ?uando u$ par^$etro deve estar presente. 6 Par^$etro @ esperado para ser u$
no$e de par^$etro ?ue ser& obtido via PO-T ou ,2T e$ ?ue Moodle orde$.# #P7 ir& lanar u$
erro e parar a eFecuo do script se o par^$etro no est& presente. )se u$a P#D#MeT`P2
apropriado para filtrar a vari&vel.
o optionalepara$ <6 par^$etroG 6 defaultG P#D#MeT`P2>q
)se esta funo ?uando u$ par^$etro pode estar presente. 6 Par^$etro @ esperado para ser u$
no$e de par^$etro ?ue ser& obtido via PO-T ou ,2TG nessa orde$. -e a vari&vel no est& presenteG
ento 6 padro @ retornado. )se u$a P#D#MeT`P2 apropriado para filtrar a vari&vel.
o cleanepara$ <6 vari&velG P#D#MeT`P2>q
)se esta funo para li$par u$a vari&vel ?ue j& est& definida no c1digo.
J
Codificao de dados+ 5er docu$entao do desenvolvedor Moodle Output (unctions.
J
-H$bolo privado+
o sessIeN <>
g Certifi?ue;se ?ue o par^$etro sessIeN <> @ definido sob ?ual?uer for$a ?ue ir& resultar e$ ?ue o
usu&rio de faEer altera'es de dados no banco de dados. 2stes for$ul&rios deve$ usar o $@todo
PO-T e no ,2T se$pre ?ue possHvel.
g 2cho Yainput tNpeoWhiddenW na$eoWsessIeNW valueoWY.sessIeN<>.iW 3biq
g 2cho Yainput tNpeoWhiddenW na$eoWsessIeNW valueoWY.6)-2D;b sessIeN. VW 3biq
o confir$esessIeN <>
g #o processar os dados do for$ul&rio e seu script ir& alterar ?uais?uer dados no banco de dados
se$pre garantir para confir$ar ?ue o par^$etro chave de sesso est& presente e a chave de sesso
corresponde a chave de sesso atual. )se confir$esessIeN <> ?ue ir& lanar u$ erro e parar a
eFecuo se os valores no coincide$.
7nje'es de -!B
!uais so as inje'es de -!BA
7nje'es de -!B so u$a for$a de eFplorar a segurana do banco de dados onde os co$andos
arbitr&rios pode ser eFecutado. 7sso geral$ente ocorre ?uando a entrada do usu&rio no @
devida$ente filtrada ou ?uando os dados no so forte$ente tipados.
)$ eFe$plo de injeo de -!B seria site de u$a e$presa de carto de cr@ditoG usando seu no$e de
usu&rio e senha para consultar o seu nU$ero de carto de cr@ditoG nU$ero de segurana socialG e
endereo para correspond%ncia. -e o progra$ador confia ?ue o usu&rio digite as infor$a'es se$
li$par o no$e de usu&rio ou senha e decide incluir o no$e de usu&rio e senha direta$ente para o
c1digo php ?ue cria a consulta -!BG o c1digo de consulta -!B @ se$elhante a+
6 -?l o V-2B2CT creditcardnu$G ssnG endereo
(DOM userdata
Onde userna$e o YW. 6 )serna$eiW.
2 passLord o YW. 6 PassLord V.iWq
#gora va$os supor ?ue u$ hacIer $al intencionado enviou as seguintes infor$a'es para o
progra$a+
)serna$e o teste
PassLord o blah You i*n o i*
2stes par^$etros criar u$a consulta -!B+
-2B2C7OP2 creditcardnu$G ssnG endereo
(DOM userdata
Onde userna$e o Yblahi
2 passLord o Yblahi ou i* Yo i*n
Declarao VouW faE co$ ?ue este para selecionar todos os registros na tabela de usu&rio C no
apenas a?uele co$ o no$e de usu&rio e senha correta$ente. Parece ?ue hacIer $al intencionado
te$ u$ $onte de clientes de carto de cr@dito agoraX
Por ?ue @ i$portante para proteger contra inje'es de -!BA
Z i$portante para proteger contra inje'es de -!B por?ue u$ usu&rio pode ser capaE de eFecutar
?ual?uer co$ando de banco de dados. Cen&rios possHveis inclue$ eli$inao catastr1fica do banco
de dados inteiroG eFposio de infor$a'es confidenciais do usu&rioG ou sutil difHcil de detectar
altera'es co$o a adio de alguns pontos a u$a atribuio da classificao.
Co$o pode$os proteger contra inje'es de -!BA
Para se proteger contra inje'es -!B deve$os ade?uada$ente filtro de teFto do usu&rio e ser
cuidado co$o usa$os a entrada do usu&rio para gerar consultas -!B. #l@$ dissoG pode$os
forte$ente tipo de consultas para ?ue os par^$etros seja$ ade?uada$ente tratadas. Para filtrar
teFto ?ue precisa$os lidar correcta$ente co$ caracteres de escape para ?ue eles no seja$ $al
interpretadasG per$itindo ?ue u$ usu&rio eFecute $odificado ou v&rias consultas -!B. Dados
forte$ente digitando passado pelo usu&rio garante ?ue os dados @ do tipo ?ue espera$os ?ue ele
seja. Ou sejaG se esta$os esperando u$ nU$ero do usu&rio ento pode$os forte$ente tipo ?ue
vari&vel para garantir ?ue det@$ u$ nU$ero ao inv@s de u$a string.
Co$o pode$os proteger contra -!B inje'es no MoodleA
J 2ntrada do usu&rio (ilter C filtro de entrada do usu&rio ade?uada$ente usando+
o re?uiredepara$ <>
o optionalepara$ <>
o cleanepara$ <>
J
2ntrada do usu&rio forte$ente tipo C -e$pre ?ue possHvelG o P#D#MeT`P2 para o aci$a de tr%s
fun'es ser& este $@todo aproFi$ados.
topo
Dados Moodle Bavage$ Par^$etros
O seguinte @ u$a viso geral do par^$etro de li$peEa tipos para ser usado co$ re?uiredepara$ <>G
optionalepara$ <>G e cleanepara$ <>.
J P#D#MeD#0+ especifica u$ par^$etro ?ue no @ li$po ou processado de ?ual?uer for$a.
J P#D#MeCB2#P+ obsoletosG por favorG tente usar u$ tipo $ais especHfico de par^$etro.
J P#D#Me7PT+ apenas nU$eros inteirosG use ?uando esperando apenas nU$eros
J P#D#Me7PT2,2D+ #lias para P#D#Me7PT
J P#D#Me#BPM#+ Cont@$ apenas letras 7ngl%s.
J P#D#Me#CT7OP+ #lias para P#D#Me#BPM#G uso para diversas a'es e$ for$ul&rios e
)DBs.
J P#D#Me(ODM#T+ #lias para P#D#Me#BPM#G use os no$es dos pluginsG for$atosG etc
J P#D#MePOT#,-+ Todas as tags MTMB so retirados do teFto. Po abuse desse tipo.
J P#D#MeM)BT7B#P,+ -intni$o de P#D#MeT2=T.
J P#D#MeT2=T+ teFto si$ples ,eral co$patHvel co$ MultiBang filtroG no outras tags ht$l.
J P#D#Me(7B2+ no$e do ar?uivo de seguranaG todos os chars perigosos so re$ovidosG protege
contra o =--G inje'es de -!B e percursos de diret1rio.
J P#D#MeP#TM+ no$e do ca$inho seguro relativosG todos os chars perigosos so re$ovidosG
protege contra o =--G inje'es de -!B e percursos de diret1rio
nota o+ # barra de liderana no @ re$ovidoG letra de unidade janela no @ per$itido
J P#D#MeMO-T+ no$e de do$Hnio esperado total$ente ?ualificado <(!DP> ou u$ ?uad 7Pv
pontilhada <endereo 7P>
J P#D#Me)DB+ esperado )DB for$atado correta$ente.
J P#D#MeBOC#B)DB+ esperado )DB for$atado correta$enteG assi$ co$o a?uele ?ue refere;se
ao servidor local e$ si. PuO ortogonal aos outrosX 7$plica P#D#Me)DBX
J P#D#MeCB2#P(7B2+ no$e do ar?uivo seguroG todos os chars perigoso e regionais so
re$ovidosG
J P#D#Me#BPM#P)M+ nU$eros esperados e apenas letras.
J P#D#Me4OOB+ converte a entrada e$ 9 ou *G use para interruptores e$ for$ul&rios e urls.
J P#D#MeCB2#PMTMB+ li$pa sub$etidos c1digo MTMB e re$ove barras
nota o+ no se es?uea de addslashes <> antes de ar$aEenar no banco de dadosX
J P#D#Me#BPM#2=T+ o $es$o conteUdo P#D#Me#BPM# $ais os chars entre aspas+ V3;eW
per$itidoG ade?uado para include <> e re?uire <>
J P#D#Me-#(2D7D+ no$e do diret1rio seguroG ade?uado para include <> e re?uire <>
J P#D#Me-2!)2PC2+ espera u$a se?O%ncia de nU$eros co$o :;*G "G .G G .G :G /. PU$eros e
vHrgulas apenas.
topo
#spectos de segurana de fun'es do Moodle e -iste$a de Capacidades
Co$eando co$ o Moodle verso *.8 de u$ siste$a de fun'es e capacidades foi introduEido para
substituir o actual siste$a de pap@is fiFos <por eFe$ploG os ad$inistradoresG os criadores do cursoG
os professores edioG estudantesG etc.> Dos erros de segurana descritos anterior$enteG alguns erros
de l1gica e alguns erros na confiana so $itigados por esse siste$a de pap@isG recursos e
per$iss'es.
# capacidade @ nor$al$ente algu$a ao especHfica ?ue Moodle pode ser eFecutado por u$
usu&rio. Por eFe$ploG a capacidade de Y$oodle 3 curso+ updatei se refere S ao de configura'es de
curso de atualiEao. Outra capacidadeG V$oodle 3 curso+ vieLhiddencourses YG se refere S ao de
ver os cursos ?ue fora$ escondidos.
)$ papel @ u$ conjunto no$eado de todos os recursos co$ per$iss'es associados <por eFe$ploG
estudanteG $oderador do f1ru$G professor assistente de professor>.
# per$isso descreve a capacidade de u$ papel a dese$penhar u$a deter$inada capacidade.
Per$iss'es para u$ recurso especHfico de u$ papel especHfico so definidos dentro de u$ conteFto
ou VespaoW no Moodle. Por eFe$ploG u$ curso seria considerado u$ conteFto. Os ?uatro
per$iss'es disponHveis para ser definido para u$a capacidade de u$ papel e$ u$ conteFto
especHfico so+
*. C#Pe7PM2D7T
2. C#Pe#BBO0
3. C#PePD252PT
. C#PePDOM747T
Para entender co$o essas ?uatro per$iss'es de trabalhoG @ necess&rio entender ?ue os conteFtos so
hier&r?uicas. De $ais a$plo ao $ais especHficoG os conteFtos so+
*. COPT2=Te-`-T2M
2. COPT2=TeP2D-OP#B
3. COP2T=Te)-2D
. COP2=TeCO)D-2C#T
". COPT2=TeCO)D-2
.. COPT2=TeMOD)B2
8. COPT2=Te4BOCf
Per$iss'es no definida e$ u$ conteFto para a capacidade de u$a funo so herdadas
<C#Pe7PM2D7T> a partir de u$ conteFto $ais geral.
Por eFe$ploG se o papel aluno te$ u$a per$isso C#Pe#BBO0 para o Y$oodle 3 curso+ vieL
Vcapacidade e$ u$ conteFto COPT2=TeCO)D-2 e os conteFtos subjacentes
<COPT2=TeMOD)B2 COPT2=Te4BOCf e> no ter sidoW substituHdo VG e$ seguidaG o papel
ta$b@$ ter& C#Pe#BBO0 parai $oodle 3 curso+ vieL Ynesses conteFtos $ais especHficos.
# per$isso C#PePD252PT negar& capacidade de u$ usu&rio ?ue nesse conteFto e conteFtos
$ais especHficosG a $enos ?ue substituHdo e$ tais conteFtos. Z i$portante perceber ?ue as
per$iss'es C#PePD252PT pode ser substituHdo e$ conteFtos $ais especHficos. Por eFe$ploG u$
papel de estudante pode ter C#PePD252PT e$ Y$od 3 foru$+ taFa Va capacidade e$ u$ conteFto
claroG $as de u$ f1ru$ especHfico <conteFto $1dulo> t%$ C#Pe#BBO0. # per$issoG no conteFto
especHfico VganhaW.
# per$isso C#PePDOM747T ta$b@$ nega ?ue a capacidade de u$ usu&rio no conteFto e$ ?ue
est& definidoG $as a per$isso e$ conteFtos $ais especHficos no pode$ ser substituHdos.
topo
Per$iss'es legado
Per$iss'es legado no siste$a Moodle pap@is t%$ sido i$ple$entadas para $anter a
co$patibilidade. 2$ vers'es do Moodle antes *G8 havia cinco pap@is est&ticos+
*. #d$inistradores
2. Criadores de curso
3. Professores
. 2studantes
". Convidados
Po Moodle *.8 e al@$ dos $es$os pap@is eFiste$ e$ u$a instalao padro do Moodle. )$
ad$inistrador Moodle agora te$ a capacidade de adicionarG eFcluir ou alterar ?ual?uer per$isso
e$ sua instalao Moodle. #o criar u$a nova capacidade desenvolvedores definir o valor padro
para cada u$a dessas fun'es padro na seo legadoG a fi$ de configurar as per$iss'es padro
para u$a instalao Moodle. Todas as fun'es no;padro ter& de ser configurado $anual$ente
pelo ad$inistrador do Moodle ?uando u$ bloco ou u$ $1dulo co$ u$a nova capacidade
instalada.
(un'es Moodle para as (un'es e Capacidades
2Fiste$ v&rias fun'es i$portantes no Moodle nos pap@is e capacidades do siste$a.
# pri$eira linha de defesa e$ u$ script @ o re?uireelogin <> para restringir o acesso a utiliEadores
registados. 2sta funo verifica pri$eiro ?ue o usu&rio est& conectado eG e$ seguidaG
opcional$enteG verifica se eles esto autoriEados a estar e$ u$ deter$inado curso e 3 ou visualiEar
u$ $1dulo do curso particular.
Para verificar a per$isso do usu&rio para u$ recurso e$ u$ deter$inado conteFto re?uer u$ par
de fun'es. O pri$eiroG geteconteFteinstance <>G retorna u$a inst^ncia de conteFtoG co$o u$
objeto. # inst^ncia de conteFto @ u$ nHvel de conteFto <por eFe$plo COPT2=TeCO)D-2> e u$
7D de inst^ncia <por eFe$ploG u$ 7D @ claro>.
Depois de ter a inst^ncia conteFto ?ue voc% pode eFigir u$a capacidade e$ u$ script usando o
re?uireecapabilitN function <> ou voc% pode verificar se u$ usu&rio te$ u$a capacidade especialG
antes de eFecutar algu$a ao co$ o hasecapabilitN function <>. )$a aplicao dessas fun'es
pode ter esta apar%ncia+
6 ConteFt o geteconteFteinstance <COPT2=TeCO)D-2G 6 Course7D>q
6 De?uireecapabilitN <Y$oodle 3 curso+ vieLiG 6 conteFto>q
3 3 #lgu$as coisas ?ue ?ual?uer pessoa co$ $oodle 3 curso+A 5ista pode
3 3 (aEer ou ver a?ui
3 3 #gora verificar se h& u$a capacidade $ais restritiva
if <hasecapabilitN <Y$oodle 3 curso+ updatei conteFto 6> l
3 3 (aEer algu$a atualiEao para o curso
2lse lm
error <Y5oc% no te$ as per$iss'es corretasi>q
m
topo
Progra$ao para #cessibilidade
Co$o $encionado na introduo deste cursoG os desenvolvedores do Moodle e$ todo o $undo t%$
feito progresso e$ direo S acessibilidade universal C e$ grande parte por causa do co$pro$isso
de faEer $elhorias no c1digo ?ue $elhorar a usabilidade. Z i$perativo ?ue no os desenvolvedores
de c1digo Moodle futuro des$antelar os avanos significativos alcanados at@ S data e continuar a
observar algu$as pr&ticas de progra$ao usu&rios;chave ?ue t%$ i$pacto.
#lgu$as dicas r&pidas para $anter e$ $ente ao projetar ele$entos Moodle+
J Tanto ?uanto possHvelG evitar eventos ?ue causa$ janelas pop;up.
J )se no$es ligao efectiva e eti?uetas ele$ento de for$ul&rio
(un'es J deve$ ser eFecut&vel a partir de u$ teclado
J Punca use cores para trans$itir significado
J 2vite ele$entos piscando ou ani$ados
J (ornecer descritivo e relevante teFto alternativo para gr&ficos ou i$agensG le$brando ?ue ele ser&
lido e$ voE alta para os usu&rios co$ defici%ncia visual
2$ Desenvolvi$ento;Docu$entao do C1digo
Moodle usa PMPDocu$entor para gerar docu$entao on;line sobre classes e fun'es co$uns. Z
reco$end&vel ?ue voc% usar o for$ato PMPDocu$entor ao docu$entar suas fun'es e classes. 7sto
per$ite ?ue outros desenvolvedores para eFibir infor$a'es sobre as fun'es ?ue voc% criar on;line
se$ a necessidade de procurar o seu c1digo. PMPDocu$entor estilo ta$b@$ faE para li$parG f&cil
de ler c1digo ?ue u$ desenvolvedor pode usar para entender rapida$ente o ?ue u$a funo @
suposto faEer eo ?ue cada par^$etro @ se$ ler toda a funo. Consulte a docu$entao do Moodle
PMP.
topo
VTo DoW Bista
*.
Ber atenta$ente as DiretriEes para Codificao e$ Moodle.org;dando ateno especial para a seo
!uest'es de -egurana.
2. Dever o ChecIlist -eo 0eb#7M "9: para sugest'es i$portantes para alcanar a acessibilidade
universal.
3.
Beia sobre os recursos Moodle para $elhores pr&ticas de segurana e addslashes <>G ?ue por veEes
pode ser confuso.
.
Co$pletar o Tutorial PMPDocu$entor
". Detectar a seguranaG acessibilidadeG docu$entaoG orientao e erros de codificao do
eFe$plo a seguir. #presentar suas corre'es na caiFa drop designado na seo desta )nidade na
p&gina prato principal. Copie o seu c1digo alterado e$ u$ ar?uivo so$ente teFto e enviar o
ar?uivo.
aA Php
3 J
J Criado e$ ** de deEe$bro de 2998
J
J 2ste script testa o usu&rio te$ a ver claro
J Capacidade eG e$ seguidaG verifica se a senha digitada
J 2st& correto. -e a senha estiver corretaG ela i$pri$e u$a p&gina Leb.
J 3
re?uireeonce <Yhttp+33LLL.so$esite.co$3abadfile.phprp:2*8q>q
re?uiredepara$ <6 idG P#D#Me7PT2,2D>q
re?uiredepara$ <6 senhaG P#D#MeT2=T>q
re?uiredepara$ <6 Course7DG P#D#Me7PT2,2D>q
optionalepara$ <6 sitena$e VMu$boldtWG P#D#MeT2=T>q
6 (ile o getefileecontents <6 e,2T \vurlv]>q
6 ConteFt o geteconteFteinstance <COPT2=TeCO)D-2G 6 Course7D>q
6 De?uireecapabilitN <Y$oodle 3 curso+ vieLiG 6 conteFto>q
if <6 senhaX o YthisistherightpassLordi> l
erro <VablinIb sua senha no est& correta a3 blinIbW>q
2lse lm
echo 6 ar?uivoq
3 3 2sta funo faE algu$ al@$
blocIeaddition funo <6 aG 6 b> l
return <6 a 6 b g>q
m
Ab
..
(aa o teste. Duas tentativas so per$itidas.
8.
#dicione seus pensa$entos para a discusso sobre acessibilidade.

)nidade 8 C Parte # C 4loco 4&sico
)$a parte C 4loco 4&sico
*. Criar u$ si$ples bloco seguinte tutorial do Moodle. O bloco ser& no$eado Vsi$pleht$lW.
2. Criar u$ ar?uivo de linguage$ e de diret1rio.
3. Criar u$a tabela de banco de dados e$ ?ue nosso bloco ir& inserir infor$a'es.
Parte 4 C (or$ul&rios
*. #dicionar u$ for$ul&rio usando o Moodle biblioteca de for$ul&rios para inserir as infor$a'es
na tabela
J Definir u$a nova for$a.
J #presentar o novo for$ul&rio.
J #dicione u$ cabealho.
J #dicione o controle de acesso.
J #dicione registro.
J #dicione ele$entos de for$ul&rio.
J #dicione as vari&veis de estado.
J (inaliEe o for$ul&rio.
2. Processar o for$ul&rio.
Parte C C Definar a 7nterface de )su&rio
*. #dicionar linIs para cada p&gina do bloco.
2. #dicionar $@todos para visualiEar p&ginas.
3. Defactor $@todo de eFibio.
J #dicionar tHtulo da p&gina.
J Mostrar a data
. 2Fibio do teFto.
". Mostrar linI para o ar?uivo.
.. 2Fibir a i$age$.
Parte D C #dicionar recursos de edio
#dicionar recursos de edio ?ue per$ite$ aos usu&rios editar dadosG incluindo
*. 2Fcluir u$a p&gina
2. #dicionar u$ linI para o ar?uivo delete.php
3. Criar o ar?uivo delete.php
. Bi$par todos os dados associados co$ o bloco co$ o instanceedelete <> funo
Parte 2 C definir u$ papel para o 4loco
*. #dicionar verificao para o bloco para a capacidade
2. #dicionar u$ papel para a for$a si$pleht$l
3. #dicionar u$a funo para editar
. #dicionar u$a funo para apagar
Po'es b&sicas de blo?ueio _ (or$ul&rios _ Define the )ser 7nterface _ #dicionar recursos de edio
_ definir u$ papel
MiperlinIs ser& aberto e$ novas janelas do navegador.
#gora ?ue n1s cobri$os o b&sico sobre as bibliotecas MoodleG progra$ao seguraG seu a$biente
de desenvolvi$entoG e co$o instalar e configurar o MoodleG va$os chegar S parte divertida C a
codificaoX Co$o voc% aprendeu na )nidade "G o Moodle @ $odulariEadoG tanto ?uanto possHvel
para per$itir a progra$as de terceiros para integrar co$ o Moodle. # $aneira $ais si$ples de
integrar u$ progra$a co$ o Moodle ou desenvolver novas funcionalidades @ a de criar u$ bloco
independente.
Pa )nidade 8G voc% ir& criar u$ bloco cha$ado si$pleht$l. 5oc% vai co$ear co$ u$ tutorial
Moodle.org ?ue vai te ensinar co$o criar u$ bloco Moodle b&sico co$ fun'es $ais utiliEadas.
#o co$pletar o bloco si$pleht$lG voc%+
J #dicionar u$a tabela do banco de dados para o Moodle
J Criar u$ for$ul&rio Moodle
J #dicione v&rios ele$entos MTMB !uicI(or$ a u$a for$a Moodle
J Processo de for$ar u$a Moodle co$ v&rios ele$entos MTMB !uicI(or$
J 7nserirG atualiEar e eFcluir dados de u$a tabela do banco de dados no Moodle usando o
for$ul&rio.
#lguns dos eFe$plos neste curso pode no parecer l1gico ou Util no conteFto eles so usados. 2$
geralG isso @ intencional para ilustrar $@todos diferentes. Devido S ?uantidade de detalhes neste
t1picoG @ dividido e$ partes ?ue deve$ ser co$pletados e$ se?O%nciaG co$eando co$ esta Parte
#G V(unda$entos 4locI.W
Criando u$ si$ples bloco
-iga o tutorial na docu$entao do site Moodle para criar u$ bloco si$ples. Test&;lo para
certificar;se ?ue instala e funciona. -e precisar de ajudaG reviso V)nidade ;X Configurando
Moodle para o Desenvolvi$entoW ?ue abrange a instalao de blocos e $1dulos. # fi$ de corrigir
alguns avisos PMP ?ue ir& aparecer a partir do c1digo do Moodle tutorial voc% vai ?uerer $udar a
sua funo de especialiEao para o seguinte.
especialiEao function <> l
if <X e$ptN <6 this;b config;b title>> l
6 This;b title o 6 this;b config;b titleq
m
if <e$ptN <6 this;b config;b teFt>> l
6 This;b config;b teFt oWq
m
m
Observe ?ue esse c1digo verifica se as vari&veis de configurao fora$ definidosG se ?ual?uer u$a
das vari&veis no foi definido se atribui u$a string vaEia para essa vari&vel ou no us&;lo. 7sto reduE
os avisos e segue boa pr&tica de codificao de verificar se u$a vari&vel @ instanciada antes de ser
usado.
5erifi?ue se o bloco ?ue voc% criou usando o tutorial funciona instalando;o <consulte V)nidade ;X
Configurando Moodle para o Desenvolvi$entoW> e adicionando o bloco para u$ curso de teste.
7ntroduo S Binguage$ do Moodle e 7nternacionaliEao
directorNPoL linguage$ ar?uivo ?ue o si$ples bloco foi criadoG @ hora de eFpandi;lo para faEer
$ais coisas. Co$o discutido na )nidade "G u$ dos diret1rios $ais i$portantes para a custo$iEao
do Moodle @ o diret1rio lang. Cada bloco pode ter seu diret1rio pr1pria lHngua. Po diret1rio bloco
criar u$ diret1rio lang <cli?ue direito sobre o diret1rio si$pleht$lG e$ seguidaG selecione Povob
Pasta>.
2$ seguidaG crie u$ novo diret1rio dentro do diret1rio lang cha$ado eneutf: <7ngl%s codificados
usando a codificao de caracteres utf:>. #gora adicione u$ novo ar?uivo PMP co$ o no$e
blocIesi$pleht$l.php para o diret1rio si$pleht$l3lang3eneutf:.
2ste ar?uivo conter& todas as cordas est&ticas ?ue o bloco si$pleh$l vai usar. Mais tardeG se voc%
?uiser traduEir a se?O%ncia para outro idio$a ?ue voc% pode adicionar outro diret1rio dentro lang
para o idio$a ?ue esto traduEindo. Diret1rios eFe$plo utf: pode ser encontrado no diret1rio de
sites lang se voc% tiver instalado outros pacotes de idio$a. Mais sobre tradu'es.
#gora ?ue o ar?uivo de idio$a @ criadoG u$a nova se?O%ncia pode ser adicionado ao Moodle para o
bloco usando algo co$o o c1digo de eFe$plo abaiFo C ?ue substitui o Vno$e da string Yco$ u$a
chave v&lida arraN PMP eoi TeFto para a cadeia Y co$ u$a se?O%ncia de PMP+
6 -tringina$e da string Yoi TeFto para a string Yq
Pr&ticaG adicionando a linha abaiFo ao seu ar?uivo blocIesi$pleht$l.php.
6 -tringiblocIna$e 4loco Yoi MTMB -i$plesq
Para recuperar essa string dentro do bloco voc% usaria a funo getestring Moodle <> encontradas
e$ lib 3 $oodlelib.php. Para obter a se?O%ncia de tHtulo e$ u$ uso vari&vel+
6 This;b title o getestring <YblocIna$eiG YblocIesi$pleht$li>q
-ubstituir a linha na definio de classe para blocIesi$pleht$l.php ?ue atribui u$ valor de 6 this;b
tHtulo co$ a linha de c1digo aci$a.
Criar u$a tabela de banco de dados para o 4loco
Co$ o ar?uivo de idio$a co$eou @ hora de passar a usar o 2ditor =MBDb para desenhar e criar a
tabela banco de dados ?ue ir& ar$aEenar os dados do for$ul&rio ?ue voc% ir& criar $ais tarde. \-e
voc% ?uiser $ais detalhes sobre o 2ditor =MBDbG consulte o #p%ndice 4.] O usu&rio de entrada de
oito peas de infor$ao para a for$a si$pleht$l+
*. TeFto a ser eFibido co$ o linI para a visualiEao das infor$a'es de for$a
2. DisplaNable MTMB ou teFto
3. (or$ato MTMB &rea
. )$ no$e de ar?uivo
". )$ Vsi$ ou noW ?uesto
.. # escolha de i$age$
8. MTMB ou teFto si$ples a partir de u$a &rea de teFto
:. )$ cari$bo de data e hora
ponto de eFcla$ao
Dica i$portanteX
2vitar o uso de enu$ por?ue ne$ todos os bancos de dados de suporte deste tipo. Z $elhor usar u$
inteiro ?ue @ codificada para u$ valor string. 7nteiros ta$b@$ escala $elhor do ?ue enu$s.
Para co$earG crie a estrutura de diret1rio correto e$ Moodle. #dicionar u$ diret1rio ar?uivo
cha$ado db sob seu diret1rio bloco principal. Pr1Fi$o login para Moodle e navegue at@ o editor
=MBDbG localiEado no V-ite da ad$inistraoW blocIb Diversosb =MBDb 2ditor. O editor
=MBDb @ u$a interface gr&fica para ajudar a gerar os ar?uivos F$l ?ue o Moodle utiliEa para criar
e $anter banco de dados tabelas. !uando voc% chegar ao editor =MBDb voc% vai ver todos os
blocosG $1dulos e outras &reas ?ue t%$ diret1rios db. #?ueles ?ue $ostra$ u$ linI j& te$ tabelas
definidas ?ue pode$ ser carregados e $odificados. 2ncontrar os blocos 3 si$pleht$l 3 db e cli?ue
e$ Criar.
#tualiEar o navegador 2clipse. #goraG o diret1rio db te$ u$ ar?uivo install.F$l co$ algu$as
infor$a'es b&sicas sobre o seu bloco e u$a tabela cha$ada si$pleht$l. Po Moodle voc% vai ver
agora o bloco 3 si$pleht$l 3 db destacado e$ verde e os de carga e Delete ser& ligada. Cli?ue e$
Boad. #gora voc% vai ver o 2ditar e )nload teFto vinculado. Cli?ue e$ 2ditar.
# tabela si$pleht$l deve ser $odificado para incluir as infor$a'es inseridas no for$ul&rio+ cli?ue
no linI 2ditar ao lado da $esa si$pleht$l para $ostrar a definio ?ue @ criado por padro para a
tabela. Ca$po id vai estar l& e u$a chave pri$&ria ?ue liga para o ca$po id. Deno$ear a tabela
para blocIesi$pleht$l. #lterar a co$ent&rios para esta tabela a?ui ta$b@$. !uais?uer $udanas
no ca$po de co$ent&rios re?uer u$ cli?ue no boto #lterar para ?ue as altera'es seja$ gravadas.
#gora adicione os seguintes ca$pos+
*. blocIid
2. pagetitle
3. displaNteFt
. for$ato
". no$e do ar?uivo
.. ?uadro
8. descrio
:. displaNpicture
/. DisplaNDate
topo
blocIid
editar ca$po para blocIidThe blocIid @ u$a chave estrangeira ?ue referencia a tabela do bloco.
7sso vai ser usado para unir linhas nossos dados para a tabela de blo?ueio. # tabela bloco casas
infor$a'es bloco gen@rico para inst^ncias de bloco instalado. Para adicionar o ca$po blocIid+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para blocIid
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de int
". Digite u$ co$pri$ento de *9
.. -et se$ sinal para unsigned
8. -2T POT P)BB para POT P)BB
:. -et -e?uence para Po
/. Digite 9 para o padro
*9. Cli?ue no boto #lterar.
pagetitle
editar ca$po para pagetitle O pagetitle @ si$ples$ente teFto ?ue ser& usado para liga'es para esta
p&gina si$pleht$l. )sando Te$as Moodle padroG blocos Moodle no consegue lidar co$ $ais de
2" caracteres se$ e$brulho. Para adicionar o ca$po pagetitle+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para pagetitle
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo para char
". Digite u$ co$pri$ento de 2"
.. -2T POT P)BB para POT P)BB
8. Cli?ue no boto #lterar.
displaNteFt
editar ca$po para displaNteFt O ca$po displaNteFt ser& eFibido co$o teFto na p&gina si$pleht$lG
potencial$ente co$o MTMB. 2sta ser& u$a &rea de teFto MTMB onde o usu&rio deve ter per$isso
para escrever co$o $uito teFto ou MTMB co$o desejada C o ?ue significa ?ue deve ser definido
co$o u$ VgrandeW ca$po de teFto de co$pri$ento. Para adicionar o ca$po dispaNteFt+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para displaNteFt
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de teFto
". Digite u$ co$pri$ento de grandes
.. -2T POT P)BB para POT P)BB
8. Cli?ue no boto #lterar.
for$ato
editar ca$po para for$atar o ca$po for$ato ir& conter o valor inteiro ?ue representa a for$atar o
teFto foi inserido dentro Para adicionar o ca$po for$ato+
*. Cli?ue no boto VPeL (ieldW linI
2. Mudar o no$e para o for$ato
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de int
". Digite u$ co$pri$ento de 3
.. -et se$ sinal para unsigned
8. -2T POT P)BB para POT P)BB
:. Digite 9 para o padro
/. Cli?ue no boto #lterar.
no$e do ar?uivo
editar ca$po para filena$e O ca$po de no$e de ar?uivo ar$aEena o no$e de u$ ar?uivo de posts
do instrutor na p&gina si$pleht$lG ?ue os alunos pode$ ento baiFar ou ver. Para adicionar o
ca$po no$e do ar?uivo+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para no$e de ar?uivo
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo para char
". Digite u$ co$pri$ento de 2""
.. -2T POT P)BB para POT P)BB
8. Cli?ue no boto #lterar.
?uadro
editar ca$po para foto # )DB para a i$age$ escolhida do usu&rio est& e$ u$a vari&vel est&tica
predefinidos ?ue associa u$ nU$ero a u$a i$age$. 7sso per$itir& ?ue a adio de i$agens $ais
tardeG se necess&rioG ou para $udar as i$agens )DBs atual Yse$ atualiEar o banco de dados. Por?ue
s1 o nU$ero @ ar$aEenado no ca$po de banco de dados deve ser criado co$o u$ int e$ veE de u$
char. Para adicionar o ca$po de i$age$+
*. Cli?ue no boto VPeL (ieldW linI
2. Mudar o no$e para a i$age$
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de int
". Digite u$ co$pri$ento de 2
.. -et se$ sinal para unsigned
8. -2T POT P)BB para POT P)BB
:. -et -e?uence para Po
/. Digite 9 para o padro
*9. Cli?ue no boto #lterar.
topo
descrio
editar ca$po para descrio #dicione o ca$po de descrio ?ue ser& eFibida na p&gina. 2sta ser&
u$a &rea de teFto MTMB onde o usu&rio te$ per$isso para escrever tanto ?uanto desejado por
isso @ u$ ca$po de teFto VgrandesW. Para adicionar o ca$po de descrio+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para descrio
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de teFto
". Digite u$ co$pri$ento de grandes
.. -2T POT P)BB para POT P)BB
8. Cli?ue no boto #lterar.
displaNpicture
editar ca$po para displaNpicture O ca$po displaNpicture ser& o Vsi$W ou VnoW a ?uesto no
for$ul&rio. 2ste @ o $elhor representado co$o u$ Yinti. Para adicionar o ca$po displaNpicture+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para displaNpicture
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de int
". Digite u$ co$pri$ento de *
.. -et se$ sinal para unsigned
8. -2T POT P)BB para POT P)BB
:. -et -e?uence para Po
/. Digite 9 para o padro
*9. Cli?ue no boto #lterar.
DisplaNDate
editar ca$po para DisplaNDate O ca$po final para adicionar S $esa @ o DisplaNDate. Z u$
ti$esta$p )P7= ?ue @ u$ valor inteiro. Para adicionar o ca$po DisplaNDate+
*. Cli?ue no boto VPeL (ieldW linI
2. #ltere o no$e para DisplaNDate
3. 7nsira u$ co$ent&rio sobre o ca$po
. Definir o tipo de int
". Digite u$ co$pri$ento de *9
.. -et se$ sinal para unsigned
8. -2T POT P)BB para POT P)BB
:. -et -e?uence para Po
/. Digite 9 para o padro
*9. Cli?ue no boto #lterar.
#gora ?ue os ca$pos fora$ adicionados S tabela do install.F$l precisa ser salvo. Cli?ue no linI
V5oltarW e V5oltar para a principalW. )$a veE na p&gina principal cli?ue e$ V-alvarW linI para
salvar as altera'es para o install.F$l. Co$ a ningu@$ install.F$l criado ?ue instala o bloco
si$pleht$l fresco ter& a $ontage$ da tabela ?uando se verifi?ue o linI notifica'es <co$o
discutido na )nidade >.

)nidade 8 C Parte 4 C (or$ul&rios
)$a parte C 4loco 4&sico
*. Criar u$ si$ples bloco seguinte tutorial do Moodle. O bloco ser& no$eado Vsi$pleht$lW.
2. Criar u$ ar?uivo de linguage$ e de diret1rio.
3. Criar u$a tabela de banco de dados e$ ?ue nosso bloco ir& inserir infor$a'es.
Parte 4 C (or$ul&rios
*. #dicionar u$ for$ul&rio usando o Moodle biblioteca de for$ul&rios para inserir as infor$a'es
na tabela
J Definir u$a nova for$a.
J #presentar o novo for$ul&rio.
J #dicione u$ cabealho.
J #dicione o controle de acesso.
J #dicione registro.
J #dicione ele$entos de for$ul&rio.
J #dicione as vari&veis de estado.
J (inaliEe o for$ul&rio.
2. Processar o for$ul&rio.
Parte C C Definar a 7nterface de )su&rio
*. #dicionar linIs para cada p&gina do bloco.
2. #dicionar $@todos para visualiEar p&ginas.
3. Defactor $@todo de eFibio.
J #dicionar tHtulo da p&gina.
J Mostrar a data
. 2Fibio do teFto.
". Mostrar linI para o ar?uivo.
.. 2Fibir a i$age$.
Parte D C #dicionar recursos de edio
#dicionar recursos de edio ?ue per$ite$ aos usu&rios editar dadosG incluindo
*. 2Fcluir u$a p&gina
2. #dicionar u$ linI para o ar?uivo delete.php
3. Criar o ar?uivo delete.php
. Bi$par todos os dados associados co$ o bloco co$ o instanceedelete <> funo
Parte 2 C definir u$ papel para o 4loco
*. #dicionar verificao para o bloco para a capacidade
2. #dicionar u$ papel para a for$a si$pleht$l
3. #dicionar u$a funo para editar
. #dicionar u$a funo para apagar
Po'es b&sicas de blo?ueio _ (or$ul&rios _ Define the )ser 7nterface _ #dicionar recursos de edio
_ definir u$ papel
MNperlinIs abrir e$ novas janelas do navegador.
Pa parte # desta unidadeG voc% aprendeu co$o criar u$ bloco b&sico co$ todas as fun'es padro
?ue Moodle precisa eFibir o bloco co$ algu$a configurao li$itada. 5oc% aprendeu a criar u$a
tabela de banco de dados usando o editor de =MBDb no MoodleG acrescentou u$ novo ficheiro de
linguage$ para o bloco.
2$ seguidaG voc% vai trabalhar na criao de u$ for$ul&rio para adicionar infor$a'es S tabela do
banco de dados ?ue voc% criou.
#dicionar u$ for$ul&rio para u$ 4loco )sando a biblioteca de for$ul&rios
Beia atrav@s de docu$entao do Moodle e$ for$as de uso da biblioteca e da definio dos
ca$pos de for$as biblioteca. Depois de ler sobre co$o criar u$ for$ul&rioG criar u$ para o bloco
blocIesi$pleht$l ?ue per$ite ao usu&rio+
*. Digite o teFto para descrever a p&gina ht$l o usu&rio estar& indo para ?uando clicare$ e$ u$
linI no bloco
2. 2Fibir u$ linI para u$ ar?uivo no diret1rio de ar?uivo do curso
3. 2Fibir a i$age$ <responder a u$a pergunta -i$ ou Po>
. -elecionar entre tr%s i$agens para $ostrar
". Digite o teFto para a &rea sob a i$age$ ht$l
.. 2Fibir u$a data e hora
8. Colocar os ca$pos criados no p 3G p e p " <aci$a> e$ u$ fieldset separado
:. #dicione o ca$po criado e$ p . <aci$a> para a seo de recursos avanados de u$a for$a
/. 2Figir p * <aci$a> para ser introduEido antes do for$ul&rio pode ser enviado.
Definir u$a nova for$a
O pri$eiro passo para criar u$a for$a @ criar a classe de for$ul&rio ?ue se estende $oodlefor$.
Crie u$ ar?uivo cha$ado si$pleht$lefor$.php <observando as conven'es de no$enclatura do
MoodleG consulte o #p%ndice #> e adicione o seguinte c1digo+
aA Php
re?uireeonce <V6 C(,;b libdir 3 for$slib.phpW>q
classe si$pleht$lefor$ estende $oodlefor$ l
definio da funo <> l
global 6 C(,q
Mfor$ 6 o r 6 this;b efor$q
6 Mfor$;b add2le$ent <YcabealhoiG YdisplaNinfoG getestring <Y teFtfields YGi blocIesi$pleht$l Y>>q
m
m
Ab
# VdefinioW @ u$a funo ?ue ser& substituHdo e acrescenta os ele$entos est&ticos de u$
for$ul&rio. 2sta @ a definio de classe b&sica para o for$ul&rio. -e$pre ?ue voc% ?uiser criar u$
for$ul&rio ?ue voc% pode copiar o c1digo aci$a e substituir Vsi$pleth$lW co$ o no$e do
for$ul&rio ?ue voc% est& criando. O c1digo adiciona u$ cabealho MTMB co$ a for$aG o ?ue
significa ?ue a se?O%ncia de ca$pos de teFto precisa ser adicionada ao ar?uivo de idio$a para o
bloco.
2Fibir u$ for$ul&rio
#gora ?ue a definio do for$ul&rio b&sico foi criadoG o pr1Fi$o passo @ criar o progra$a php ?ue
ir& eFibir o for$ul&rio. Criar u$ novo ar?uivo e$ blocos 3 diret1rio cha$ado si$pleht$l vieL.php.
# este ar?uivoG adicione o seguinte c1digo+
aA Php
re?uireeonce <Y..3..3 config.php Y>q
re?uireeonce <Ysi$pleht$lefor$.phpi>q
6 -i$pleht$l o neL si$pleht$lefor$ <>q
6 -i$pleht$l;b displaN <>q
Ab
O c1digo aci$a ir& eFibir e processar o for$ul&rio. 5oc% pode test&;lo clicando no linI addPage no
rodap@ do bloco. Co$o voc% pode verG o uso de herana feE for$ul&rio de eFibio $uito si$ples.
# classe base faE a $aior parte do trabalho pesadoG por isso tudo o ?ue resta a faEer @ definir u$a
classe de for$ul&rio ?ue estende a classe base <$oodlefor$> onde o displaN <> funo de $e$bro @
definido.
2$bora esse c1digo @ funcionalG te$os ignorado $uitos passos i$portantes. #gora va$os adicionar
as peas ?ue falta$.
#dicionar u$ cabealho
-e voc% visitar a p&gina agora voc% vai ver u$a for$a $uito b&sica no;te$&ticosG se$ ?ual?uer da
estrutura necess&ria S navegao. Pote;se ?ue isso acontece por?ue a p&gina de processa$ento do
for$ul&rioG neste vieL.php casoG est& sendo acessado direta$ente atrav@s da )DB e no por ser
incluHdo e$ outra p&gina. 7sto significa ?ue a infra;estrutura necess&ria deve ser adicionado
direta$ente ao script. #dicione esta usando a funo printeheaderG $as algu$as peas de dados so
necess&rios para a construo de navegao apropriada. (aa os ajustes a seguir para vieL.php+
J Para ter acesso a )- 6 C(, e 6 )-2D adicione o seguinte depois de re?uireeonce <Y..3..3
config.php Y>qq
C(, 6 globalG 6 )-2Dq
J )$ objeto claro povoadas @ necess&rio ?ue ir& conter v&rios detalhes do curso. Desde passando o
Course7D co$o u$ par^$etroG ?ue pode ser usado para construir u$ objeto claro. Para faEer issoG
adicione o seguinte c1digo ap1s re?uireeonce <Ysi$pleht$lefor$.phpi>+
6 Course7D re?uiredepara$ o <YCourse7DG P#D#Me7PT>q
if <X 6 curso o geterecord <YcursoiG YidiG 6 Course7D>> l
erro <getestring <YinvalidcourseiG YblocIesi$pleht$li> 6 Course7D.>q
m
Pote ?ue a obteno de u$ objeto v&lido ou gerar u$ erro @ garantida.
J Para eFibir u$ cabealho ade?uado adicione o seguinte antes de 6 si$pleht$l;b displaN <>q
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$eG
V0LLroot hrefoWY.6C(,;b aa Y. 3 Cursos 3 vieL.phpA 7d oi. 6 Course7D .iWbi.6 curso;b no$e
abreviado.
Ya3 #b ;bi getestring <Yfor$titleiG YblocIesi$pleht$li>GWG.
Va$eta Pa$eoWdescriptionW contentoWY. su$&rio s<stripetags<6site;b>> .iWbiG
verdadeGWGW>q
Pouco antes de 6 si$pleht$l;b displaN <>q acrescentar+
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$eG
V0LLroot hrefoWY.6C(,;b aa Y. 3 Cursos 3 vieL.phpA 7d oi. 6 Course7D .iWbi.6 curso;b no$e
abreviado.
Ya3 #b ;bi getestring <Yfor$titleiG YblocIesi$pleht$li>GWG.
Va$eta Pa$eoWdescriptionW contentoWY. su$&rio s<stripetags<6site;b>> .iWbiG
verdadeGWGW>
#dicionar Controle de #cesso
#tual$ente ?ual?uer usu&rio pode visitar esta p&gina. #gora isso no @ to grande de u$a
preocupao desde ?ue o for$ul&rio no faE nadaG $as se$pre ?ue os utentes tenha$ acesso apenas
Ss partes do aplicativo ?ue deveria$. Depois de carregar o objeto natural$enteG acrescentar+
re?uireelogin <6 curso>q
7sso ir& garantir ?ue apenas u$ usu&rio logado co$ acesso ao curso ser& capaE de utiliEar o
for$ul&rio si$pleht$l. 5eja a seo Controles de acesso desta )nidade para $ais detalhes.
O seu ar?uivo vieL.php agora deve ser se$elhante a+
aA Php
re?uireeonce <Y..3..3 config.php Y>q
C(, 6 globalG 6 )-2Dq
re?uireeonce <Ysi$pleht$lefor$.phpi>q
6 Course7D re?uiredepara$ o <YCourse7DG P#D#Me7PT>q
if <X 6 curso o geterecord <YcursoiG YidiG 6 Course7D>> l
erro <getestring <YinvalidcourseiG YblocIesi$pleht$li> 6 Course7D.>q
m
re?uireelogin <6 curso>q
6 -i$pleht$l o neL si$pleht$lefor$ <>q
6 -ite o getesite <>q
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$eG
V0LLroot hrefoWY.6C(,;b aa Y. 3 Cursos 3 vieL.phpA 7d oi. 6 Course7D .iWbi.6 curso;b no$e
abreviado.
Ya3 #b ;bi getestring <Yfor$titleiG YblocIesi$pleht$li>GWG.
Va$eta Pa$eoWdescriptionW contentoWY. su$&rio s<stripetags<6site;b>> .iWbiG
verdadeGWGW>q
6 -i$pleht$l;b displaN <>q
printefooter <>q
Ab
#dicionar Bogging
Moodle usa o addetoelog function <> para registrar infor$a'es sobre as a'es do usu&rio. #dicione
esta linha de c1digo ap1s a instruo if contendo inserterecord <> e$ si$pleht$l.php+
addetoelog <6 idG YblocIesi$pleht$liG Yinserir p&ginaiG 6 C(,;b LLLroot. Vblocos 3 si$pleht$l 3
vieL.phpA Course7D o Y. 6 Course7D.i r blocIid o Y. 6 blocIidG
WG 9>G 6 )-2D;b idq
O pri$eiro par^$etro enviado para addetoelog @ o id do cursoG ?ue @ passado atrav@s da url ou
for$ul&rio para si$pleht$l.php. O segundo par^$etro @ o no$e do bloco ou $1dulo. O para$ater
terceiro @ a acoG ?ue nor$al$ente @ algo si$ples. O ?uarto par^$etro @ a url da p&gina de
refer%ncia. O ?uinto par^$etro @ u$a infor$ao adicional se a se?O%ncia ?ue representa a ao no
terceiro par^$etro no @ suficiente$ente descritivo. O seFto par^$etro @ o id do $1dulo do curso.
O par^$etro final @ o 7D de usu&rio.
(or$ul&rio de Controle de 2stado
#goraG para adicionar algu$ controle estatal b&sica for$a+ O pri$eiro passo @ configurar as a'es
apropriadas co$ base no estado for$ul&rioG respondendo por tr%s cen&rios+
*. para $ostrar u$ for$ul&rio pela pri$eira veE
2. para processar dados de for$ul&rio enviado
3. o usu&rio cancelou o envio do for$ul&rio
Para i$ple$entar esses tr%s cen&rios ajustar o c1digo u$ pouco. # eFibio de for$ul&rio eFistente
e c1digo de cabealho ser& usado co$o o pri$eiro c1digo de te$po de eFibioG e u$a instruo if
adicionado ap1s instanciar o objeto si$pleht$lefor$ ir& lidar co$ a l1gica do fluFo da aplicao+
if <6 si$pleht$l;b isecancelled <>> l
3 3 Cancelou for$as redirecionar para a p&gina principal curso
redirect <V6 C(,;b LLLroot 3 cursos 3 vieL.php id 6 id oAW>q
m 2lse if <6 fro$for$ o 6 si$pleht$l;b getedata <>> l
3 3 Precisa$os adicionar c1digo para agir e$ ade?uada$ente e ar$aEenar os dados apresentados
redirect <V6 C(,;b LLLroot 3 curso 3 vieL.php id o 6 Course7DAW>q
2lse lm
3 3 (or$ no validar ou esta @ a pri$eira eFibio
6 -ite o getesite <>q
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$eG
V0LLroot hrefoWY.6C(,;b aa Y. 3 Cursos 3 vieL.phpA 7d oi. 6 Course7D .iWbi.6 curso;b no$e
abreviado.
Ya3 #b ;bi getestring <Yfor$titleiG YblocIesi$pleht$li>GWG.
Va$eta Pa$eoWdescriptionW contentoWY. su$&rio s<stripetags<6site;b>> .iWbiG
verdadeGWGW>q
6 -i$pleht$l;b displaN <>q
printefooter <>q
m
Observe ?ue o cabealho eFistente e c1digo de eFibio for$a fora$ $ovidos para o terceiro ra$o
da condicional. #l@$ dissoG no h& nenhu$ c1digo para lidar co$ processa$ento de for$ul&rios.
2sse c1digo ser& adicionado e$ breve.
2tapas finais
Devisar o progresso at@ agora+
*. si$pleht$lefor$.php @ criadoG ?ue define a classe usada $ais tarde para $ostrar o nosso
for$ul&rio.
2. vieL.php @ criadoG ?ue+
J 4ase de cargas $oodle #P7 necess&ria e ?ual?uer $1dulos de terceiros ou ar?uivos no;base #P7
J Carrega o objeto curso necess&rio e globals
J DealiEa controle de acesso necess&rio
J Carrega o nosso for$ul&rio e eFecuo ra$os ade?uada$ente co$ base e$ nosso estado
for$ul&rio
#ssi$G a classe de for$ul&rio @ definido e o for$ul&rio @ eFibido e$ u$ ar?uivo separado.
#dicionando ele$entos para o for$ul&rio e ter$inando o trata$ento de nosso for$ul&rio ir&
envolv%;loX
#dicionar ele$entos de for$ul&rio
#tual$ente no h& ele$entos de for$ul&rio ?ue pode enviar dados. 2dio da definio da classe
e$ for$a si$pleht$lefor$.php vai $udar isso adicionando u$ vasto conjunto de ele$entos de
for$ul&rio para o for$ul&rio para fins de de$onstrao so$ente. 7sso vai dar u$ eFe$plo de co$o
adicionar e processo de ele$entos de for$ul&rio v&rios.
Para adicionar o linI ca$po de teFto eo tHtulo displaNteFt &rea de MTMB para o for$ul&rioG cole o
seguinte teFto ap1s a criao do objeto de for$ul&rio no ar?uivo si$pleht$lefor$.php+
3 3 #diciona grupo para &reas de teFto
6 Mfor$;b add2le$ent <YcabealhoiG YdisplaNinfoG getestring <Y teFtfields YGi blocIesi$pleht$l Y>>q
3 3 #diciona ele$ento tHtulo da p&gina
6 Mfor$;b add2le$ent <YteFtiG YpagetitleG getestring <Y pagetitle YGi blocIesi$pleht$l Y>>q
6 Mfor$;b addDule <YpagetitleiG nullG Yre?uirediG nullG VclienteW>q
3 3 #diciona ca$po de teFto de eFibio
6 Mfor$;b add2le$ent <Yht$leditoriG YdisplaNteFtG getestring <Y displaNedht$l YGi blocIesi$pleht$l
Y>>q
6 Mfor$;b settNpe <YdisplaNteFtteFtG P#D#MeD#0>q
6 Mfor$;b addDule <YdisplaNteFtiG nullG Yre?uirediG nullG VclienteW>q
# p&gina ir& agora $ostrar+
adicionando os ca$pos do for$ul&rio para a for$a
Para $aiores detalhes sobre add2le$ent <> analisar a docu$entao sobre $oodle add2le$ent.
Ta$b@$ addDule reviso <> na docu$entao do Moodle e no site da P2#D. P2#D @ u$a
biblioteca de processa$ento de for$a ?ue incluiu $oodle usa para processa$ento de for$ul&rios.
#gora adicionar ele$entos de for$ul&rio adicionais para si$pleht$lefor$.php+
(ile )pload
#dicione o ca$po ar?uivo para o for$ul&rio ap1s os ele$entos eFistentes+
3 3 #diciona a seleo filena$e
6 Mfor$;b add2le$ent <YchoosecoursefileiG Yfilena$eiG getestring <YdisplaNfileiG
YblocIesi$pleht$li>G arraN <YCourse7Di ob 6 CO)D-2;b id>>q
2ste ca$po per$ite ?ue o usu&rio escolha u$ ar?uivo no diret1rio de ar?uivos do curso. Observe
?ue o no$e do ele$ento e$ for$a @ o $es$o no$e do ca$po no banco de dados. 7sto tornar& $ais
f&cil de inserir e atualiEar os registros do banco de dados posterior$ente. Observe ?ue o c1digo usa
6 CO)D-2;b id+ isso significa ?ue a vari&vel 6 CO)D-2 precisa ser adicionado S linha de
vari&veis globais pr1Fi$a a )- 6 C(,.
2ste pr1Fi$o conjunto de Lidgets per$ite a eFibio de u$a i$age$ opcional o usu&rio seleciona
atrav@s de u$ boto de r&dioG e adiciona u$ teFto alternativo ?ue @ eFibido co$ a i$age$. 5oc%
provavel$ente faEer isso direta$ente atrav@s do editor de MTMBG $as @ adicionado ao for$ul&rio
para ilustrao.
Cabealho fieldset
3 3 #diciona cabealho picturefields
6 Mfor$;b add2le$ent <YcabealhoiG YpictureinfoG getestring <Y picturefields YGi blocIesi$pleht$l
Y>>q
`es 3 Po -elect
3 3 #diciona i$age$ de eFibio si$ 3 no opo
6 Mfor$;b add2le$ent <YselectNesnoiG YdisplaNpictureG getestring <Y displaNpicture YGi
blocIesi$pleht$l Y>>q
6 Mfor$;b setDefault <YdisplaNpictureiG *>q
Observe o valor padro para a i$agens de eFibio @ definido co$o Vsi$W.
-elecione D&dio
Para controlar as op'es disponHveisG criar u$a funo ?ue ir& retornar a lista de op'es disponHveis
co$o u$a $atriE chave por u$ nU$ero inteiro. 2ste @ o preferido por v&rias raE'es+
J Mant@$ o banco de dados livre de tipos de ca$po enu$G fornecendo i$portantes dados por
nU$eros inteiros. 2ste @ o $otor de banco de dados independentes.
J 7sso torna $ais f&cil para adicionar op'es adicionais e$ u$a data posteriorG alterando a nossa
funo
J 2vita o uso de vari&veis globais.
Criar u$ lib.php ar?uivo e colo?ue o seguinte c1digo para ele ?ue vai definir as op'es de i$age$
via r&dio selecionar.
aA Php
3 JJ
J (un'es de biblioteca para o bloco si$pleht$l
JJ 3
blocIesi$pleht$lei$ages function <> l
global 6 C(,q
return arraN <YsrcoWY ai$g. LLLroot 6C(,;b.i 3 blocIs3si$pleht$l3piF3picture9.jpg Valt oW
Vgetestring. <Yver$elhoiG YblocIesi$pleht$li>.iWbiG
Vai$g -rcoWY. 0LLroot 6C(,;b. Y3 4locIs3si$pleht$l3piF3picture*.jpgW alt o VW. ,etestring <Y
blocIesi$pleht$l aEul YGW>.iWbiG
Vai$g -rcoWY. 0LLroot 6C(,;b. Y3 4locIs3si$pleht$l3piF3picture2.jpgW alt o VW. ,etestring <Y
verde YGi blocIesi$pleht$li>.iWbi>q
m
Ab
#gora inclua o ar?uivo aci$a e$ todos os ar?uivos ?ue precisa$ usar a funoG por en?uanto isso @
apenas si$pleht$lefor$.php. #dicione o seguinte depois de re?uireeonce <V6 C(,;b libdir 3
for$slib.phpW>q e$ si$pleht$lefor$.php
re?uireeonce <6 C(,;b dirroot Y3 blocos 3 si$pleht$l 3 lib.php.>q
#dicionar as fotos aci$a referenciado para o diret1rio apropriado. Crie u$ diret1rio cha$ado piF
e$ seu diret1rio bloco si$pleht$lG e eFtraia o ar?uivo a seguir l&. #gora adicione o r&dio selecionar
para a definio do for$ul&rio <si$pleth$lefor$.php>
3 3 #dicionar bot'es i$age$ seletor de r&dio
6 7$agens o blocIesi$pleht$lei$ages <>q
6 DadioarraN o arraN <>q
for <6 i o 9q 6 i acount <6 i$agens>q 6 i g g> l
6 DadioarraN \] o r 6 $for$;b create2le$ent <Yr&dioiG Yi$age$iGWG 6 i$agens \6 i]G 6 i>q
m
6 Mfor$;b addgroup <6 radioarraNG YradioarG getestring <Y pictureselect YGi blocIesi$pleht$l Y>G
arraN <Y Y>G false>q
)$ grupo ta$b@$ @ adicionado para capturar $Ultiplos ca$pos do for$ul&rio e$ u$a linha. Outra
abordage$ seria apenas eFibir cada ele$ento de r&dio e$ sua pr1pria linha.
#lt TeFt 7nput
(inal$enteG para envolver;up seleo eFibir a i$age$G per$ite$ ao usu&rio escolher o teFto
alternativo ?ue ser& eFibido co$ a i$age$ selecionada.
3 3 #diciona ca$po de descrio
6 #tributos o arraN <YsiEei ob i"9 YGi $aFlength Yob i*99n>q
6 Mfor$;b add2le$ent <YteFtiG YdescriptioniG getestring <YpicturedesciG YblocIesi$pleht$li>G 6
atributos>q 6 $for$;b settNpe <YdescriptioniG P#D#MeT2=T>q
6 Mfor$;b settNpe <YdescriptioniG P#D#MeT2=T>q
Observe ?ue h& u$a vari&vel de atributos adicionados ao ca$po de teFto para li$itar o ta$anho e
co$pri$ento. O set#dvanced <> funo adiciona op'es avanadas a u$ for$ul&rio. Para usar esta
funo e$ passar o no$e do ele$ento do for$ul&rioG o grupo de ele$entosG ou cabealho. O
V#dvanced OptionsW aparece no canto superior direito do fieldset. Peste eFe$ploG eFiste u$ Unico
ele$entoG $as depois voc% ver& u$ ele$ento dentro de u$ cabealho. -aiba $ais sobre
set#dvanced. O V-hoL 3 Mide #dvancedW boto no ser& eFibido at@ ?ue a adio de bot'es de ao
para a for$a durante a pr1Fi$a etapa deste tutorial.
-elector data Mora
#gora adicione o ca$po de data co$o u$ ele$ento opcional+
3 3 #dicionar agrupa$ento opcional
6 Mfor$;b add2le$ent <YcabealhoiG YopcionaliG getestring <YopcionaliG Yfor$ai>G nullG false>q
3 3 #diciona seletor dateeti$e na &rea opcional
6 Mfor$;b add2le$ent <Ydateeti$eeselectoriG YDisplaNDateG getestring <Y DisplaNDate YGi
blocIesi$pleht$l Y>G arraN <Y opcional Yob true>>q
6 Mfor$;b set#dvanced <Yopcionaisi>q
O c1digo aci$a adiciona u$ cabealho do for$ul&rio e define;a ocultar a data 3 seletor de te$po
dentro do opcional controles <avanado> for$ul&rio.
#dicionar vari&veis de estado e (inaliEe o (or$ul&rio
#dicionando bot'es (or$
(or$as $ais $oodle te$ u$ conjunto b&sico de bot'es. V-ub$itW e VCancelW so adicionados
cha$ando o $oodlefor$ addeactionebuttons $e$bro function <>. #dicione o seguinte no final do
si$pleht$lefor$.php
6 This;b addeactionebuttons <>q
Observe ?uando addeactionebuttons cha$ando <>G 6 this @ usado ao inv@s de 6 $for$ por?ue
addeactionebuttons <> @ definido na classe base $oodlefor$ e seria escopo fora por )- 6 $for$.
#dicionar 5ari&veis 2stado
ss veEesG os for$ul&rios deve$ $anter o controle de dados adicionais ?ue no se destina a ser
visHvel aos usu&rios. 2stes ca$pos deve$ ser colocados e$ ele$entos ocultos. Para este blocIid
for$a eo Course7D so necess&rios. #ntes da cha$ada para addeactionebuttons <> acrescentar+
6 Mfor$;b add2le$ent <YescondidoiG YblocIidi>q
6 Mfor$;b add2le$ent <YescondidoiG YCourse7Di>q
2stes ele$entos tero de ser preenchida co$ a eFibio de c1digo por?ue estes sero passados
atrav@s da )DB inicial$ente. #ntes da funo de eFibio e$ vieL.php acrescentar+
6 Tofor$ \vblocIidv] o 6 blocIidq
6 Tofor$ \vCourse7Dv] o 6 Course7Dq
6 -i$pleht$l;b setedata <6 tofor$>q
#dicionar 6 blocIid co$o u$ par^$etro obrigat1rio no for$ul&rio de eFibio vieL.php ar?uivo.
#dicione este c1digo ap1s 6 Course7D re?uiredepara$ o <YCourse7DG P#D#Me7PT>qq
6 4locIid re?uiredepara$ o <YblocIidG P#D#Me7PT>q
)$a nota final+ strings de linguage$ no fora$ adicionadas S linguage$
lang3eneutf:3blocIesi$pleht$l.php ar?uivo. #dicionar as entradas apropriadas para o ar?uivo de
idio$a. Be$bre;se a presena de u$a cadeia cercada por dois colchetes <por eFe$ploG -o$e-tring>
indica ?ue a corda est& faltando u$a definio de linguage$. Depois de adicionar strings seu
idio$a seu for$ul&rio deve ser algo co$o+
i$age$ de eFe$plo da for$a $oodle
(or$ul&rio de Dados de processo
Potas i$portantes
J )se addetoelog <> co$ $oderao. Cada blocoG $1dulo e c1digo PMP ser& adicionando outros
dados para a tabela de log. !uanto $ais infor$a'es na tabela de logG o $enos Util se torna $ais
lento e as consultas de banco de dados sobre a $esa.
J -e$pre use addetoelog <> ?uando u$ usu&rio eFecuta a'es co$o adicionarG editar e eFcluir.
#'es fora de adicionarG editar e apagar deve ser usado co$ $oderao. Por eFe$ploG pode ser Util
para u$ instrutor para saber ?uando <ou se> o aluno acessou deter$inado $aterial do curso.
J )$ dos $ais i$portantes Moodle Liithin aspectos ad$inistrativos est& registrando as a'es do
usu&rio. 7sso ajuda os ad$inistradores do site diagnosticar proble$asG apanhar batoteirosG eG e$
geral descobrir o ?ue u$ usu&rio feE para chegar onde eles tinha$ u$ proble$a. 7sso ta$b@$ pode
ser de valor inesti$&vel para os desenvolvedores para deter$inar onde no seu c1digo algu@$ foi
capaE de chegar at@ antes de tere$ u$ proble$a. ClaroG os logs ta$b@$ so crHticos para os
professores para $onitorar as atividades do estudante e$ u$ curso.
Depois de criar o for$ul&rioG c1digo apropriado deve ser adicionado ao processo os dados do
for$ul&rio apresentado. (aEer isso adicionando c1digo para vieL.php. Por$al$ente durante o
processa$ento de dados do for$ul&rio @ Util para re$over parte do processa$ento final de passos
para ?ue seu script essencial$ente ter$ina a eFecuo e no est& redireccionado para a p&gina do
curso ou onde ?uer ?ue faE sentido. 7sso @ eFtre$a$ente Util durante a depurao. O c1digo de
processa$ento ser& adicionado a este bloco de c1digo e$ vieL.php+
else if <6 fro$for$ o 6 si$pleht$l;b getedata <>> l
3 3 Precisa$os adicionar c1digo para agir e$ ade?uada$ente e ar$aEenar os dados apresentados
redirect <V6 C(,;b LLLroot 3 curso 3 vieL.php id o 6 Course7DAW>q
m
Por agora co$entar o redireciona$ento e adicione o seguinte sobre ele
printeobject <6 fro$for$>q
printeobject <> @ u$a funo Util $oodle ?ue i$pri$e os dados de tipos de dados $istos $ostrando
as chaves e dados para arraNs e objetos. #goraG visite o V#dd PageW linI para o bloco e apresentar
alguns dados do for$ul&rio. 5oc% dever& ver algo se$elhante a+
Objeto stdClass
<
\M#=e(7B2e-7Q2] ob 29/8*"2
\Pagetitle] ob 2sta @ a $inha pri$eira p&gina si$plehth$l
\DisplaNteFt] ob Bore$ ipsu$ dolor sit a$et [
\#r?uivo] ob blocIi$age*.gif
\DisplaNpicture] ob *
\(oto] ob 9
\Description] ob O ver$elho @ u$a cor grande
\DisplaNDate] ob *222822.99
\Mfor$eshoLadvancedelast] ob *
\4locIid] ob *3
\Course7D] ob 2
\-ub$itbutton] ob -alvar altera'es
>
Os valores entre par%nteses so as chaves e depois a parte ob @ o de dados para ?ue a chave
particular. Desde o envio do for$ul&rio @ verificado co$o est& funcionando co$o esperadoG salvar
os dados do for$ul&rio apresentado. # $aneira $ais direta para salvar @ co$ u$a cha$ada para
inserterecord <>. 2sta funo recebe o no$e da tabelaG YblocIesi$pleht$li no nosso casoG eo objeto
a ser inserido. O objeto deve ter chaves ?ue $apeia$ u$;para;u$ co$ os no$es de coluna da
tabela. Po$es de for$ul&rio escolhendo ele$ento ?ue $apeia$ direta$ente para as colunas de
banco de dados econo$iEa u$ pouco de c1digo. -alvar os dados do for$ul&rio apresentado co$ o
seguinte c1digo colado aci$a da out co$entou redirect+
if <X inserterecord <YblocIesi$pleht$liG 6 fro$for$>> l
erro <getestring <YinserterroriG YblocIesi$pleht$li>>q
m
Observe ?ue ap1s a verificao de u$a cha$ada para inserterecord o status de Of @ retornado eG se
no u$ erro @ produEido. #gora co$entar o printeobject <> e no;co$entar a cha$ada para redirect
<>. (inal$enteG teste para ver se o envio do for$ul&rio e salvar funciona correta$enteG apresentando
alguns dados utiliEando o for$ul&rio. 5oc% pode analisar ?ue os dados fora$ ar$aEenados na tabela
apropriada visualiEando a tabela blocIesi$pleht$l via php$Nad$in. 5oc% dever& ver algo
se$elhante S esta+
i$age$ de registro no php$Nad$in
Observao -e voc% receber u$ erroG verifi?ue se sua tabela eFiste no banco de dados. Be$bre;se
de atualiEao do c1digo no foi adicionado ao instalar o banco de dados tabela ap1s o bloco j& foi
instalado. #o desenvolver dentro de u$ a$biente localiEado carregar o banco de dados por
desinstalar o $1dulo eG e$ seguidaG reinstal&;lo. 2$ circunst^ncias nor$aisG onde o bloco ou
$1dulo est& e$ uso e$ produo voc% precisa faEer isso co$ o c1digo de atualiEao correta.

)nidade 8 C Parte C C Definar a 7nterface de )su&rio
)$a parte C 4loco 4&sico
*. Criar u$ si$ples bloco seguinte tutorial do Moodle. O bloco ser& no$eado Vsi$pleht$lW.
2. Criar u$ ar?uivo de linguage$ e de diret1rio.
3. Criar u$a tabela de banco de dados e$ ?ue nosso bloco ir& inserir infor$a'es.
Parte 4 C (or$ul&rios
*. #dicionar u$ for$ul&rio usando o Moodle biblioteca de for$ul&rios para inserir as infor$a'es
na tabela
J Definir u$a nova for$a.
J #presentar o novo for$ul&rio.
J #dicione u$ cabealho.
J #dicione o controle de acesso.
J #dicione registro.
J #dicione ele$entos de for$ul&rio.
J #dicione as vari&veis de estado.
J (inaliEe o for$ul&rio.
2. Processar o for$ul&rio.
Parte C C Definar a 7nterface de )su&rio
*. #dicionar linIs para cada p&gina do bloco.
2. #dicionar $@todos para visualiEar p&ginas.
3. Defactor $@todo de eFibio.
J #dicionar tHtulo da p&gina.
J Mostrar a data
. 2Fibio do teFto.
". Mostrar linI para o ar?uivo.
.. 2Fibir a i$age$.
Parte D C #dicionar recursos de edio
#dicionar recursos de edio ?ue per$ite$ aos usu&rios editar dadosG incluindo
*. 2Fcluir u$a p&gina
2. #dicionar u$ linI para o ar?uivo delete.php
3. Criar o ar?uivo delete.php
. Bi$par todos os dados associados co$ o bloco co$ o instanceedelete <> funo
Parte 2 C definir u$ papel para o 4loco
*. #dicionar verificao para o bloco para a capacidade
2. #dicionar u$ papel para a for$a si$pleht$l
3. #dicionar u$a funo para editar
. #dicionar u$a funo para apagar
Po'es b&sicas de blo?ueio _ (or$ul&rios _ Define the )ser 7nterface _ #dicionar recursos de edio
_ definir u$ papel
#p1s o sucesso de enviar dados ao banco de dados atrav@s do for$ul&rioG @ chegada a hora de
co$ear a eFibir os dados ?ue os usu&rios possa$ interagir co$ os dados e ver o ?ue te$ sido
sub$etido. #$bas as etapas sero contidos si$pleht$l 3 blocIesi$pleht$l.php.
#dicionar linIs para cada p&gina do 4loco
Para recuperar os registros relevantes cha$ada geterecords <>G ?ue aceita tr%s par^$etros++
*. o no$e da tabela
2. o no$e da coluna ou ca$po a ser consultado
3. o valor do ca$po consultado ?uere$os jogo <note o uso de 6 this;b eFe$plo;b idG ?ue @ o $es$o
?ue blocIid neste ^$bito>
#dicione o seguinte c1digo ap1s 6 this;b content;b teFt o 6 this;b config;b TeFto+
if <6 si$pleht$lpages geterecords o <YblocIesi$pleht$liG YblocIidiG 6 this;b eFe$plo;b id>> l
6 This;b conteUdob teFto .o Yaul classoWblocI;si$pleht$l;pagelistWbiq
foreach <6 si$pleht$lpages ?uanto 6 si$pleht$lpage> l
6 This;b conteUdob teFto .o Yalib aa hrefoWY.6C(,;b LLLroot.
Y3 4locos si$pleht$l 3 3 vieL.phpA 7d oi. 6 -i$pleht$lpage;b id.
Yr Course7D oi 6 CO)D-2;b id .iWbi.6 si$pleht$lpage;b pagetitle Ya3 ab a3 libi..q
m
6 This;b conteUdob teFto .o Ya3 ulbiq
m
#dicionar M@todos para ver p&ginas
Deveja os linIs criados anterior$ente para ver ?ue o vieL.php ar?uivo @ necess&rio ?ue+
*. 5erifi?ue se h& ?ual?uer vari&vel necess&riaq id <o id refer%ncias p&gina si$pleht$l>G Course7D
2. 5erificar a Course7D dado @ u$ curso v&lido
3. 5erifi?ue se o usu&rio est& logado
. 5erifi?ue thathte usu&rio te$ as per$iss'es ade?uadas para ver ?ual?uer thescript saHda pode
gerar
". Decuperar o registro de banco de dados para a p&gina solicitada si$pleht$l
.. 7$pri$ir o cabealho da p&gina
8. 2Fibir as infor$a'es para a p&gina re?uisitada
:. 7$pri$ir o rodap@ da p&gina
Muitas dessas $edidas j& fora$ concluHdas. Tente trabalhar co$ a lista aci$aG pulando o
Vinfor$a'es de eFibio para a p&gina solicitadaW. -eu c1digo deve ser se$elhante S+
aA Php
3 3 7nclude $oodle #P7 e docu$entos suple$entares 3 #P7
re?uireeonce <Y..3..3 config.php Y>q
re?uireeonce <Ysi$pleht$lefor$.phpi>q
3 3 Declarar ?ual?uer globals precisa$os usar
C(, 6 globalG 6 )-2Dq
3 3 5erificar todas as vari&veis necess&rias
6 7d o re?uiredepara$ <YidiG P#D#Me7PT>q
6 Course7D re?uiredepara$ o <YCourse7DG P#D#Me7PT>q
3 3 ,arantir ?ue tenha$os u$a Course7D v&lido e pode carregar o objeto curso associado
if <X 6 curso o geterecord <YcursoiG YidiG 6 Course7D>> l
erro <getestring <YinvalidcourseiG YblocIesi$pleht$liG 6 Course7D>>q
m
3 3 #ssegura ?ue o usu&rio te$ acesso a este curso
re?uireelogin <6 curso>q
3 3 #ssegura ?ue o usu&rio te$ as per$iss'es ade?uadas para acessar esta &rea
re?uireecapabilitN <Ybloco 3 si$pleht$l+ vieLpagesG geteconteFteinstance <COPT2=TeCO)D-2G 6
Course7D>>q
3 3 #ssegura ?ue te$os u$ 7D de p&gina v&lido si$pleht$l e pode carregar a p&gina associada
if <X 6 si$pleht$lpage geterecord o <YblocIesi$pleht$liG YidiG 6 id>> l
erro <getestring <YnopageiG YblocIesi$pleht$liG 6 id>>q
m
3 3 7$pri$ir o cabealho e os dados associados
6 -ite o getesite <>q
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$eG
V0LLroot hrefoWY.6C(,;b aa Y. 3 Cursos 3 vieL.phpA 7d oi. 6 Course7D .iWbi.6 curso;b no$e
abreviado.
Ya3 #b ;bi.6 si$pleht$lpage;b pagetitleWG
Va$eta Pa$eoWdescriptionW contentoWY. s<stripetags<6site;b resu$o>> .iWbiG verdadeGWGW>q
3 7nfor$ao da p&gina 3 displaN
3 3 7$pri$ir o rodap@
printefooter <>q
Ab
Pote o uso de u$ terceiro par^$etro co$ getestring <>. O terceiro par^$etro per$ite ?ue o siste$a
Moodle de traduo para substituir vari&veis e$ locais apropriados depois de ser traduEido.
Considere$os u$ eFe$plo do c1digo aci$a.
erro <getestring <YinvalidcourseiG YblocIesi$pleht$liG 6 Course7D>>q
2ste getestring cha$adas <> e$ busca de Yinvalidcoursei no ar?uivo de idio$a YblocIesi$pleht$li
eG final$enteG ele passa e$ 6 Course7D. 2$ seguidaG no ar?uivo de idio$a para o bloco esta cadeia
ter& acesso ao valor passado atrav@s do Par^$etro de terceiros co$o 6 a.
6 -tring \vinvalidcoursev] o YO 6 Course7D no eFisteiq
Defactor M@todo de eFibio
Para evitar a duplicao de c1digo e tornar $ais f&cil a reutiliEao esta funcionalidade criar u$a
funo e$ lib.php para lidar co$ a eFibio da p&gina. )$a p&gina si$pleht$l pr@;carregados @
passado co$o u$ Unico par^$etroG e u$ par^$etro opcional ir& controlar se os dados so
devolvidos ou direta$ente i$pressos. # $aioria das fun'es do Moodle ?ue i$pri$ir as
infor$a'es pode ser passado u$ valor verdadeiro co$o o Ulti$o par^$etro. 2ste @ o valor de
retorno da funoG ?ue conta a funo para retornar o MTMB e no i$pri$ir ou eco;la para o
usu&rio. Para o desenvolvi$entoG defina o valor de retorno para false para ?ue os dados so
i$pressos.
blocIesi$pleht$leprintepage funo <6 si$pleht$lG 6 retorno o (#B-2> lm
ponto de eFcla$ao
Dica i$portante
# funo usa blocIesi$pleht$leprintepage blocIesi$pleht$l no inHcio do no$e da funo para
evitar conflitos de na$espace. Conflitos de na$espace so i$portantes a considerar ao no$ear
vari&veis e fun'es e$ Moodle Moodle beause te$ $uitos ganchos ?ue cha$a$ fun'es diferentes
e$ $o$entos diferentes. Z geral$ente considerada u$a boa pr&tica de prefaciar u$ no$e varable
ou funo co$ o no$e do bloco ou $1dulo para evitar proble$as co$ conflitos de na$espace.
#gora considere o ?ue a funo precisa faEer a fi$ de eFibir todas as infor$a'es necess&rias a
partir de nossa p&gina.
THtulo da p&gina
7$pri$a esta fora co$o u$ cabealho centrado para a p&gina MTMB
TeFto de eFibio
7$pri$a esta fora e$ ?ual?uer for$ato ?ue o usu&rio especificadoG centrado e$ u$a caiFa na
p&gina
Po$e do ar?uivo
2Fibir u$ linI para o ar?uivo no diret1rio de ar?uivo do curso para ?ue o usu&rio te$ a opo de
baiF&;lo. 2ste ser& centrada na caiFa $es$o ?ue o teFto de eFibio.
7$age$ de 2Fibio
2Fibir a i$age$ co$ a descrio no lado direito da i$age$ e$ u$a caiFaG se o usu&rio escolheu
para a foto para $ostrar
2Fibio de data
2Fibir a data sob o tHtulo de p&gina e$ u$a fonte $enor
#dicionar THtulo da p&gina
Para eFibir a p&gina $oodle printeheading use tHtulo <> funo. #dicione o seguinte ao
blocIesi$pleht$leprintepage <> e$ lib.php
6 Output o printeheading <6 si$pleht$l;b pagetitleG VcentroWG 2G Y$ainiG TD)2>q
Os par^$etros e$ orde$ so YteFtoiG YteFt;alinha$ento VGW ta$anho do cabealhoiG Ycss classe VeG
final$enteG se para i$pri$ir direta$ente a saHda ou devolv%;lo.
2Fibir o Date
Os re?uisitos para a cha$ada data de eFibio para eFibir a data ni u$a fonte $enor sob o tHtulo da
p&gina. 2$ pri$eiro lugarG $ostrar a data. Moodle te$ u$a funo userdate <> ?ue te$ v&rias
vantagens sobre PMP date <> funo. 2le eFibe a data no for$ato preferido do usu&rio e ajusta a data
para ?ual?uer diferena de fuso hor&rio.
if <6 si$pleht$l;b DisplaNDate> l
6 Output .o userdate <6 si$pleht$l;b DisplaNDate>q
m
Pote ?ue desde ?ue o usu&rio tinha a opo de escolher u$a data ou no ?ue voc% deve verificar
para garantir ?ue ele foi criado antes de tentar a saHda dele. D% u$a olhada na p&gina eFibida+ cli?ue
e$ u$ dos linIs a p&gina do bloco. Po h& saHda. #dicione u$ pouco de c1digo adicional ?ue lida
co$ o valor de )- 6 retorno. #dicione o seguinte no final da definio da funo+
if <6 retorno> l
return 6 resultadoq
m
else l
print 6 saHdaq
m
#gora tente atualiEar sua p&gina. 5oc% deve ver algo co$o+
Co$o $encionado anterior$enteG os re?uisitos para o ca$po da data fosse centrada sob o tHtulo da
p&gina e $enores. 7sto pode ser controlado co$ u$a folha de estilo.
Pri$eiroG adicione u$a tag div e$ torno da dataG e dar;lhe u$a classe de alvo co$ C-- $ais tarde.
#lterar a linha de saHda para data+
6 Output .o Yadivbi userdate <6 si$pleht$l;b DisplaNDate >.ia3 divb Y.q
M& duas op'es para adicionar a folha de estilo+
*. #dicione o C-- para ar?uivos C-- do te$a no diret1rio do te$a
2. Crie u$ ar?uivo estilos.php no bloco e adicionar o C-- l&
2scolhendo a segunda opoG de adicionar u$ ar?uivo estilos.phpG per$ite $ais fleFibilidade e
evita a necessidade de criar v&rias entradas se o site est& usando $ais de u$ te$a. Criar estilos.php
e adicione este C--+
. -i$pleht$l.displaNdate l
font;siEe+ 9G: e$q
teFt;align+ centerq
m
#gora atualiEe a p&gina ea data deve ser eFibido correta$ente.
TeFto de eFibio
#gora o teFto de eFibio pode ser adicionada a u$a caiFa.
Dentro $oodle eFiste$ duas $aneiras de eFibir u$a caiFa+
*. printeboF <> e
2. u$a co$binao de printeboFestart <> e printeboFeend <>.
# saHda @ o $es$oq o ?ue voc% escolher @ principal$ente u$a ?uesto de prefer%ncia. Para
adicionar duas peas diferentes de dados para a caiFaG displaN de teFto e no linI do ar?uivoG o
c1digo de eFe$plo usa printeboFestart <> e printeboFeend <> para facilitar a leitura.
6 Output .o printeboFestart <YgeneralboFiGWG TD)2>q
6 Output .o cleaneteFt <6 si$pleht$l;b displaNteFt>q
6 Output .o printeboFeend <TD)2>
Mostrar 5incular ao #r?uivo
Para gerar u$a )DB de ar?uivo cha$ar o getefileeurl function <>G $as a funo @ definida e$ lib 3
filelib.php e no @ u$a parte do $oodle nUcleo #P7. #ssi$G garantir ?ue voc% tenha acesso a este
ar?uivo cha$ando includeeonce <>. #dicione o seguinte pr1Fi$o ao topo da funo+
C(, 6 globalG C)D-O 6q
includeeonce <6 C(,;b dirroot Y3 lib 3 filelib.php.>q
#gora adicione as seguintes linhas antes da cha$ada para printeboFeend <>
6 (ileurl getefileeurl o <6 CO)D-2;b id .i3i.6 si$pleht$l;b filena$e>q
6 Output .o Yabr 3b hrefoWY.6fileurl.iWbi getestring <YvieLfileiG YblocIesi$pleht$li>.ia3 abi.q
Observe ?ue o forneci$ento de $ais do ?ue apenas o no$e do ar?uivo do ar?uivo para criar u$a
)DB apropriada @ necess&ria. O 7D de curso para o curso e$ ?uesto ta$b@$ deve ser fornecido.
2Fibir a i$age$
-eletiva$ente eFibir a i$age$ e$ seu teFto de descrio localiEado S direita do $es$o+
if <6 si$pleht$l;b displaNpicture> l
6 7$agens o blocIesi$pleht$lei$ages <>q
6 Output .o printeboFestart <YgeneralboFiGWG TD)2>q
6 Output .o 6 i$agens \6 si$pleht$l;b foto]q
6 Output .o 6 si$pleht$l;b descrioq
6 Output .o printeboFeend <TD)2>q
m
# p&gina deve agora olhar co$o+

)nidade 8 C Parte D C #dicionar recursos de edio
)$a parte C 4loco 4&sico
*. Criar u$ si$ples bloco seguinte tutorial do Moodle. O bloco ser& no$eado Vsi$pleht$lW.
2. Criar u$ ar?uivo de linguage$ e de diret1rio.
3. Criar u$a tabela de banco de dados e$ ?ue nosso bloco ir& inserir infor$a'es.
Parte 4 C (or$ul&rios
*. #dicionar u$ for$ul&rio usando o Moodle biblioteca de for$ul&rios para inserir as infor$a'es
na tabela
J Definir u$a nova for$a.
J #presentar o novo for$ul&rio.
J #dicione u$ cabealho.
J #dicione o controle de acesso.
J #dicione registro.
J #dicione ele$entos de for$ul&rio.
J #dicione as vari&veis de estado.
J (inaliEe o for$ul&rio.
2. Processar o for$ul&rio.
Parte C C Definar a 7nterface de )su&rio
*. #dicionar linIs para cada p&gina do bloco.
2. #dicionar $@todos para visualiEar p&ginas.
3. Defactor $@todo de eFibio.
J #dicionar tHtulo da p&gina.
J Mostrar a data
. 2Fibio do teFto.
". Mostrar linI para o ar?uivo.
.. 2Fibir a i$age$.
Parte D C #dicionar recursos de edio
#dicionar recursos de edio ?ue per$ite$ aos usu&rios editar dadosG incluindo
*. 2Fcluir u$a p&gina
2. #dicionar u$ linI para o ar?uivo delete.php
3. Criar o ar?uivo delete.php
. Bi$par todos os dados associados co$ o bloco co$ o instanceedelete <> funo
Parte 2 C definir u$ papel para o 4loco
*. #dicionar verificao para o bloco para a capacidade
2. #dicionar u$ papel para a for$a si$pleht$l
3. #dicionar u$a funo para editar
. #dicionar u$a funo para apagar
Po'es b&sicas de blo?ueio _ (or$ul&rios _ Define the )ser 7nterface _ #dicionar recursos de edio
_ definir u$ papel
#lunos e professores pode$ ver os linIs eo professor pode criar linIsG $as o ?ue acontece se eles
co$ete$ u$ erroA Po h& nenhu$a $aneira de editar ?ual?uer coisa ?ue tenha sido previa$ente
inscritas. 4ons desenvolvedores ?uere$ ?ue os seus blocos a sere$ utiliEadosG o ?ue significa ?ue o
bloco precisa incluir u$a for$a de o usu&rio editar os dados eFistentes. # $aneira de editar o ?ue
u$ usu&rio entrou deve ser adicionado ao bloco si$pleht$l. O recurso de edio ir& usar u$a
i$age$ de lincar a edit.php e$ veE de teFto. 2sta i$age$ s1 aparece ?uando o instrutor se
transfor$a e$ edio.
(otos Moodle lojas e Hcones no diret1rio piF no diret1rio $oodle base. 5oc% ta$b@$ pode usar
i$agens ?ue so personaliEadas co$ u$ te$a. 2stes so ar$aEenados dentro do diret1rio do te$a
piF. Para este eFe$ploG use os Hcones no diret1rio piF para $oodle. # i$age$ deve ser encapsulado
e$ u$ linI MTMB para si$pleht$l.php. # url deve passar o id inst^ncia do blocoG id blocoG e id
curso para si$pleht$l.php.
#ntes de eFibir a edio acrescentou i$age$ e linI de verificao ?ue a edio foi ativado
<verificando se o usu&rio te$ as per$iss'es ade?uadas @ abordado na Ulti$a seoG Controles de
#cesso>. O isediting function <> @ usado para deter$inar se o usu&rio tiver a edio activada para o
curso. O isediting <> funo @ passado o pageid para a inst^ncia do blocoG ?ue na $aioria dos casos @
o $es$o ?ue Course7D. 2ditar o ar?uivo blocIesi$pleht$l.phpG co$o segue+
if <6 si$pleht$lpages geterecords o <YblocIesi$pleht$liG YblocIidiG 6 this;b eFe$plo;b id>> l
6 This;b conteUdob teFto .o Yaul classoWblocI;si$pleht$l;pagelistWbiq
foreach <6 si$pleht$lpages ?uanto 6 si$pleht$lpage> l
if <6 can$anage> l
6 2ditar o YLLLroot hrefoWY.6C(,;b aai. 3 4locos si$pleht$l 3 3 vieL.phpA 7d o Y
. 6 -i$pleht$lpage;b id. Yr 4locIid oi. 6 This;b eFe$plo;b id. Yr Course7D oi.
6 CO)D-2;b id .iWba i$g src oWY.6 C(,;b piFpath. Y3 T 3 edit.gif Valt oW V.
getestring <YeditpageiG YblocIesi$pleht$li>.iW 3b a3 abiq
2lse lm
6 2ditar oWq
m
6 This;b conteUdob teFto .o Yalib aa hrefoWY.6C(,;b LLLroot.
Y3 4locos si$pleht$l 3 3 vieL.phpA 7d oi. 6 -i$pleht$lpage;b id.
Yr Course7D oi 6 CO)D-2;b id .iWbi.6 si$pleht$lpage;b pagetitle Ya3 abi 6 edit Ya3 libi[.q
m
6 This;b conteUdob teFto .o Ya3 ulbiq
m
Depare ?ue h& u$ linI para o vieL.php $es$o ar?uivo ?ue lidou co$ a p&gina adicionando. (aEer
alguns ajustes para vieL.php para ?ue as p&ginas ta$b@$ pode$ ser atualiEados.
2$ pri$eiro lugarG $odificar a for$a de ter u$ novo ca$po oculto cha$ado id para ar$aEenar o id
do registro no banco de dados para saber ?ual p&gina para atualiEao. #dicione o seguinte ao
si$pleht$lefor$.php+
6 Mfor$;b add2le$ent <YescondidoiG YidiG i9 Y>q
DepoisG adicione u$ par^$etro opcional para a for$a de rastrear o id no caso de voc% atualiEar u$a
p&gina eFistente. #dicione o seguinte c1digo para vieL.php
6 7d o optionalepara$ <YidiG 9G P#D#Me7PT>q
2$ terceiro lugarG ajustar a eFibio pela pri$eira veE ou no for$a parte eFibir validao de
vieL.php para carregar os dados necess&rios ?uando id 6 est& presente+
3 3 (or$ no validar ou esta @ a pri$eira eFibio
if <6 id o 9> l
if <X 6 tofor$ geterecord o <YblocIesi$pleht$liG YidiG 6 id>> l
erro <getestring <YnopageiG YblocIesi$pleht$liG 6 id>>q
m
2lse lm
6 Tofor$ o neL stdClassq
m
6 Tofor$;b blocIid o 6 blocIidq
6 Tofor$;b Course7D o 6 Course7Dq
6 -ite o getesite <>q
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$eG
V0LLroot hrefoWY.6C(,;b aa Y. 3 Cursos 3 vieL.phpA 7d oi. 6 Course7D .iWbi.6 curso;b no$e
abreviado.
Ya3 #b ;bi getestring <Yfor$titleiG YblocIesi$pleht$li>GWG.
Va$eta Pa$eoWdescriptionW contentoWY. s<stripetags<6site;b resu$o>> .iWbiG verdadeGWGW>q
6 -i$pleht$l;b setedata <6 tofor$>q
6 -i$pleht$l;b displaN <>q
printefooter <>q
Observe ?ue a $anipulao da vari&vel 6 tofor$ foi ajustado. #gora @ u$ objeto ao inv@s de u$
arraN. 7sso @ para dar consist%nciaG independente$ente de n1s esta$os adicionando u$a nova
p&gina ou atualiEar u$ j& eFistente.
Por fi$G altere o c1digo para condicional$ente atualiEar ou inserir u$ novo registro. Po bloco do
$eio condicional <elseif> ajustar o seguinte para atualiEar os registros ?uando o ca$po id @ diferente
de Eero
3 3 #diciona o c1digo para agir e$ ade?uada$ente e ar$aEenar os dados apresentados
if <6 fro$for$;b id o 9> l
if <X updateerecord <YblocIesi$pleht$liG 6 fro$for$>> l
erro <getestring <Yupdate2rroriG YblocIesi$pleht$li>>q
m
addetoelog <6 blocIidG YblocIesi$pleht$liG Ypage updateiG 6 C(,;b LLLroot.
V4locos si$pleht$l 3 3 vieL.phpA 4locIid o Y. 6 4locIid.i r Course7D Y.
6 Course7DGWG 6 blocIidG 6 )-2D;b id>q
2lse lm
if <X inserterecord <YblocIesi$pleht$liG 6 fro$for$>> l
erro <getestring <YinserterroriG YblocIesi$pleht$li>>q
m
addetoelog <6 idG YblocIesi$pleht$liG Yinserir p&ginaiG 6 C(,;b LLLroot. Vblocos 3 si$pleht$l 3
vieL.phpA Course7D o Y. 6 Course7D.i r blocIid o Y. 6 blocIidG
WG 9>G 6 )-2D;b idq
m
redirect <V6 C(,;b LLLroot 3 curso 3 vieL.php id o 6 Course7DAW>q
-upresso p&gina
Depois de ser capaE de adicionar u$a p&gina e editar u$a p&ginaG o ?ue $ais algu@$ precisa faEer
co$ as nossas p&ginas ht$lA #pagarX 2Fcluso @ u$a operao si$plesG re?uerendo apenas alguns
passos si$ples++
*. #dicionar u$ linI para u$ ar?uivo novo delete.php
2. Criar o ar?uivo delete.php
3. 7$pri$ir u$ for$ul&rio de verificao para a tela caso o usu&rio co$eteu u$ erro
. )se deleteerecord <> para eFcluir u$ registro da tabela si$pleht$l dado u$ id e u$a
confir$ao.
#dicione u$ linI para delete.php
Co$ece editando blocIesi$pleht$l.php e criar u$ linI logo ap1s o linI de edio.
V0LLroot hrefoWY.6C(,;b aa. Y6 Delete o 3 blocos 3 si$pleht$l 3 delete.phpA 7d oi.
6 -i$pleht$lpage;b id. Yr Course7D oi. 6 CO)D-2;b id .iWba i$g src o VY.
6 C(,;b piFpath. Y3 T 3 delete.gif Valt oW V.
getestring <YDeletePageiG YblocIesi$pleht$li>.iW 3b a3 abiq
Be$bre;se de definir o linIs para u$a string e$ branco se o usu&rio no te$ as per$iss'es
corretas+
if <6 can$anage> l
6 2ditar o YLLLroot hrefoWY.6C(,;b aai. 3 4locos si$pleht$l 3 3 vieL.phpA 7d o Y
. 6 -i$pleht$lpage;b id. Yr 4locIid oi. 6 This;b eFe$plo;b id. Yr Course7D oi.
6 CO)D-2;b id .iWba i$g src oWY.6 C(,;b piFpath. Y3 T 3 edit.gif Valt oW V.
getestring <YeditpageiG YblocIesi$pleht$li>.iW 3b a3 abiq
V0LLroot hrefoWY.6C(,;b aa. Y6 Delete o 3 blocos 3 si$pleht$l 3 delete.phpA 7d oi.
6 -i$pleht$lpage;b id. Yr Course7D oi. 6 CO)D-2;b id .iWba i$g src o VY.
6 C(,;b piFpath. Y3 T 3 delete.gif Valt oW V.
getestring <YDeletePageiG YblocIesi$pleht$li>.iW 3b a3 abiq
2lse lm
6 2ditar oWq
6 2Fcluir oWq
m
6 This;b conteUdob teFto .o Yalib aa hrefoWY.6C(,;b LLLroot.
Y3 4locos si$pleht$l 3 3 vieL.phpA 7d oi. 6 -i$pleht$lpage;b id.
Yr Course7D oi 6 CO)D-2;b id .iWbi.6 si$pleht$lpage;b pagetitle Ya3 abi 6 6 edit delete Ya3
libi[..q
m
Criar delete.php
#tualiEe a p&gina do curso e voc% deve ver agora u$ Hcone de = preto ao lado de cada p&gina ap1s
o Hcone de edio <?uando a edio @ ligado>. O objetivo do delete.php @ i$pri$ir u$ aviso para o
usu&rio co$ u$a verificao de ?ue o usu&rio deseja eFcluir a p&gina si$pleht$l. O anUncio ir&
retornar o usu&rio para a ClaroG se eles diEe$ noG ou deletar a p&gina e retornar o usu&rio para a
ClaroG se eles diEe$ ?ue si$. Moodle te$ u$a funo de nUcleo pr@;definidos e$ Leblib.php ?ue
ir& criar o for$ul&rio -i$;Po para voc% e enviar o usu&rio para os locais corretos co$ base na
resposta S pergunta. # funo @ cha$ada noticeeNesno <>. #ntes de utiliEar esteG a configurao da
estrutura de ar?uivos b&sicos para delete.php <@ se$elhante ao ?ue te$ sido utiliEado para a $aioria
dos outros ar?uivos co$o vieL.php e si$pleht$l.php>.
aA Php
re?uireeonce <Y..3..3 config.php Y>q
C(, 6 globalG 6 )-2DG 6 -7T2q
6 Course7D re?uiredepara$ o <YCourse7DG P#D#Me7PT>q
6 7d o optionalepara$ <YidiG 9G P#D#Me7PT>q
6 Confir$ o optionalepara$ <Yconfir$ariG 9G P#D#Me7PT>q
if <X 6 curso o geterecord <YcursoiG YidiG 6 Course7D>> l
erro <getestring <YinvalidcourseiG YblocIesi$pleht$li> 6 Course7D.>q
m
re?uireelogin <6 curso>q
re?uireecapabilitN <Ybloco 3 si$pleht$l+ $anagepagesG geteconteFteinstance
<COPT2=TeCO)D-2G 6 Course7D>>q
if <X 6 si$pleht$lpage geterecord o <YblocIesi$pleht$liG YidiG 6 id>> l
erro <getestring <YnopageiG YblocIesi$pleht$liG 6 id>>q
m
6 -ite o getesite <>q
printeheader <stripetags <6 site;b fullna$e>G 6 localb fullna$e+ VLLLroot hrefoWY.6C(,;b aa.
Y3 Curso 3 vieL.php id oAi 6 Course7D .iWbi.6 cursob shortna$e.. Ya3 #b ;bi.
6 -i$pleht$lpage;b pagetitleGWGia $eta na$e o VdescriptionW content o VW.
s <stripetags <6 localb resu$o>> .iWbiG verdadeGWGW>q
printefooter <>q
Ab
2ste c1digo co$u$+
J 5erifica o Course7D corresponde a u$ curso v&lido
J 5erifica se o usu&rio est& logado
J 5erifica se o id p&gina si$pleht$l corresponde a u$a 7D de p&gina eFistente
J 7$pri$e o cabealho eo rodap@ da p&gina
Depare ?ue este @ se$elhante ao ?ue te$ sido utiliEado at@ agoraG $as h& outro par^$etro opcional
Vconfir$arW foi adicionado.
2sta vari&vel ser& definido ?uando o usu&rio clica no boto -i$ ou Po no for$ul&rio. 7sto significa
?ue u$ teste pode ser adicionada para testar o valor de retornoG se ele for definidoG o registro de
dados ?ue cont@$ a 7D de p&gina si$ples deve ser supri$ida. #dicione o seguinte c1digo ap1s a
todos para o printeheader <> funo+
ponto de eFcla$ao
Dica i$portanteX
# $aioria das 7D2s e editores de teFto progra$ador per$ite$ criar $odelos para trechos de c1digo
co$u$ente usados. Turning se'es de c1digo ?ue voc% usa co$ fre?O%ncia e$ $odelos pode
econo$iEar $uito te$po e digitaoX
if <X 6 confir$> l
6 Optionsno o arraN <Yidi ob 6 Course7D>q
6 OptionsNes o arraN <Yidi o idb 6G YCourse7Di ob 6 Course7DG Yconfir$ari ob *G YsessIeNi ob
sessIeN <>>q
printeheading <getestring <YConfir$deleteiG YblocIesi$pleht$li>>q
noticeeNesno <getestring <YDeletePageiG YblocIesi$pleht$liG 6 si$pleht$lpage;b pagetitle>G
Ydelete.phpiG
6 C(,;b LLLroot Y3 curso 3 vieL.phpiG 6 optionsNesG 6 optionsnoG YpostiG Ygeti>.q
m
else l
if <confir$esessIeN <>> l
if <X deleteerecords <YblocIesi$pleht$liG YidiG 6 id>> l
error <YdeleterroriG YblocIesi$pleht$li>q
m
m
else l
error <YsessionerroriG YblocIesi$pleht$li>q
m
addetoelog <6 idG YblocIesi$pleht$liG YP&gina deleteiG 6 C(,;b LLLroot. Vcurso 3 vieL.phpA r id
o Y.
6 Course7DGWG 6 idG 6 )-2D;b id>q
redirect <V6 C(,;b LLLroot 3 curso 3 vieL.php id o 6 Course7DAW>q
m
Po caso declarao aci$aG as duas vari&veis optionsno e optionsNes esto definidos. 2stes so
utiliEados para passar as vari&veis do for$ul&rio para obter ou posto ?uando o usu&rio seleciona
Vsi$W ou VnoW. 2les so passados para a funo noticeeNesno <> co$o os par^$etros de ?uinto e
seFto. -e o usu&rio clicar e$ VnoW eles so enviados para a p&gina do cursoG o ?ue significa ?ue as
necessidades Course7D a ser adicionado ao for$ul&rio. -e o usu&rio clica e$ VNesW o registro do
banco de dados contendo o 7D de p&gina si$pleht$l @ eFcluHdo eo usu&rio @ enca$inhado para o
curso. O 7D de p&ginaG Course7DG confir$arG a chave de sesso e precisa$ ser passadas para a
for$a. # chave de sesso @ passado para evitar a possibilidade de u$ cross;site scripting aneFar ou
usu&rios ?ue envia$ dados de for$a v&lida se$ o uso de Moodle.
#goraG d% u$a olhada nos par^$etros passados a noticeeNesno <> funo. O pri$eiro par^$etro @ o
teFto ?ue @ eFibido antes do -i$ e Po bot'es. O segundo par^$etro @ a url onde o for$ul&rio
envia o usu&rio ?uando ele clicar o par^$etro si$ button.The terceira @ a url para onde o usu&rio
ser& enviado se clicar no boto no. Os par^$etros seFto e s@ti$o so os $@todos MTTP <,2T ou
Post> usado para enviar os dados do for$ul&rio para o si$ e no bot'es.
Bi$peEa de final de
O bloco est& ?uase prontoX # Unica coisa ?ue no te$ sido feito @ a li$peEa de todos os dados
associados co$ o bloco de eFcluso. 7sto @ conseguido pela adio de u$a funo cha$ada
instanceedelete <> para o bloco. Pesta funo cha$ar a eFcluir registros e usar o blocIid passar no 6
this;b inst^nciab vari&vel id. # funo fica assi$+
instanceedelete function <> l
deleteerecords <Ysi$pleht$liG YblocIidiG 6 this;b eFe$plo;b id>q
m

)nidade 8 C Parte 2 C definir u$ papel para o 4loco
)$a parte C 4loco 4&sico
*. Criar u$ si$ples bloco seguinte tutorial do Moodle. O bloco ser& no$eado Vsi$pleht$lW.
2. Criar u$ ar?uivo de linguage$ e de diret1rio.
3. Criar u$a tabela de banco de dados e$ ?ue nosso bloco ir& inserir infor$a'es.
Parte 4 C (or$ul&rios
*. #dicionar u$ for$ul&rio usando o Moodle biblioteca de for$ul&rios para inserir as infor$a'es
na tabela
J Definir u$a nova for$a.
J #presentar o novo for$ul&rio.
J #dicione u$ cabealho.
J #dicione o controle de acesso.
J #dicione registro.
J #dicione ele$entos de for$ul&rio.
J #dicione as vari&veis de estado.
J (inaliEe o for$ul&rio.
2. Processar o for$ul&rio.
Parte C C Definar a 7nterface de )su&rio
*. #dicionar linIs para cada p&gina do bloco.
2. #dicionar $@todos para visualiEar p&ginas.
3. Defactor $@todo de eFibio.
J #dicionar tHtulo da p&gina.
J Mostrar a data
. 2Fibio do teFto.
". Mostrar linI para o ar?uivo.
.. 2Fibir a i$age$.
Parte D C #dicionar recursos de edio
#dicionar recursos de edio ?ue per$ite$ aos usu&rios editar dadosG incluindo
*. 2Fcluir u$a p&gina
2. #dicionar u$ linI para o ar?uivo delete.php
3. Criar o ar?uivo delete.php
. Bi$par todos os dados associados co$ o bloco co$ o instanceedelete <> funo
Parte 2 C definir u$ papel para o 4loco
*. #dicionar verificao para o bloco para a capacidade
2. #dicionar u$ papel para a for$a si$pleht$l
3. #dicionar u$a funo para editar
. #dicionar u$a funo para apagar
Po'es b&sicas de blo?ueio _ (or$ul&rios _ Define the )ser 7nterface _ #dicionar recursos de edio
_ definir u$ papel
MiperlinIs aparece$ e$ novas janelas do navegador.
Co$ a tabela estabelecidaG criar u$a capacidade de per$itir ?ue o #d$inistrador Moodle para
deter$inar ?uais fun'es pode adicionar linIs para o bloco de ht$l si$ples. Beia a seo
Progra$$ing 7nterface do Moodle docs para ter u$a id@ia b&sica de co$o criar u$a capacidade.
Criar duas capacidades para este bloco+
*. 5er p&gina si$pleht$l <s> ?ue sero bloco 3 si$pleht$l+ vieLpages
2. Modificar 3 adicionar si$pleht$l p&gina <s> ?ue sero bloco 3 si$pleht$l+ $anagepages
-eguindo as instru'es na seo 7nterface de Progra$ao de Moodle docsG crie u$ ar?uivo
access.php nos blocos 3 si$pleht$l diret1rio 3 db. Pesse ar?uivo adicione o arraN capacidade
si$pleht$l+
aA Php
3 J
J Decursos para o bloco si$pleht$l
J 3
4locIesi$pleht$lecapabilities 6 arraN o <
>q
Ab
2$ seguida adicione as duas $atriEes capacidadesG bloco 3 si$pleht$l+ vieLpages e blo?uear 3
si$pleht$l+ $anagepages S $atriE aci$a. Cada $atriE deve ter os seguintes atributos+
J 4loco 3 si$pleht$l+ vieLpages
o tipo+ ler
o conteFto+ curso
o BegacN+
g Dos visitantes+ prevenir
g 2studante+ per$itir
g Professor+ per$itir
g Professor 2dio+ per$itir
g Coursecreator+ per$itir
g #d$in+ per$itir
J 4loco 3 si$pleht$l+ $anagepages
o tipo+ escrever
o conteFto+ curso
o BegacN+
g Dos visitantes+ prevenir
g 2studante+ prevenir
g Professor+ prevenir
g Professor 2dio+ per$itir
g Coursecreator+ per$itir
g #d$in+ per$itir
Po finalG o seu access.php deve ser parecido+
aA Php
3 J
J Decursos para o bloco si$pleht$l
J 3
4locIesi$pleht$lecapabilities 6 arraN o <
Y4locI 3 si$pleht$l+ vieLpagesi ob arraN <
VCaptNpe Yobi ler YG
VConteFtlevel Yo COPT2=TeCO)D-2bG
YBegadoi ob arraN <
Y,uesti ob C#PePD252PTG
V2studanteW o C#Pe#BBO0bG
YProfessori o C#Pe#BBO0bG
V2ditingteacher Yob C#Pe#BBO0G
VCoursecreator Yo C#Pe#BBO0bG
Y#d$ini ob C#Pe#BBO0
>
>G
Y4locI 3 si$pleht$l+ $anagepagesi ob arraN <
VCaptNpe Yobi escrever YG
VConteFtlevel Yo COPT2=TeCO)D-2bG
YBegadoi ob arraN <
Y,uesti ob C#PePD252PTG
V2studanteW ob C#PePD252PTG
YProfessori ob C#PePD252PTG
V2ditingteacher Yob C#Pe#BBO0G
VCoursecreator Yo C#Pe#BBO0bG
Y#d$ini ob C#Pe#BBO0
>
>
>q
Ab
#gora bata o nU$ero da verso e$ blocos 3 si$pleht$l 3 blocIesi$pleht$l.php. Mudar o passadoG
para 9 a *G onde voc% definir 6 this;b verso. # linha deve parecer+
6 This;b version o 299:9*9*9*q
2$ seguida v& ao linI notifica'es no bloco de #d$inistrao do -ite. 7sso deve atualiEar o bloco
si$pleht$l. 5erifi?ue se as capacidades fora$ adicionadasG indo para )su&riosb Per$iss'esb
Definir pap@is e selecionando #d$inistrador. Pes?uisar si$pleht$l.
pap@is definidos esto inco$pletos
O ?ue faE o si$pleht$l+ vieLpages significaA # presena de u$a cadeia cercada por colchetes
duplos ?uadrados i$plica ?ue h& u$a string referenciada no c1digo ?ue ainda no foi definido e$
u$ ar?uivo de idio$a apropriado. #dicione o seguinte ao lang3eneutf:3blocIesi$pleht$l.php+
6 -tring \vsi$pleht$l+ vieLpagesv] o Y5er p&ginas MTMB si$plesiq
6 -tring \vsi$pleht$l+ $anagepagesv] o Y,erenciar p&ginas MTMB si$plesiq
Co$ a fiFa proble$aG o Definir p&gina (un'es ir& agora olhar co$o+
pap@is definidos esto agora co$pleta co$ a se?O%ncia de teFto adicionado ao ar?uivo de idio$a
Pesta parte da unidadeG at@ agoraG voc% aprendeu co$o criar u$ bloco b&sico co$ todas as fun'es
padro ?ue Moodle precisa eFibir o bloco co$ algu$a configurao li$itada. 5oc% aprendeu co$o
criar u$a tabela de banco de dados usando o editor de =MBDb no MoodleG acrescentou u$ novo
ficheiro de linguage$ para o blocoG e criou u$ bloco de capacidades ?ue pode$ ser usados para
deter$inar se u$ usu&rio te$ as per$iss'es corretas. 2$ seguidaG voc% vai trabalhar na criao de
u$ for$ul&rio para adicionar infor$a'es S tabela do banco de dados ?ue voc% criou.
#dicionar verificao para o bloco para a capacidade
Co$ os dois novos recursos criadosG @ hora de us&;los e adicionar u$ linI para o for$ul&rio de
soon;to;be;criado no bloco. O lugar $ais f&cil de adicionar o linI est& no rodap@G $as @
funda$ental ?ue a pessoa ?ue v% este linI te$ a capacidade de gerenciar p&gina si$pleht$l.
Modificar o getecontent <> e$ blocos 3 si$pleht$l 3 blocIesi$pleht$l.php para verificar o che?ue
capabilities.To correto para os recursosG use o hasecapabilitN <> funo encontrada e$ lib 3
access.php. MasG pri$eiro adicione o $undial C)D-O vari&vel 6 e 6 C(, para a funo usando+
C)D-O global 6G 6 C(,q
Para verificar se o usu&rio te$ as per$iss'es viso correta substituir+
6 This;b content;b teFt o 6 this;b config;b teFtoq
co$
6 ConteFt o geteconteFteinstance <COPT2=TeCO)D-2G 6 CO)D-2;b id>q
if <hasecapabilitN <Ybloco 3 si$pleht$l+ vieLpagesiG 6 conteFto>> l
6 This;b content;b teFt o 6 this;b config;b teFtoq
2lse lm
6 This;b content;b teFt oWq
m
Para adicionar o linI para o for$ul&rio substituir+
6 This;b conteUdob rodap@ oWq
co$+
if <hasecapabilitN <Ybloco 3 si$pleht$l+ $anagepagesiG 6 conteFto>> l
6 This;b conteUdob rodap@ o Yaa hrefoWY. 6C(,;b LLLroot.
Y3 4locos 3 si$pleht$l 3 si$pleht$l.phpA 4locIid oi.
6 This;b eFe$plo;b id. Yr Course7D oi. 6 CO)D-2;b id .iWbi.
getestring <YaddPageiG YblocIesi$pleht$li>.ia3 abiq
2lse lm
6 This;b conteUdob rodap@ oWq
m
-eu getecontent final <> deve ser parecido+
getecontent function <> l
C)D-O global 6G 6 C(,q
if <6 this;b conteUdoX oo P)BB> l
return 6 this;b conteUdoq
m
6 This;b content o neL stdClassq
6 ConteFt o geteconteFteinstance <COPT2=TeCO)D-2G 6 CO)D-2;b id>q
if <hasecapabilitN <Ybloco 3 si$pleht$l+ vieLpagesiG 6 conteFto>> l
6 This;b content;b teFt o 6 this;b config;b teFtoq
m
else l
6 This;b content;b teFt oWq
m
if <hasecapabilitN <Ybloco 3 si$pleht$l+ $anagepagesiG 6 conteFto>> l
6 This;b conteUdob o footer Vaa hrefoWY. 6C(,;b LLLroot. Y3 4locos 3 si$pleht$l 3 page.phpA
4locIid oi.
6 This;b eFe$plo;b id. Yr Course7D oi. 6 CO)D-2;b id .iWbi.
getestring <YaddPageiG YblocIesi$pleht$li>.ia3 abiq
m
else l
6 This;b conteUdob rodap@ oWq
m
return 6 this;b conteUdoq
m
ObserveG en?uanto a construo da ligao ?ue 6 this;b eFe$plo;b id @ usado. 2ste @ u$
identificador ?ue @ Unico para cada inst^ncia do bloco e$ u$ curso e per$ite a utiliEao de v&rios
blocos e$ u$ curso. Course7D ta$b@$ @ usadoG junto co$ o 7D de inst^ncia do blocoG para $ais
facil$ente encontrar todas as p&ginas associadas ao bloco para u$ curso. O linI para page.php
ta$b@$ @ enviadoG ?ue @ ineFistenteG ?ue sero adicionados co$ o c1digo necess&rio na pr1Fi$a
seo.
2n?uanto a construo de nosso linIG getestring <> ta$b@$ @ usadoG ento u$a entrada para
YaddPagei a corda dever& ser adicionada ao ar?uivo de idio$a para o bloco co$ teFto de sua
escolha.
(inal$enteG atualiEe o curso Moodle para o ?ual voc% adicionou o bloco si$pleht$l. Co$o u$
ad$inistrador ou professorG voc% deve ver o VaddPage YlinIq co$o estudante voc% no deve ver o
linI.
#dicionar ao for$ul&rio de papel si$pleht$l
#tual$ente ?ual?uer usu&rio logado pode usar o for$ul&rio si$pleht$l. Po desenvolvi$ento isso
no @ to grande de u$a preocupaoG $as antes de passar a produo de introduo se$pre
assegurar ?ue os usu&rios tenha$ acesso apenas Ss partes do aplicativo ?ue deveria$. 2$ page.php
ap1s re?uireelogin <6 curso>q adicione a seguinte linha+
re?uireecapabilitN <Ybloco 3 si$pleht$l+ $anagepagesG geteconteFteinstance
<COPT2=TeCO)D-2G 6 Course7D>>q
7sso garante ?ue o usu&rio no pode acessar esta p&ginaG se$ ter YblocI 3 si$pleht$l+ $anagepages
Va capacidade.
#dd Dole para 2dio
Destringir a edio para usu&rios ?ue tenha$ o bloco 3 si$pleht$l+ capacidade $anagepages
adicionando controle de acesso S ao de edio. 2$ edit.php usar a vari&vel 6 can$anage para
deter$inar o acesso. Definir esta vari&velG verificando o usu&rio te$ a capacidade ade?uada.
6 Can$anage isediting o <6 curso;b id> r r
hasecapabilitN <Ybloco 3 si$pleht$l+ $anagepagesG geteconteFteinstance <COPT2=TeCO)D-2G 6
Course7D>>q
#dicionar (uno para 2Fcluir
Para restringir eFcluso para a?ueles ?ue t%$ a capacidade $anagepagesG adicione a seguinte linha
ap1s delete.php re?uireelogin <6 curso>q
re?uireecapabilitN <Ybloco 3 si$pleht$l+ $anagepagesG geteconteFteinstance
<COPT2=TeCO)D-2G 6 Course7D>>q

#p%ndice #+ Conven'es de no$enclatura Moodle
Decursos eFternos abertos e$ novas janelas do navegador.
Moodle te$ algu$as conven'es de no$enclatura co$u$ente observados. 2$bora voc% est& livre
para no$ear ar?uivos ?ue ?uiserG isso no @ reco$endado. #lgu$as diretriEes para no$ear ar?uivos
so+
J Po$e do ar?uivo depois de a funo ?ue est& realiEandoG co$o atualiEarG editarG apagar ou criar
J Po$e ar?uivos de idio$a para os blocos de partida co$ blocIe para evitar colis'es ao usar o
getestring <> e printestring <> fun'es
J Po$e ar?uivos PMP ?ue criar u$a classe de for$ul&rio Moodle co$ o sufiFo de for$.php para
indicar ?ue elas so u$a for$a. 2Fe$plo+ si$pleht$lfor$.php
J Os ar?uivos PMP ?ue faE processo deve ser no$eado ap1s o processo de for$a ?ueG se$pre ?ue
possHvelG ou a ao ?ue eles to$a$. 2Fe$plo+ si$pleht$l.php processa a si$pleht$lefor$ edit.php
e edita o si$pleht$lefor$
4iblioteca de ar?uivos J deve ser no$eado ou lib.php locallib.php
Docu$entao do Moodle desenvolvedor te$ $ais infor$a'es sobre conven'es para trabalhar
co$ o Moodle.
J ,uia de 2stilo C1digo
J ,uia de 7nterface do )su&rio
J Teste de unidade


)nidade 8 C #p%ndice 4 C O 2ditor =MBDb
Moodle oferece u$a interface gr&fica de usu&rio <,)7> para criar o ar?uivo =MB. Para refer%nciaG
o ar?uivo criado pelo =MBDb Moodle do ,)7 @ cha$ada install.F$l e @ ar$aEenado no diret1rio
db de u$ bloco ou diret1rio do $1dulo base <blocos de eFe$plo 3 si$pleht$l 3 db>. 5oc% pode olhar
para o ,)7G entrando e$ sua instalao Moodle e clicando no linI VDiversosW no bloco de
#d$inistrao do -ite. 2$ seguidaG cli?ue e$ =MBDb.
vista principal da =.M.B.D.4. editor
ponto de eFcla$ao
Dica i$portanteX
-e a Criar ou teFtos de carga no so aEuis <indicando u$ linI ativo> ea pasta db e 3 ou o ar?uivo
install.F$l eFiste isso significa ?ue o usu&rio ?ue iniciou o #pache no te$ per$isso para ler o
diret1rio. 7sso no deve ser u$ proble$a e$ u$ co$putador co$ Microsoft 0indoLsG $as poderia
ser e$ u$ co$putador co$ Mac O- = ou BinuF.
Maver& u$a linha para cada tipo de $1dulo de blocoG e pergunta instalado e$ sua inst^ncia MoodleG
?ue te$ u$ diret1rio db. #?ueles co$ o Criar e$ aEul t%$ u$a ligao ativa e conter u$ diret1rio
db no diret1rio base blocos. Os linIs ?ue t%$ o seu no$e <blocos de eFe$plo 3 ad$in 3 db> eo teFto
Boad e$ aEul <linI ativo co$ o te$a padro> te$ u$ ar?uivo no diret1rio install.F$l db listados.
2Fplore o =MBDb agora. Cli?ue ao lado de blocos de carga 3 rsseclient 3 db. # p&gina ir& recarregar
e os blocos 3 rsseclient 3 db linha @ realada e$ verde. 2ditar e )nload so linIs ativos agora e de
carga e 2Fcluir so inativos. 2$ seguida cli?ue no linI 2ditar.
editar 5er ar?uivo F$l de =.M.B.D.4. editor
#?ui voc% v% u$ ca$po para os co$ent&rios para o ar?uivo =MB e todas as tabelas relacionadas
co$ o ar?uivo do D-- install.F$l bloco cliente. <2Fiste apenas u$ blocIersseclient.> 5oc% ta$b@$
vai ver os linIs para $udar a sua viso para a tabela original se voc% tiver editado o =MB 5er
Original. Para $udar a sua viso para o =MB en?uanto editado no $odo de eFibio originalG
cli?ue e$ 2Fibir 2ditadoG ?ue fornece as seguintes op'es+
J Criar u$a tabela nova tabela PeL
J Criar u$a tabela de $Ns?l Tabela novo c1digo de MN-!B
J Declarao de criar nova declarao Pova
J 5oltar para a Ulti$a p&gina 5oltar S p&gina principal
J 5er o c1digo -!B para criar todas as tabelas listadas 5er -!B C1digo
J 5er o c1digo php para criar todas as tabelas listadas
ponto de eFcla$ao
Dica i$portanteX
Po provedor de cada banco de dados usa os tipos $es$o ca$poG ne$ so todos os tipos de dados
presentes e$ todos os bancos de dados. Por eFe$ploG o -!B -erver usa u$ tipo de dados bit para
valores booleanos e Oracle no i$ple$enta u$ tipo boolean ou enu$ e$ tudo. # ,)7 =MBDb
entende isso e resu$os dos tipos de dados para ?ue o c1digo do Moodle pode lidar co$ os detalhes
da criao da tabela para bancos de dados individual. Desenvolvedor pode ento usar a #P7 de
banco de dadosG ?ue foi coberto na )nidade "G para acessar as infor$a'es da tabela se$ saber
eFata$ente co$o cada ca$po @ criado e$ cada banco de dados.
J Cli?ue no linI 2ditar ao lado blocIersseclient para ver a definio de tabela para blocIersseclient.
#gora voc% deve ver u$ ca$po co$ o no$e do blocoG e u$ para os co$ent&rios associados co$ a
tabela.
J O \5er Original] linI $uda a sua viso para a tabela original se voc% tiver feito altera'es no
=MB.
J O \5er 2ditado] linI $uda a sua viso para o =MB editado se voc% estiver no $odo de eFibio
original.
J O \novo ca$po] linI ir& adicionar u$ novo ca$po para o final da lista de ca$pos.
J # tecla \PeL] linI ir& adicionar u$a nova chave pri$&riaG Unica ou estrangeiras.
J O \Povo wndice] linI ir& adicionar u$ novo Hndice.
J O \5oltar] linI navegar de volta para a lista de tabelas no ar?uivo install.F$l.
J O \5er C1digo -!B] linI eFibe o c1digo -!B para criar a tabela para o MN-!BG Oracle e
Postgre-!B.
J O \5er C1digo PMP] linI eFibe o c1digo PMP para adicionarG eFcluir e reno$earG be$ co$o
ca$pos de $udanaG chaves ou Hndices.
#baiFo desses linIsG voc% ver& u$a listage$ de todos os ca$pos na tabela blocIersseclient
junta$ente co$ linIs para editar 2ditarG $over o ca$po de ci$a ou para baiFo para baiFo na
definio da tabelaG e eFcluir o ca$po Delete. # Ulti$a coluna na p&gina @ a definio do ca$po.
5oc% deve perceber ?ue a definio u$ tanto utiliEa ca$pos padro -!B co$o teFtoG intG char.
#baiFo a definio ca$pos eFiste u$a &rea para ChavesG ?ue se refere ao pri$&rioG chaves Unicas e
estrangeiros. (inal$ente abaiFo do Chaves h& u$a &rea onde os Hndices para a tabela eFiste. Para a
tabela blocIerssecleint no h& Hndices.
Cli?ue e$ 2ditar ao lado de userid. 5oc% ver& u$ for$ul&rio MTMB para configurar o ca$po na
tabela. Os ca$pos deve$ ser auto;eFplicativo+
J Po$e do ca$po
J Co$ent&rios sobre o ca$po
J Digite a
J Co$pri$ento <cada tipo te$ diferentes ta$anhosG ?ue ser& eFibido ao lado do ca$po de
co$pri$ento ?uando o tipo @ alterado>
J PU$ero de casas deci$ais para u$ tipo de nU$ero
J #ssinado ou no assinado para u$ tipo inteiro
J Pulo ou no nulo
J -e?O%ncia para u$ tipo inteiro
J 2nu$ ligado ou desligado por u$ personage$ ou tipo de teFto
J 2 u$ valor padro
# seguir so linIs para ver os valores originais para o ca$poG se tiver alterado os 5er OriginalG ver a
verso editada do ca$po ?uando no $odo de eFibio eFibio original editadoG e para navegar de
volta para a definio da tabela 4acI. #gora navegar de volta para fora do editor =MBDb clicando
4acIG 4acIG 4acI To Main. -e n1s $odifica$os os blocos 3 rsseclient 3 db ar?uivo install.F$l antes
volta$os para a p&gina principal =MBDb os linIs -alvar e Deverter estaria$ ativos al@$ 2ditar. -e
voc% ?uiser $anter as altera'es ?ue voc% feEG voc% dever& clicar e$ -alvar o ar?uivo e install.F$l
teria de ser alterado. -e voc% no deseja $anter as altera'es ?ue voc% dever& clicar e$ Deverter eo
install.F$l seria recarregado a partir install.F$l. (inal$ente descarregar o ar?uivo install.F$l
clicando no )nload.

#p%ndice D+ # atualiEao de u$ 4loco
#s tr%s pri$eiras partes desta )nidade de ter coberto co$o desenvolver u$ si$ples bloco desde o
inHcio. Po entantoG ?ue a'es deve$ ser to$adas a fi$ de atualiEar u$ bloco se voc% ?uiser
adicionar u$ ca$po de banco de dados ou tabela ou u$ novo recursoA 2sta parte fornece detalhes
sobre co$o faEer essas atualiEa'esG incluindo+
*. Co$o adicionar u$ Hndice novo banco de dados e$ u$a tabela
2. Os passos para instalar o ca$po para u$ bloco pr@;eFistentes
2sta )nidade te$ co$o objetivo fornecer $ais do ?ue voc% precisa saber sobre o desenvolvi$ento
de u$ bloco Moodle. Depois de concluir todas as atividades e atribui'es para esta unidadeG voc%
ter& u$a base s1lida sobre co$o iniciar u$ bloco a partir do EeroG adicionar u$a tabela de banco de
dados para o MoodleG criar u$ for$ul&rio MoodleG e atualiEar u$ bloco co$ suas altera'es.
VTo DoW Bista
*.
Prati?ue editando a tabela de banco de dados.
edit ecr de Hndice shot#dding u$ novo Hndice ou ca$po para a tabela do banco de dados @ feita
usando o editor =MBDb. Pavegue at@ o editor =MBDb e carregar o ar?uivo install.F$l para blocos
3 si$pleht$l 3 db. 2$ seguida cli?ue no linI V2ditarW e depois cli?ue no linI V2ditarW ao lado
si$pleht$l. Cli?ue no linI VPovo HndiceW. Para criar u$ Hndice e$ blocIid adicione as seguintes
infor$a'es para cada u$ dos ca$pos+
J Po$e+ indeFeblocIid
J Co$ent&rio+ Hndice para blocIid
J Tipo+ no eFclusivo
J Ca$pos+ blocIid
Cli?ue no boto V#lterarW. Deve haver u$ Hndice na parte inferior da p&gina 2ditar Tabela cha$ado
indeFeblocIid.
#ntes de salvar o upgrade.php install.F$l precisa ser criado. !uando u$ ar?uivo install.F$l eFiste
na pasta db para u$ bloco eo bloco foi instalado j& ento Moodle ir& cha$ar upgrade.php ?uando o
usu&rio clica no linI Potificao no bloco de #d$inistrao do -iteG se a verso para o bloco foi
atualiEado . 7sso significa ?ue o desenvolvedor precisa para adicionar o upgrade.php para a pasta db
e au$entar o nU$ero de verso do bloco para o novo Hndice a ser instalado e$ u$ site Moodle ?ue
tenha previa$ente instalado o bloco si$pleht$l. #dicionar upgrade.php para a pasta db agora e cole
o seguinte c1digo no ar?uivo+
aA Php
3 3 2ste ar?uivo $ant@$ o controle de atualiEa'es para
3 3 O bloco de pes?uisa
3 3
3 3 ss veEesG as $udanas entre as vers'es envolve$
3 3 #ltera'es Ss estruturas de banco de dados e outros
3 3 Coisas i$portantes ?ue pode$ ?uebrar instala'es.
3 3
3 3 # funo de atualiEao neste ar?uivo tentar&
3 3 Para eFecutar todas as a'es necess&rias para atualiEao
3 3 -ua instalao $ais antiga para a verso atual.
3 3
3 3 -e h& algo ?ue no pode faEer e$ siG
3 3 5ai diEer o ?ue voc% precisa faEer.
3 3
3 3 Os co$andos sero todos a?ui do banco de dados neutroG
3 3 )sando as fun'es definidas no lib 3 ddllib.php
F$ldbeblocIesi$pleht$leupgrade funo <6 oldversion o 9> l
C(, global 6G 6 TM2M2G 6 dbq
6 Desult o trueq
3 3 3 2 de upgrade co$ea a?ui. Para cada u$G voc% precisar& de u$
3 3 4loco 3 de c1digo se$elhante ao seguinte. Por favorG apague
3 3 3 2ste linhas de co$ent&rio u$a veE ?ue este ar?uivo iniciar trata$ento ade?uado
3 3 3 #tualiEao de c1digo.
return 6 resultadoq
m
Ab
Cli?ue e$ 5er C1digo PMP no editor =MBDb. Pa gota de ao seleo para baiFo selecionar Hndice
adicionar. 2$ V-elect (ield 3 feN 3 7ndeFW VindeFeblocIid.W -elect Cli?ue no boto V2FibirW. Copie
o c1digo na &rea de teFto MTMB e col&;lo e$ upgrade.php ap1s a linha contendo Vc1digo 3 3
upgrade 3W. #gora $udar V========W para a data atual no for$ato ````MMDD99. 2ste @ o
nU$ero de verso ?ue utiliEa o Moodle para deter$inar se algo precisa ser atualiEado. Por eFe$ploG
o nU$ero da verso 299:9*9*99 representa 9* de janeiro de 299:. Copie esse nU$ero e cole no
blocIesi$pleht$l.php onde voc% encontra+
6 This;b version o 299***299q
Deve ser algo co$o+
6 This;b version o 299:92*/99q
O seu c1digo co$pleto deve ser algo co$o+
aA Php
3 3 2ste ar?uivo $ant@$ o controle de atualiEa'es para
3 3 O bloco de pes?uisa
3 3
3 3 ss veEesG as $udanas entre as vers'es envolve$
3 3 #ltera'es Ss estruturas de banco de dados e outros
3 3 Coisas i$portantes ?ue pode$ ?uebrar instala'es.
3 3
3 3 # funo de atualiEao neste ar?uivo tentar&
3 3 Para eFecutar todas as a'es necess&rias para atualiEao
3 3 -ua instalao $ais antiga para a verso atual.
3 3
3 3 -e h& algo ?ue no pode faEer e$ siG
3 3 5ai diEer o ?ue voc% precisa faEer.
3 3
3 3 Os co$andos sero todos a?ui do banco de dados neutroG
3 3 )sando as fun'es definidas no lib 3 ddllib.php
F$ldbeblocIesi$pleht$leupgrade funo <6 oldversion o 9> l
C(, global 6G 6 TM2M2G 6 dbq
6 Desult o trueq
3 3 3 2 de upgrade co$ea a?ui. Para cada u$G voc% precisar& de u$
3 3 4loco 3 de c1digo se$elhante ao seguinte. Por favorG apague
3 3 3 2ste linhas de co$ent&rio u$a veE ?ue este ar?uivo iniciar trata$ento ade?uado
3 3 3 #tualiEao de c1digo.
if <6 result r r 6 oldversion a299:92*/99> l
3 3 3 Define Hndice indeFeblocIid <no Unico> para ser adicionado S blocIesi$pleht$l
Tabela 6 o neL =MBD4Table <YblocIesi$pleht$li>q
6 7ndeF o neL =MBD47ndeF <YindeFeblocIidi>q
6 7ndeF;b set#ttributes <=MBD4e7PD2=ePOT)P7!)2G arraN <YblocIidi>>q
3 3 3 Bana$ento adicionar Hndice indeFeblocIid
6 Desult o result r r 6 addeindeF <6 tableG 6 indeF>q
m
return 6 resultadoq
m
Ab
wndices shotClicI ecr da lista 5oltarb 5oltarb 5oltar para a principalb -alvar para blocos 3
si$pleht$l 3 db. Por fi$G cli?ue e$ VPotifica'esW para ver o bloco atualiEado. 5erifi?ue se o bloco
foi atualiEado por olhar para o seu banco de dados php$Nad$in. BocaliEe a tabela
V$dleblocIesi$pleht$lW. Cli?ue no boto V2struturaW tab no php$Nad$in. Pa seo de Hndices
para o fundo da p&gina ?ue voc% deve ver agora a V$dlesi$pebloeiF Hndice.W
# partir de agoraG ao adicionar u$a c1pia do novo ca$po VifW de ci$a e $udar a verso para a
verso atual. 7nsira o c1digo PMP a partir do editor =MBDb para o ca$po ou infor$a'es ?ue esto
sendo adicionados dentro do VifW.
2.
Co$pletar a tarefa de adicionar u$ ca$po novo banco de dados para a tabela si$pleht$l para
$anter o no$e de u$ ani$al ?ue o usu&rio escolhe e$ u$a caiFa de -elect.
Certifi?ue;se de usar o 2ditor de =MBDb para esta tarefa.
*. #dicionar u$ ca$po ?ue vai conter a localiEao do ani$al. O local ter& u$ li$ite de *99
caracteres.
2. #dicionar u$ novo grupo para a for$a de conter o novo ca$po.
3. #dicionar u$a gota -elecione para baiFo e r1tulo ao for$ul&rio si$pleht$l para o no$e do
ani$al. #dicionar os seguintes no$es para a lista de seleo+
J Tiger
J Bion
J )rso
J DonIeN
J Macaco
. #dicionar u$ ca$po de teFto co$ o r1tulo ao for$ul&rio si$pleht$l para a localiEao do
ani$al @ hospedado.
". Mostrar a dois novos ca$pos na p&gina si$pleht$l abaiFo do visor segundo da i$age$.
.. Modificar db 3 upgrade.php para adicionar os novos ca$pos para o banco de dados.
8. #justar o nU$ero de verso para o bloco.
:. #presentar u$a c1pia co$pactada do seu bloco si$pleht$l para a &rea de atribuio designada.

)nidade :+ Teste de M@todos
5iso geral _ )nidade : VfaEerW lista
Decursos eFternos abre$ e$ novas janelas do navegador.
-oftLare Testing e !.#. <!ualitN #ssurance> @ u$ grande te$aG e$bora ta$b@$ seja u$ te$a
$uito i$portante para todos os progra$adores. #s grandes e$presas costu$a$ ter u$ softLare
dedicado !# engenheiros respons&veis apenas para teste de softLare ou !#.
#pesar de crucial para a ?ualidade de softLare e a$pla$ente utiliEados por progra$adores e
testadoresG teste de softLare ainda @ u$a arteG devido S li$itada co$preenso dos princHpios de
softLare. # dificuldade e$ testes de softLare decorre da co$pleFidade do softLare+ no pode$os
testar u$ progra$a co$pleta$ente co$ co$pleFidade $oderada. \2ngenharia de -oftLare. <2992>.
Magen+.. (ernunivG (achbereich 7nfor$atiI]
O teste @ $ais do ?ue apenas a depurao. O objetivo do teste pode ser garantia de ?ualidadeG
verificao e validaoG ou esti$ativa de confiabilidade. O teste pode ser usado co$o u$a $@trica
gen@rica ta$b@$. Testes de correo e testes de confiabilidade so duas grandes &reas de teste.
Teste de softLare @ u$ trade;off entre te$poG ora$ento e ?ualidade. Teste de -oftLare \. <*///>.
Pan+ Carnegie Mellon )niversitN] Mais detalhes sobre a garantia de ?ualidade de softLare..
Pesta unidadeG va$os nos concentrar e$ alguns t1picos ?ue so particular$ente i$portantes para
os desenvolvedores Moodle.
Testes de caiFa preta
-egundo a 0iIipedia <2;*;9:>+
VTestes de caiFa preta to$a u$a perspectiva eFterna do objeto de teste para derivar casos de teste.
2sses testes pode$ ser funcionais ou no funcionaisG e$bora geral$ente funcional. O designer de
teste seleciona entrada v&lidos e inv&lidos e deter$ina a saHda correta. Po h& conheci$ento de
estrutura interna do objeto de teste.
2ste $@todo de design de teste @ aplic&vel a todos os nHveis de teste de softLare+ unidadeG
integraoG teste funcional do siste$aG e aceitao. !uanto $aior o nHvelG eG portantoG o $aior e $ais
co$pleFa a caiFaG $ais u$ @ forado a usar testes de caiFa preta para si$plificar. 2n?uanto este
$@todo pode revelar partes uni$ple$ented da especificaoG no se pode ter certeEa de ?ue todos
os ca$inhos eFistentes so testados. V
)su&rios pode$ ?uerer avaliar ou co$parar as novas vers'es do Moodle antes de to$ar u$a
deciso final sobre a atualiEao. O Vteste de caiFa pretaW do novo c1digo base do ponto de vista de
u$ usu&rio final C identificando possHveis proble$as C pode ser valioso.
Teste de caiFa branca
-egundo a 0iIipedia <2;*;9:>+
VO teste de caiFa branca <teste de caiFa aIa claroG testes de caiFa de vidro ou de teste estrutural> usa
u$a perspectiva interna do siste$a para projetar casos de teste co$ base na estrutura interna. 2Fige
habilidades de progra$ao para identificar todos os ca$inhos atrav@s do softLare. O testador
escolhe caso de teste insu$os para o eFercHcio ca$inhos percorrer o c1digo ea deter$inar a outputs
apropriados [ Co$o os testes se baseia$ na aplicao realG se as $udanasG eFecuo dos testesG
provavel$ente ta$b@$ precisar&. V
Por eFe$ploG se u$a funo i$portante no Moodle ?uestion&rio $udanas $1duloG ento a $aioria
dos casos de teste do ?uiEG provavel$enteG tero de ser revistas ta$b@$.
V2$bora o teste de caiFa branca @ aplic&vel na unidadeG a integrao e os nHveis do siste$a do
processo de teste de softLareG @ nor$al$ente aplicada para a unidade. 2$bora nor$al$ente os
testes ca$inhos dentro de u$a unidadeG ele ta$b@$ pode testar os ca$inhos entre as unidades
durante a integraoG e entre subsiste$as durante u$ teste de nHvel de siste$a. 2$bora este $@todo
de design de teste pode revelar u$ nU$ero es$agador de casos de testeG pode no detectar partes
uni$ple$ented da especificao ou re?uisitos e$ faltaG $as pode ter certeEa de ?ue todos os
ca$inhos atrav@s do objeto de teste so eFecutados. V
Teste de regresso
-egundo a 0iIipedia <2;*;9:>+
VO teste de regresso @ ?ual?uer tipo de teste de softLareG ?ue procura descobrir erros de regresso.
4ugs de regresso ocorrer se$pre ?ue a funcionalidade de softLare ?ue trabalhou anterior$ente
co$o desejadoG p&ra de funcionar ou j& no funciona da $es$a for$a ?ue anterior$ente estava
progra$ado. Por$al$ente os erros de regresso ocorre$ co$o u$a involunt&ria conse?O%ncia de
altera'es no progra$a.
M@todos co$uns de testes de regresso inclue$ re;eFecuo de testes eFecutados anterior$ente e
verificar se as falhas anterior$ente fiFado reaparecera$. V
)$ eFe$plo tHpico do uso de testes de regresso @ verificar se corrige bug novo no Moodle
real$ente introduEiu outros novos bugs. Outros do ?ue a for$a Y$anuali de testesG voc% pode
encontrar usando ferra$entas de teste auto$atiEadoG tais co$o V-eleniu$ 7D2WG co$ alguns casos
pr@;estabelecidos teste seria $uito Util para verificar se os casos de teste ainda se co$porta$ da
$es$a $aneira. V-eleniu$ 7D2W ser& eFplorada e$ $ais detalhes posterior$ente.
topo
Teste de unidade
-egundo a 0iIipedia <2;*;9:>+
VPa progra$ao de co$putadoresG testes de unidade @ u$ procedi$ento usado para validar
unidades individuais de c1digo;fonte esto funcionando correta$ente. # unidade @ a $enor parte
test&vel de u$ aplicativo. Pa progra$ao procedural u$a unidade pode ser u$ progra$a
individualG funoG procedi$entoG etc G en?uanto e$ progra$ao orientada a objetoG a $enor
unidade @ u$ $@todoG o ?ue pode pertencer a u$a base 3 super classeG classe abstrata ou classe
derivada 3 criana V.
)$a veE ?ue o teste de unidade deu;lhe a confiana ?ue cada parte funcionaG ento voc% deve
utiliEar outras for$as de testes para garantir ?ue as diferentes partes trabalha$ juntas de for$a
ade?uada.
Moodle foi construHdo e$ u$ ?uadro de unidade de teste ?ue se baseia e$ u$ ?uadro -i$pleTest.
Mais tarde va$os discutir co$o utiliEar este fra$eLorI.
Defere$;se a esses recursos Uteis para obter infor$a'es adicionais+ Vo teste de unidadeW e$ geralG
t@cnicas de teste de designG testes Moodle da unidade.
Pr1prio do Moodle VOs testes de unidadeW @ u$a ferra$enta para desenvolvedores Moodle para
avaliar c1digos Moodle e @ encontrada no bloco de #d$inistrao e$ Delat1rios ?uando logado
co$o ad$inistrador do siste$a Moodle.
criao de u$ teste de unidade no Moodle
Testes de unidade pode ser u$ dos pri$eiros passos e$ u$ processo de controle de ?ualidade para
o desenvolvi$ento ou tLeaIing o c1digo do Moodle.
Casos de sel%nio
De acordo co$ Open!# <2;*;9:>+
V-eleni$ 7D2 @ u$ a$biente de desenvolvi$ento integrado para os testes co$ -eleniu$. 2le @
i$ple$entado co$o u$a eFtenso do (irefoF e per$ite gravarG editar e depurar os testes. -eleniu$
7D2 inclui o -eleniu$ nUcleo inteiroG per$itindo ?ue voc% facil$ente e rapida$ente gravar e
reproduEir testes e$ a$biente real ?ue ser& eFecutado.
-eleniu$ 7D2 no @ apenas u$a ferra$enta de gravao+ @ u$a 7D2 co$pleta. 5oc% pode optar por
usar a sua capacidade de gravaoG ou voc% pode editar seus scripts co$ a $o. Co$ o apoio
autoco$plete ea capacidade de se $over e$ torno de co$andos rapida$enteG -eleniu$ 7D2 @ o
a$biente ideal para criar os testes co$ -eleniu$ no i$porta o estilo de testes ?ue voc% preferir.
CaracterHsticas do -eleniu$ 7D2 so
J (&cil registro e reproduo
J -eleo de ca$po inteligente ir& utiliEar identifica'esG no$es ou =PathG confor$e necess&rio
J #utoco$plete para todos os co$andos co$uns de sel%nio
J #nde atrav@s de testes
J Debug e definir pontos de interrupo
J -alvar co$o MTMB testesG scripts DubNG ou ?ual?uer outro for$ato
J -uporte para -eleniu$ ar?uivo user;eFtensions.js
J Opo para auto$atica$ente faEer valer o tHtulo de cada p&gina V
Para usar o -eleniu$ 7D2 para testar MoodleG voc% pode gravar u$a se?O%ncia de intera'es co$ o
seu site Moodle eG posterior$enteG reproduEi;los e ver se eles continua$ a trabalhar depois de
ajustar alguns dos c1digos do Moodle.
2Fiste$ algu$as li$ita'es para a aplicao -eleniu$ 7D2 Moodle+
J O sel%nio no vai esperar por YContinuari redireciona para acontecer. #o gravar u$a se?O%ncia de
a'esG voc% precisa clicar nos linIs continuar $anual$ente.
J Por padroG ele tende a registrar a'es usando idsG e e$ Moodle estesG por veEesG cont%$ ids
banco de dados arbitr&rios. Por eFe$ploG envio de u$a pergunta do ?uiEG ele ir& gravar
clicI#nd0ait resp/esub$it. Po entantoG voc% pode editar isto para diEer clicI#nd0ait 3 3 input
\d valor o v2nviarv].
J 2$ outras ocasi'esG por padroG no @ especHfico o suficiente. Por eFe$ploG eFcluir u$ cursoG ele
grava 3 3 a \i$g 3 d alt o vDeletev]G ?ue s1 vai eFcluir o pri$eiro curso listadosX Pova$enteG voc%
pode edit&;lo para algo co$o 3 3 a \i$g 3 d alt o vDeletev e .. 3 .. 3 td \*] 3 a o Ysel%nio curso de teste
do ?uiEi]G ?ue ir& apagar u$ curso cha$ado.
J ss veEes no funciona co$ janelas pop;up $es$o ?ue ele deve apoi&;los.
7nfor$a'es adicionais sobre co$o usar -eleniu$ para projetar alguns testes auto$atiEados para
MoodleG est& disponHvel no Moodle V!uiE e perguntas dia de testes da co$unidadeW e no p1s f1ru$
de discusso por Ti$ MuntG Vsel%nio \sic] para testes MoodleW.
topo
VTo DoW Bista
Co$o parte das atividades desta unidadeG siga as instru'es abaiFo para <*> eFecutar o b&sico
Vunidade de testeW testesG <2> escrever o seu c1digo de teste pr1pria unidadeG e <3> criar u$ caso de
sel%nio.
*.
2Fecutar testes de unidade b&sica.
)se estas etapas para eFecutar u$a base Moodle VunidadeW de teste.
*. 2ntrar co$ u$a conta de ad$inistrador.
2. 7r para o bloco de #d$inistrao do -ite
3. Cli?ue no linI Delat1rios perto da parte inferior do blocoG no canto inferior direito.
. Cli?ue no linI Os testes de unidade
". Cli?ue no boto 2Fecutar testes. <5oc% pode selecionar as op'es ?ue voc% ?uer a?uiG va$os
eFplicar estas op'es abaiFo>.
.. #guarde os testes para ser concluHdo.
Op'es para 2Fecutando os testes
Mostrar J passesG assi$ co$o falha. Por$al$enteG apenas detalhes dos testes ?ue falhara$ so
i$pressas. #tivando esta opo $ostra detalhes de todos os passes be$ sucedidos ta$b@$.
J Mostrar a busca de ar?uivos de teste. Os testes a sere$ eFecutados so encontrados
auto$atica$ente busca na base de c1digo para os ar?uivos cujos no$es corresponde$ teste J. php
e$ diret1rios cha$ados si$pletest. #tivando esta opo ir& i$pri$ir u$a lista das pastas
pes?uisadas e os ar?uivos de teste encontrado. 7sso Ss veEes @ Util para depuraoG $as @
particular$ente Util ?uando u$ de seus ar?uivos de teste te$ u$ erro de sintaFe. !uando isso
aconteceG voc% Ss veEesG @ s1 pegar u$a p&gina e$ branco se$ nenhu$a $ensage$ de erro. Bigar a
opo de pes?uisa $ostra$ ?ue per$ite ?ue voc% veja ar?uivo de teste ?ue foi ?ue deu o erro. -e
necess&rioG voc% pode ativar essa opo $anual$enteG acrescentando ?ue VshoLsearch o *k ao final
da )DB.
J 2Fecutar u$ teste co$pleto <pode ser lento>. -e voc% ativar esta opoG entoG be$ co$o S
procura de ar?uivos cha$ados teste J. phpG a pes?uisa ta$b@$ procura por ar?uivos cha$ados
sloLtest J. php. Para ser UtilG o teste co$pleto deve encontrar $ais bugsG $as no leva $uito te$po
para ser concluHdo. 2nto se voc% te$ testes $uitoG $uito detalhada de u$a &rea do c1digoG pode
ser $elhor para selecionar u$ subconjunto de testes everdaNG e s1 usar os testes $ais detalhados
?uando u$ erro @ infor$adoG ou voc% est& faEendo novo desenvolvi$ento nessa &rea do c1digo.
2sta opo @ $ais Util ?uando co$binada co$ a pr1Fi$a opo.
J -o$ente eFecutar testes e$ \teFtfield]. Por$al$enteG os testes de todas as partes do codebase so
eFecutados. Po entantoG ?uando voc% est& apenas faEendo o desenvolvi$ento de u$a parte do
c1digoG isso @ u$ desperdHcio de te$po. 5oc% pode digitar o no$e de u$ diret1rio <por eFe$plo
$od 3 ?uiE> ou u$ ar?uivo de teste especHfico <por eFe$plo lib 3 si$pletest 3 testdatalib.php> eG e$
seguidaG apenas os testes sero eFecutados.
Pass+ lib 3 si$pletest 3 testdatalib.php ;b datalibetest ;b
testegeterecord ;b (alse (alse FFFFFFFFF obter a
\5ar3LLL3ht$l3tjh23:3head3lib3si$pletest3testdatalib.php 3 linha
/2]
2$ veE de digitar u$ ca$inho nesta caiFaG no h& u$a $aneira $ais f&cil. -e$pre ?ue u$a
aprovao ou reprovao @ eFibidoG o no$e do ar?uivo de teste @ i$presso. Cada seo do no$e do
ca$inho @ u$ linI para eFecutar apenas os testes e$ ?ue pasta ou ar?uivo.
topo
2.
2screver c1digo de teste
Continuando co$ o eFe$plo Vsi$pleht$lW da )nidade 8G escreva u$ teste de unidade para o
blocIesi$pleht$leconverteuniFti$e funo no ar?uivo 3 blocos 3 si$pleht$l 3 lib.php.
Para obter u$a $elhor co$preenso de co$o criar c1digos para testes de unidadeG procure por
esses ar?uivos de teste si$ples eFe$plo+
lib 3 si$pletest 3 testLeblib.php
lib 3 si$pletest 3 test$oodlelib.php
tipo de pergunta 3 3 -MODT#P-02D 3 si$pletest 3 test?uestiontNpe.php
Crie u$ diret1rio cha$ado 3 blocos 3 si$pleht$l 3 si$pletest e criar u$ ar?uivo nele cha$ado
testelib.php. O conteUdo real deste ar?uivo deve ser parecido+
aA Php
re?uireeonce <dirna$e <ee(7B2ee> config.phpi3..3..3.>q
global 6 C(,q
re?uireeonce <6 C(,;b libdir Ysi$pletestlib.php 3i.>q
classe basicgrouplibetest estende )nitTestCase l
testeblocIesi$pleht$leconverteuniFti$e function <> l
3 3 2screve o c1digo de teste a?ui. 7sso provavel$ente envolveG
3 3 Cha$ando alguns $@todos da classe blocoG
3 3 2 ento cha$ar u$ ou $ais 6 this;b afir$ar [ $@todos.
m
m
Ab
Ou sejaG voc% te$ u$a classe cha$ada so$ethingetestG e nessa classe voc% te$ $uitos $@todos
cha$ados testeso$ething. Por$al$enteG h& u$ $@todo de teste para cada funo para testarG e
assi$ co$o voc% pode cha$ar o $@todo de teste testena$eeofefunctionebeingetested. Peste
eFe$ploG este $@todo pode ser cha$ado testeblocIesi$pleht$leconverteuniFti$e.
Co$o escrever docu$entos caso de teste
Moodle te$ u$ padro preli$inar para construir casos de teste. 2stes casos de testeG basica$enteG
so alguns Vcen&riosW ?ue deve ser eFecutado no Moodle antes de cada lana$ento. #tual$enteG
esse plano de teste est& longe de ser perfeitaG apesar de $ais pessoas na co$unidade Moodle esto
co$eando a contribuir $ais casos de teste sobre a docu$entao Moodle LiIi
<http+33docs.$oodle.org>.
Os cen&rios j& eFistentes deve ser eFecutado no Curso baiFado Moodle de teste. #?ui esto algu$as
regras gerais+
J Caso de Teste Pa$ing conven'es+
o \###]+ Tr%s personagens ?ue representa$ o bloco ou o no$e do $1dulo
o \999]+ Tr%s dHgitos de u$ nU$ero ?ue ?uestiona$ a
o \#]+ Potencial actor o -+ professorG #++ estudanteG T ad$inistrador
J Os planos de testes so classificados por $1dulos+
Testes o 3 #tribuio
Testes o 3 Chat
Testes o 3 2scolha
Testes o 3 (oru$
Testes o 3 !uiE
Testes o 3 Desource
topo
)sando Vsi$pleht$lW co$o u$ eFe$ploG ?ue se segue @ u$ caso de teste tHpico+
\-i$99*T#-]+ #dicionando bloco -i$pleht$l do bloco de $enu pull;doLn
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
*. Cli?ue no boto V#ctivar $odo edioW boto na janela do canto superior direito.
2. 4locos do pull;doLn $enuG encontrar& o bloco Vsi$pleht$lW na lista de blocos disponHveis
3. 2scolha o bloco Vsi$pleht$lW no $enu
. (aE o displaN blocI Vsi$pleht$lW correta$enteA O padro vai aparecer no lado direito da janela
do navegador. Po deve haver cordas faltandoG etc
bloco MTMB si$ples eFibidas na p&gina principal da disciplina
Mais infor$a'es sobre co$o escrever u$ docu$ento Moodle caso de teste est& disponHvel no
Moodle Docs.
topo
3.
Tente -eleniu$.
*. Beia Open!# est& usando -eleniu$ 7D2 e gravao de u$ teste <note o fil$e ?ue ilustra as
etapas para o teste perto do topo sob a guia V2FibirW>.
2. 7nstale -eleniu$ 7D2 da -eleniu$ #bra !# da p&gina de doLnloads 7D2.
3. 4aiFe o ar?uivo de eFe$plo -eleniu$ Moodle e desco$pact&;lo <por eFe$ploG e$ c+ c Fa$pp c
$oodle c>
. Po (irefoFG v& para a sua instalao $oodle local <por eFe$ploG. Mttp+33localhost3$oodle3>
". 2ntrar co$o ad$in
.. 7niciar -eleniu$ 7D2 a partir do $enu ferra$entas do (irefoF.
8. # partir do $enu -eleniu$G selecione #r?uivo;b #brir e abra o ar?uivo
VCreate?uiE.seleniu$.ht$lW do ar?uivo desco$pactado no passo 2.
:. Pa lista de co$andosG olhe para o * 3 . a partir do final C onde diE Vtipo neLfile c+ c Docu$ents
and -ettings c TKM23/ c DesItop c testes -eleniu$ c suite.F$l ?uesto de teste.W Mudana ?ue o
ca$inho do ar?uivo para apontar para sua c1pia de Vsuite.F$l ?uesto TestW do ar?uivo
desco$pactado.
/. Cli?ue no boto plaN verde na barra de ferra$entas -eleniu$. O script de teste ser&
auto$atica$ente+
J Criar u$ novo curso
J #dicionar u$ ?uiE para ?ue
7$port J *2 perguntas da a$ostra
J #dicionar essas perguntas para u$ ?uestion&rio
*9. 2$ seguidaG YTeste de har$oniEao C funda$ental no ?uestion&rio previeL.seliniu$.ht$li
open e eFecut&;lo <se$ edio necess&rios neste $o$ento>. 2ste @ eFecutado atrav@s de u$a das
perguntas do teste algu$as veEes.
**. (inal$enteG abra Vteste 2Fcluir course.seliniu$.ht$lWG e eFecut&;lo para re$over o curso de
teste e voltar para onde voc% co$eou.
*2. Dever o Vsuite.F$l ?uesto TestW para ver o ?ue @ faEG tentar ajust&;lo u$ pouco para entender
co$o funciona -eleniu$.
.
Co$pletar os tr%s #tribui'es e sub$et%;los nas &reas de atribuio designada.
*. \Caso de Teste] -iga o Moodle conveno caso de teste para escrever u$ caso de teste si$ples
<cen&rio> para testar ,radebooI Plus verso 2 <aIa ,4Pv2>.
Considere;se u$ foco e$ testes u$a das caracterHsticas b&sicas e$ ,4Pv2. Por eFe$ploG adicionar
u$ evento classificadoG usando o Vgrau de editarW guia co$ out;of;bound valoresG etc 2nvie seu
caso de teste co$o u$ docu$ento de teFto on;line na &rea de atribuio. Conven'es de
no$enclatura e for$ato para o caso de teste Moodle deve$ ser observados.
2. \-eleniu$] Design u$ caso -eleniu$ auto$atica$ente+
J )se a sua instalao Moodle desenvolvi$ento local <Moodle *.:>.
J 2ntrar co$o #d$in.
J -elecione o Curso Moodle caso de teste ?ue voc% instalou antes.
J Cli?ue e$ V,radesW <livro de notas>.
J Cli?ue no boto de VDoLnload e$ for$ato 2FcelW boto
J 5erificar $anual$ente o conteUdo para ver se tudo funciona correta$ente.
J 2screva u$ trecho de c1digo si$ples usando o Moodle Vtestes de unidadeW ?uadro para testar
u$a funo particular <voc% escolhe> e$ ,4Pv2. Por eFe$ploG a funo de
VgradeegetecategorNeLeight <>W ou Vgradeegetegradeeite$s <>W no grau 3 3 lib.php
3. \Teste de )nidade Moodle] 2screva u$ trecho de c1digo si$ples usando o Moodle Vtestes de
unidadeW ?uadro para testar u$a funo particular <voc% escolhe> e$ ,4Pv2. Por eFe$ploG a
funo de gradeegetecategorNeLeight <> ou gradeegetegradeeite$s <> in 3 grade 3 lib.php.
". Partilhar os seus pensa$entos sobre os te$as de discusso para esta )nidade.

)nidade /+ Docu$entos de De?uisitos
5iso geral _ )nidade / VfaEerW lista
Decursos eFternos abre$ e$ novas janelas do navegador.
Docu$entos de re?uisitos so a cola ?ue $ant@$ a co$unicao entre u$ progra$ador e u$
usu&rio juntos. Pesta unidadeG va$os eFplicar co$o desenvolver u$ docu$ento de re?uisitos ?ue
vo ajudar a solidificar o $otivoG u$ projeto deve ser concluHdoG reduEir creep recursoG auFiliar na
garantia de ?ualidadeG be$ co$o identificar o ?ue a funcionalidade de u$ progra$ador deveria
estar trabalhando para criar.
Pesta unidadeG va$os estar se referindo S estrutura de u$ docu$ento de re?uisitosG co$o descrito
no ar?uivo PD(G V2screver u$ Docu$ento de De?uisitos de -oftLareW. Por favorG use isso co$o
u$a refer%ncia e leia atenta$ente. Beia ta$b@$ atrav@s de docu$ento da P#-#G Dedao 2ficaE
2specifica'es de De?uisitosG para ter u$a id@ia de co$o a palavra de u$ docu$ento de re?uisitos
para a $elhor legibilidade possHvel.
Por ?ue escrever u$a docu$ento de re?uisitosA
VOs produtos co$ as contagens $ais baiFas defeito ta$b@$ t%$ o $enor hor&rios.W M. Ti$ Kones
no controle de verso para BinuF+ 5iso de ar?uiteturasG $odelos e eFe$plos.
)$ docu$ento de re?uisitos+
J Z u$ ponto de partida para garantir ?ue voc% fiEer isso direito o ?ue significa ?ue entregar o ?ue o
cliente ?uer a u$ nHvel de ?ualidade ?ue @ aceit&vel.
J Pode ser usado co$o u$ VcontratoW solta definir ?ual funcionalidade ser& entregue.
J Z escrito co$o todos ?ue os envolvidos pode$ entender o docu$entoG incluindo clientesG gerente
de projetoG desenvolvedores e testadores.
J ,arante ao cliente ?ue a e?uipe de desenvolvi$ento co$preende o ?ue @ ?ue eles ?uere$.
J Bista clara$ente as caracterHsticas ?ue deve$ estar presentes no projeto acabado. Por eFe$ploG @
u$ docu$ento escrito de ?ue o softLare far&.
J Oferece u$ ponto de partida para testar a funcionalidade.
J Z u$ ponto de partida para a criao de docu$entao do usu&rio.
J -ettles eventuais litHgios entre o cliente ea e?uipe de desenvolvi$ento
J 0ill lista nada $aisG nada $enos do ?ue o eFigido.
J -erve co$o u$ ponto de refer%ncia para faEer u$ recurso de congela$ento. Ou sejaG se as
$udanas funcionalidade solicitadaG ento u$ docu$ento de re?uisitos novo @ criado eo cliente
deve$ participar neste processo para entender o i$pacto de faEer $udanas no final de u$ projeto
do ciclo de vida. 7sso ta$b@$ pode servir co$o ponto de partida para a entrega de funcionalidade
e$ vers'es.
J Po se concentrar e$ co$o o softLare ir& realiEar as tarefas necess&rias. 7sso @ $uitas veEes
$elhor deiFar para o progra$ador ?ue ser& o $ais eFperiente e capaE de to$ar decis'es de
i$ple$entao.
J Deve ser adaptado para a aplicao. -e o pedido for grande ou pode ser facil$ente $al entendido
ou $al interpretadoG e$ seguidaG o docu$ento de re?uisitos provavel$ente precisa$ ser $ais
detalhadas. Po entantoG voc% deve escrever de $odo ?ue seja facil$ente co$preendida.
topo
# entrevista do utiliEador
#ntes de voc% pode escrever u$ docu$ento de re?uisitos voc% deve pri$eiro deter$inar os
re?uisitos. )$a das $elhores $aneiras de faEer isso @ conversando co$ u$ usu&rio ou grupo de
usu&riosG seja$ estes usu&rios so professoresG ad$inistradores ou alunos depende do tipo de
projeto. 2ntrevistando o rosto do usu&rio a cara ou pelo telefone per$ite ?ue o progra$adorG
gerente de projeto e usu&rio para faEer o seguinte+
*. Chegar a u$ entendi$ento co$u$ dos re?uisitos do projeto
2. Discutir as decis'es i$portantes sobre as caracterHsticas do projeto
3. Discutir as decis'es i$portantes sobre a interface do usu&rio para o projeto
. Chegar a u$ entendi$ento co$u$ de ?uanto te$po u$ projeto levar& para ser concluHdo
". 7dentificar ?uais caracterHsticas so as $ais i$portantes
#baiFo est& u$ conjunto de perguntas ?ue deve$ ser Uteis co$o ponto de partida para a $aioria
das entrevistas u$ desenvolvedor ter& co$ u$ usu&rio ou grupo de usu&rios. -inta;se livre para
$odificar isso co$ ?uest'es $ais especHficas para o projetoG ou adicionar perguntas durante a
entrevista co$o eles v%$ S $ente. O pri$eiro conjunto de perguntas @ $ais geral ?ue o grupo deve
responderG eo segundo conjunto @ especHfico e deve ser solicitado de cada usu&rio do projeto ou
progra$a.
!uest'es gerais e introdut1rias para o grupo inteiro de usu&rios
*. O ?ue isso vai ajudar a atingir projeto para a organiEaoA
2. Por ?ue esta$os faEendo o projeto agoraA
3. O ?ue acontecer& se no fiEer$os o projeto e$ tudoA
. !ue$ se beneficiar& co$ o projetoA
". #s pessoas ?ue se beneficiaro do projeto considera$ a $elhoria $ais i$portante ?ue pode ser
feito neste $o$entoA
.. Deve$os faEer u$ projeto diferente e$ veE dissoA
8. !uando @ ?ue o projeto precisa ser concluHdoA
:. !uais so as partes $ais i$portantes do projetoA
/. !uais so as caracterHsticas do projeto pode ser adiado ou corte se a desliEa$entos ti$elineA
!uest'es especHficas do usu&rio
*. !ual @ o processo atual de eFecutarA
2. !ue parte <s> do processo ?ue voc% gostaria de $elhorarA
3. !ue sero afetados pelas $udanas ?ue voc% gostariaA
. 2Fiste$ outros siste$as ?ue essa $udana ter& de interagir co$A
". Co$o @ ?ue o usu&rio veja sua interao co$ o processo atualA
.. Co$o @ ?ue o usu&rio veja sua interao co$ o novo processoA
8. !uais as op'es ?ue o usu&rio gostaria de ser capaE de configurarA
:. !ue ter$os no o usu&rio a entenderA
/. 2Fiste algu$a coisa ?ue o usu&rio gostaria ?ue acontecesse ?uando o projeto est& pronto para ser
i$ple$entadoA
*9. !ue$ deve ser capaE de eFecutar as a'es dentro do siste$a e$ relao ao novo projetoA
**. 2sto l& todos os relat1rios ?ue o usu&rio precisaA
*2. !ue tipo de re?uisitos de auditoria ?ue o usu&rio te$A
topo
# 2ntrevista #$ostra
7d@ia do projeto
Corpo docente da Mu$boldt -tate )niversitN gostaria de ter u$a for$a de i$pri$ir e registro de
fre?O%ncia de Moodle. Os assistentes de departa$ento gostaria de reduEir o trabalho de criao de
folhas de papel para a faculdade. 2?uipe t@cnica da Mu$boldt -tate )niversitN esto na fase de
eFplorao do desenvolvi$ento do projeto para deter$inar a $elhor $aneira de satisfaEer as
necessidades dos professores e assistentes de departa$ento.
!uest'es gerais e introdut1rias para o grupo inteiro de usu&rios
*. O ?ue isso vai ajudar a atingir projeto para a organiEaoA Per$itir& faculdade para ser
auto;suficiente ?uando se trata de to$ar atendi$ento e$ veE de confiar no departa$ento de
assist%ncia para criar folhas de papel.
2. Por ?ue esta$os faEendo o projeto agoraA 2sta$os faEendo esse projeto por?ue ?uinEe
professores e 22 assistentes de departa$ento t%$ solicitado esta alterao co$o sua prioridade
$&Fi$a nos Ulti$os seis $eses.
3. O ?ue acontecer& se no fiEer$os o projeto e$ tudoA #s coisas vo continuar co$o esto agora.
. !ue$ se beneficiar& co$ o projetoA #ssistentes e docentes do departa$ento.
". #s pessoas ?ue se beneficiaro do projeto considera$ a $elhoria $ais i$portante ?ue pode ser
feito neste $o$entoA -i$G absoluta$ente.
.. Deve$os faEer u$ projeto diferente e$ veE dissoA Po.
!uest'es especHficas do corpo docente
*. !ual @ o processo atual de eFecutarA Pedido de folha de presena do assistente de departa$ento
2. !ue parte <s> do processo ?ue voc% gostaria de $elhorarA ,ostaria de ser capaE de i$pri$ir
folhas de presena *9 $inutos antes da palestra e$ veE de ter de pedir a folha de papel u$a se$ana
de anteced%ncia.
3. !ue sero afetados pelas $udanas ?ue voc% gostariaA #ssistentes de departa$ento e
professores.
. 2Fiste$ outros siste$as ?ue essa $udana ter& de interagir co$A Po.
". Co$o @ ?ue o usu&rio veja sua interao co$ o processo atualA 5ejo $inhas intera'es co$o
restrito. Todas as infor$a'es ?ue eu ?uero @ no MoodleG $as eu sou incapaE de acess&;lo co$o eu
?uero se$ passar por u$ assistente de departa$ento.
.. Co$o @ ?ue o usu&rio veja sua interao co$ o novo processoA 2u $e vejo co$o $enos
confinado e capaE de faEer $eu trabalho $elhor e de for$a $ais oportuna.
8. !uais as op'es ?ue o usu&rio gostaria de ser capaE de configurarA
J 2u gostaria de ser capaE de configurar ?uais participantes do curso esto no plantelG no caso eu
tenho pessoas ?ue eu no preciso de to$ar para atendi$ento.
J 2u gostaria de configurar a data da folha de papel @ para ?ue eu possa i$pri$ir u$a diferente.
J 2u gostaria de ser capaE de i$pri$ir a folha de papel para cada veE ?ue $inha classe se reUne por
apenas entrando nas datas a $inha tur$a se reUne.
:. !ue ter$os no o usu&rio a entenderA Desconhecido neste $o$ento.
/. 2Fiste algu$a coisa ?ue o usu&rio gostaria ?ue acontecesse ?uando o projeto est& pronto para ser
i$ple$entadoA
J ,ostaria de ser notificado de ?ue este projeto foi concluHdo
J 2u gostaria de co$ear algu$ treina$ento sobre co$o usar este progra$a correta$ente.
*9. !ue$ deve ser capaE de eFecutar as a'es dentro do siste$a e$ relao ao novo projetoA
-o$ente a faculdade deve ser capaE de i$pri$ir a folha de papel.
**. 2sto l& todos os relat1rios ?ue o usu&rio precisaA -e eu puder entrar atendi$ento gostaria de
ser capaE de ver u$ relat1rio de ?ue tenha fre?uentado o classes.
*2. !ue tipo de re?uisitos de auditoria ?ue o usu&rio te$A Penhu$.
Perguntas assistente do departa$ento especHfico
*. !ual @ o processo atual de eFecutarA
*. Bogar no Moodle e localiEar curso do professor.
2. Copiar todos os estudantes e$ u$a p&gina do bloco de Pessoas e col&;los e$ u$a planilha.
3. Depita o passo b para cada p&gina no bloco de Pessoas
. #dicionar u$ ca$po para a data para a planilha
". #dicione u$ tHtulo para o curso para a planilha
.. -alve o ar?uivo
8. 7$pri$ir a planilha
:. Colo?ue a folha de rolar na casa do professor
/. Depita os passos a;h para todas as solicita'es
2. !ue parte <s> do processo ?ue voc% gostaria de $elhorarA 2u gostaria de re$over isso co$o
$inha funo de trabalho.
3. !ue sero afetados pelas $udanas ?ue voc% gostariaA #ssistentes e docentes do departa$ento.
. 2Fiste$ outros siste$as ?ue essa $udana ter& de interagir co$A Po.
". Co$o @ ?ue o usu&rio veja sua interao co$ o processo atualA 2u tenho ?ue faEer u$ $onte de
tarefas repetitivasG copiar e colar. 2u ta$b@$ tenho a i$presso e notificar a faculdadeG ?uando suas
folhas de rolo est& acabado. 2u provavel$ente realiEar cerca de *9 horas de trabalho para cada
faculdade.
.. Co$o @ ?ue o usu&rio veja sua interao co$ o novo processoA 2u no $e vejo interagindo co$
o novo processo.
8. !ue ter$os no o usu&rio a entenderA Desconhecido neste $o$ento
:. 2Fiste algu$a coisa ?ue o usu&rio gostaria ?ue acontecesse ?uando o projeto est& pronto para ser
i$ple$entadoA ,ostaria de ser notificado ?uando o projeto estiver co$pleto e gostaria de saber
?ue$ enviar professores para obter treinados sobre co$o usar o bloco.
topo
De?uisitos 2strutura do Docu$ento
)$ docu$ento de re?uisitos de softLare no deve $ergulhar e$ detalhes de i$ple$entao. Ou
sejaG o docu$ento deve se concentrar no ?ue o aplicativo deve faEer e no co$o ele realiEa essas
tarefas. 2ste prev% fleFibilidade na i$ple$entao e ainda entregar as eFpectativas s1lida do ?ue a
funcionalidade do progra$a ir& proporcionar.
*. 5iso geral da aplicao. O Desu$o de aplica'es deve ser concluHda co$o u$ esforo de
colaborao entre o gerente de usu&rio progra$adorG e projeto.
*. Objetivos e Kustificativas
*. 2Fpli?ue por ?ue este projeto est& sendo desenvolvido.
2. 2Fplicar a necessidade do progra$a ou projeto.
3. 2Fplicar por ?ue isso est& sendo feito agora ou $ais tarde.
2. Processos de Peg1cio
*. 2Fplicar os processos de neg1cios ?ue gera$ a necessidade para esta aplicao.
2. 2Fplicar co$o o processo de neg1cio eFistentes vai $udar.
3. 2Fpli?ue ?uais?uer outros siste$as ou processos ?ue esta aplicao ser& dependente.
3. (un'es de usu&rio e responsabilidades
*. Descrever as responsabilidades Unicas e intera'es de cada usu&rio 3 papel e$ Moodle ter& ?ue
eFecutar ?uando o projeto estiver co$pleto. Por eFe$ploG u$ ad$inistrador do site ter& ?ue
configurar as defini'es ou u$ estudante @ capaE de faEer certas coisas.
2. Para a $aior parte das fun'es gerais ?ue precisa$ ser definidos so de estudanteG professor da
faculdade 3 e ad$inistrador.
. 7ntera'es co$ outros siste$as
*. 2Fplicar co$o o siste$a ir& interagir co$ outros siste$as. Por eFe$plo Moodle ir& gerar u$
ar?uivo eFcel para u$ siste$a de estudante a utiliEar para carregar notas
2. Definir as intera'es co$ todas e ?uais?uer siste$as eFternos.
". -ubstituio de siste$as legados
*. 2Fplicar todos os siste$as de legado ?ue este vai substituir
.. Dollout Considera'es sobre a produo
*. 2Fpli?ue ?uais?uer considera'es ?ue precisa$ ser levados e$ conta ?uando esta aplicao vai
para produo.
8. Ter$inologia
*. Definir ?ual?uer ter$inologia ?ue u$ usu&rio pode no entender co$pleta$ente
2. Definir todas as siglas utiliEadas no docu$ento de re?uisitos ou e$ co$unica'es posteriores
sobre o projeto entre os usu&rios e desenvolvedores.
topo
2. De?uisitos funcionais. De?uisitos funcionais pode ser preenchido pelo gerente de projeto e
progra$adorG co$ o auFHlio do usu&rioG $as deve se$pre ser infor$ado pelo Desu$o de aplica'es.
2sta &rea do docu$ento de re?uisitos @ $ais i$portante para o progra$adorG por?ue os detalhes
todas as infor$a'es ?ue so especHficas para eFecuo do progra$a.
*. Declarao de funcionalidade
*. Clara$ente a funcionalidade necess&ria do progra$a. Tenha o cuidado de indicar eFata$ente o
?ue @ necess&rio+ ne$ $ais ne$ $enos. 2ste ser& u$ contrato livre$ente ligao entre o cliente ea
e?uipe de desenvolvi$ento.
2. 2$ geral para o desenvolvi$ento Moodle voc% vai ?uerer ?uebrar os re?uisitos funcionais
baseados e$ seus pap@is. -e o seu progra$a @ $ais u$a caracterHstica funda$ental de todo o
siste$aG ento ele pode ser $elhor para a lista de re?uisitos co$ base na funo.
2. Considera'es de segurana
*. 2Fplicar os proble$as de segurana ?ue pode$ precisar de ser tratada co$o parte do seu
aplicativo.
2. 2Fplicar as a'es ?ue usu&rios especHficos sero autoriEados a faEer ou o ?ue especifica$ente
a'es ?ue no pode$ faEer.
3. !uest'es de personaliEao
*. Bista de ?uais?uer considera'es de personaliEao especHficas ?ue pode$ precisar de ser tratada
co$o parte da i$ple$entao do aplicativo. #bordar especifica$ente o personaliEa'es <se houver>
o usu&rio ter& de realiEar.
. Delat1rios
*. Descrever todos os relat1riosG eFtrao de $adeira ou viso geral do siste$a ?ue o aplicativo ter&
?ue fornecer.
". De?uisitos de Dese$penho
*. Bista de todos os re?uisitos especHficos de dese$penho a?ui. Deve haver $@tricas especHficas e
valores aceit&veis na listaG no afir$a'es vagas ou a$bHguas.
.. )sabilidade
*. Bista de ?uais?uer considera'es especHficas ou re?uisitos de usabilidade a?ui.
8. 2scopo
*. Bista de cada u$ dos re?uisitos constantes da Declarao de eFig%ncias da funo e e$ ?ue fase
do projeto deve$ ser concluHdas at@.
2. ,eral$ente utiliEa$ u$a abordage$ gradual para listar cada conjunto de re?uisitos funcionais
?ue sero usados.
3. Pota ?uando u$ recurso ou fase @ opcional.
3. -uple$entares 3 4acIground 7nfor$ao 3 #p%ndices. Bista de todos os docu$entos
co$ple$entaresG refer%ncias ou antecedentes ?ue possa$ ser necess&rias para co$preenderG
i$ple$entarG testarG ou usar o aplicativo.
topo
VTo DoW Bista
*.
Mu$boldt -tate )niversitN te$ eFig%ncias de alguns docu$entos de a$ostra e$ seu siste$a Trac.
D% u$a olhada nestes dois eFe$plos+ u$ projeto para per$itir crosslisting de cursos e u$ projeto
para agiliEar a atualiEao datas atividade. Ta$b@$ rever este $odelo de eFe$plo para u$
docu$ento de re?uisitos.
2.
Beia TanNa 4ereEin V2screver u$ Docu$ento de De?uisitos de -oftLareW <docu$ento PD( C
#dobe Deader>. !ual @ a diferena entre o es?ue$a aci$a e a estrutura do docu$ento re?uisitos
propostos por TanNa 4ereEin e$ V2screver u$ Docu$ento de De?uisitos de -oftLareWA
3. Co$pletar os re?uisitos redao do docu$ento.
Co$ base na entrevista de eFe$plo fornecido na lio desta )nidadeG escrever seco *.* Objetivos
e Kustificativas e *G2 de Processos de Peg1cios do docu$ento de re?uisitos. -ub$et%;lo na &rea de
atribuio designada na seo desta unidade. Certifi?ue;se ?ue o seu docu$ento eFplica cada u$
dos pontos i$portantes listados na estrutura de docu$entos de re?uisitos.
Co$ base na entrevista de eFe$plo fornecido na lio desta )nidadeG escrever seco 2.*
Declarao de (uncionalidade do docu$ento de re?uisitos. -ub$et%;lo na &rea de atribuio
designada na seo desta unidade. Certifi?ue;se ?ue o seu docu$ento eFplica cada u$ dos pontos
i$portantes listados na estrutura de docu$entos de re?uisitos.
Pensar e$ u$a id@ia de projeto ?ue voc% gostaria de ver i$ple$entada no Moodle. Para co$earG
considere as seguintes id@ias+
Projetos f&cil
J )$ bloco ?ue apresenta u$a trans$isso ao vivo a partir de u$a Leb ca$.
J )$ bloco ?ue ar$aEena a dataG hora e local de ?uando o curso atende
Projeto de dificuldade $@dia
J )$ bloco ?ue serve co$o u$a calculadora on;line co$ gr&ficosG $oeda e fun'es de
contabilidade
Projetos difHcil
J )$ bloco de pes?uisa do ,oogle -cholar para publica'es
J )$ bloco para pes?uisar #$aEon para livros
J )$ bloco ?ue interage co$ o ,oogle TalI para bater papo en?uanto no Moodle
J )$ bloco ?ue agrega todos os alunos e$ u$ curso co$o a$igos no (acebooI
J )$ bloco ?ue agrega todos os alunos e$ u$ curso co$o a$igos no MN-pace
J )$ bloco ?ue per$ite o acesso a u$ servidor (TP
J )$ bloco ?ue adiciona o acesso --M a u$ servidor
J )$ bloco ?ue apresenta o Leathr locais do ,oogle ou Leather.co$
)sando o for$ato de entrevista a$ostra fornecida nesta )nidadeG role;plaN o processo de entrevista
co$ voc% $es$o. #presentar as respostas para as perguntas da entrevista e ?uais?uer outras
perguntas ?ue voc% sente necessidade de ser convidado para a &rea de atribuio. Certifi?ue;se de
realiEar u$a entrevista a partir de perspectivas diferentes usu&riosG tais co$o o corpo docente e
perspectiva do estudante.
)tiliEando as respostas para as perguntas da entrevista criar u$ docu$ento de re?uisitos co$pleto.
#presentar o docu$ento de re?uisitos na &rea de atribuio designada. Certifi?ue;se de eFplicar
todas as perguntas feitas e$ cada u$a das sec'es da estrutura re?uisitos aci$aG be$ co$o fornecer
u$a captura de tela de u$ ridiculariEado at@ interface do usu&rio e$ u$ ap%ndice.
.
Depois de co$pletar as leituras indicadas e CessoG escolher entre os seguintes te$as de discusso e
postar suas id@ias.
J Co$parar e contrastar as diferenas entre o docu$ento M-) de re?uisitos e do $odelo de
docu$ento de re?uisitos descritos na lio desta )nidade.
J !ual @ a diferena entre o esboo desta lio e da estrutura do docu$ento re?uisitos propostos por
TanNa 4ereEin e$ V2screver u$ Docu$ento de De?uisitos de -oftLareWA
J !uais perguntas da entrevista ?ue voc% adicionar ao conjunto de perguntas da entrevista padroA
J !uais as se'es do docu$ento de re?uisitos ?ue voc% $udariaA Ou ?uais se'es voc% acrescentarA
". (aa o teste. Duas tentativas so per$itidas.

)nidade *9 C Progra$ao de u$ 4loco Moodle
5iso geral _ )nidade *9 VfaEerW lista
Decursos eFternos abertos e$ novas janelas do navegador.
#o longo dos Ulti$os nove unidades ?ue evoluHra$ atrav@s dos passos para criar u$ bloco MoodleG
incluindo
J 5erificar o c1digo de u$ reposit1rio de c1digo fonte
J #prender sobre algu$as ferra$entas de desenvolvi$ento Uteis
J Criao de Moodle no seu co$putador
J 2Fplorar bibliotecas Moodle Util
J Dever infor$a'es gerais sobre boas pr&ticas de codificao
J Codificao de u$ bloco e$ Moodle
J Criar casos de teste e eFecuo de scripts -el%nio
J 2screver u$ docu$ento de re?uisitos
Pesta unidade voc% vai usar tudo o ?ue voc% aprendeu at@ agora para criar u$ bloco de u$
docu$ento de re?uisitosG escrever casos de testeG participar de u$a reviso de c1digo eG final$enteG
liberar o bloco para a co$unidade MoodleX
#o selecionar projetos para o desenvolvi$ento de blocos neste cursoG v&rios fatores deve$ ser
cuidadosa$ente considerados. 2$ alguns casosG os docu$entos de re?uisitos desenvolvidos na
)nidade / no pode produEir a $elhor oportunidade de sucesso para progra$adores iniciantes
MoodleG ou possa$ vir a encontrar resist%ncia significativa ?uando proposto para a co$unidade
MoodleG por raE'es ?ue poderia$ ser difHceis de prever.
Procurar o conselho do facilitador do curso sobre a possibilidade de prosseguir co$ seu projeto para
o desenvolvi$ento )nidade / bloco co$pleto. # )nidade *9 Docu$ento de De?uisitos fornecido
abaiFo destina;se a oferecer u$a tarefa gerenci&vel para a concluso be$ sucedida deste curso e
deve ser usado para a unidade *9 a $enos ?ue o incentivo especHfico @ fornecido pelo facilitador
para continuar co$ sua id@ia de projeto )nidade /.
5oc% pode trabalhar e$ e?uipes de projetoG se desejar. Po entantoG a $enos ?ue todos os $e$bros
da e?uipe esto na $es$a instituioG co$partilhando o C5- $es$oG pode haver dificuldades
t@cnicas na gesto de edi'es para o c1digo. #lertar o seu facilitador dos $e$bros de sua e?uipe.
#o apresentar seu projetoG voc% deve docu$entar as contribui'es de cada $e$bro da e?uipe.
Desenvolvi$ento p1s;Docu$entao
Depois de co$pletar o desenvolvi$ento de u$ blocoG eFiste$ dois tipos de infor$ao ?ue a
co$unidade de usu&rios Moodle precisa para usar o seu bloco+
*. 7nstalao 3 Dead$e docu$entao
2. #juda docu$entao sobre co$o usar o bloco
7nstalao 3 Dead$e Docu$entao
Docu$entao de instalao infor$a o ad$inistrador do siste$a das etapas necess&rias para instalar
o bloco. 2ste ar?uivoG geral$ente 7P-T#BB.tFt tHtuloG nor$al$ente cont@$ instru'es sobre co$o
colocar o bloco no diret1rio blocos e depois faEer login no Moodle co$o ad$inistrador e clicar e$
VPotifica'esW linI no bloco de #d$inistrao do -ite. -eG no entantoG o bloco @ $ais co$pleFo do
?ue u$ bloco si$plesG co$o u$ cronG ou o bloco $odifica os ar?uivos do nUcleo do Moodle c1digo
<no reco$endado>G ento o ar?uivo de instalao ter& de conter infor$a'es sobre co$o esses
ar?uivos sero $odificados.
O ar?uivo read$eG geral$ente cha$ado D2#DM2.tFtG cont@$ docu$entao sobre ?ue$
desenvolveu o blocoG co$o contat&;lo co$ perguntas e ?ual?uer outra infor$ao ?ue @ infor$ativa
para o usu&rio e fala sobre si $es$o e do projeto.
)$ ar?uivo final opcional @ o ar?uivo ChangelogG ?ue se destina a infor$ar o utiliEador sobre as
$udanas ?ue fora$ feitas e$ u$ bloco e$ cada verso. 2ste ar?uivo @ opcional no pri$eiro
lana$entoG $as @ reco$endado e$ cada liberao subse?Oente. 2ste ar?uivo deve conter todos os
bugs ?ue fora$ corrigidos na verso atualG possivel$ente apontando para os nU$eros de bilhete
especHfico e$ u$ siste$a de rastrea$ento do bilhete.
Dica i$portante+ tanto o D2#DM2 e 7P-T#BB ar?uivos deve$ ser salvos e$ u$ for$ato co$u$
e$ todas as platafor$as. #r?uivos de teFto <. TFt e. Dtf> so reco$endados.
Docu$entao de #juda
# docu$entao final eFigida @ a docu$entao de #juda. 7sto ve$ na for$a de 3 e co$o a
ar?uivosG LiIisG (#!sG ou vHdeo. 7sto deve ensinar ao usu&rio co$o configurar e usar o bloco.
Deco$enda;se ?ue voc% te$ tanto u$a faculdade e guia do estudante para a $aioria dos blocos.
2ste ta$b@$ ve$ e$ for$a de ar?uivos MTMB no Moodle. 2sses ar?uivos esto associados co$ o
aEul de ponto de interrogao bot'es e$ algu$as for$as. 2ste boto @ i$presso usando o
Melp4utton <> e$ Leblib.php
topo
VTo DoW Bista
Planeja$ento do Desenvolvi$ento 4loco
*.
2scolha u$ projeto de sua escolha ou escolha da lista fornecida na )nidade / do VfaEerW a lista de
itensG p 3 para criar u$ docu$ento de re?uisitos para este projetoG confor$e descrito na )nidade /.
2.
Beia os detalhes fornecidos e$ Moodle.orgG Trabalhando co$ a Co$unidadeG para se fa$iliariEar
co$ o processo de partilha de c1digo co$ a co$unidade Moodle. Preste ateno especial para a
seo de perto da parte inferior da p&ginaG VConsidere pedir ou discutir sua proposta e$ pri$eiro
lugar.W
3.
Co$partilhar infor$a'es co$ a co$unidade Moodle sobre o ?ue voc% pretende desenvolver na
&rea relevante f1ru$ de discusso e$ Moodle.org.
. Docu$ento testes de unidade ?ue so necess&rios para testar o bloco co$ base no docu$ento de
re?uisitos.
Criao do 4loco
".
Beia este recurso geralG 2scrita de Docu$entao -oftLare 4o$G e considerar co$o ele se aplica ao
seu projeto de bloco Moodle.
..
2screva o c1digo de bloco co$ base no docu$ento de re?uisitos.
8.
2screver casos de teste testando cada u$ dos re?uisitos do docu$ento de re?uisitos.
:.
2screver casos de teste para testar a funcionalidade -eleniu$ seu bloco.
/.
Co$por a sua docu$entao e$ desenvolvi$entoG be$ co$o p1s;desenvolvi$ento docu$entao.
*9.
#neFar o seu c1digo no (1ru$ designados neste curso co$o u$ aneFo a u$a $ensage$ no f1ru$
<Eip seu diret1rio pri$eiro bloco>. Participar de u$a reviso de c1digo de c1digo pelo $enos dois
outros colegas VG co$ o facilitador. Publi?ue o seu feedbacI e co$ent&rios de reviso feitas e$ seu
c1digo. Considerar ?ue os co$ent&rios deve$ ser incorporadas para $elhorar o seu c1digo e faEer
as altera'es.
**.
Depois de faEer as edi'es finais ao seu c1digoG apresentar seu diret1rio bloco final Eipado na &rea
de atribuio designada. -e es?uea de incluir seus ar?uivos p1s;desenvolvi$ento de docu$entao
e casos de teste dentro de seu ar?uivo co$pactado.
topo
Contribuir co$ o C1digo para a Co$unidade Moodle
#gora ?ue o bloco est& co$pleto eo diret1rio Eipado bloco @ lanado para o #ssign$ent esto neste
cursoG o pr1Fi$o passo @ liberar o bloco para a Co$unidade Moodle. -iga os passos abaiFo *239/
<e opcional$ente as etapas *3 e *> para liberar seu c1digo para a co$unidade Moodle.
#penas a u$ ?uarteiro do projeto ser& lanado para a co$unidade. )se a escolha na seo final
dos $ateriais deste curso @ para votar para o $elhor bloco ?ue deve ser co$partilhado. Considerar
os seguintes crit@rios e$ seu voto+
J Manuteno de c1digo
J Consist%ncia co$ as diretriEes de codificao Moodle
J #cessibilidade
J )sabilidade
J Os re?uisitos ?ue satisfaa$ as especifica'es do docu$ento
J # ?ualidade de casos de teste
J Docu$entao
O autor <s> do bloco VvencedoraW ser& atribuHdo ao concluir as etapas /;*2 abaiFo <e opcional$ente
as etapas *3 e *> para co$pletar a liberao.
/.
Postar o ar?uivo Eip para u$ servidor publica$ente acessHvel para per$itir ?ue outros para baiFar o
ar?uivo.
*9.
Criar u$a nova entrada para o bloco no VM1dulos e Plug;insW banco de dados
J )se u$ no$e descritivo para o bloco. -elecione u$ no$e descritivo e Unico para identific&;lo.
J Descreva o ?ue o bloco se destina a faEer
J D% u$a captura de tela do bloco e$ ao no seu local de testes locais e p1s a captura de tela na
&rea de captura de tela
J BinI para baiFar o Moodle *.: para o servidor onde voc% carregou o ar?uivo
J Digite seu no$e co$o o $antenedor
**.
Criar u$ novo t1pico no f1ru$ para o bloco no f1ru$ de discusso 4locIs
<http+33$oodle.org3$od3foru$3vieL.phpAido2*2*> co$ as seguintes infor$a'es
J O ?ue o projeto faE
J Contribuintes
J Docu$ento De?uisitos
J Os casos de teste
J Os casos -eleniu$
J BinI para o $1dulo de entrada e plugins
*2.
O linI VM1dulos e PluginsW entrada para o t1pico f1runs.
*3.
Opcional+ #dicione seu projeto para o TracIer 4ug Moodle
J #cesso ao tracIer.$oodle.org
J Cli?ue no boto VCo$ponentesW linI no ^$bito do projecto Vno;core contribuiu $1duloW no lado
inferior es?uerdo
J Cli?ue e$ V#dicionar u$ projeto a?uiW
J Cli?ue e$ VCriar nova edioW
J 7nsira as infor$a'es para o ticIet.
*.
Opcional+ Pedido de u$ diret1rio contrib criado para o projeto do ra$o Moodle contrib C5-.
J #cesso ao tracIer.$oodle.org
J Cli?ue no boto VCo$ponentesW linI no ^$bito do projecto Vno;core contribuiu $1duloW no lado
inferior es?uerdo
J Cli?ue e$ V#dicionar u$ projeto a?uiW
J Cli?ue e$ VCriar nova edioW
J 7nsira as infor$a'es para o bilhete de proble$a co$ o tHtulo e u$ teFto solicitando u$a pasta no
diret1rio contrib bloco ser feitas para o seu projeto.
*".
Participar na discusso sobre o gerencia$ento de c1digo atribuHdo e$ u$a co$unidade distribuHda.

You might also like