DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o...

76
DESENVOLVIMENTO DO JOOMLA CMS (GPL): VIS ˜ AO DA CONSTRU ¸ C ˜ AO DE UM M ´ ODULO EVERTON RODRIGUES SILVA LAVRAS MINAS GERAIS-BRASIL 2008

Transcript of DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o...

Page 1: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

DESENVOLVIMENTO DO JOOMLA CMS

(GPL): VISAO DA CONSTRUCAO DE UM

MODULO

EVERTON RODRIGUES SILVA

LAVRASMINAS GERAIS-BRASIL

2008

Page 2: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

EVERTON RODRIGUES SILVA

DESENVOLVIMENTO DO JOOMLA CMS

(GPL): VISAO DA CONSTRUCAO DE UM

MODULO

Monografia apresentada ao Departamento de Ciencia daComputacao da Universidade Federal de Lavras, comoparte das exigencias do curso de Pos-Graduacao LatoSensu em Producao de Software Livre, para a obtencaodo tıtulo de especializacao.

OrientadorProf. Dr. Alexandre Vasconcelos

LAVRASMINAS GERAIS-BRASIL

2008

Page 3: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

EVERTON RODRIGUES SILVA

DESENVOLVIMENTO DO JOOMLA CMS

(GPL): VISAO DA CONSTRUCAO DE UM

MODULO

Monografia apresentada ao Departamento de Ciencia daComputacao da Universidade Federal de Lavras, comoparte das exigencias do curso de Pos-Graduacao LatoSensu em Producao de Software Livre, para a obtencaodo tıtulo de especializacao.

APROVADA em de de .

Prof.

Prof.

Prof.UFLA

(Orientador)

LAVRASMINAS GERAIS-BRASIL

Page 4: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

“Quanto mais difıceis as circunstancias,quanto mais desafiadores os ambientes,mais fortes sao os homens que saem dessascircunstancias, entao de boas-vindas a todosesses problemas e ansiedades externos.“

Sathya Sai Baba

“Estou lhe dizendo apenas que, nao importaaquilo em que voce trabalhe, seja o seucrıtico mais rigoroso. E nao faca a opcaopelos motivos errados. So se dedique a umacoisa se realmente acreditar nela, porque, senao funcionar, voce pode terminar desperdi-cando um bocado de tempo.“

Richard P. Feynman

Page 5: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Meus agradecimentos sinceros aos professores destecurso, que me motivaram a buscar mais e a continuarsempre estudando e aprendendo.

A minha famılia pelo apoio e amor.

Page 6: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Resumo

Este trabalho tem por objetivo analisar e descrever oprojeto de software livre do CMS (Content ManagementSystem) Joomla, assim como demonstrar o processo dedesenvolvimento de um modulo para este CMS, que sur-giu a partir de uma necessidade real para uma intra-net. Os requisitos implementados foram autenticacaodo usuario do CMS em um servico de diretorios usandoo protocolo LDAP, para acesso restrito a documentos.

Page 7: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Sumario

LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1 Introducao 11

2 Joomla: Uma Visao Geral do Projeto 142.1 Organizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.1.1 Grupo de Trabalho de Desenvolvimento . . . . . . . . . . . . 182.1.2 Grupo de Trabalho de Documentacao . . . . . . . . . . . . . 192.1.3 Grupo de Trabalho de Sites e Infraestrutura . . . . . . . . . 192.1.4 Grupo de Trabalho de Traducao . . . . . . . . . . . . . . . . 202.1.5 Grupo de Trabalho de Fundacao . . . . . . . . . . . . . . . . 20

2.2 Colaboracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2.1 Ser membro de um grupo de trabalho . . . . . . . . . . . . . 222.2.2 Traduzir conteudo . . . . . . . . . . . . . . . . . . . . . . . 222.2.3 Construir uma extensao . . . . . . . . . . . . . . . . . . . . 222.2.4 Participar dos foruns . . . . . . . . . . . . . . . . . . . . . . 242.2.5 Submeter patches ou correcoes de codigo . . . . . . . . . . . 242.2.6 Enviar notıcias . . . . . . . . . . . . . . . . . . . . . . . . . 252.2.7 Reportar bugs ou solicitar mudancas . . . . . . . . . . . . . 252.2.8 Organizar um evento . . . . . . . . . . . . . . . . . . . . . . 262.2.9 Ser empresa parceira . . . . . . . . . . . . . . . . . . . . . . 262.2.10 Fazer doacao financeira . . . . . . . . . . . . . . . . . . . . . 272.2.11 Comprar produtos . . . . . . . . . . . . . . . . . . . . . . . 27

3 Estudo de Caso: Portal Corporativo 283.1 Projeto e Implementacao . . . . . . . . . . . . . . . . . . . . . . . . 283.2 Manutencao e Desenvolvimento Atual . . . . . . . . . . . . . . . . . 31

4 A Construcao do Modulo joomLDAP 334.1 Processo e Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . 344.2 Gerenciamento e Lancamento . . . . . . . . . . . . . . . . . . . . . 374.3 Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7

Page 8: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

SUMARIO 8

4.3.1 Instalacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.3.2 Configuracao . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5 Conclusoes e Trabalhos Futuros 47

Referencias Bibliograficas 49

A Apendice – joomLDAP: Codigo-Fonte 52

B Apendice – Migracao Joomla e Instalacao WAMP 63

Page 9: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Lista de Figuras

1.1 Logotipo do Joomla . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.1 Grupos de trabalho no projeto Joomla . . . . . . . . . . . . . . . . 192.2 Home do site do Joomla CMS . . . . . . . . . . . . . . . . . . . . . 222.3 Pagina do forum oficial do Joomla: lıngua portuguesa . . . . . . . . 252.4 Tracker do Joomla . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.5 Site de compras com produtos da marca Joomla . . . . . . . . . . . 27

3.1 Home do portal de intranet, abril de 2008 . . . . . . . . . . . . . . 32

4.1 arquivos joomLDAP na pasta modules . . . . . . . . . . . . . . . . 354.2 arquivos joomLDAP na pasta modules/joomLDAP . . . . . . . . . 354.3 joomLDAP no Joomla Code . . . . . . . . . . . . . . . . . . . . . . 384.4 Autenticacao via LDAP atraves do Joomla . . . . . . . . . . . . . . 394.5 Apos autenticacao os arquivos restritos podem ser visualizados . . . 404.6 Pagina de envio de um novo modulo . . . . . . . . . . . . . . . . . 414.7 Editando arquivo docman.php . . . . . . . . . . . . . . . . . . . . . 424.8 Configurando o modulo . . . . . . . . . . . . . . . . . . . . . . . . . 444.9 Escolhendo onde mostrar a caixa de autenticacao do joomLDAP . . 46

B.1 Windows Server 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . 64B.2 Menu de utilizacao do WAMPServer . . . . . . . . . . . . . . . . . 65B.3 Alterando o parametro Listen no arquivo httpd.conf do Apache . . 65B.4 Alterando o parametro ServerName no arquivo httpd.conf do Apache 66B.5 Alterando o parametro DocumentRoot no arquivo httpd.conf do

Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66B.6 Menu de utilizacao do WAMPServer, PHP > PHP extensions . . . 67B.7 Pagina inicial, apos autenticacao, do phpMyAdmin . . . . . . . . . 68B.8 Localizacao do arquivo config.inc.php do phpMyAdmin . . . . . . . 69B.9 Parametros a editar do arquivo config.inc.php . . . . . . . . . . . . 69B.10 Outro parametro a editar do arquivo config.inc.php . . . . . . . . . 70B.11 Alteracoes no arquivo phpmyadmin.conf . . . . . . . . . . . . . . . 71

9

Page 10: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

LISTA DE FIGURAS 10

B.12 Base de dados MySQL com o phpMyAdmin . . . . . . . . . . . . . 72B.13 Importando dados MySQL com o phpMyAdmin . . . . . . . . . . . 73B.14 configuration.php, arquivo de configuracao do Joomla! . . . . . . . . 74B.15 Prompt com comando para importar dados para o MySQL . . . . . 75B.16 Linha para alterar no arquivo php.ini . . . . . . . . . . . . . . . . . 75B.17 phpMyAdmin apos alteracao feita . . . . . . . . . . . . . . . . . . . 76

Page 11: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Capıtulo 1

Introducao

Joomla e um sistema de software de gerenciamento de conteudo de codigo abertoque permite a construcao de websites e aplicacoes online poderosas. Assim, JoomlaCMS 1 e considerado um produto de software, pois possui documentacao extensae abrangente.

A comunidade de desenvolvimento do Joomla CMS tem seu proprio processode desenvolvimento de software, com desenvolvedores, documentadores, testadorese colaboradores de diversas origens, formacoes e paıses. Conforme dito no docu-mento “A Catedral e o Bazar“ [21, RAY 98] Joomla seria um software onde acomunidade que o produz adota o estilo de desenvolvimento Bazar em que “Dadauma base grande o suficiente de beta-testers e co-desenvolvedores, praticamentetodo problema sera caracterizado rapidamente e a solucao sera obvia para alguem“[RAY98] ou tambem, “Dados olhos suficientes, todos os erros sao triviais“, esta echamada “Lei de Linus“ [21, RAY 98].

Joomla surgiu em agosto de 2005 a partir de um fork do Mambo, outro CMS.Fork segundo Reis [23, REI 03] e quando “Em alguns casos, a base de codigooriginal deriva parcial ou totalmente do codigo-fonte de um outro projeto; a estetipo de projeto e dado o nome informal de code fork, ja que representa um veioevolutivo independente do projeto inicial, com um ancestral comum. Os motivospara se fazer um code fork podem variar: insatisfacao dos desenvolvedores emrelacao aos mantenedores da versao original; intencao de implementar alteracoespotencialmente arriscadas; desejo de evoluir o codigo-fonte em uma direcao distintado projeto original“. As razoes para o fork do Mambo foram desentendimentosentre os desenvolvedores principais e a empresa Miro (australiana) que patrocinavao projeto. O projeto Joomla desenvolveu-se rapidamente e hoje em dia possuimais usuarios que o Mambo, tendo sido considerado no ano de 2007 pela Packt

1Content Management System (Sistema de Gerenciamento de Conteudo)

11

Page 12: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 1. INTRODUCAO 12

Publishing (editora internacional especializada em livros de tecnologia) 2 o MelhorCMS Open Source em PHP 3. Todo o trabalho desenvolvido para o Joomla, desdeseu logotipo (Figura 1.1), infraestrutura do site, documentacao do sistema, codigofonte, tem um nıvel de qualidade muito alto.

Figura 1.1: Logotipo do Joomla

A palavra Joomla e originada da palavra Swahili “Jumla“, que significa “todosjuntos“. E um sistema de gerenciamento de conteudo utilizado por milhares dewebsites corporativos e portais, comercio online, websites de pequenos negocios,organizacoes sem fins lucrativos, aplicacoes governamentais, intranets e extranetscorporativas, websites de escolas e igrejas, homepage pessoal e familiar, portais decomunidades, revistas e jornais. E licenciado atraves da licenca GPL4 e roda emservidor web Apache 5, banco de dados MySQL6 e linguagem PHP7.

Alem deste capıtulo introdutorio, este trabalho contem os seguintes capıtulos:

