static function consulta($usuarios)
    {
        $ruta = DIR_RAIZ_APP . INDEX;
        // recibe una lista de avisos de errores en la lógica de negocio en formato csv (con #)
        // la conviete a array y la "pinta"
        $contenido = <<<CONT
\t<h1>Busqueda de Usuarios</h1>
\t
<form name='fConsulta' method='get' action='{$ruta}usuario/listadoUsuariosAdmin'>
  <fieldset>
    <legend>Datos de Busqueda</legend>
    <label for="apellidos">Nombre</label> <input type="text" name="nombre" value="" size="30" maxlength="30">
    <label for="apellidos">Apellidos</label> <input type="text" name="apellidos" value="" size="50" maxlength="50">
    <br />
    <label for="fechaNacimiento">Fecha nacimiento (aaaa-mm-dd)</label> 
\t<input type="text" name="fechaNacimiento" value="" size="10" maxlength="10" />
\t
    <br />
CONT;
        $contenido .= Scriptlets::generaBotonesRadio('sexo', $generos, '');
        $contenido .= <<<CONT
  </fieldset>
  <input type="submit" value="Buscar" />
  <input type="reset" value="Resetear el formulario" />
</form>
<script>document.getElementById("usuario").focus();</script>
CONT;
        $contenido .= "\n\t\t\t\t\t  <fieldset>\n\t\t\t\t\t  <legend>Listado de Usuarios</legend>\n\t\t\t\t\t  <table border='1' cellpadding='5' cellspacing='3'>\n\t\t\t\t\t  <tr>\n\t\t\t\t\t\t<th>Usuario</th>\n\t\t\t\t\t\t<th>Visitas</th>\n\t\t\t\t\t\t<th>Apellidos</th>\n\t\t\t\t\t\t<th>Nombre</th>\t\n\t\t\t\t\t\t<th>F. Nacimiento</th>\n\t\t\t\t\t\t<th>Sexo</th>\n\t\t\t\t\t\t<th>Tipo</th>\n\t\t\t\t\t\t<th>Funcionalidades</th>\n\t\t\t\t\t  </tr>\n\t\t\t\t\t";
        $ruta = DIR_RAIZ_APP . INDEX;
        foreach ($usuarios as $unUsuario) {
            $contenido .= "\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveUsuario()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveVisitas()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveApellidos()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveNombre()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveFechaNacimiento()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveSexo()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveAdministrador()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveBloqueo()}</td>\n\t\t\t\t\t\t</tr>";
        }
        $contenido .= "\n\t\t\t\t\t  </table>\n\t\t\t\t\t  </fieldset>\n\t\t\t\t\t  <br />";
        return $contenido;
    }
    static function modifica($request, $avisos, $funcionalidad)
    {
        require_once 'libs/datos.php';
        require_once 'libs/Scriptlets.php';
        if ($funcionalidad == 'alta') {
            $titulo = "Alta de usuario";
            $accion = "usuario/alta_post";
        } elseif ($funcionalidad == 'modifica') {
            $titulo = "Modificación de usuario";
            $accion = "usuario/modifica_post";
            // => al hecerse por AJAX pasará a ser $accion = "modifica_post"; y el tratamiento será diferente
            // habrá que generar una acción del controlador que realice la modificación
        }
        $ruta = DIR_RAIZ_APP . INDEX;
        // recibe una lista de avisos de errores en la lógica de negocio en formato csv (con #)
        // la conviete a array y la "pinta"
        if (!empty($avisos)) {
            $avisos = explode('#', $avisos);
        } else {
            $avisos = array();
        }
        $listaAvisos = Scriptlets::generaListaMensajes($avisos);
        $contenido = <<<CONT
\t<h1>{$titulo}</h1>
\t<div id="avisos" style="color:red">{$listaAvisos}</div>
<form name='fAltaModifica' enctype="multipart/form-data" method='post' action='{$ruta}{$accion}'>
  <input type="hidden" name="operacion" value="{$funcionalidad}" />
  <fieldset>
    <legend>Datos de conexión</legend>
    <label for="usuario">Usuario</label> <input type="text" name="usuario" readOnly id="usuario" value="{$request['usuario']}">
    <label for="clave">Clave</label> <input type="password" name="clave" value="{$request['clave']}">
  </fieldset>
  <fieldset>
    <legend>Datos personales</legend>
    <label for="apellidos">Nombre</label> <input type="text" name="nombre" value="{$request['nombre']}" size="30" maxlength="30">
    <label for="apellidos">Apellidos</label> <input type="text" name="apellidos" value="{$request['apellidos']}" size="50" maxlength="50">
    <br />
    <label for="fechaNacimiento">Fecha nacimiento (aaaa-mm-dd)</label> 
\t<input type="text" name="fechaNacimiento" value="{$request['fechaNacimiento']}" size="10" maxlength="10" />
\t
    <br />
CONT;
        $contenido .= Scriptlets::generaBotonesRadio('sexo', $generos, isset($request['sexo']) ? $request['sexo'] : '');
        $contenido .= <<<CONT
   <br /><br />



Elige foto de perfil: <input name="foto" type="file" /> <br/>
  </fieldset>
  <input type="submit" value="{$titulo}" />
  <input type="reset" value="Resetear el formulario" />
</form>
<script>document.getElementById("usuario").focus();</script>
CONT;
        return $contenido;
    }
    static function consulta($usuarios, $request)
    {
        require_once 'libs/datos.php';
        require_once 'libs/Scriptlets.php';
        $nombre = "";
        $apellidos = "";
        $fecha = "";
        $genero = "";
        if ($request != null) {
            if ($request['nombre'] != "") {
                $nombre = $request['nombre'];
            }
            if ($request['apellidos'] != "") {
                $apellidos = $request['apellidos'];
            }
            if ($request['fechaNacimiento'] != "") {
                $fecha = $request['fechaNacimiento'];
            }
            if ($request['sexo'] != "") {
                $genero = $request['sexo'];
            }
        }
        $ruta = DIR_RAIZ_APP . INDEX;
        // recibe una lista de avisos de errores en la lógica de negocio en formato csv (con #)
        // la conviete a array y la "pinta"
        $contenido = <<<CONT
\t<h1>Busqueda de Usuarios</h1>
\t
<form name='fConsulta' method='post' action='{$ruta}usuario/listadoUsuariosAdmin'>
  <fieldset>
    <legend>Datos de Busqueda</legend>
    <label for="apellidos">Nombre</label> <input type="text" name="nombre" value="{$nombre}" size="30" maxlength="30">
    <label for="apellidos">Apellidos</label> <input type="text" name="apellidos" value="{$apellidos}" size="50" maxlength="50">
    <br />
    <label for="fechaNacimiento">Fecha nacimiento (aaaa-mm-dd)</label> 
\t<input type="text" name="fechaNacimiento" value="{$fecha}" size="10" maxlength="10" />
\t
    <br />
CONT;
        $contenido .= Scriptlets::generaBotonesRadio('sexo', $generos, $genero);
        $contenido .= <<<CONT
  </fieldset>
  <input type="submit" value="Buscar" />
  <input type="reset" value="Resetear el formulario" />
</form>
<script>document.getElementById("usuario").focus();</script>
CONT;
        $contenido .= "\n\t\t\t\t\t  <fieldset>\n\t\t\t\t\t  <legend>Listado de Usuarios</legend>\n\t\t\t\t\t  <table border='1' cellpadding='5' cellspacing='3'>\n\t\t\t\t\t  <form name='bloquear method='post' action='{$ruta}usuario/BloquearDesbloquear'>\n\t\t\t\t\t  <tr>\n\t\t\t\t\t  \t<th>Imagen</th>\n\t\t\t\t\t\t<th>Usuario</th>\n\t\t\t\t\t\t<th>Visitas</th>\n\t\t\t\t\t\t<th>Apellidos</th>\n\t\t\t\t\t\t<th>Nombre</th>\t\n\t\t\t\t\t\t<th>F. Nacimiento</th>\n\t\t\t\t\t\t<th>Sexo</th>\n\t\t\t\t\t\t<th>Tipo</th>\n\t\t\t\t\t\t<th>Bloqueo</th>\n\t\t\t\t\t\t<th>Bloquear</th>\n\t\t\t\t\t  </tr>\n\t\t\t\t\t";
        $ruta = DIR_RAIZ_APP . INDEX;
        if (!empty($usuarios)) {
            foreach ($usuarios as $unUsuario) {
                $admin = $unUsuario->devuelveAdministrador();
                $tipo = "";
                if ($admin == 0) {
                    $tipo = "Usuario";
                } else {
                    $tipo = "Administrador";
                }
                $bloqueado = $unUsuario->devuelveBloqueo();
                $bloq = "";
                if ($bloqueado == 0) {
                    $bloq = "Si";
                    $nombreBoton = "Desbloquear";
                } else {
                    $bloq = "No";
                    $nombreBoton = "Bloquear";
                }
                //Si el usuario no tiene imagen asociada, se muestra la imagen por defecto (user.jpg)
                $rutafoto = $_SERVER['DOCUMENT_ROOT'] . DIR_RAIZ_APP . "/fotos/" . $unUsuario->devuelveUsuario() . ".jpg";
                if (!file_exists($rutafoto)) {
                    $rutafotof = DIR_RAIZ_APP . "/fotos/user.jpg";
                } else {
                    $rutafotof = DIR_RAIZ_APP . "/fotos/" . $unUsuario->devuelveUsuario() . ".jpg";
                }
                $contenido .= "\n\t\t\t\t\t  \n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t  <td><img src=\"{$rutafotof}\" alt=\"Image\" height=\"60\" width=\"50\"/></td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveUsuario()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveVisitas()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveApellidos()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveNombre()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveFechaNacimiento()}</td>\n\t\t\t\t\t\t  <td>{$unUsuario->devuelveSexo()}</td>\n\t\t\t\t\t\t  <td>{$tipo}</td>\n\t\t\t\t\t\t  <td>{$bloq}</td>";
                if ($tipo != "Administrador") {
                    $contenido .= "<td><input type='submit' name='{$unUsuario->devuelveUsuario()}' value='{$nombreBoton}'/></td>";
                }
                $contenido .= "</tr>";
            }
        }
        $contenido .= "\n\t\t\t\t\t\t</form>\n\t\t\t\t\t  </table>\n\t\t\t\t\t  </fieldset>\n\t\t\t\t\t  <br />";
        return $contenido;
    }