Você está na página 1de 38

UNIVERSIDADE ESTADUAL DE MARING CENTRO DE TECNOLOGIA DEPARTAMENTO DE INFORMTICA BACHARELADO EM INFORMTICA

SISTEMA MOODLE

PROF: ADEMIR CARNIEL

ALUNOS:
CRISTIANO SUK 45219 KELVIN TAMASHIRO 45221 MAURILIO CAMPANO JR. 45199

RUP O Rational Unified Process um processo de engenharia de software. Ele oferece uma abordagem baseada em disciplinas para atribuir tarefas e responsabilidades dentro de uma organizao de desenvolvimento. Sua meta garantir a produo de software de alta qualidade que atenda s necessidades dos usurios dentro de um cronograma e de um oramento previsveis.

SCRUM Scrum uma metodologia gil para gesto e planejamento de projetos de software. No Scrum, os projetos so divididos em ciclos (tipicamente mensais) chamados de Sprints. O Sprint representa um Time Box dentro do qual um conjunto de atividades deve ser executado. Metodologias geis de desenvolvimento de software so iterativas, ou seja, o trabalho dividido em iteraes, que so chamadas de Sprints no caso do Scrum.

Introduo Este documento especifica uma verso preliminar do diagrama de classes do sistema Moodle, fornecendo aos desenvolvedores as informaes necessrias para o projeto e implementao, assim como para a realizao dos testes e homologao da aplicao. Diagrama de pacotes A completa implementao do sistema Moodle engloba o desenvolvimento de diversas classes correlacionadas. Os grupos de classes mais importantes esto descritos no diagrama de pacotes representado pela figura a seguir.

Diagrama de classes por pacote


Frum

Curso

Usurio

Grupo

Introduo Este documento especifica os requisitos da soluo Moodle, fornecendo aos desenvolvedores as informaes necessrias para o projeto e implementao, assim como para a realizao dos testes e homologao da aplicao. Esta seo utilizada para descrever os objetivos do documento e o pblico ao qual ele se destina. Convenes, termos e abreviaes A correta interpretao deste documento exige o conhecimento de algumas convenes e termos especficos e abreviaes, que so descritos a seguir. Atores Essa seo apresenta todos os atores da aplicao. Cada ator representa um papel particular de usurio da aplicao. Porm, alm de representar pessoas, os atores tambm podem ser dispositivos de hardware ou at outras aplicaes que devam trocar informaes com a aplicao a ser desenvolvida. A lista a seguir descreve brevemente cada ator da aplicao.

Figura 1 - Atores do Sistema Ator Descrio Possui atribuies mximas sobre o sistema. responsvel pelos problemas de ambiente do moodle (instalao, acesso a senhas de ftp, banco de dados, plugins e temas). Tem acesso a todas as reas do ambiente e gerencia permisses do sistema. O administrador pode utilizar outros perfis de acesso (professores, alunos, etc.) para realizar testes.

Administrador

Autor de curso

Basicamente tem as mesmas funes do professor, ele quem cria o curso por isso o nome diferente. Produz o material, pode acrescentar os contedos no ambiente, pode criar atividades, recursos, inserir alunos no curso que j estejam cadastrados no moodle, configurar notas e o formato de curso que ele pretende que tenha seu curso. Geralmente uma funo dada professores colaboradores, ou professores que podem interagir e avaliar, mas no podem alterar nenhum material. O estudante quem faz o curso, ele quem recebe o contedo do professor, interage com os colegas, ele envia material, contribui no frum, v suas notas, o curso dado para ele. O visitante tem a possibilidade de apenas visualizar o curso e seu contedo, ele no pode participar das atividades, se comportando apenas como um observador

Tutor ou professor

Moderador

Estudante

Visitante

Requisitos funcionais Essa seo apresenta todos os requisitos funcionais da aplicao e as respectivas expanses de caso de uso. Autenticao do site Ativar Plugin de Autenticao Prioridade: Ator(es): Requisitos associados: Descrio: Habilita um plugin de autenticao especfico. Pr-condies: O plugin deve estar previamente instalado e desativado. Essencial Administrador X Desejvel Oculto: No

