Aguarde, carregando...

Crie um instalador de estrutura do banco de dados para o seu CMS utilizando PHP e AJAX

Crie um instalador de estrutura do banco de dados para o seu CMS utilizando PHP e AJAX
Raphael Terre'
Por: Raphael Terre'
Dia 06/02/2019 17h31

Se você tem um CMS próprio onde disponibiliza a instalação para seus clientes, você tem que assistir essa aula onde te mostro como criar um form wizard de instalação

Salve salve moquerido! Tudo certo? Bora ver como desenvolver um installer para nosso CMS?

Esse recurso já existe a muito tempo no wordpress, que é um dos CMS mais utilizado no mundo... E provavelmente, durante a sua carreira de desenvolvedor você já deve ter instalado ao menos uma vez o WP em um host.

O que vamos criar nessa aula do Play é basicamente ele formulário inicial de conexão com o banco de dados e criação do usuário administrador.

É claro que para a aula ficar mais enxuta, eu fiz somente esses dois passos, mas você pode colocar quantas informações forem necessárias. Você pode seguir esse step by step solicitando diversas informações como:

  • Timezona que a aplicação deve responder
  • Servidor de e-mail
  • Geração de logs
  • Parametrização de ferramentas externas (autenticação do active campaing, e-mail do pagseguro...)
  • Google Analytics
  • Pixel do Facebook

As possibilidades são inumeras :)

Aplicação Install

Basicamente a aplicação consiste em um diretório com o nome install dentro da aplicação. É claro que você pode dar qualquer outro nome para sistema, o importante é não deixar isso público!

No decorrer das aulas, você vai ver que dentro dele temos um arquivo chamado dump.sql, e ele tem toda a estrutura do banco de dados! Não é legal alguém por a mão nesse arquivo e entender a sua modelagem.

Sem muitas firulas, basicamente temos um css para estilizar os nossos componentes e dar uma inteface mais amigável para quem está fazendo a instalação.

Há também um javascript responsável por monitorar o nosso html e capturar o evento de submit dos forms e disparar a ação para o controlador. É claro que essa ação não seria necessária! Mas dessa forma, em nenhum momento temos o reload da página! Fica bem legal a interação, tratamento de erros e a dinamica das divs.

O controller por sua vez, está monitorando duas ações! Uma de conexão com o banco de dados e outra para a criação do usuário na base... Se você for implementar mais recursos, obviamente que você vai adicionar novos case's :)

O index tem a marcação do HTML como de praxe! Sem segredo.

Material de Apoio

Como sempre o link para o nosso repositório vai estar aqui abaixo.

No diretório _initial, tem o que é preciso para você seguir durante as aulas comigo! Basicamente temos esse material inicial só por conta da marcação do html e o css.

Para acessar nosso repo, é só clicar aqui e te levo pra lá agora :)

Criação da estrutura do banco de dados

Informação importante aqui... O banco de dados já deve estar previamente criado! Isso quer dizer que seja no seu localhost ou no servidor, você deve acessar o seu aplicativo de SGDB ou o phpMyAdmin e fazer a criação do banco. Isso é necessário para que as permissões sejam concedidas.

Até poderiamos criar o banco de dados via código, mas o ideal é fazer isso a partir do cpanel, ou de dentro do próprio banco para evitar conflitos de permissões.

No nosso caso temos dois bancos de dados:

play_installer_base

Vai servir como origem da nossa estrutura! Então é aqui que temos que ter a modelagem da nossa aplicação, todas as tabelas, campos, chaves extrangeiras, views, triggers, functions... Tudo.

play_installer

É o banco que estamos simulando a instalação do nosso sistema. Por sua vez, deverá ter exatamente a mesma estrutura do _base!

AJAX

Você pode imaginar que o tempo de execução desses scripts pode demorar um tempo que não seja hábil para ter o retorno. Mas utilizamos algumas técnicas bem legais para fazer todas as requisições com o file_get_contents e file_put_contents.

Quando chamamos o dump.sql com o file_get_contents, temos todo o conteúdo que deve ser executado no banco de dados. Portanto você manda todos os comandos de uma vez só e não precisa ficar fazendo diversas requisições.

Isso sem contar que estamos usando o try/catch, portanto, qualquer excessão que seja lançada a gente consegue tratar :)

O file_put_contents usamos para criar o arquivo de conexão com o banco.

Como toda essa execução é feita bem rápida, não precisamos nos preocupar com o tempo. O nosso ajax dá conta!

Feedback

Se você curtiu esse conteúdo e vai desenvolver o seu instalador, comenta aqui abaixo para eu saber que você está usando esse recurso no seu CMS.

Veja também:

Confira mais artigos relacionados e obtenha ainda mais dicas de controle para suas contas.