# SpCultura
Repositório para o deploy do SpCultura

## Estrutura de arquivos
- **compose**
    - **common** - arquivos comuns dos ambientes de desenvolvimento e produção
    - **local** - arquivos exclusivamente para o ambiente de desenvolvimento
    - **production** - arquivos exclusivamente para o ambiente de produção
- **dev-scripts** - scripts auxiliares para o desenvolvimento
    - **start-dev.sh** - script que inicializa o ambiente de desenvolvimento
    - **bash.sh** - entra no container da aplicação
    - **shell.sh** - entra no shell do mapas culturais
    - **psql.sh** - entra no banco de dados da aplicação
    - **docker-compose.local.yml** - arquivo de definição do docker-compose utilizado pelos scripts acima
- **plugins** - pasta com os plugins desenvolvidos exclusivamente para o projeto
    - **AldirBlanc** - plugin que implementa os formulários de cadastro do inciso I e II da Lei Aldir Blanc
- **themes** - pasta com os temas desenvolvidos exclusivaente para o projeto
    - **SampleTheme** - esqueleto de tema filho do BaseV1 para demostração e para servir de base para o desenvolvimento de outros temas

## Guia rápido para início de novo projeto
Antes de tudo certifique-se de ter os pacotes _git_, _docker_ e _docker-compose_ instalados e estar utilizando sistema operacional Linux ou MacOS. 

_Nos exemplos é usado o comando sudo para que os scripts tenham os privilégios requeridos pelo docker._

### Criando repositório do projeto
Crie um repositório vazio no github ou gitlab (usarei de exemplo o nome _https://github.com/organizacao/meu-mapas_)

Clone o repositório do projeto base no seu computador
```
$ git clone https://github.com/mapasculturais/mapasculturais-aldirblanc.git meu-mapas --recursive 
$ cd meu-mapas
```

Substitua a url do remote origin para a url de seu repositório
```
meu-mapas/$ git remote set-url origin https://github.com/organizacao/meu-mapas

# ou, se você tiver sua chave no github
meu-mapas/$ git remote set-url origin git@github.com:organizacao/meu-mapas

```

Dê git push no repositório para enviar a versão inicial para seu repositório vazio.
```
meu-mapas/$ git push
To github.com:organizacao/meu-mapas
 * [new branch]      master -> master

```

### Ambiente de desenvolvimento

#### Iniciando o ambiente de desenvolvimento
Para subir o ambiente de desenvolvimento basta entrar na pasta `dev-scripts` e rodar o script `start-dev.sh`.

```
meu-mapas/dev-scripts/$ sudo ./start-dev.sh
```

acesse no seu navegador http://localhost:8080/

#### psysh
Este ambiente roda com o built-in web server do PHP, o que possibilita que seja utilizado o [PsySH](https://psysh.org/]), um console interativo para debug e desenvolvimento. 

no lugar desejado, adicione a linha `eval(\psy\sh());` e você obterá um console. `Ctrl + D` para continuar a execução do código.

#### Parando o ambiente de desenvolvimento
Para parar o ambiente de desenvolvimento usar as teclas `Ctrl + C`

## Usuário super administrador da rede
O banco de dados inicial inclui um usuário de role `saasSuperAdmin` de **id** `1` e **email** `Admin@local`.
Este usuário possui permissão de criar, modificar e deletar qualquer objeto do banco.

- **email**: `Admin@local`
- **senha**: `mapas123`

## Criando um novo tema
Usaremos para exemplo o nome de tema `NovoTema`

1. copie a pasta `themes/SampleTheme` para `themes/NovoTema`;
```
meu-mapas/themes$ cp -a SamplesTheme NovoTema
```
2. edite o arquivo `dev-scripts/docker-compose.yml` adicionando uma linha na seção _volumes_ para o tema:
```
    - ../themes/NovoTema:/var/www/html/protected/application/themes/NovoTema
```
3. edite o arquivo `themes/NovoTema/Theme.php` e substitua o namespace (linha 2) por `NovoTema`:
```+PHP
<?php
namespace NovoTema;
```


## Deployment para produção
@todo

### Configurações
@todo

### Inicializando os serviços
@todo
```
meu-mapas$ sudo docker-compose -f docker-compose.prod.yml up
```

### Atualizando o Mapas Culturais
Modifique a versão do Mapas Culturais no início do arquivo `compose/production/Dockerfile` e execute os comandos abaixo:
```
meu-mapas$ sudo docker-compose -f docker-compose.prod.yml build
meu-mapas$ sudo docker-compose -f docker-compose.prod.yml restart mapasculturais
```

### TLS / HTTPS
@todo

#### Let`s Encrypt
@todo