Ps-condies: O plugin ser ativado Fluxo principal O ator informa o nome do plugin a ser ativado

Mensagem de confirmao de cadastro Prioridade: Ator(es): Requisitos associados: Descrio: Envia uma mensagem de confirmao de inscrio para um determinado usurio. Pr-condies: O cadastro do usurio j foi realizado. Ps-condies: O sistema ir enviar uma mensagem de confirmao de inscrio para o usurio Fluxo principal O ator informa qual usurio ser o destinatrio da mensagem. O sistema envia uma mensagem com uma URL onde o usurio poder confirmar sua inscrio Nenhum Login Suspender contas de usurio Prioridade: Ator(es): Requisitos associados: Descrio: impossibilita ao usurio logar no seu sistema e tambm descarta qualquer email enviado a ele. Pode ser usado para suspender contas de usurio. Pr-condies: O plugin Nenhum login deve ser previamente instalado Ps-condies: O usurio selecionado ser suspenso. Fluxo principal O ator informa o usurio a ser suspenso Essencial Administrador Desejvel Oculto: No X Essencial Usurio autenticado Desejvel Oculto: Sim

Contas de acesso [RF_ContasUsuario_001] Consultar usurios Prioridade: Ator(es): Requisitos associados: Descrio: Possibilita consultar os usurios cadastrados no sistema com opes de filtro. Pr-condies: Ps-condies: Fluxo principal O ator informa as condies de filtro O ator informa os valores a ser filtrado e submete a consulta O sistema retorna os dados solicitados X Essencial Administrador Desejvel Oculto: No

Acrescentar novo usurio Prioridade: Ator(es): Requisitos associados: X Essencial Administrador RF_ContasUsuario_001 Desejvel Oculto: No

Descrio: Permite ao ator cadastrar um novo usurio Pr-condies: O nome do usurio no deve ter sido previamente cadastrado Ps-condies: O usurio ser cadastrado Fluxo principal O ator informa os dados do perfil do usurio a ser criado Caso o nome do usurio no esteja cadastrado (RF_ContasUsuario_001) o sistema cria o novo usurio.

Fluxos de erro O nome de usurio j est cadastrado O sistema informa que o usurio j encontra-se cadastrado O ator informa um novo nome do usurio

Permisses de acesso Criar Perfil (Definir funes) Prioridade: Ator(es): Requisitos associados: Descrio: Permite criar ou alterar um determinado perfil de acesso ao sistema. Pr-condies: Ps-condies: Fluxo principal O ator informa o nome do perfil O ator informa outros parmetros: um nome pequeno, uma descrio e um possivel perfil de acesso que o perfil em questo dever herdar. O ator informa as permisses vlidas para o perfil em questo. Essencial Administrador Desejvel Oculto: No

Consultar usurios por perfil <<Consulta>> Prioridade: Ator(es): Requisitos associados: X Essencial Administrador Desejvel Oculto: No

Descrio: Retorna os usurios associados a um determinado determinado perfil de acesso ao sistema.

Pr-condies: Ps-condies: Fluxo principal O ator informa o perfil de acesso. O sistema retorna uma listagem com os usurios

Excluir perfil de acesso Prioridade: Ator(es): Requisitos associados: X Essencial Administrador Erro! Fonte de <DesassociarUsurio> referncia no encontrada., Desejvel Oculto: No

Descrio: Permite excluir um determinado perfil de acesso ao sistema. Pr-condies: Ps-condies: O perfil de acesso excludo do sistema Fluxo principal O ator informa o perfil de acesso a ser excludo. [FA 001] O sistema realiza a ao esperada Fluxos alternativos O sistema informa usurios associados O sistema solicita confirmao O ator confirma a excluso O usurio desassociado do perfil em questo. O perfil excluido.

Curso e Categoria de curso Acrescentar categoria Prioridade: Essencial Desejvel Oculto: No

Ator(es): Requisitos associados:

Administrador

