88 lines
4.3 KiB
PHP
88 lines
4.3 KiB
PHP
<?php
|
|
require_once($prefix.'assets/php/form.php');
|
|
|
|
class FormContact extends Form {
|
|
//Constants:
|
|
const HTML5_EMAIL_REGEXP = '^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$';
|
|
|
|
public function __construct() {
|
|
$options = array("action" => "");
|
|
parent::__construct('formContact', $options);
|
|
}
|
|
|
|
protected function generaCamposFormulario($datos, $errores = array()) {
|
|
|
|
// Se generan los mensajes de error si existen.
|
|
$htmlErroresGlobales = self::generaListaErroresGlobales($errores);
|
|
$errorNombre = self::createMensajeError($errores, 'name', 'span', array('class' => 'error'));
|
|
$errorEmail = self::createMensajeError($errores, 'email', 'span', array('class' => 'error'));
|
|
$errorMessage = self::createMensajeError($errores, 'message', 'span', array('class' => 'error'));
|
|
|
|
// Se genera el HTML asociado a los campos del formulario y los mensajes de error.
|
|
$html = "<div class='row'>
|
|
<fieldset id='datos_personales'>
|
|
<legend>Datos personales</legend><pre>".$htmlErroresGlobales."</pre>
|
|
<div class='_name'>
|
|
<input type='text' name='name' id='name' value='' placeholder='Nombre' required/><pre>".$errorNombre."</pre>
|
|
</div>
|
|
<div class='_email'>
|
|
<input type='email' name='email' id='email' value='' placeholder='Email' required/><pre>".$errorEmail."</pre>
|
|
</div>
|
|
</fieldset>
|
|
<fieldset id='motivo'>
|
|
<legend>Motivo de la consulta</legend>
|
|
<div class='reason'>
|
|
<input type='radio' id='radio' name='reason' value='evaluation' checked>
|
|
<label for='evaluation'>Evaluación</label>
|
|
</div>
|
|
<div class='reason'>
|
|
<input type='radio' id='radio' name='reason' value='sugestions'>
|
|
<label for='sugestions'>Sugerencias</label>
|
|
</div>
|
|
<div class='reason'>
|
|
<input type='radio' id='radio' name='reason' value='critics'>
|
|
<label for='critics'>Críticas</label>
|
|
</div>
|
|
</fieldset>
|
|
<div class='message'><pre>".$errorMessage."</pre>
|
|
<textarea name='message' id='message' placeholder='Escribe aquí tu mensaje...'></textarea>
|
|
</div>
|
|
<div class='verify'>
|
|
<input type='checkbox' id='checkbox' name='terms' required>
|
|
<label for='terms'>Marque esta casilla para verificar que ha leído nuestros términos y condiciones del servicio.</label>
|
|
</div>
|
|
<div class='actions'>
|
|
<input type='submit' id='submit' value='Enviar mensaje' class='primary' />
|
|
<input type='reset' id='reset' value='Borrar' />
|
|
</div>
|
|
</div>";
|
|
|
|
return $html;
|
|
}
|
|
|
|
|
|
protected function procesaFormulario($datos) {
|
|
$result = array();
|
|
|
|
$nombre = $this->test_input($datos['name']) ?? null;
|
|
if ( empty($nombre) || mb_strlen($nombre) < 3 || mb_strlen($nombre) > 8 ) {
|
|
$result['name'] = "El nombre tiene que tener\n una longitud de más de\n 3 caracteres\n y menos de 8 caracteres.";
|
|
}
|
|
|
|
$email = $this->test_input($datos['email']) ?? null;
|
|
if ( empty($email) || !mb_ereg_match(self::HTML5_EMAIL_REGEXP, $email) ) {
|
|
$result['email'] = "El email no es válido.";
|
|
}
|
|
|
|
$message = $this->test_input($datos['message']) ?? null;
|
|
if ( empty($message) || mb_strlen($message) < 1 || mb_strlen($message) > 250 ) {
|
|
$result['message'] = "El mensaje no puede estar vacío\ny no puede contener más de\n250 caracteres.";
|
|
}
|
|
|
|
if (count($result) === 0) {
|
|
$result = ROUTE_APP; // DE MOMENTO, NO HACE NADA :)
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
} |