• No capıtulo “Joomla: Uma Visao Geral do Projeto“, descrevemos como oprojeto Joomla esta atualmente organizado, principalmente atraves de seusvarios grupos de trabalho. Tambem explicamos como colaborar com o pro-jeto Joomla, demostrando os passos a serem dados para participar do pro-jeto, seja como membro de um grupo de trabalho ou postando uma notıciareferente ao CMS no site oficial do projeto.

2http://www.packtpub.com/article/overall-open-source-cms-award-final-joomla/3http://www.joomla.org/content/view/4122/74/4http://www.gnu.org/licenses/licenses.pt.html5http://www.apache.org/6http://www.mysql.com/7http://www.php.net/

Page 13: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 1. INTRODUCAO 13

• No estudo de caso deste trabalho, descrevemos a utilizacao do Joomla CMSna intranet de uma empresa do ramo de automoveis, com media de 3000funcionarios, em 10 cidades do paıs. Explicamos como foi o inıcio do projetoe como ocorreu a implementacao, assim como a manutencao e o desenvolvi-mento atual do portal da intranet desenvolvido em Joomla CMS.

• No capıtulo seguinte abordamos a construcao do modulo propriamente dito.O processo e programacao do modulo joomLDAP para o Joomla CMS, passoa passo, inclusive com o codigo-fonte apresentado no apendice. Os meios queforam utilizados para o gerenciamento e disponibilizacao do modulo na inter-net, utilizando principalmente o Joomla Code. Por fim um tutorial completodo modulo joomLDAP com instalacao e configuracao. E importante lembrarque neste trabalho a versao usada do Joomla foi a 1.0.x. Como apendicecolocamos o codigo-fonte do modulo desenvolvido para o Joomla CMS e umartigo publicado em duas revistas online de tecnologia da informacao, quediscorre sobre migracao do Joomla CMS e instalacao do WAMPServer (Apa-che, MySQL, PHP) em Windows 2003 Server.

Page 14: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Capıtulo 2

Joomla: Uma Visao Geral doProjeto

Entre janeiro e abril de 2008 pesquisamos e anotamos alguns websites que utilizamo Joomla. Nesta relacao estao websites que rodam sob o Joomla, apesar de muitosnao deixarem isso claro, sao websites de instituicoes cientıficas, empresas, ONGs,revistas online, do governo e intranets, tais como:

• Agile Journal: www.agilejournal.com

• ANPOCS – Associacao Nacional de Pos-Graduacao e Pesquisa em CienciasSociais: www.anpocs.org.br

• Catan – Site oficial do famoso jogo de tabuleiro: http://www.catan.com

• DB Free Magazine – Revista de Banco de Dados: www.dbfreemagazine.com.br

• Grande Real Villa Italia Hotel – Hotel 5 estrelas em Portugal: grandereal-villaitaliahotel.com

• MEC – Ministerio da Educacao: www.mec.gov.br

• Morada da Floresta: www.moradadafloresta.org

• NTE – Nucleo de Tecnologia Educacional da UFLA: www.nte.ufla.br

• Ogilvy Brasil – Intranet

• Porsche Brasil: www.porsche.com.br

• Portal Via Digital – caminho inteligente para informatizacao publica: www.viadigital.org.br

• SBBq – Sociedade Brasileira de Bioquımica e Biologia Molecular: www.sbbq.org.br

14

Page 15: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 15

• Slow Food Brasil – associacao internacional sem fins lucrativos fundada em1989: www.slowfoodbrasil.com

• Sociedade Vegetariana Brasileira: www.svb.org.br

• Tiny ERP: www.tinyerp.org

• USP – Universidade de Sao Paulo: www.usp.br

Um dos grandes diferenciais do Joomla e a quantidade enorme de extensoes1

que existem a sua disposicao, tornando-o capaz de realizar um numero grande deatividades e funcoes em gerenciamento de conteudo para a web.

De acordo com o site do projeto Joomla2 ha seis tipos de extensoes [16, OPE08]:

• Componente: mini-aplicativo que carrega no corpo principal da pagina.

• Modulo: blocos pequenos de html que sao renderizados em qualquer pagina.

• Plugin: plugins de suporte ao Joomla (anteriormente chamado Mambot).

• Language: pacotes de traducao.

• Ferramenta: aplicativo externo que trabalha conjuntamente com o Joomla.

• Especial: extensao especıfica que requer outra extensao para funcionar.

Ate abril de 2008, encontravam-se no site de extensoes do projeto Joomla maisde 2800 extensoes (colaboracoes de codigo vindas dos mais diversos paıses e em-presas), distribuıdas sob todo tipo de licenca, inclusive comercial. As extensoesestao subdivididas em categorias, as quais sao listadas a seguir (o numero a direitarefere-se a quantidade de extensoes disponıveis ate a presente data na respectivacategoria):

• Ferramentas administrativas (157)

• Banners & Afiliacao (125)

• Calendarios (67)

• Comunicacao (214)

1http://extensions.joomla.org/2http://www.joomla.org

Page 16: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 16

• Conteudo & Notıcias (640)

• Extensao para o ’Core’ (208)

• Documentacao (47)

• e-Commerce (100)

• Extensao para plugins (360)

• Formularios (29)

• Galeria & Multimidia (238)

• Intranet & Groupware (22)

• Linguagens (101)

• Miscelanea (278)

• Busca & Indexacao (137)

• Ferramentas (66)

• Vertical Markets (61)

• Editores WYSIWYG (17)

Dentre estas categorias, com suas subcategorias, citamos algumas das extensoesmais utilizadas e um breve comentario sobre cada uma delas:

• Community Builder: componente que estende as capacidades de administra-cao e perfis de usuario.

• JCE: este e um editor WYSIWYG com inumeras funcionalidades, e uma dasopcoes de editor disponıveis.

• Docman: um dos componentes mais conhecidos, permitindo gerenciamentoe upload de documentos para o sistema.

• joomlaXplorer: componente que e gerenciador de arquivos e FTP, com inu-meras funcionalidades.

• VirtueMart: solucao completa de e-commerce para o Joomla.

• Jom Comment: este e um componente comercial que adiciona um forum aoJoomla.

Page 17: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 17

• FireBoard Forum: disponibiliza um forum repleto de opcoes e funcionalida-des.

• gigCalendar: calendario para controle e divulgacao de eventos.

• Joom!Fish: componente que permite o suporte multilıngua ao sistema.

• JooMap: componente que disponibiliza de forma simples o Mapa do Site.

• Jevents: componente para gerenciamento de eventos.

• Madblanks: extensao que permite a criacao de pesquisas de publico, opiniao,etc.

• Acajoom News: e um componente de newsletter que pode ser adicionado aoJoomla.

Page 18: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 18

2.1 Organizacao

O Projeto do Joomla CMS e organizado atraves da lideranca de seu Time Central(Core Team) e de seus Grupos de Trabalho (Working Groups). Seu “core team“e composto por membros responsaveis pela administracao do projeto, todos tra-balhando juntos como um time, no espırito do Movimento Open Source. O “CoreTeam“ possui membros com diferentes formacoes academicas e profissionais quevivem em 11 diferentes paıses do globo.

Os grupos de trabalho foram criados para que cada time focasse em um aspectodo Joomla, o que e considerado essencial para o crescimento e desenvolvimentodo projeto. Os “Working Groups“ promovem o debate e a comunicacao entrea comunidade e o “core team“ para gerar questionamentos, provocar mudancas,difundir informacao. A comunicacao entre todos e feita atraves de Forum, Wiki eListas de Discussao.

Os grupos de trabalho dentro do Joomla sao:

• Desenvolvimento

• Documentacao

• Sites e Infraestrutura

• Traducao

• Fundacao

A figura 2.1 demonstra visualmente como se da a interseccao entre a Comuni-dade Joomla e o ’Core Team’ atraves dos Grupos de Trabalho.

2.1.1 Grupo de Trabalho de Desenvolvimento

O grupo de trabalho de desenvolvimento e responsavel pelo desenvolvimento e ma-nutencao do Joomla Framework e Joomla CMS, atualmente possui dois coordena-dores e duas dezenas de membros ativos. Dentre suas tarefas e responsabilidadesestao:

• Definir a estrategia de roadmap 3 com o compromisso de realiza-la;

• Definir a estrategia de desenvolvimento e implementa-la;

3Caminho de desenvolvimento de um sistema, com rotas, parametros e escopos a se respeitar.

Page 19: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 19

Figura 2.1: Grupos de trabalho no projeto Joomla

• Criar o desenho de arquitetura para a maior (1.5) e menor versao (1.0.x) doJoomla CMS;

• Lancar correcoes de bugs e seguranca para as versoes;

• Criar novas versoes do Joomla CMS.

2.1.2 Grupo de Trabalho de Documentacao

O grupo de trabalho de documentacao e responsavel por escrever e manter a do-cumentacao oficial para os usuarios finais do Joomla, para os administradores eparte da documentacao para os desenvolvedores. O grupo tambem mantem o sitede Ajuda4 e o site da API5. Toda a documentacao oficial e escrita em ingles austra-liano e a traducao oficial e de responsabilidade do grupo de trabalho de traducao.No momento ha, no grupo, um coordenador e seis membros.

2.1.3 Grupo de Trabalho de Sites e Infraestrutura

O grupo de sites e infraestrutura e responsavel por manter um forum jovem eprodutivo, e uma comunicacao eficiente entre os envolvidos com o projeto. Nomomento o grupo possui dois administradores, oito moderadores globais e mais de50 moderadores de forum.

4http://help.joomla.org5http://api.joomla.org

Page 20: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 20

2.1.4 Grupo de Trabalho de Traducao

O grupo de trabalho de traducao e responsavel por coordenar a traducao de notıciase anuncios importantes, assim como cuidar da traducao da documentacao oficial.Tambem e responsavel por fazer a ligacao entre a comunidade internacional e ostimes de traducao.

Atualmente ha um lıder de grupo e um coordenador de time para cada paısou lıngua que estao envolvidos com a traducao do Joomla, as lınguas sao as se-guintes: Albanian, Arabic (Egypt), Bangsamoro, Basque, Bengali (Bangladesh),Bengali (India), Bosnian, Bulgarian, Chinese-Simplified, Chinese-Traditional, Cro-atian, Czech, Danish, Devanagari/Hindi, Dutch, Estonian, Filipino, Farsi, Finnish,French, German, German (Austrian), German (Swiss), Greek, Hebrew, Hungarian,Indonesian, Italian, Korean, Kurdish, Japanese, Latvia, Lithuanian, Malay, Mon-tenegrin, Norwegian, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian,Serbian, Slovak, Spanish, Swedish, Thai, Turkish, Vietnamese. Alguns poucos paı-ses ou lınguas possuem mais de um coordenador de traducao.

2.1.5 Grupo de Trabalho de Fundacao

No grupo de trabalho de fundacao fazem parte as pessoas que trabalham forado desenvolvimento. Estao envolvidas com Comunicacao e Marketing, Eventos,Aspectos Legais, Levantamento de Fundos e OSM (Open Source Matters) 6.

6Open Source Matters e a instituicao por tras do Joomla, emhttp://www.opensourcematters.org

Page 21: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 21