Descrio: Permite criar uma categoria. Pr-condies: Existe uma categoria pai que ir conter a nova categoria ou ento a nova categoria no poder possuir nenhuma categoria pai. Ps-condies: A nova categoria foi cadastrada Fluxo principal O ator informa os dados da nova categoria O ator informa a categoria que ir conter a a nova categoria [FA 001] Fluxos de erro O sistema identifica uma lista circular O sistema informa que a categoria pai no vlida porque cria um lao circular Retorna ao fluxo principal no passo 1. Modificar categoria Prioridade: Ator(es): Requisitos associados: Descrio: Permite alterar os dados de uma categoria especfica. Pr-condies: A categoria a ser cadastrada est previamente cadastrada no sistema Ps-condies: Os dados da categoria sero atualizados Fluxo principal O ator informa a categoria O ator informa os novos dados. Cadastrar curso Prioridade: X Essencial Desejvel Oculto: Sim X Essencial Administrador Desejvel Oculto: No

Ator(es): Requisitos associados:

Administrador

Descrio: Permite criar um curso novo. Pr-condies: No existe curso com nome similar petentence mesma categoria Ps-condies: O novo curso ser criado Fluxo principal O ator informa os dados do curso. O ator informa a categoria do curso. Modificar curso Prioridade: Ator(es): Requisitos associados: Descrio: Permite alterar os dados de um curso. Pr-condies: O curso deve estar previamente cadastrado. Ps-condies: Fluxo principal O ator informa o curso O ator informa os novos dados do. lista A removendo-os da B e vice-versa). X Essencial Administrador Desejvel Oculto: Sim

Inscrever no curso Prioridade: Ator(es): Requisitos associados: X Essencial Estudante Algum curso Desejvel Oculto: No

Descrio: Permite ao estudante se inscrever em um curso.

Pr-condies: O curso deve estar configurado para permitir inscries via solicitao. Ps-condies: O aluno ser inscrito no curso Fluxo principal O ator informa o curso O sistema realiza o cadastro utilizando o caso de uso O sistema envia uma mensagem de boas vindas

Mostrar cursos por usurio Prioridade: Ator(es): Requisitos associados: Descrio: Retorna uma lista com os cursos que o usurio autenticado tem acesso. Pr-condies: Ps-condies: Fluxo principal O ator informa sua identidade O sistema retorna a lista com os cursos Essencial X Desejvel Oculto: No

Administrador, Autor, Tutor, Estudante

Mostrar participantes do curso Prioridade: Ator(es): Requisitos associados: Descrio: Retorna uma lista com os cursos que o usurio autenticado tem acesso. Pr-condies: Ps-condies: Essencial X Desejvel Oculto: No

Administrador, Autor, Tutor, Estudante

Fluxo principal O ator informa o curso O sistema retorna a lista com os participantes Notas [RF_Notas_001] Configuraes de notas Prioridade: Ator(es): Requisitos associados: Descrio: Permite parametrizar informaes relacionadas a avaliaes, como por exemplo casas decimais de notas, tipos de usurios que so avaliados e outros. Pr-condies: Ps-condies: Fluxo principal O ator informa os parmetros. Essencial Administrador X Desejvel Oculto: No

Frum Acrescentar frum Prioridade: Ator(es): Requisitos associados: Descrio: Permite adicionar um frum a um determinado curso com validade durante todo o curso ou associado a apenas uma semana. Pr-condies: Ps-condies: Fluxo principal O ator informa o nome do curso Essencial Tutor Desejvel Oculto: No

O ator informa a semana que o frum estar disponvel ou todas as semanas. O ator informa o nome do frum O ator informa o tipo de frum que pode ser: discusses simples frum geral cada usurio inicia apenas um novo tpico frum perguntas e respostas O ator informa parmetros referentes ao funcionamento do frum

Acrescentar um novo tpico de discusso Prioridade: Ator(es): Requisitos associados: Descrio: Adiciona um novo tpico de discusso ao frum Pr-condies: O usurio deve estar cadastrado no curso que contm o frum Ps-condies: Fluxo principal O ator se identifica. O ator identifica o frum. O ator informa o assunto. O ator informa a mensagem. Essencial Desejvel Oculto: No

