TechMeetupUY/landing2014 — pull request #32 by iambrosi (2014-10-24 12:46:54+00:00)
Title: Nuevo formulario para workshops

Se agrega formulario de registro a workshops, solicitando nombre, email y selección de un máximo de 3 workshops.

Entre las validaciones que se realizan al registrarse, se verifica que el email del usuario se encuentre en la lista de registrados a la conferencia(por medio de la api de Eventbrite), y se evita que el mismo usuario se registre 2 veces.

### Requisitos de este PR

#### Base de datos

Se debe crear una tabla workshops con el siguiente _CREATE_:

```sql
CREATE TABLE `workshops` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL DEFAULT '' COMMENT 'Nombre del registro',
`email` varchar(100) NOT NULL DEFAULT '' COMMENT 'Email del registro, existenente en Eventbrite',
`workshops` varchar(100) NOT NULL DEFAULT '' COMMENT 'Lista de workhops separada por coma',
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
```

También se debe crear un usuario que pueda acceder a esa tabla desde la web:

```sql
GRANT SELECT, INSERT ON database.workshops TO 'usuario'@'localhost' IDENTIFIED BY 'password'
```

#### Archivo de configuración

Se necesita un archivo de configuración con los datos de conexión a la base de datos y de acceso a la API de Eventbrite. Hay un [archivo de ejemplo](https://github.com/TechMeetupUY/landing2014/blob/1fa90059956069cf4b6be0a13bb24bf869fb76bc/src/frontend/config.php.sample) incluido en el PR.

### Cambios sobre lo actual

Existe un cambio en el código que no afecta el funcionamiento, pero tal vez les llame la atención. El archivo php de _workshops_ ahora retorna un array en lugar de definirlo en la variable `$workshops`. Esto mejora la reusabilidad de esta configuración.

Antes

```php
include('workshops.php');

var_export($workshops);
```

Después

```php
$workshops = include('workshops.php');

var_export($workshops);
```

También se agregó la propiedad `key` al array de workshops, que funciona como identificador y es el valor que se va a guardar en la bd en el momento del registro.

Comentarios?

### A considerar

En la base de datos, la selección de workshops se guarda como una simple lista separada por comas.

Ejemplo
```
+----+--------+-----------------------+-------------------------------------+
| id | nombre | email | workshops |
+----+--------+-----------------------+-------------------------------------+
| 2 | Ismael | ismaambrosi@gmail.com | mobile_testing, nodejs, dev_toolbox |
+----+--------+-----------------------+-------------------------------------+
```

Está bien que sea así? Se precisa algo más elaborado?