2.2 Colaboracao

A comunidade Joomla e aberta para a colaboracao de qualquer pessoa, sao neces-sarios apenas alguns pre-requisitos dependendo da colaboracao a ser feita.

Para receber diversas formas de colaboracao a estrutura organizacional de umprojeto de software livre e por natureza descentralizada, cada colaborador e umauto-regulador de seu trabalho. Algumas caracterısticas sao observadas em proje-tos de software livre, segundo [28, VIA 08], sao elas: colaboracao descentralizada,compartilhamento de praticas, lideranca confiavel, motivacao interna, comunica-cao, acesso ao codigo-fonte e uso de ferramentas de software.

Listamos a seguir as formas possıveis de se colaborar no projeto Joomla e emseguida explicamos cada uma delas em mais detalhes. E possıvel se envolver como projeto Joomla de diversas formas, como:

• Cadastrar-se em algum grupo de trabalho e compartilhar seu expertise coma comunidade Joomla;

• Traduzir conteudo ou documentacao do Joomla para sua lıngua nativa;

• Se voce for programador PHP podera contribuir desenvolvendo alguma ex-tensao util para o Joomla;

• Participar do forum de desenvolvedores e compartilhar suas ideias;

• Submeter patches ou correcoes de codigo;

• Submeter notıcias sobre o Joomla que deseja compartilhar com a comuni-dade;

• Reportar bugs ou solicitar modificacoes;

• Ajudar na organizacao de um evento sobre o Joomla em sua cidade;

• A empresa onde trabalha pode tornar-se uma parceira do projeto.

• Fazer alguma doacao em dinheiro atraves do sistema PayPal ou cartoes decredito internacionais;

• Adquirir algum produto no Joomla Shop para ajudar ao projeto.

A partir do site do projeto em http://www.joomla.org (veja Figura 2.2 ) epossıvel ter acesso a paginas com orientacoes, em ingles, sobre cada um dos meiosque se pode utilizar para colaborar com o projeto.

Page 22: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 22

Figura 2.2: Home do site do Joomla CMS

2.2.1 Ser membro de um grupo de trabalho

Conforme dito anteriormente o projeto Joomla esta estruturado a partir de seusgrupos de trabalho: Desenvolvimento, Documentacao, Sites e Infraestrutura, Tra-ducao, e Fundacao. Os passos para participar de qualquer um dos grupos sao terum cadastro no site oficial do Joomla e ler a pagina com as instrucoes e diretrizesdo grupo de trabalho. Geralmente a comunicacao entre os membros do grupo efeita atraves de forum oficial, lista de discussao, email e IRC (Internet Relay Chat).

2.2.2 Traduzir conteudo

Nao e necessario participar do grupo de trabalho de traducao para traduzir con-teudos para o projeto. A colaboracao pode ser na traducao de uma materia, umainformacao importante, uma notıcia, um tutorial, etc. Isso, na verdade, nao pre-cisa obrigatoriamente ser feito diretamente no site do projeto, mas em qualquersite que tenha por objetivo divulgar ou ensinar o Joomla. No Brasil ha algunssites que traduzem, publicam e recebem colaboracao de conteudos traduzidos cominformacao relevante sobre o Joomla: www.joomla.com.br, www.joomlabrasil.org,www.joomlaclube.com.br, www.joomlaminas.org e www.joomlabrasilia.org.

2.2.3 Construir uma extensao

Para construir uma extensao sera necessario primeiramente conhecer a linguagemPHP e o banco de dados MySQL. Tambem sera preciso ler e entender alguns do-

Page 23: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 23

cumentos que estao no site dos desenvolvedores Joomla em http://dev.joomla.org.O documento mais importante a se conhecer, primeiramente, e o “Joomla! Deve-lopment for Beginners“ 7 com seu curso online dividido em 6 semanas, abrangendotudo o que e preciso para ser um desenvolvedor Joomla. Tambem importantes saoas consultas, em primeiro lugar ao “Framework Overview“ 8 que se subdivide em“Framework Packages“, composto por:

• Application Package

• Cache Package

• Common Package

• Connector Package

• Database Package

• Document Package

• Filesystem Package

• i18n Package

• Installer Package

• Mail Package

• Model Package

• Parameter Package

• Registry Package

• Template Package

• Utilities Package

Em seguida as classes JFactory e JVersion, que tambem fazem parte do “Fra-mework Packages“. Em terceiro lugar, uma consulta a “Framework API“ 9 sempreque necessario. Por ultimo e muito importante estar sempre atento ao Wiki dosDesenvolvedores. Toda essa infra-estrutura para os desenvolvedores e chamada deJDN (Joomla Developer Network).

Ao colaborar com uma extensao uma otima sugestao e hospeda-la no site Jo-omla Code 10, que recebe todos os projetos open source baseados no Joomla (ex-

7http://dev.joomla.org/component/option,com jd-wiki/Itemid,/id,jbeginners:introduction/8http://dev.joomla.org/content/view/1137/80/9http://dev.joomla.org/content/view/16/59/

10http://www.joomlacode.org/

Page 24: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 24

tensoes: plugin, modulo, componente, etc). O Joomla Code roda sob o sistemaGForge 11.

2.2.4 Participar dos foruns

O forum oficial do Joomla em http://forum.joomla.org/ e a maior ferramentade comunicacao disponıvel para os usuarios deste CMS, basta uma olhada naquantidade de temas de forum, topicos e posts para perceber isto. Cada grupode trabalho possui o seu forum especıfico, ha um forum somente para anuncios denovidades pela equipe central, forum para as versoes 1.0.x e 1.5.x, foruns separadospor lınguas, forum para tratar somente de extensoes, forum para bugs e correcoes,forum para duvidas de instalacao. A pagina de entrada do forum em portugues eapresentada na Figura 2.3, com os topicos gerais mais discutidos:

• Componentes, modulos e manbots

• Programacao e desenvolvimento

• Seguranca

• Sites dos usuarios

• Off-topic

• Traducao

• Templates

Atualmente, para participar do forum e necessario cadastrar-se no sistema deforum (phpBB), validar seu registro e autenticar-se, so depois o usuario poderaenviar mensagens. Para leitura o forum e aberto.

2.2.5 Submeter patches ou correcoes de codigo

Submeter um patch, sendo ou nao de correcao, e uma tarefa que pode ser feitaate mesmo por um nao desenvolvedor do Joomla. E preciso que tenha apenas umregistro no repositorio do Joomla Code e entao envie seu arquivo patch como umamensagem com anexo, atraves do Tracker do projeto (atualmente versao 1.0.x ou1.5.x). Para os membros desenvolvedores do Joomla nao e preciso fazer isto, bastafazer o commit 12 diretamente no SVN13 do projeto.

11http://gforge.org/12termo que significa validar uma transacao.13Subversion, e um sistema de controle de versao.

Page 25: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 25

Figura 2.3: Pagina do forum oficial do Joomla: lıngua portuguesa

2.2.6 Enviar notıcias

Para submeter notıcias e colaborar com conteudo e necessario apenas acessar osite oficial do Joomla e seguir as dicas da pagina de “Submit Community News“14.Para uma maior agilidade nao e necessario cadastrar-se no site. E preciso apenasinformar seu nome, email, tıtulo da notıcia (conteudo ou informacao), texto in-trodutorio, texto completo. A equipe responsavel ira analisar e publicar ou nao oconteudo.

2.2.7 Reportar bugs ou solicitar mudancas

Para reportar bugs ou solicitar modificacoes e preciso criar uma conta no siteJoomla Code (www.joomlacode.org) e acessar o Tracker do projeto 15 (ver Figura2.4). Na pagina do Tracker pode-se escolher entre reportar um bug relacionadoa versao 1.0.x (link “Joomla! 1.0.x Bug Tracker“), um bug relacionado a versao1.5.x (link “Joomla! 1.5.x Bug Tracker“) ou fazer uma solicitacao de mudancas oumelhorias para qualquer uma das versoes (link “Joomla! Feature Requests“).

14http://www.joomla.org/component/option,com submissions/Itemid,7515http://joomlacode.org/gf/project/joomla/tracker/

Page 26: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 26

Figura 2.4: Tracker do Joomla

2.2.8 Organizar um evento

A equipe do projeto Joomla incentiva aos usuarios, entusiastas e membros a or-ganizarem eventos sobre o Joomla em suas cidades. Estes eventos podem ter oobjetivo de install fest16, palestras, tutoriais, etc. E comum o site do projetoanunciar eventos sobre o Joomla em cidades pelo mundo, que sao organizados pormembros do projeto ou usuarios.

2.2.9 Ser empresa parceira

Parceiros sao empresas que suportam ou buscam oferecer uma ajuda maior aoprojeto Joomla. O logotipo da empresa aparece no site oficial do projeto e aempresa tem sua imagem associada ao Joomla CMS. Conforme informado no siteoficial do Joomla, para maiores informacoes e solicitado que a empresa interessadaentre em contato com o email [email protected].

16“Festas de instalacoes“ onde usuarios fazem instalacoes de software em suas maquinas, auxi-liados por usuarios experientes

Page 27: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 2. JOOMLA: UMA VISAO GERAL DO PROJETO 27

2.2.10 Fazer doacao financeira

O projeto Joomla permite que se faca uma doacao financeira para a manutencaode seu desenvolvimento. No site oficial ha o link “Donate to Joomla“ 17 que ori-enta e disponibiliza varias formas para que seja possıvel uma doacao financeira dequalquer especie.

2.2.11 Comprar produtos

Por fim, o Joomla Shop18 (ver Figura 2.5), possui produtos como livros, camisetas,jaquetas, bones e bolsas. Todos os produtos podem ser comprados atraves decartoes de credito ou sistema paypal, para comprar e necessario antes fazer o seucadastro na loja.

Figura 2.5: Site de compras com produtos da marca Joomla

17http://www.joomla.org/content/view/689/79/18http://shop.joomla.org/

Page 28: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Capıtulo 3

Estudo de Caso: PortalCorporativo

Neste estudo de caso foi observada a definicao e implementacao do sistema de CMSJoomla na intranet de uma empresa com media de 3000 funcionarios do ramo deautomoveis. O sistema de intranet, provendo diversos servicos foi disponibilizadoentre as diversas unidades da empresa espalhadas por 10 cidades no paıs. Total-mente acessıvel via navegador e utilizando somente a infra-estrutura de rede daempresa, o sistema foi disponibilizado atraves de uma maquina servidora rodandoWindows 2003 Server, Apache, MySQL e PHP.

3.1 Projeto e Implementacao

Atuando em um ramo de negocios muito competitivo e com forte foco em vendas,de 5 anos para ca houve o interesse dos executivos da empresa em adquirir oudesenvolver internamente um produto que melhorasse e trabalhasse com melhorqualidade a comunicacao interna da empresa. No inıcio de 2008 finalmente entrouem producao a intranet da empresa, toda desenvolvida com o CMS Joomla.

Algumas razoes para o Joomla CMS ter sido escolhido foram:

• Rapida implementacao;

• Custo reduzido em relacao a solucoes proprietarias;

• Pouca manutencao pois seu codigo e bastante estavel;

• Interface razoavelmente descomplicada para operar;

• Inumeros modulos e componentes que podem ser facilmente instalados.