Estudante, Tutor, Administrador

Responder mensagem de tpico de discusso Prioridade: Ator(es): Essencial Desejvel Oculto: No

Estudante, Tutor, Administrador

Requisitos associados: Descrio: Permite adicionar uma resposta a uma mensagem especfica do tpico Pr-condies: O ator deve estar cadastrado no curso que contm o frum Ps-condies: Fluxo principal O ator se identifica. O ator identifica o frum O ator identifica o tpico de discusso O ator identifica a mensagem a ser respondida O ator informa a resposta

Requisitos no-funcionais Usabilidade Esta seo descreve os requisitos no-funcionais associados facilidade de uso da aplicao. Confiabilidade Esta seo descreve os requisitos no-funcionais associados freqncia e severidade de falhas da aplicao e habilidade de recuperao das mesmas. Desempenho Esta seo descreve os requisitos no-funcionais associados eficincia, uso de recursos e tempo de resposta da aplicao. Segurana Esta seo descreve os requisitos no-funcionais associados integridade, privacidade e autenticidade dos dados da aplicao. Implantao Esta seo descreve os requisitos no-funcionais associados implantao da soluo. Hardware e software

Esta seo descreve os requisitos no funcionais associados ao hardware e software usados para desenvolver ou para executar a aplicao. Servidor Web e linguagem O funcionamento da aplicao moodle depende de um servidor web capaz de executar aplicaes PHP, utilizamos o servidor Apache. Prioridade: Requisitos funcionais associados: X Essencial Importante Desejvel

Banco de dados O funcionamento da aplicao Moodle depende de um servidor de banco de dados, utilizamos o MySql. Prioridade: Requisitos funcionais associados: X Essencial Importante Desejvel

Gerenciamento do projeto do sistema MOODLE O projeto do sistema MOODLE tem como objetivo desenvolver um sistema que seja capaz de auxiliar no Ensino Distncia. O sistema ser desenvolvido durante o curso da disciplina de Engenharia de Software III. O andamento do projeto ser avaliado atravs de anlise de planilhas de dados. Resumo do projeto Ttulo do projeto Desenvolvimento de um sistema MOODLE para ensino distncia Gerente administrativo Equipe de trabalho Toda a equipe de trabalho Gerente administrativo, gerente de projetos e gerente financeiro inclusos na equipe de trabalho e desenvolvimento Elaborar um sistema que propicie um eficiente dispositivo para auxlio no ensino a distncia Elaborao dos desenvolvimento do sistema requisitos,

Coordenador Patrocinador reas envolvidas Time de trabalho

Objetivo

Escopo

Resultados esperados

Auxiliar e professores no aprendizado distncia 10/03/2009 15/11/2009

Incio Concluso prevista

Gerenciamento do projeto MOODLE Iniciando o projeto Conduzir mtodos de seleo do projeto Tarefas Definir escopo Documentar riscos, restries e premissa de projetos

Identificar e conduzir anlise de partes interessadas Desenvolver termo de contrato Obter aprovao do termo de contrato Planejando o projeto Definir e registrar requisitos, restries e premissas Identificar o time do projeto e definir papis e responsabilidades Tarefas Identificar riscos e definir estratgias de riscos Conduzir reunio de partida Executando o projeto Executar as tarefas previstas no plano do projeto Garantir entendimento comum do sistema por ambas as partes Gerenciar alocao de recursos Tarefas Implementar plano de gerenciamento da qualidade Implementar alteraes aprovadas Implementar aes aprovadas e planos de contorno Incrementar desempenho do time Monitorando e controlando o projeto Verificar e gerenciar mudanas no projeto Garantir que as entregas do projeto estejam em conformidade com os padres de qualidade Monitorar todos os riscos Medir desempenho do projeto Responsabilidade Profissional e Social Garantir integridade individual Tarefas Incrementar competncia profissional e pessoal Promover interao entre partes interessadas

Tarefas

