Parte 2 - Criando o componente (Front-end)
Uma tradicional aplicação web que irá fornecer um excelente exemplo da criação de um componente é um livro de visitas. Livros de visitas são extensões que permitem aos usuários postar comentários, que podem ser visualizados por outros visitantes do site. A maior parte das vezes, as inscrições no livro de visitas são elogios para a pessoa que executa o sistema. Eles também podem ser sugestões para melhoria ou (esperemos que raramente) críticas.
Neste caso, você aprenderá como criar um livro de visitas que apresenta tanto um formulário no front-end para inserção de dados, bem como uma parte administrativa para a edição dos comentários existentes. A maioria dos componentes possui a característica de fornecer uma interface de usuário no front-end e uma interface de administração no backend.
Vamos começar a criar o projeto Livro de visitas (guestbook) no Eclipse. Crie um novo projeto, selecionando o arquivo -> novo -> php projeto. Quando o assistente pedir um nome, para o projeto defina-o como com_guestbook, como mostra a figura abaixo:
Figura 1 - Criando o projeto

Figura 2 - O ambiente de desenvolvimento
Protegendo o livro de visitas contra spam
O spam é um problema comum em livros de visitas. Spammers utilizam rotinas automatizadas para localizar web sites que possuem livros de visitas e postar links de spam que levam para seus sites. Estas duas funções servem para o spammer: "o gerador de tráfego se os visitantes clicam no link do livro de visitas e o aumento dao ranking da página nos motores de busca, devido a referência do link."
Visando evitar os spammers somente usuários registrados poderão postar no nosso livro de visitas e utilizaremos uma expressão regular para controlar os caracteres, que permitem a ativação do HTML (incluindo os links) para ser exibido no texto da entrada.
No entanto, se você pretende que usuários não registrados possam postar mensagens é importante implementar uma rotina CAPTCHA . O CAPTCHA irá exibir uma série de números e letras distorcidos dentro de uma imagem gráfica e, em seguida, solicitar ao usuário que digite os caracteres em um campo texto para confirmação. Programas de Spam não podem decifrar as letras apresentadas, por isso não lhes é possível postar a mensagem.
Existem muitas rotinas para gerar um CAPTCHA . Basta ir ao
google e digitar CAPTCHA PHP. Você vai encontrar muitas versões de exemplo de código. Uma rotina livre em PHP está disponível no website:
www.cryptographp.com
O front-end do componente Livro de visitas O front-end do componente é a exibição do componente para postar mensagens. Lembro que um componente é muito mais avançado do que um módulo. Uma série de extensões (como os componentes de enquete) utilizam um módulo para fornecer uma interface de front-end, no entanto, os módulos podem limitar as ações especialmente se você pretende permitir a modificação interativa de dados.
No caso deste componente de livro de visitas, a apresentação não só irá mostrar todas as mensagens atuais, como irá permitir a postagem de novas mensagens. O componente deverá ser acessado por um item de menu no front-end.
À medida que você construa o código, pode-se notar que todas as variáveis que são aceitas (quer seja a partir de parâmetros de consulta ou variável string postada por um usuário) são obtidas através do método getVar (), e não apenas através de chamadas tradicionais do PHP. A rotina getVar fornece valiosos recursos de segurança através do exame dos valores apresentados pelo usuário. Ataques de Hackers do tipo sql injection são automaticamente detectados e removidos. Certifique-se de utilizar essa rotina para aproveitar aio máximo as implementações de segurança incorporadas ao framework do joomla.
Criando o front-end do componente Vamos começar a codificação para o projeto através da criação do front-end do componente. Este componente será exibido para os usuários registrados e apresentará todas as entradas atuais do livro de visitas. Também irá permitir que o usuário digite uma nova mensagem e possa envá-la. Para ser pblicada, a mensagem deverá ser aprovada por um usuário com acesso ao backend.
O componente possui duas funções: addEntry () e displayGuestbook ().
A função addEntry será executada quando o usuário entrar no formulário do livro de visitas e postar um novo comentários.
A função displayGuestbook consultas a banco de dados e exibe todas as entradas que se encontram na tabela guestbook. Na sequência das entradas, a função displayGuestbook inclui um formulário que permite ao utilizador fazer uma nova inscrição.
Note que a consulta ao banco de dados usa a instrução # __guestbook para fazer referência ao nome da tabela. Normalmente, a tabela é nomeada com o prefixo jos_ e teremos então, a tabela jos_guestbook se você tiver instalado o joomla sem alterar o padrão de prefixo para tabelas. Se o prefixo foi alterado, no entanto, o objeto do banco de dados irá substituir o atual prefixo para (#_)guestbook.
A tabela guestbook não terá sido criada na primeira vez que o componente é exibido. Só após a primeira mensagem enviada pelo usuário e execução da função addEntry() que irá checar se a tabela existe no servidor. Embora a rotina de criação de tabela é executada a cada vez contra o SGBD MySql , se a tabela já existe no servidor, a execução do comando de criação da tabela é abortado.
Para criar o arquivo do componente, clique com o botão direito na janela do navegador sobre o eclipse e selecione novo projeto -> opção arquivo php. Defina o nome do arquivo como guestbook.php. Na janela a esquerda, clique em guestbook.php e digite as linhas de código, apertando ctrl+s para salvar.
Figura 3 - o script guestbook.php
Artigo traduzido e adaptado por Júlio Coutinho. O original, está publicado no capítulo 6 do livro Professional Joomla - Programador para Programador, de Dan Rahmel.