28

Page 29: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 3. ESTUDO DE CASO: PORTAL CORPORATIVO 29

No momento em que nossa equipe assumiu o sistema, o portal ja estava parcial-mente customizado, foi necessario, portanto que revisassemos essas customizacoese corrigıssemos alguns erros e fizessemos novo levantamento de requisitos junto ao“keyuser“ 1.

O ambiente de producao funcionava adequadamente, porem o ambiente de de-senvolvimento teve que ser refeito inteiramente pois este rodava o EasyPHP 2

que comecou a apresentar problemas, enquanto o ambiente de producao rodava oWAMP Server 1.7.3 3. Assim, instalamos a ultima versao do WAMP Server, 2.0no ambiente de desenvolvimento. O fato de ter ocorrido este problema imprevistofoi muito bom pois avancamos na tarefa de revisar as customizacoes e os procedi-mentos para instalar o WAMP Server no Windows Server 2003 e migrar o portalem Joomla do ambiente antigo de desenvolvimento para o ambiente novo de de-senvolvimento rendeu um artigo (Apendice B), que foi publicado em duas revistasonline bastante acessadas por profissionais da area de tecnologia da informacao.

Para a data fixada como dia do lancamento do portal da intranet e entrada dosistema em producao foram definidos, em geral, as seguintes modificacoes e novosrequisitos:

1. Fazer pequenas alteracoes de cores, fontes e posicionamento de objetos nolayout. Assim como incluir e excluir algumas figuras, objetos e textos.

2. Na area de busca pelos funcionarios da empresa, fazer com que essa buscapesquisasse na base do sistema de RH.

3. Desenvolvimento de um componente de pesquisa e enquete, que seria utili-zado para promover um “quiz“ de perguntas entre os funcionarios. Caso res-pondessem corretamente concorreriam a iPods (seria feito um sorteio ondesomente 10 pessoas que acertaram as perguntas ganhariam os brindes).

4. Treinamento da “keyuser“ na utilizacao do portal

As tarefas do item um levaram um tempo razoavel porem nao envolveramcomplexidade alguma, somente tempo e paciencia, pois a “keyuser“ estava sempreindecisa quanto a determinados aspectos e areas do portal.

O item dois levou um tempo maior. A solucao nos acorreu apos duas reunioes econversas presenciais com o responsavel pelo sistema de RH, onde foi compreendidoo que se queria fazer e como funcionava cada um dos sistemas. No codigo-fonte

1Usuario-chave responsavel pelo sistema e que conhece os processos da empresa2http://www.easyphp.com3http://www.wampserver.com

Page 30: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 3. ESTUDO DE CASO: PORTAL CORPORATIVO 30

do Joomla foi adicionada uma funcao que usando a extensao ODBC conectava-se a base de dados SQL Server do sistema de RH e lia as informacoes de uma“View“. Este retorno de dados foi necessario para que a pagina de busca de usuarios(funcionarios) atendesse ao requisito solicitado.

O item tres foi o mais problematico pois inicialmente ficou entendido que seriadesenvolvido uma enquete para o portal. Em uma enquete temos uma perguntae com base nesta pergunta cadastramos um numero “x“ de possıveis respostas.Estes requisitos foram desenvolvidos fazendo-se uma modificacao no componentede enquete que vem com o Joomla, para que este recebesse a funcionalidade defazer um sorteio entre aqueles que respondessem corretamente a pergunta.

O problema apareceu no momento que o desenvolvimento da enquete com sor-teio ficou pronto e o keyuser fez os testes e descobriu que na verdade iria precisarde um componente que fosse um “quiz“. Com esta confusao de termos (“enquete“,“pesquisa“, “quiz“) e este pequeno atraso, os requisitos foram refeitos para a im-plementacao de um componente que montasse um questionario de perguntas parao usuario identificado e este respondesse cada pergunta uma unica vez. Do ou-tro lado, o operador da area administrativa (“keyuser“) poderia cadastrar um quiz(pesquisa) e neste quiz inserir quantas perguntas e de quais tipos desejasse. Po-deria tambem selecionar aqueles que responderam corretamente e entre estes fazerum sorteio randomico para obter um ganhador.

O portal foi lancado na data prevista e foi contabilizado mais de 3000 acessosno primeiro dia. Duas semanas depois o quiz entrou no ar e foram obtido quase400 respostas as seis perguntas referentes a historia e polıtica da empresa.

Para o quiz e a realizacao do sorteio o usuario do portal (funcionarios da em-presa) necessitaria criar um registro e entao responder a pesquisa. Foi utilizadoo componente e modulo MadBlanks 4 que customizado serviu como uma solucaode quiz para o portal da intranet. A extensao MadBlanks originalmente comportaum modulo e um componente, tendo sido apenas o componente alterado paraque viesse a suportar a funcionalidade de sorteio randomico entre os usuarios querespondessem as perguntas.

Um entrave tecnico enfrentado no comeco deste desenvolvimento ocorreu como componente Group Acess, que ja estava instalado. O problema nao estava como componente, mas com a forma como ele foi instalado e customizado anterior-mente. Para resolver o problema de acesso dos usuarios no portal foi necessariodesinstalar o componente Group Acess e alterar algumas linhas de codigo que ha-viam sido comentadas e mexidas dentro de arquivos do core do Joomla 1.0.x, como

4http://www.madblanks.org

Page 31: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 3. ESTUDO DE CASO: PORTAL CORPORATIVO 31

“/includes/joomla.php“ e “/includes/gacl.class.php“.

3.2 Manutencao e Desenvolvimento Atual

Apos a entrada em producao do sistema de intranet desenvolvido com o Joomla,o qual foi denominado carinhosamente de “portal“, pelos executivos e funcionariosda empresa, o mesmo entrou numa nova fase onde passou a atender as demandasde varios departamentos. Demandas estas intermediadas pelo departamento decomunicacao interna da empresa.

O desafio seguinte foi transportar para a intranet um processo do departamentofinanceiro que ate o momento era feito com pastas de arquivos restringidas peloActive Directory. Alguns usuarios tinham permissao de ler os arquivos de umadeterminada pasta e outros nao. Tudo era disponibilizado por uma navegacao dearquivos pela rede corporativa da empresa. No portal fizemos a disponibilizacaodestes arquivos atraves do componente DOCMAN 5 e para o acesso restrito eautenticacao no Active Diretory criamos o modulo joomLDAP 6, explicado commais detalhes no capıtulo seguinte.

Para o futuro, o portal da intranet demandara uma maior integracao com outrossistemas da empresa, como o sistema de RH e talvez de ERP, autenticacao unicapara todos os usuarios no Active Directory via LDAP, maior segmentacao nosperfis de usuarios registrados e nıveis de permissao, sistema ou componente quegerencie os eventos corporativos de toda a empresa. Este sistema para gerenciaros eventos corporativos sera inicialmente implementado como um componente doportal e futuramente sera decidido se permanecera ou nao dentro do portal.

5http://joomlacode.org/gf/project/docman/6http://joomlacode.org/gf/project/joomldap/

Page 32: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 3. ESTUDO DE CASO: PORTAL CORPORATIVO 32

Atualmente a aparencia do portal da intranet e como a imagem vista na Figura3.1 . O nome da empresa foi omitido, pois nao houve autorizacao para que adivulgassemos.

Figura 3.1: Home do portal de intranet, abril de 2008

Page 33: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Capıtulo 4

A Construcao do ModulojoomLDAP

Neste capıtulo e explicado como foi construıdo o modulo joomLDAP para o JoomlaCMS. Em“Processo e Desenvolvimento“ demonstramos como o modulo joomLDAPfoi programado dentro do framework Joomla e quais as ferramentas utilizadas. Em“Gerenciamento e Lancamento“ focamos nos passos para disponibilizar e gerenciara construcao do modulo pelo GForge do Joomla, o Joomla Code. Em “Tuto-rial“ apresentamos um tutorial completo do modulo, descrevendo como instala-loe configura-lo.

33

Page 34: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 34

4.1 Processo e Desenvolvimento

Para o desenvolvimento do modulo joomLDAP no Joomla CMS 1.0.x, versao quetrabalhamos tanto em ambiente de desenvolvimento quanto em ambiente de pro-ducao, tınhamos os seguintes requisitos:

• Disponibilizar documentos restritos pelo portal (Joomla CMS) para algunsusuarios, sendo a autenticacao com mesmo login e senha da rede (ActiveDirectory).

Apos uma rapida pesquisa descobrimos que deveria ser utilizado o protocoloLDAP para esta integracao com o Active Directory, que fazia a autenticacao a rede.“LDAP e uma definicao de protocolo para acesso a banco de dados especializadoschamados diretorios. E similar ao SQL no sentido que e uma linguagem parainteragir com banco de dados sem especificar um banco de dados particular. O quevoce realmente quer em uma rede e a unificacao de diretorios, e e exatamente paraisto que o LDAP foi projetado. Com esta unificacao voce consegue normalizacao dedados, administracao central, experiencia de usuario consistente, gerenciamento epolıticas de seguranca consistentes, menos problemas de seguranca e menos tempode desenvolvimento desperdicado. O LDAP e um padrao aberto mantido peloIETF 1“ [13, LDA 08].

Foi realizad, entao, alguns testes de autenticacao no Active Directory utilizandoa biblioteca nativa do PHP: “php ldap“. Esta foi uma fase de mais ou menos umasemana onde foi necessario uma comunicacao constante com o administrador derede da empresa.

Finalizado os testes com a autenticacao LDAP definimos o uso do componenteDOCMAN para gerenciamento dos documentos restritos a serem disponibilizados.Como ja tinhamos o DOCMAN instalado foi feita uma copia deste componente,que recebeu o nome de DOCMAN RELATORIO.

O fluxo deste usuario-especial dentro do portal foi a proxima tarefa a ser defi-nida. Este usuario deveria receber uma area propria para se autenticar, diferentedo usuario comum do portal. Optou-se por chamar esta nova area dentro do portalde “Relatorios“. Com estas definicoes prontas partimos para a codificacao. Segui-mos o padrao de codificacao do Joomla da forma mais simples possıvel, copiando-seum outro modulo ja em uso. No fundo tınhamos em mente a frase “Quanto maissimples a visao do que voce faz, mais poder e foco tera ao executa-la“ [3, BER 08].O resultado foi satisfatorio e o codigo-fonte do modulo pode ser visto no“ApendiceA“.