Gerenciamento de riscos Quadro de Riscos Classificao dos riscos Fonte do Risco Nulo Baixo Mdio Alto Realizar diversas reunies com o cliente Estudar as tecnologias existentes a fim de encontrar uma que satisfaa o projeto Mostrar a importncia do projeto para alavancar os negcios e melhorar sua participao no mercado Cumprir os detalhes previstos no contrato Cumprir os detalhes previstos no contrato Elaborar uma planilha de custos previstos que deve ser revista pelo departamento Contra-medida Responsvel

Incerteza quanto ao escopo

Equipe

Incerteza quanto tecnologia

Equipe

Comprometimento da Alta Administrao do Cliente

Equipe

Comprometimento da Alta Administrao do Executor Comprometimentos de Interface com este Projeto

Equipe

Equipe

Disponibilidade de recursos internos (materiais, humano e dinheiro)

Gerente Financeiro

financeiro Cronograma apertado Seguir metas usadas no planejamento Utilizar a experincia adquirida para o bom andamento do projeto Utilizar pessoal capacitado no desenvolvimento do produto Buscar pessoal capacitado para ministrar aulas no caso de uso de tecnologias no conhecidas pelos desenvolvedores Buscar seguir as normas e prazos previstos no contrato Prever e proteger os equipamentos de possveis aes externas

Equipe

Competncia do gerente de projeto

Gerente de projetos

Competncia da equipe executora

Gerente de projetos

Necessidade de treinamento no disponvel

Gerente de projetos

Pagamento pelo cliente

Equipe

Fatores externos

Equipe

Gerenciamento do grupo de trabalho O grupo realiza as tarefas do trabalho em conjunto, produzindo assim um rendimento mais satisfatrio, propiciando um maior nvel de produo de qualidade. Porm em alguns desenvolvimentos os membros do grupo trabalham sozinhos, explorando as suas individualidades e unindo com caractersticas do grupo, atravs das verificaes do desenvolvimento feitas pelos outros membros do grupo no cdigo implementado.

Diviso e alocao das tarefas do projeto Tarefas Definio do problema Definio da equipe de trabalho Especificao de requisitos Gerenciamento de custos Gerenciamento de recursos humanos Gerenciamento de equipamentos Desenvolvimento Cadastros bsicos Desenvolvimento Notcias de Responsveis Equipe Equipe Equipe Equipe Equipe Equipe

componentes: Maurilio

de

componentes: Cristiano

Desenvolvimento de componentes: Frum Integrao mdulos Testes e comunicao entre

Kelvin

os Equipe

Equipe

Monitoramento e controle do projeto Gesto de comunicao Para quem Patrocinador O que Status projeto Relatrio riscos Status projeto Freqncia do Semanal Responsvel Gerente projeto Gerente projeto Como do Relatrio

Patrocinador

de Semanal

de

Cliente

do Bimestral

Gerente administrativo dos Gerente administrativo

Comunicado

Cliente

Relatrio final

Trmino testes

Apresentao

Estimativa de custo do projeto de software Em anexo

Qualidade de software Qualidade de software uma rea de conhecimento da engenharia de software que objetiva garantir a qualidade do software atravs da definio e normatizao de processos de desenvolvimento. Qualidade estar em conformidade com os requisitos, antecipar e satisfazer os desejos dos clientes. Um dos principais atributos de qualidade de software de que o produto dever processar, de maneira correta, todas as funcionalidades especificadas (requisitos).

Atualmente a usabilidade tornou-se um atributo de qualidade indispensvel para os produtos de software. E o nosso sistema de Moodle(ensino a distncia)retrata bem esse atributo. O moodle possui as principais funcionalidades de um ambiente virtual de aprendizagem, tais como ferramentas de comunicao, de avaliao, de disponibilizao de contedos e de administrao e organizao.

Nosso sistema possui todos os requisitos mnimos para proporcionar um bom desenvolvimento na rea de educao a distancia. A nossa metodologia utiliza alguns pontos do RUP, como uma documentao mais detalhada, do SCRUM que exige maior contato com o cliente. Desta forma, podemos adquirir um maior conhecimento da viso do usurio, desenvolvendo o sistema contemplando as exigncias do cliente.

Implementao do sistema principal.php <?php //verifica o login do usuario if ($CFG->forcelogin) { require_login(); } else { user_accesstime_log(); } if ($CFG->rolesactive) { // se est logado redireciona para a pagina principal if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { if (moodle_needs_upgrading()) { redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); } } else if (!empty($CFG->mymoodleredirect)) { if (isloggedin() && $USER->username != 'guest') { redirect($CFG->wwwroot .'/my/index.php'); } } } else { if (isadmin() && moodle_needs_upgrading()) { redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php'); } } //verifica os cursos cadastrados para o usuario

if (!empty($USER->id)) { add_to_log(SITEID, 'course', 'view', 'view.php?id='.SITEID, SITEID); } ?> <!--montar o layout da pgina--> <table id="layout-table" summary="layout"> <tr> <?php $lt = (empty($THEME->layouttable)) ? array('left', 'middle', 'right') : $THEME>layouttable; foreach ($lt as $column) { switch ($column) { case 'left': if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) { echo '<td style="width: '.$preferred_width_left.'px;" id="left-column">'; print_container_start(); blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT); print_container_end(); echo '</td>'; } break; case 'middle': echo '<td id="middle-column">'. skip_main_destination(); print_container_start(); if ($SITE->numsections > 0) { if (!$section = get_record('course_sections', 'course', $SITE->id, 'section', 1)) { delete_records('course_sections', 'course', $SITE->id, 'section', 1); $section->course = $SITE->id; $section->section = 1; $section->summary = ''; $section->sequence = ''; $section->visible = 1; $section->id = insert_record('course_sections', $section); } if (!empty($section->sequence) $editing) { print_box_start('generalbox sitetopic'); if (ismoving($SITE->id)) { $stractivityclipboard = strip_tags(get_string('activityclipboard', '', addslashes($USER->activitycopyname))); echo '<p><font size="2">'; or !empty($section->summary) or

echo "$stractivityclipboard&nbsp;&nbsp;(<a href=\"course/mod.php?cancelcopy=true&amp;sesskey=$USER->sesskey\">". get_string('cancel') .'</a>)'; echo '</font></p>'; } $options = NULL; $options->noclean = true; echo format_text($section->summary, FORMAT_HTML, $options); if ($editing) { $streditsummary = get_string('editsummary'); echo "<a title=\"$streditsummary\" ". " href=\"course/editsection.php?id=$section->id\"><img src=\"$CFG->pixpath/t/edit.gif\" ". " class=\"iconsmall\" alt=\"$streditsummary\" /></a><br /><br />"; } get_all_mods($SITE->id, $mods, $modnames, $modnamesplural, $modnamesused); print_section($SITE, $section, $mods, $modnamesused, true); if ($editing) { print_section_add_menus($SITE, $section->section, $modnames); } print_box_end(); } } if (isloggedin() and !isguest() and isset($CFG->frontpageloggedin)) { $frontpagelayout = $CFG->frontpageloggedin; } else { $frontpagelayout = $CFG->frontpage; } foreach (explode(',',$frontpagelayout) as $v) { switch ($v) { case FRONTPAGENEWS: if ($SITE->newsitems) { // mostra o forum require_once($CFG->dirroot .'/mod/forum/lib.php'); if (! $newsforum = forum_get_course_forum($SITE->id, 'news')) { error('Could not find or create a main news forum for the site'); } if (!empty($USER->id)) { $SESSION->fromdiscussion = $CFG->wwwroot; $subtext = '';

if (forum_is_subscribed($USER->id, $newsforum)) { if (!forum_is_forcesubscribed($newsforum)) { $subtext = get_string('unsubscribe', 'forum'); } } else { $subtext = get_string('subscribe', 'forum'); } print_heading_block($newsforum->name); echo '<div class="subscribelink"><a href="mod/forum/subscribe.php?id='.$newsforum->id.'">'.$subtext.'</a></div>'; } else { print_heading_block($newsforum->name); } forum_print_latest_discussions($SITE, >newsitems, 'plain', 'p.modified DESC'); } break; case FRONTPAGECOURSELIST: if (isloggedin() and !has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguest() and empty($CFG>disablemycourses)) { print_heading_block(get_string('mycourses')); print_my_moodle(); } else if ((!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguest()) or (count_records('course') <= FRONTPAGECOURSELIMIT)) { print_heading_block(get_string('availablecourses')); print_courses(0); } break; case FRONTPAGECATEGORYNAMES: print_heading_block(get_string('categories')); print_box_start('generalbox categorybox'); print_whole_category_list(NULL, NULL, NULL, -1, false); print_box_end(); print_course_search('', false, 'short'); break; case FRONTPAGECATEGORYCOMBO: print_heading_block(get_string('categories')); print_box_start('generalbox categorybox'); print_whole_category_list(NULL, NULL, NULL, -1, true); print_box_end(); $newsforum, $SITE-

print_course_search('', false, 'short'); break; case FRONTPAGETOPICONLY: break; } echo '<br />'; } print_container_end(); echo '</td>'; break; case 'right': if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing || $PAGE->user_allowed_editing()) { echo '<td style="width: '.$preferred_width_right.'px;" id="right-column">'; print_container_start(); if ($PAGE->user_allowed_editing()) { echo '<div style="text-align:center">'.update_course_icon($SITE->id).'</div>'; echo '<br />'; } blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT); print_container_end(); echo '</td>'; } break; } } ?> </tr> </table> login.php <?php //verifica se est logado no sistema @require_logout(); redirect("$CFG->wwwroot/$CFG->admin/"); $loginguest = optional_param('loginguest', 0, PARAM_BOOL); $testcookies = optional_param('testcookies', 0, PARAM_BOOL); $errormsg = ''; $errorcode = 0; /// Checar o tempo na sesso if (!empty($SESSION->has_timed_out)) { $session_has_timed_out = true;