1Internet Engineering Task Force (http://www.ietf.org)

Page 35: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 35

Estruturalmente os arquivos do modulo joomLDAP foram dispostos como mos-trado nas Figuras 4.1 e 4.2, a partir do diretorio de modulos do Joomla,“/modules“.Lembrando que trabalhamos com a versao 1.0.x.

Figura 4.1: arquivos joomLDAP na pasta modules

Figura 4.2: arquivos joomLDAP na pasta modules/joomLDAP

As ferramentas de software utilizadas durante todo o processo de desenvolvi-mento e manutencao foram:

• Biblioteca debuglib: atomar.de/debuglib

• Gantt Project: ganttproject.biz

• Cobian Backup: educ.umu.se/cobian

• Firefox 2.0.0.11: mozilla.org

Page 36: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 36

• FoxitReader: foxitsoftware.com

• FreeCommander: freecommander.com

• Heidi SQL 3.2: heidisql.com

• HTTrack Website Copier 3.42: httrack.com

• IDE Notepad++ v4.1.2: notepad-plus.sourceforge.net

• Internet Explorer 6: microsoft.com

• Irfan View: irfanview.com

• LDAP Admin: ldapadmin.sourceforge.net

• LDAP Search: ldapsearch.codigolivre.org.br

• MySQLdiff: mysqldiff.org

• TortoiseSVN: tortoisesvn.tigris.org

• Wamp Server 2.0a (Apache, MySQL, PHP, phpMyAdmin): wampserver.com

• WinZip: winzip.com

Page 37: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 37

4.2 Gerenciamento e Lancamento

Com a entrada do modulo joomLDAP em producao no portal resolvemos organi-zar o modulo de uma forma que pudessemos disponibilizar este pequeno softwarepara a comunidade de software livre. Escrevemos um tutorial completo cobrindoinstalacao e configuracao do modulo e candidatamos o projeto do modulo no Jo-omla Code, que e o site que armazena projetos de software open source em tornodo Joomla CMS. No Joomla Code somente podem ser hospedados projetos comlicenca de codigo aberto que tenham relacao direta com o Joomla CMS.

O passo seguinte foi refatorar todo o codigo-fonte, empacotar tudo de novo efazer novos testes de instalacao e configuracao do modulo no Joomla 1.0.x. Algunsdias depois recebemos a notıcia de que o projeto foi aprovado para ser hospedadono Joomla Code. O Joomla Code e baseado no GForge e possui todos os recursosnecessarios para se administrar as fases de desenvolvimento, manutencao e evolucaode um software, e composto por:

• Summary: no sumario encontramos as notıcias recentes, grafico de atividade,descricao do projeto, informacoes do desenvolvedor, categorizacao e secoesgerais.

• Reporting: relatorios gerais acerca do projeto como relatorio de page views,relatorio do tracker, relatorio de commits, relatorio de download, etc.

• Search: Busca no conteudo do projeto, por palavra-chave, area ou perıodode datas.

• Tracker: sistema de rastreamento de bugs (Bug Tracking System), sistemade solicitacoes e mudancas (Feature Request Tracking System), sistema detarefas a fazer (To-Do tasks for this project).

• News: area para notıcias referente ao projeto, posts rapidos, releases, comu-nicados.

• Files: onde e disponibilizado o pacote para download, em zip ou rar.

• SVN: repositorio subversion para navegacao web.

Ainda e possıvel habilitar forum, gerenciador de documentos, lista de discus-sao e Wiki. O nome de cada uma das areas padrao cobertas pelo Joomla Codepode ser visto na Figura 4.3, que reproduz o endereco http://joomlacode.org/gf/project/joomldap/ e onde atualmente e o site da extensao joomLDAP.

Page 38: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 38

Figura 4.3: joomLDAP no Joomla Code

Para gerenciamento de configuracao foi utilizado o TortoiseSVN e para empa-cotamento o WinZip. O TortoiseSVN, e um cliente para Windows da ferramentade controle de versoes Subversion. Atualmente o modulo joomLDAP continua emdesenvolvimento e esta na versao beta 3.

Page 39: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 39

4.3 Tutorial

O modulo joomLDAP autentica o acesso, com login e senha, no Active Direc-tory (atraves do protocolo LDAP), redirecionando o usuario para a pagina de umcomponente (ex: DOCMAN). O DOCMAN e um componente que disponibiliza egerencia arquivos de varias extensoes organizados por categoria.

O usuario insere login e senha pelo Joomla porem o sistema autentica via LDAPno Active Directory, procurando o usuario em um grupo (ex: GrupoRestritoJo-omla) que foi previamente configurado no Active Directory. O usuario deve, noActive Diretory, fazer parte deste grupo (ex: ’memberof’ de ’GrupoRestritoJo-omla’). O nome deste grupo precisa ser adicionado na pagina de configuracao domodulo joomLDAP na area de administracao do Joomla. A Figura 4.4 mostra umexemplo de tela onde o usuario autentica-se e entao e redirecionado para a paginaprincipal do componente (ex: DOCMAN).

Figura 4.4: Autenticacao via LDAP atraves do Joomla

Apos a autenticacao o usuario e redirecionado para a pagina com os arquivosrestritos, como mostrado na Figura 4.5, onde foi utilizado o componente DOC-MAN.

Page 40: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 40

Figura 4.5: Apos autenticacao os arquivos restritos podem ser visualizados

4.3.1 Instalacao

O processo de instalacao segue os passos normais para a instalacao de um modulono Joomla. Porem antes disto ha alguns itens a se lembrar que nao fazem partedos passos mais comuns:

1. E preciso habilitar no arquivo PHP.ini a extensao ’php ldap’ para que estemodulo funcione.

2. O Joomla exige, que a opcao ’Magic Quotes GPC’ esteja habilitada. Estaopcao acrescenta uma barra(\) automaticamente aos caracteres reservados enao pode ser mudada em tempo de execucao. O domınio de rede geralmentepossui uma barra ao final (Ex: nomerede\), sendo assim esta variavel etratada com a funcao do PHP ’stripcslashes’ que retira as barras invertidas(\) em uma string.

3. E necessario fazer um levantamento junto ao administrador do sistema deServico de Diretorios, no caso o Active Directory, sobre as particularidades dosistema. Ha inumeras variacoes na configuracao, de empresa para empresa,de um sistema de diretorios. Observar o IP do servidor LDAP, domınio derede e Base DN, que serao necessarios para a configuracao do modulo.

4. Instale o modulo pelo administrador do Joomla atraves da pagina de ’Enviarnovo modulo’, mostrada na Figura 4.6.

Page 41: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 41

Figura 4.6: Pagina de envio de um novo modulo

Apos a instalacao e preciso acrescentar algumas linhas de codigo ao arquivophp do componente. Este componente tera seu acesso liberado somente aos usua-rios cadastrados previamente em um grupo no Active Directory (ou OpenLDAP),em nosso exemplo este grupo chama-se ’GrupoRestritoJoomla’ dentro do ActiveDirectory. Em nossa implementacao foi usado o componente DOCMAN, que dis-ponibiliza arquivos de varias extensoes organizados por categorias. Para configuraro componente DOCMAN para fazer a verificacao de acesso restrito, e necessarioeditar o arquivo php “docman.php“, localizado em ’/components/com docman/’ eapos a linha:

defined(’_VALID_MOS’) or die(’Direct access to this location is not allowed.’);

Inserir as seguintes linhas:

///////////////////////////////////////////////////////////////////

/// Referente modulo joomLDAP

/// verifica atraves de cookie se usuario tem permissao

/// para acessar este componente

$c = $_COOKIE["LDAPauth"];

if ($c == ’OK’) {

// ok, usuario possui cookie de autenticacao, acesso permitido

// echo "COOKIE AUTENTICADO!!";

}

Page 42: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 42

else {

// echo "N~ao reconheceu cookie!, Nao possui acesso a esta area";

mosRedirect("index.php");

}

///////////////////////////////////////////////////////////////////

O resultado da mudanca solicitada acima deve refletir a Figura 4.7, mostradaa seguir.

Figura 4.7: Editando arquivo docman.php

Page 43: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 43

O codigo apresentado anteriormente faz com que este componente seja acessadosomente pelos usuarios que tenham o cookie 2 de nome “LDAP auth“, obviamenteo navegador deve aceitar cookies. Este cookie somente e gravado na maquina dosusuarios que tenham feito a autenticacao LDAP e adquirido a permissao ao gruporestrito autorizado pelo Active Directory. A expiracao deste cookie e de uma hora.Nao e considerada a solucao mais segura porem sua utilizacao e simples e eficaz.

2Um cookie e um grupo de dados trocados entre o navegador e o servidor de paginas, colocadonum arquivo de texto criado no computador do usuario. A sua funcao principal e a de manter apersistencia de sessoes HTTP.

Page 44: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 44

4.3.2 Configuracao

Acesse a area administrativa do Joomla (especificamente falamos da versao 1.0.10),clique no menu Modulos > Modulos do Site, encontre o nome do modulo receminstalado (joomLDAP) e clique no tıtulo para ter uma visao como a mostrada naFigura 4.8.

Figura 4.8: Configurando o modulo

Page 45: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 45

Adicione o IP do servidor LDAP, Base DN e Domınio de rede nos respectivoscampos na pagina de configuracao do modulo. Estas informacoes terao que ser in-formadas pelo Administrador do Sistema de Servico de Diretorios (Active Diretory,OpenLDAP, etc). Os usuarios a terem o acesso autorizado ao componente restritodeverao todos estar no mesmo grupo (diretiva ’memberof’) dentro do Active Dire-tory, o nome deste grupo devera ser configurado e informado pelo Administradordo Active Diretory (em nossa implementacao colocamos o nome deste grupo como’GrupoRestritoJoomla’). Adicione o nome deste grupo no campo “Nome da pastarestrita, ...“.

Em “URL de Redirecionamento de Login ...“ adicione a URL para onde seraredirecionado apos ocorrer a autenticacao, a criacao desta pagina e necessaria, elana verdade e uma pagina intermediaria que deve ter um link para a pagina docomponente restrito. Esta pagina pode ser criada como um conteudo estatico nomenu ’Conteudo’ > ’Adminstrar Conteudo Estatico’. Ela devera ter um link paraa pagina do componente que foi configurado como restrito. Se o usuario tentaracessar diretamente a pagina do componente restrito, ele nao conseguira pois naautenticacao e gravado um cookie de verificacao e a pagina do componente ira lere restringir o acesso ao usuario que nao possui este cookie. Desta forma o fluxoficara como abaixo:

PAGINA AUTENTICACAO −→ PAGINA DE BEM VINDO −→COMPONENTE DE ACESSO RESTRITO

Crie uma segunda pagina de conteudo estatico que servira para a autenticacaopropriamente dita (ver Figura 4.4). Sera necessario que esta pagina faca parte domenu pois ela devera aparecer na caixa a direita (Figura 4.9) chamada “Link(s) doItem de Menu:“. Marque para que o modulo joomLDAP apareca somente nestapagina ou selecione outro Link do Item de Menu. Voce tambem pode fazer comque o modulo apareca em todas as paginas selecionando a opcao “All“.

Page 46: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 4. A CONSTRUCAO DO MODULO JOOMLDAP 46

Figura 4.9: Escolhendo onde mostrar a caixa de autenticacao do joomLDAP

Ao tentar autenticar-se pelo joomLDAP ele emitira duas mensagens apos ve-rificar usuario e senha no servidor LDAP (Active Directory): “Usuario ou Senhaincorretos¡‘ e “Acesso nao permitido¡‘. Na primeira mensagem usuario e/ou senhanao autenticam no servidor LDAP. Na segunda mensagem usuario e senha confe-rem no servidor LDAP porem o usuario nao consta no “GrupoRestritoJoomla“. Oterceiro caso e o usuario que tem o acesso liberado ao componente restrito: seuusuario e senha autenticam no servidor LDAP e seu usuario (sAMAccountName)consta no “GrupoRestritoJoomla“ do servidor LDAP (Active Directory).

Consulte tambem os arquivos LEIAME.txt, FAQ.txt, ChangeLog.txt, e TODO.txt,disponıveis no diretorio de instalacao do modulo.

Page 47: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Capıtulo 5

Conclusoes e Trabalhos Futuros

Com a experiencia adquirida neste trabalho com o Joomla compreendemos queele e um sistema de CMS maduro, flexıvel e de bastante qualidade. Ha inumerasextensoes e elas podem resolver uma diversidade enorme de problemas, mas epreciso aprender a saber usa-las. As extensoes mais utilizadas e com maior tempode desenvolvimento sao as mais confiaveis, ha tambem muitas extensoes que saocomerciais. Algumas que utilizamos, todas open source, estavam em fase alpha,com bugs e ate mesmo incompletas. Mesmo assim ajudaram, nos economizaramtempo e serviram de base para extensoes completas que desenvolvemos para nossoestudo de caso, como no ja citado componente do quiz e mais atualmente em ummodulo de calendario para feriados nacionais, estaduais e municipais.

O Joomla e um projeto de software livre bastante organizado e com otimainfra-estrutura. Por dia sao centenas de novas colaboracoes de pessoas do mundointeiro. Muitas instituicoes que se beneficiam do Joomla possuem colaboradoresque participam e ajudam no projeto Joomla. O forum do projeto possui umnumero consideravel de brasileiros e temas diversos sendo discutidos.

Os eventos de software livre que ocorrem no paıs geralmente possuem palestrassobre o Joomla CMS. No ultimo FISL – Forum Internacional Software Livre, 2008,o maior evento sobre software livre que ocorre no Brasil, houve o III encontro deusuarios Joomla. Alguns sites como joomla.com.br e joomlabrasil.org fazem opapel de divulgar o CMS para a comunidade brasileira.

Atualmente a versao do Joomla CMS e a 1.5, com mudancas consideraveis emrelacao a 1.0.x. A versao 1.6 encontra-se em desenvolvimento.

Para trabalhos futuros pensamos em refatorar, documentar e disponibilizar ou-tras extensoes que desenvolvemos para o estudo de caso, aumentar a participacaono forum oficial do Joomla, aprimorar o modulo joomLDAP e escrever mais artigos

47

Page 48: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

CAPITULO 5. CONCLUSOES E TRABALHOS FUTUROS 48

sobre o Joomla e suas extensoes, com o objetivo de colaborar com o conhecimentolivre em relacao a um sistema como o Joomla, que pode facilmente ajudar na me-lhoria do gerenciamento de informacao de muitas instituicoes, orgaos e empresas.

Page 49: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Referencias Bibliograficas

[1] [AKB 08] AKBK HOME. LDAP Schema Viewer. Disponıvel em:<http://www.ldap.akbkhome.com>. Acesso em: 20 janeiro 2008.

[2] [AND 07] ANDRADE, Carlos, LAMAS, Jose L., SPINOLA, RodrigoO.,SPINOLA, Eduardo O., FIDELIS, Janaina de S. Projeto de softwareorientado a objetos com UML 2.0. SQL Magazine. Ed. DevMedia. Curi-tiba, edicao 45, Pags 24 a 31, mes 9 ano 2007.

[3] [BER 08] BERKUN, SCOTT. A Arte do Gerenciamento de Projetos.Trad. Carlos Augusto C. de Moraes, Teresa C. Felix de Souza. Porto Alegre:Bookman, 2008.

[4] [CAR 01] CARVALHO, Ariadne M. B. Rizzoni e CHIOSSI, Thelma C. dosSantos. Introducao a Engenharia de Software. Editora da Unicamp,2001. Campinas, SP.

[5] [DON 08] DONNELLY, MICHAEL. LDAPman home page. Disponıvel em:<http://www.ldapman.org/>. Acesso em: 20 janeiro 2008.

[6] [FER 04] FERNANDES, JORGE H. C. As 10 Areas da Engenharia deSoftware, Conforme o SWEBOK. 2004. 41 p.

[7] [FIL 07] FILHO, WILSON DE PADUA P. Alguns Fundamentos da En-genharia de Software. Engenharia de Software Magazine. Ed. DevMedia.Curitiba, edicao 1, Pags 4 a 8, ano 2007.

[8] [FOW 05] FOWLER, Martin. UML Essencial: Um breve guia para alinguagem padrao de modelagem de objetos. Trad. Joao Tortello – 3ed. Porto Alegre: Bookman, 2005

[9] [FOW 07] FOWLER, Martin. A Nova Metodologia. Disponıvel em:<http://simplus.com.br/artigos/a-nova-metodologia/>. Acesso em: 15 de se-tembro de 2007. Traducao portugues: Luciano Passuello. 2005.

49

Page 50: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

REFERENCIAS BIBLIOGRAFICAS 50

[10] [GON 03] GONZALEZ-BARAHONA, Jesus M. e ROBLES, Gregorio. FreeSoftware Engineering: A Field to Explore. 2003.

[11] [IEE 04] IEEE COMPUTER SOCIETY. Guide to the Software Engi-neering: Body of Knowledge 2004 Version SWEBOK R©. Disponı-vel em <http://www.swebok.org/ironman/pdf/SWEBOK Guide 2004.pdf>.Acesso em: 15 setembro 2007

[12] [KRI 02] KRISHNAMURTHY, Sandeep. Cave or Community? An Em-pirical Examination of 100 Mature Open Source Projects. 2002.

[13] [LDA 08] LDAP–BRASIL. Artigos sobre OpenLDAP. Disponıvel em:<http://www.ldap.org.br>. Acesso em: 19 janeiro 2008.

[14] [MIC 08] MICROSOFT. Guia Passo a Passo paraGerenciar o Active directory. Disponıvel em:<http://www.microsoft.com/brasil/technet/centralwindows/centromigracao/activedirectory/gerenciando.mspx>. Acesso em: 21 janeiro 2008.

[15] [MUL 07] MULGAN, Geoff; STEINBERG, Tom; SALEM, Omar. WideOpen: Open Source Methods and Their Future Potential. DEMOS –2007.

[16] [OPE 08] OPEN SOURCE MATTERS. Joomla!. Disponıvel em:<http://www.joomla.org>. Acesso em: 04 marco 2008.

[17] [OPM 08] OPEN SOURCE MATTERS. JoomlaCode. Disponıvel em:<http://www.joomlacode.org>. Acesso em: 04 marco 2008.

[18] [PAT 08] PARCITTI, Tercio. Paradigmas do Software Aberto. Rio deJaneiro: LTC, 2006.

[19] [PET 08] PETRI IT. LDAP search strings samples. Disponıvel em:<http://www.petri.co.il/ldap search samples for windows 2003 and exchange.htm>.Acesso em: 23 janeiro 2008.

[20] [PSL 06] PSL BRASIL. PSL Brasil. Disponıvel em:<http://www.softwarelivre.org>. Acesso em: 11 marco 2008.

[21] [RAY 98] RAYMOND, Eric S. A Catedral e o Ba-zar. 1998. Traduzido por Erik Kohler. Disponıvel em<http://www.dominiopublico.gov.br/download/texto/tl000001.pdf>. Acessoem: 11 marco 2008.

Page 51: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

REFERENCIAS BIBLIOGRAFICAS 51

[22] [REI 02] REIS, Christian Robottom e FORTES, Renata Pontin de Mattos.An Overview of the Software Engineering Process and Tools in theMozilla Project. 2002.

[23] [REI 03] REIS, Christian Robottom. Caracterizacao de um Processo deSoftware para Projetos de Software Livre. Sao Carlos, SP. 2003. 271pags. Dissertacao (Mestrado em Ciencias da Computacao) – Instituto de Ci-encias Matematicas e de Computacao da Universidade de Sao Paulo.

[24] [SIL 04] SILVEIRA, Sergio Amadeu da. Software Livre: A luta pela li-berdade do conhecimento. Sao Paulo: Editora Fundacao Perseu Abramo,2004.

[25] [SOC 08] SOCIEDADE SOFTEX. Softex. Disponıvel em:<http://www.softex.br>. Acesso em: 11 marco 2008.

[26] [SOF 08] SOFTERRA. LDAP Administrator. Disponıvel em:<http://www.ldapadmin.com>. Acesso em: 24 janeiro 2008.

[27] [SOU 07] SOUZA, Adler Diniz de; ALVEZ, Angela Maria; SILVA, Leandro dePaula; SILVA, Thiago Valeriano Araujo da. Escritorio de Gerenciamentode Projetos Multiplos, Dispersos Geograficamente, no Ambito doPrograma Via Digital. 2007.

[28] [VIA 08] VIA DIGITAL. Gestao de Projetos de Soft-ware Livre: Uma Abordagem de Praticas. Disponivel em:<http://www.viadigital.org.br/docs/Praticas.pdf>. Acesso em: 11 marco2008.

Page 52: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Apendice A

Apendice – joomLDAP:Codigo-Fonte

52

Page 53: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 53

mod jLdap.php

<?php

/**

* joomLDAP: a module for Joomla!

* 2008 Everton R. Silva

*

* http://www.joomlacode.org/gf/project/joomldap/

*

* This program is free software; you can redistribute it and/or

* modify it under the terms of the GNU General Public License

* as published by the Free Software Foundation; either version 2

* of the License, or (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,MA 02110-1301,USA.

*

* @package joomLDAP module

* @author Everton R. Silva <[email protected]>

* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License

* @version 3.0 Beta

*/

$task = strval( strtolower( mosGetParam( $_GET, ’task’ ) ) );

// no direct access

defined( ’_VALID_MOS’ ) or die( ’Restricted access’ );

global $mosConfig_frontend_login;

//verifica se esta autorizado o login de usuarios no site

if ( $mosConfig_frontend_login != NULL && ($mosConfig_frontend_login === 0 ||

$mosConfig_frontend_login === ’0’)) {

Page 54: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 54

return;

}

global $mainframe;

$now = date( ’Y-m-d H:i:s’, time() );

// define a categoria dos ıtens que ser~ao mostrados.

$pretext = ( $params->get( ’pretext’ ) );

$redir_login = ( $params->get( ’redir_login’ ) );

$server_ldap = ( $params->get( ’server_ldap’ ) );

$dominio_rede = ( $params->get( ’dominio_rede’ ) );

$base_DN = ( $params->get( ’base_DN’ ) );

$pasta_restrita = ( $params->get( ’pasta_restrita’ ) );

echo $pretext;

if ($pretext != ’’) {

echo "<br><br>";

}

$validar = $_POST[’validar’];

if ($validar != ’’) {

// include com classe para autenticac~ao

include_once("mod_jLdap_auth.php");

}

?>

<form name="formldap" id=’formldap’

action="<?php echo $_SERVER["REQUEST_URI"] ?>" method=post>

<?php //echo sefRelToAbs( ’index.php’ ); ?>

Nome de Usuario(a):<br>

<input type=’text’ name=’username’ id=’username’ value=""><br>

Senha:<br>

<input type=’password’ name=’password’ id=’password’ value="">

<input type="hidden" name="lang" value="<?php echo $mosConfig_lang;?>"/>

Page 55: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 55

<input type="hidden" name="redireciona" value="<?php echo $redir_login;?>"/>

<input type="hidden" name="server_ldap" value="<?php echo $server_ldap;?>"/>

<input type="hidden" name="dominio_rede" value="<?php echo $dominio_rede;?>"/>

<input type="hidden" name="pasta_restrita" value="<?php echo $pasta_restrita;?>"/>

<input type="hidden" name="base_DN" value="<?php echo $base_DN;?>"/>

<br>

<br>

<input type="submit" name="validar" value="<?php echo _BUTTON_LOGIN; ?>"/>

</form>

<div id=’resultado’ align=center>

<?php

$dominio_rede = "";

?>

</div>

mod jLdap auth.php

<?php

/**

* joomLDAP: a module for Joomla!

* 2008 Everton R. Silva

*

* http://www.joomlacode.org/gf/project/joomldap/

*

* This program is free software; you can redistribute it and/or

* modify it under the terms of the GNU General Public License

* as published by the Free Software Foundation; either version 2

* of the License, or (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

Page 56: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 56

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,MA 02110-1301,USA.

*

* @package joomLDAP module

* @author Everton R. Silva <[email protected]>

* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License

* @version 3.0 Beta

*/

// no direct access

defined( ’_VALID_MOS’ ) or die( ’Restricted access’ );

global $database, $my, $mainframe;

global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db;

if ( $mosConfig_frontend_login != NULL && ($mosConfig_frontend_login === 0 ||

$mosConfig_frontend_login === ’0’)) {

header( "HTTP/1.0 403 Forbidden" );

echo _NOT_AUTH;

return;

}

$menu = $mainframe->get( ’menu’ );

$params = new mosParameters( $menu->params );

$login = trim($_POST[’username’]);

$pass = trim($_POST[’password’]);

if (strlen($login) < 1 || strlen($pass) < 1) {

//echo "Usuario e/ou Senha invalido!";

$login = "vazio";

$pass = "vazio";

}

$redireciona = trim($_POST[’redireciona’]);

Page 57: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 57

$server_ldap = trim($_POST[’server_ldap’]);

$dominio_rede = trim($_POST[’dominio_rede’]);

$pasta_restrita = trim($_POST[’pasta_restrita’]);

$base_DN = trim($_POST[’base_DN’]);

$dominio_rede = stripcslashes($dominio_rede);

$login_shcnet = $dominio_rede.$login;

$login_shcnet = strval($login_shcnet);

$lclasse = new jLdap;

$ld= $lclasse -> auth ($login_shcnet,$pass,$server_ldap,$pasta_restrita,

$dominio_rede,$base_DN);

$lclasse -> permissao($ld,$redireciona);

class jLdap

{

function auth($ad_user,$ad_pass,$servidor_ldap,$pasta_restrita,

$dominio_rede,$base_DN) {

$result = 0;

if (!($ad_connect = ldap_connect($servidor_ldap,389))) {

die("N~ao foi possıvel se conectar com o servidor de Autenticac~ao (AD)<br>");

} else {

$r=@ldap_bind($ad_connect);

$msg = $msg. "Conectado com sucesso, nome da conexao e \"".$ad_connect."\"<br>";

}

if ($bind = @ldap_bind($ad_connect, $ad_user, $ad_pass)) {

//se validar

$msg =$msg . "Usuario autenticado !!!<br>";

$result = 1;

} else {

//se n~ao validar

$msg =$msg . "Usuario ou Senha incorretos!<br>";

$result = 2;

Page 58: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 58

}

if ($result == 1) {

$USER = str_replace($dominio_rede,’’,$ad_user);

// com samAccountName e preciso adicionar a extensao do dominio

// com userPrincipalName e preciso adicionar a extensao do email

//$filter="(|(cn=$USER)(userPrincipalName=$USER))";

//$filter="(|(cn=$USER)(samAccountName=$USER))";

//$filter="(samAccountName=$USER)";

$filter="(&(objectClass=user)(sAMAccountName=$USER))";

$th= ldap_dn2ufn($base_DN);

$justthese = array("name","uid", "member","dn","cn", "memberof","sAMAccountName");

$sr= ldap_search($ad_connect,$base_DN, $filter, $justthese);

$entry = ldap_first_entry($ad_connect, $sr);

$values = ldap_get_values($ad_connect, $entry, "memberof");

$qtd_values = $values["count"] ;

$memberof = "";

for ($i=0; $i < $values["count"]; $i++) {

$memberof = $values[$i];

$per = str_replace($pasta_restrita,’OK_USER_PERMISSION!’,$memberof);

// retorna qtd de ocorrencias da string, o que confirma que

//o usuario tem permissao de acesso a esta pasta do Active Directory (AD)

$enc = substr_count($per,’OK_USER_PERMISSION!’);

Page 59: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 59

if ($enc > 0) {

$permissionaAccepted = 1;

}

$memberof = "";

}

ldap_close($ad_connect);

if ($permissionaAccepted > 0) {

//acesso permitido a pasta

$result = 4;

} else {

// acesso nao permitido a pasta

$result = 3;

}

}

return $result;

} // fim funcao

function permissao ($ld,$redireciona) {

// func~ao que faz a verificacao final de acesso e ...

// redireciona para pagina restrita de documentos.

if (strlen($ld) > 0) {

if ($ld == 2) {

echo "Usuario ou Senha incorretos!<br>";

}

elseif ($ld == 3) {

echo "Acesso n~ao permitido!<br>";

}

elseif ($ld == 4) {

$value = ’OK’;

Page 60: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 60

// cookie para autorizar o acesso ao compomente, expira em 1 hora

$r1 = setcookie("LDAPauth",$value,time()+3600);

//sleep(3);

mosRedirect($redireciona."&cookie=".$r);

}

else {

echo "Tente novamente!<br>";

}

}

} //fim funcao: permissao

} // fim da classe

?>

mod jLdap.xml

<?xml version="1.0" encoding="iso-8859-1"?>

<mosinstall type="module" version="3.0">

<name>joomLDAP</name>

<author>Everton R. Silva</author>

<creationDate>marco 2008</creationDate>

<copyright>(CC) Tconibo.org</copyright>

<license>GNU/GPL</license>

<authorEmail>[email protected]</authorEmail>

<authorUrl>www.tconibo.org</authorUrl>

<version>3</version>

<description>Este modulo exibe um formulario de ’Nome de Usuario’ e

’Senha’. Para que atraves de usuario e senha da rede (Active Directory) o

funcionario possa se autenticar e visualizar relatorios em uma

pasta restrita, previamente configurada no Active Directory e tambem

Page 61: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 61

neste modulo.

E preciso habilitar no arquivo PHP.ini a extens~ao ’php_ldap’

para que este modulo funcione.

O Joomla exige, porem e sempre bom lembrar, que a opcao ’Magic_Quotes_GPC’

esteja habilitada. Esta opc~ao acrescenta uma barra(\) automaticamente

aos caracteres reservados e n~ao pode ser mudada em tempo de execuc~ao.

O domınio de rede geralmente possui uma barra ao final

(Ex: "nomerede\", sem aspas), sendo assim esta variavel e tratada

com a func~ao do PHP, ’stripcslashes’, que retira as barras invertidas

de uma string.

</description>

<files>

<filename module="mod_jLdap">mod_jLdap.xml</filename>

<filename module="mod_jLdap">mod_jLdap.php</filename>

<filename module="mod_jLdap">mod_jLdap_auth.php</filename>

<filename module="mod_jLdap">joomLDAP/LEIAME.txt</filename>

<filename module="mod_jLdap">joomLDAP/ChangeLog.txt</filename>

<filename module="mod_jLdap">joomLDAP/FAQ.txt</filename>

<filename module="mod_jLdap">joomLDAP/TODO.txt</filename>

<filename module="mod_jLdap">joomLDAP/tutorial_pt-br.html</filename>

<filename module="mod_jLdap">joomLDAP/tutorial_es.html</filename>

<filename module="mod_jLdap">joomLDAP/tutorial_eng.html</filename>

<filename module="mod_jLdap">joomLDAP/url_cookie.png</filename>

<filename module="mod_jLdap">joomLDAP/autenticacao.png</filename>

<filename module="mod_jLdap">joomLDAP/codigo_cookie.png</filename>

<filename module="mod_jLdap">joomLDAP/modulo_config.png</filename>

<filename module="mod_jLdap">joomLDAP/relatorios.png</filename>

<filename module="mod_jLdap">joomLDAP/tela_adm_modulo.png</filename>

<filename module="mod_jLdap">joomLDAP/link_menu.png</filename>

</files>

<params>

<param name="pretext" type="textarea" cols="20" rows="5" default=""

label="Pre-texto" description="Este e o texto ou html que e exibido

acima do formulario de login" />

Page 62: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE A. APENDICE – JOOMLDAP: CODIGO-FONTE 62

<param name="server_ldap" type="text" default=""

label="servidor Active Directory (LDAP)" description="IP ou nome do

Servidor LDAP (Active Directory)" />

<param name="dominio_rede" type="text" size="25" default=""

label="Dominio de rede para autenticac~ao LDAP. Ex: ’nomerede\’, sem aspas." />

<param name="base_DN" type="text" size="30" default=""

label="Base DN do servidor de Active Directory com o qual se quer conectar.

Ex: DC=nomerede,DC=com,DC=br" />

<param name="pasta_restrita" type="text" size="30" default=""

label="Nome da pasta restrita, dentro do Active Directory que sera compartilhada

somente aos usuarios que fazem parte da mesma. Ex: GrupoRestritoJoomla" />

<param name="redir_login" type="text" size="60" default=""

label="URL de Redirecionamento do Login. Pagina intermediaria para onde

o usuario sera enviado apos autenticar-se, desta pagina deve-se criar

um link para o componente restrito (ex: DOCMAN)"

description="Para que pagina redirecionara apos efetuar autenticac~ao,

se deixado em branco sera carregada a pagina principal" />

<param name="logout" type="text" size="60" default="index.php"

label="URL de Redirecionamento do Logout. Pagina de logout ou de

redirecionamento a tentativa de acesso indevido ao componente restrito."

description="Que pagina o logout redirecionara apos efetuar logout,

se deixado em branco sera carregada a pagina principal" />

</params>

</mosinstall>

Page 63: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

Apendice B

Apendice – Migracao Joomla eInstalacao WAMP

63

Page 64: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP64

Migracao do Joomla CMS e instalacao do WAMP-

Server em Windows Server 2003

Este artigo descreve como migrar um sistema web desenvolvido em Joomla CMS1.0.15 e instalar o WAMPServer 2.0b em um servidor Windows Server 2003. Ofoco do artigo e a migracao e instalacao no novo servidor, portanto o sistemaanterior de onde esta sendo migrado pode ser uma versao de Linux ou Windowsque suporte a versao 2.0b do WAMPServer e 1.0.15 do Joomla.

Instalando o WAMPServer (Windows + Apache + MySQL+ PHP)

Figura B.1: Windows Server 2003

O WAMPServer e uma solucao de software WAMP (Windows + Apache +MySQL + PHP) que inclui:

• Apache 2.2.8

• MySQL 5.0.51a

• PHP 5.2.5

Sua versao atual e a 2.0b. E preciso desinstalar qualquer versao anterior doApache, MySQL ou PHP caso estejam instalados na maquina. A instalacao doWAMPServer e tıpica, exigindo apenas cliques de confirmacao. Feito isso vocevera o menu abaixo.

Configurando o WAMPServer

Apache 2.2.8

No menu do WAMPServer (Figura B.3) clique no item Apache > httpd.conf. Oarquivo httpd.conf sera aberto no Bloco de Notas. Altere as linhas necessarias deconfiguracao no httpd.conf, abaixo:

Page 65: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP65

Figura B.2: Menu de utilizacao do WAMPServer

– “Listen ...“ Nesta linha coloque “Listen 8080“. Assim o Apache funcionara naporta 8080. Voce pode colocar nesta linha outra porta qualquer caso desejar.

Figura B.3: Alterando o parametro Listen no arquivo httpd.conf do Apache

– “Servername ...“ Nesta linha coloque “ServerName localhost:8080“. Estamosusando a porta 8080 porque o IIS do Windows 2003 Server usa a porta 80. Vocetambem pode configurar esta linha como, Ex: “ServerName nomeservidor:8080“ou “ServerName 10.0.0.1:8080“.

– “DocumentRoot ...“ Nesta linha coloque ”DocumentRoot “D:/wamp/www/“.Voce pode mover o diretorio “www“ do WAMPServer para onde desejar, inclusivefugindo do padrao em que ele e instalado, caso precise de mais seguranca. Ex:“DocumentRoot “E:/web/wamp/www/“.

Page 66: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP66

Figura B.4: Alterando o parametro ServerName no arquivo httpd.conf do Apache

Figura B.5: Alterando o parametro DocumentRoot no arquivo httpd.conf do Apa-che

PHP 5.2.5

Ainda no menu do WAMPServer clique no item PHP > PHP settings, e verifiquese as configuracoes do PHP, exigidas pelo Joomla, estao selecionadas corretamenteconforme abaixo:

• Short Open Tag: Ligado

• Safe Mode: Desligado

• Display Erros: Ligado

• File Uploads: Ligado

• Magic Quotes GPC: Ligado

• Magic Quotes Runtime: Desligado

Page 67: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP67

• Register Globals: Desligado

• Output Buffering: Desligado

• Session Auto Start: Desligado

As opcoes acima, configuradas no PHP.ini, possuem uma explicacao detalhadade seus significados dentro do proprio arquivo PHP.ini, texto ’em comentarios’(texto comentado esta apos o caractere “;“ ponto e vırgula).

Agora clique no item PHP > PHP extensions:

– Selecione as extensoes que serao usadas: LDAP, ODBC, MySQL, etc. Ge-ralmente as extensoes a serem habilitadas vao depender das caracterısticas do seusistema. Se ao final deste passo a passo voce fizer tudo certo e der erro verifi-que se nao esqueceu de habilitar alguma extensao ou entao deixou habilitada umaextensao que entra em conflito com outra.

Figura B.6: Menu de utilizacao do WAMPServer, PHP > PHP extensions

A cada vez que voce habilitar/alterar um item no “PHP settings“ ou ’PHPextensions’ sera necessario reiniciar o WAMPServer para que ele possa reconheceras mudancas. Faca isto clicando uma vez no icone do WAMPServer > Restart AllServices.

Page 68: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP68

MySQL 5.0.51a

O proximo passo e trocar a senha do banco de dados MySQL porque na instalacaopadrao, via WAMPServer, o usuario administrador do MySQL e ’root’, sem senha(vazio). O WAMPServer instala automaticamente o phpMyAdmin, que e umsistema GPL desenvolvido em PHP pela comunidade de software livre, que fazo gerenciamento via web do banco de dados MySQL. O WAMPServer tambeminstala automaticamente o SQLiteManager, que faz o gerenciamento web do bancode dados SQLite, porem nao iremos tratar disto neste artigo.

Figura B.7: Pagina inicial, apos autenticacao, do phpMyAdmin

Acesse da maquina servidor com seu navegador a URL http://localhost:8080/phpmyadmin/, o phpMyAdmin ira fazer o acesso diretamente, sem solicitar lo-gin/senha. Se voce tentar acessar de algum navegador de fora desta maquina oacesso sera negado, retornando uma pagina de erro. Corrigir isso sera o proximopasso, vamos incluir primeiro a senha de root ao MySQL para que nao fique vazia(padrao da instalacao).

Na Home do phpMyAdmin clicar em“Privilegios“ (lado direito abaixo, na tela).

Page 69: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP69

Apos clicar voce vera somente o usuario “root“ para acesso ao MySQL. Clicar noicone “Editar privilegios“. Ao mudar a senha voce perdera o acesso ao MySQLatraves do phpMyAdmin pois voce estava conectado com este usuario e acaboude alterar a senha do mesmo (de vazio para outra qualquer mais segura). Bastaacessar novamente a URL http://localhost:8080/phpmyadmin/ e digitar usuarioroot com a nova senha.

A instalacao padrao do phpMyAdmin nao permite acesso remoto via web, ainstalacao padrao so permite o acesso web da maquina onde foi feita a instalacao,no caso a maquina servidora. Aproveite entao para habilitar a autenticacao remota,editando o “config.inc.php“ no diretorio de instalacao do phpMyAdmin. Edite asseguintes linhas:

$cfg[´Servers´][´auth_type´]=´cookie´;

$cfg[´blowfish_secret´]=´palavraqualquer´;

O arquivo “config.inc.php“ fica em “D:/wamp/apps/phpmyadmin2.10.1/“.

Figura B.8: Localizacao do arquivo config.inc.php do phpMyAdmin

Figura B.9: Parametros a editar do arquivo config.inc.php

Page 70: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP70

Figura B.10: Outro parametro a editar do arquivo config.inc.php

Nao altere as linhas abaixo:

$cfg[’Servers’][$i][’user’] = ’root’;

$cfg[’Servers’][$i][’password’]= ’’;

Altere as linhas acima somente se desejar fazer com que o phpMyAdmin facaacesso direto sem exigir a solicitacao de login e senha. Porem isto e bastanteperigoso pois o acesso ao banco de dados estara liberado para qualquer um quesaiba ou descubra a URL do phpMyAdmin.

O ultimo passo para disponibilizar o acesso remoto web ao phpMyAdmin eeditar o arquivo “phpmyadmin.conf“ em “D:/wamp/alias/“. Abra o arquivo e sigaas orientacoes que estao “em comentarios“ (texto comentado esta apos o caractere#) no proprio arquivo. Faca conforme a Figura B.11.

Page 71: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP71

Figura B.11: Alteracoes no arquivo phpmyadmin.conf

Troque as linhas:

Order Deny,Allow

Deny from all

Allow from 127.0.0.1

Por:

Order Allow,Deny

Allow from all

Com esta ultima mudanca o phpMyAdmin podera ser acessado de uma ma-quina qualquer na rede ou de uma maquina da internet.

Para funcionar nao se esqueca de reiniciar o WAMPServer.

Page 72: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP72

Migrando o Joomla CMS

A segunda parte do trabalho e migrar o sistema desenvolvido em Joomla!, crieo diretorio do “projeto web“ abaixo de “D:/wamp/www“ no novo servidor e copiepara este novo diretorio todos os arquivos do projeto que esta sendo migrado. Estesarquivos referem-se aos arquivos do sistema que foi desenvolvido em Joomla!

Apos o passo incial, acima, siga os passos abaixo:

– No servidor antigo exporte o banco de dados do projeto desenvolvido com oJoomla!, exporte por exemplo para um arquivo de nome “banco dados.sql“.

– No servidor novo, para onde o sistema vai migrar e foi instalado o WAMP-Server, acesse o phpMyAdmin e crie o database/banco de dados com o mesmonome.

Figura B.12: Base de dados MySQL com o phpMyAdmin

Importando os dados

Ainda no phpMyAdmin clique no menu a esquerda, selecione o nome do banco dedados criado para a migracao de dados (mesmo nome que no servidor antigo) e facaa importacao do “banco dados.sql“ usando a opcao “Importar“ do phpMyAdmin.Voce pode encontrar problemas ao exportar e importar dados para o MySQLpor isso use o mesmo modo de compatibilidade em “Opcoes SQL“ > “Modo de

Page 73: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP73

compatibilidade SQL“, tanto para exportar quanto para importar. O modo decompatibilidade “MYSQL40“ e bastante utilizado. Caso o tamanho do arquivoSQL para importar seja muito grande divida-o em 2 ou 3 arquivos e importe uma um.

Figura B.13: Importando dados MySQL com o phpMyAdmin

Page 74: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP74

Reconfigurando o Joomla

Com isso feito, o projeto desenvolvido em Joomla! vai precisar somente que vocefaca a configuracao manual do arquivo “configuration.php“. Encontre este arquivoem “D:/wamp/www/projeto web/configuration.php“, sendo “projeto web“ o dire-torio que voce criou ao migrar o sistema projeto web para o novo servidor. Naoentrarei nos detalhes da configuracao deste arquivo pois entendo que a pessoa queesta fazendo a migracao ja o saiba. Basicamente sera necessario alterar o nomedo servidor, diretorio do projeto, nome do banco de dados (espero que voce tenhadeixado o mesmo), login/senha do banco de dados e URL do site.

Figura B.14: configuration.php, arquivo de configuracao do Joomla!

Para testar acesse a URL http://servidor:8080/ projeto web/ ou http://localhost:8080/projeto web/.

Impondo o limite de upload para importacao de dados

O phpMyAdmin, por padrao, so permite importar arquivo com no maximo 2 mb, oque significa que voce precisara dividir o arquivo de “BancoImportado.sql“ caso eleseja maior que 2 mb. Ha duas solucoes que conheco, porem podem haver outras,a primeira e:

– Copie o arquivo “BancoImportado.sql“ para o subdiretorio “/bin“ de ondeesta instalado o MySQL e abra o prompt de comando tambem neste mesmo sub-diretorio, entao digite:

mysql --uUsuario --pPassword --Dnomedatabase < BancoImportado.sql

Podera ocorrer variacoes no codigo anterior dependendo de como o seu MySQLfoi instalado.

Page 75: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP75

Figura B.15: Prompt com comando para importar dados para o MySQL

−u,−p, e −D sao parametros do MySQL, respectivamente para usuario, pas-sword e Database.

A segunda solucao e importar pelo proprio phpMyAdmin, conforme ja expli-cado. Porem, a dica e vencer o limite de 2 mb por arquivo para upload. Paraisso mude a seguinte linha no arquivo PHP.ini: “upload max filesize=2m“ para“upload max filesize=8m“. Desta forma o phpMyAdmin permitira um upload (im-portacao) de arquivos SQL com ate 8 mb!

Figura B.16: Linha para alterar no arquivo php.ini

Page 76: DESENVOLVIMENTO DO JOOMLA CMS (GPL): VISAO DA … · System) Joomla, assim como demonstrar o processo de desenvolvimento de um m¶odulo para este CMS, que sur-giu a partir de uma

APENDICE B. APENDICE – MIGRACAO JOOMLA E INSTALACAO WAMP76

Figura B.17: phpMyAdmin apos alteracao feita

Bom, com isso finalizamos este artigo, que nos mostrou como instalar o WAMP-Server, migrar o Joomla CMS e configura-los em um servidor Windows Server 2003.