$SESSION->has_timed_out = false; } else { $session_has_timed_out = false; } /// Verifica se o usuario existe cadastrado if (! record_exists('user', 'username', 'guest', 'mnethostid', $CFG->mnet_localhost_id)) { if (! $guest = create_guest_record()) { notify('Could not create guest user record !!!'); } } if (!isset($CFG->registerauth)) { set_config('registerauth', ''); } //Autentica esse usuario if (!isset($CFG->auth_instructions)) { set_config('auth_instructions', ''); } $frm = false; $user = false; $authsequence = get_enabled_auth_plugins(true); foreach($authsequence as $authname) { $authplugin = get_auth_plugin($authname); $authplugin->loginpage_hook(); } $loginsite = get_string("loginsite"); $navlinks = array(array('name' => $loginsite, 'link' => null, 'type' => 'misc')); $navigation = build_navigation($navlinks); if ($user !== false or $frm !== false) { } else if ((!empty($SESSION->wantsurl) >wantsurl,'username=guest')) or $loginguest) { $frm->username = 'guest'; $frm->password = 'guest'; } else if (!empty($SESSION->wantsurl) >dirroot.'/login/weblinkauth.php')) { include($CFG->dirroot.'/login/weblinkauth.php'); if (function_exists('weblink_auth')) { $user = weblink_auth($SESSION->wantsurl); } if ($user) { $frm->username = $user->username; } else { and strstr($SESSION-

&&

file_exists($CFG-

$frm = data_submitted(); } } else { $frm = data_submitted(); }

if (empty($CFG->usesid) and $testcookies and (get_moodle_cookie() == '')) { $errormsg = get_string("cookiesnotenabled"); $errorcode = 1; } else if ($frm) { $frm->username = trim(moodle_strtolower($frm->username)); if (is_enabled_auth('none') && empty($CFG->extendedusernamechars)) { $string = eregi_replace("[^(-\.[:alnum:])]", "", $frm->username); if (strcmp($frm->username, $string)) { $errormsg = get_string('username').': '.get_string("alphanumerical"); $errorcode = 2; $user = null; } } if (($frm->username == 'guest') and empty($CFG->guestloginbutton)) { $user = false; $frm = false; } else { if (empty($errormsg)) { $user = authenticate_user_login($frm->username, $frm->password); } } if ($user) { //Confirmar senha if (empty($user->confirmed)) { print_header(get_string("mustconfirm"), get_string("mustconfirm") ); print_heading(get_string("mustconfirm")); print_simple_box(get_string("emailconfirmsent", "", $user->email), "center"); print_footer(); die; } if ($frm->password == 'changeme') { set_user_preference('auth_forcepasswordchange', true, $user->id); } add_to_log(SITEID, 'user', 'login', "view.php?id=$USER->id&course=".SITEID, $user->id, 0, $user->id); $USER = complete_user_login($user); if (user_not_fully_set_up($USER)) {

$urltogo = $CFG->wwwroot.'/user/edit.php'; } else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG>wwwroot) === 0)) { $urltogo = $SESSION->wantsurl; unset($SESSION->wantsurl); } else { $urltogo = $CFG->wwwroot.'/'; unset($SESSION->wantsurl); } if (!has_capability('moodle/site:config',get_context_instance(CONTEXT_SYSTEM)) and !empty($CFG->mymoodleredirect) and !isguest()) { if ($urltogo == $CFG->wwwroot or $urltogo == $CFG->wwwroot.'/' or $urltogo == $CFG->wwwroot.'/index.php') { $urltogo = $CFG->wwwroot.'/my/'; } } //Define a senha do usuario, caso altere $userauth = get_auth_plugin($USER->auth); if (!empty($userauth->config->expiration) and $userauth->config->expiration == 1) { if ($userauth->can_change_password()) { $passwordchangeurl = $userauth->change_password_url(); if(!$passwordchangeurl) { $passwordchangeurl = $CFG>httpswwwroot.'/login/change_password.php'; } } else { $passwordchangeurl = $CFG->httpswwwroot.'/login/change_password.php'; } $days2expire = $userauth->password_expire($USER->username); if (intval($days2expire) > 0 && intval($days2expire) < intval($userauth>config->expiration_warning)) { print_header("$site->fullname: $loginsite", "$site->fullname", $navigation, '', '', true, "<div class=\"langmenu\">$langmenu</div>"); notice_yesno(get_string('auth_passwordwillexpire', 'auth', $days2expire), $passwordchangeurl, $urltogo); print_footer(); exit; } elseif (intval($days2expire) < 0 ) { print_header("$site->fullname: $loginsite", "$site->fullname", $navigation, '', '', true, "<div class=\"langmenu\">$langmenu</div>"); notice_yesno(get_string('auth_passwordisexpired', 'auth'), $passwordchangeurl, $urltogo); print_footer(); exit; }

} reset_login_count(); redirect($urltogo); exit; } else { if (empty($errormsg)) { $errormsg = get_string("invalidlogin"); $errorcode = 3; } if ( !empty($CFG->mnet_dispatcher_mode) && $CFG->mnet_dispatcher_mode === 'strict' && is_enabled_auth('mnet')) { $errormsg .= get_string('loginlinkmnetuser', 'mnet', "mnet_email.php?u=$frm>username"); } } } if (!empty($CFG->alternateloginurl)) { $loginurl = $CFG->alternateloginurl; if (strpos($SESSION->wantsurl, $loginurl) === 0) { $SESSION->wantsurl = NULL; } if ($errorcode) { if (strpos($loginurl, '?') === false) { $loginurl .= '?'; } else { $loginurl .= '&'; } $loginurl .= 'errorcode='.$errorcode; } } //Foca o cursor no campo em branco. Ou na senha ou no usuario if (!empty($frm->username)) { $focus = "password"; } else { $focus = "username"; } //Retorna verdadeiro ou falso dependo da instrucao passado para os campos if (!empty($CFG->registerauth) or is_enabled_auth('none') or !empty($CFG>auth_instructions)) {

$show_instructions = true; } else { $show_instructions = false; } include("index_form.html"); ?>