-
Notifications
You must be signed in to change notification settings - Fork 0
/
funcionesAuxiliares.php
240 lines (216 loc) · 7.75 KB
/
funcionesAuxiliares.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
<?php
require_once('credenciales.php');
require_once("funcionesBD.php");
// Función para validar que la letra del DNI es correcta
function validarLetraDNI($dni) {
$letra = substr($dni, -1);
$numeros = substr($dni, 0, -1);
$letras = "TRWAGMYFPDXBNJZSQVHLCKE";
$posicion = $numeros % 23;
$letraCorrecta = $letras[$posicion];
if($letraCorrecta == $letra) return true;
else return false;
}
// Función para validar tarjeta de crédito mediante el algoritmo de Luhn
function validarTarjeta($tarjeta) {
$tarjeta = str_replace(" ", "", $tarjeta);
$numeros = str_split($tarjeta);
$numeros = array_reverse($numeros);
$suma = 0;
for($i = 0; $i < count($numeros); $i++) {
if($i % 2 != 0) {
$numeros[$i] *= 2;
if($numeros[$i] > 9) {
$numeros[$i] -= 9;
}
}
$suma += $numeros[$i];
}
if($suma % 10 == 0) return true;
else return false;
}
function checkInyection($campo) {
if (preg_match('/[\'\"=<>]/', $campo)) {
return ""; // El campo contiene caracteres sospechosos de inyección SQL
}
// Eliminar etiquetas HTML y JavaScript sospechosas
$campo_limpiado = htmlspecialchars($campo, ENT_QUOTES | ENT_HTML5);
if($campo_limpiado == $campo) {
return $campo;
}
return "";
}
function limpiarSesionFormularios(){
if(isset($_SESSION["errores-registro"])){
unset($_SESSION["errores-registro"]);
}
if(isset($_SESSION["datos-registro"])){
unset($_SESSION["datos-registro"]);
}
if(isset($_SESSION["errores-habitacion"])){
unset($_SESSION["errores-habitacion"]);
}
if(isset($_SESSION["datos-habitacion"])){
unset($_SESSION["datos-habitacion"]);
}
if(isset($_SESSION["modificar-habitacion"])){
unset($_SESSION["modificar-habitacion"]);
}
if(isset($_SESSION["modificar-imagen-habitacion"])){
unset($_SESSION["modificar-imagen-habitacion"]);
}
if(isset($_SESSION["fotos"])){
unset($_SESSION["fotos"]);
}
if(isset($_SESSION["usuarios"])){
unset($_SESSION["usuarios"]);
}
if(isset($_SESSION["habitaciones"])){
unset($_SESSION["habitaciones"]);
}
}
// Función para asegurarse de que el número tenga un formato decimal adecuado
function convertirADecimal($numero) {
// Verificar si el número tiene un punto decimal
if (strpos($numero, '.') === false) {
// Si no tiene punto decimal, agregar ".0"
$numero .= '.0';
}
// Convertir el número a float y devolverlo
return $numero;
}
// Funcion auxiliar para comprobar que un archivo es una imagen
function validarFotos() {
if(!empty($_FILES['fotos']['name'][0])) {
$datos = array();
$allowed_types = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);
foreach($_FILES['fotos']['tmp_name'] as $key => $tmp_name) {
$file_type = exif_imagetype($tmp_name);
if(!in_array($file_type, $allowed_types)) {
break;
} else {
// Leer la imagen en formato base64
$imagen_base64 = base64_encode(file_get_contents($tmp_name));
// Añadir la imagen al array de datos
$datos[] = $imagen_base64;
}
}
return $datos;
}
}
// Función que comprueba si una reserva es posible
function comprobarReserva($conexion, $capacidad, $entrada, $salida) {
// Primero vemos si hay habitaciones con capacidad mayor o igual que pide el usuario
[$ok, $resultado] = comprobarCapacidad($conexion, $capacidad);
if(!$ok) {
return [false, null];
}
// Ahora comprobamos si alguna de esas habitaciones está disponible en el rango de fechas
$habitacionesDisponibles = array();
foreach($resultado as $habitacion) {
if(comprobarDisponibilidad($conexion, $habitacion, $entrada, $salida)) {
$habitacionesDisponibles[] = $habitacion;
}
}
// Si no hay habitaciones disponibles, devolvemos false
if(count($habitacionesDisponibles) == 0) {
return [false, null];
}
// Si hay habitaciones disponibles, calculamos la capacidad de cada una
$capacidades = array();
foreach($habitacionesDisponibles as $habitacion) {
$capacidades[$habitacion] = obtenerCapacidad($conexion, $habitacion);
}
// Buscar la habitación con la capacidad mínima
$min = min($capacidades);
$habitacion = array_search($min, $capacidades);
return [true, $habitacion];
}
function crearBackup($conexion) {
// Obtener el listado de tablas en la base de datos
$result = mysqli_query($conexion, 'SHOW TABLES');
if (!$result) {
// Error al obtener las tablas
return false;
}
// Crear una cadena para almacenar el contenido del backup
$backupContent = '';
// Recorrer las tablas
while ($row = mysqli_fetch_row($result)) {
$table = $row[0];
// Obtener la estructura de la tabla
$tableStructure = mysqli_query($conexion, "SHOW CREATE TABLE $table");
if (!$tableStructure) {
// Error al obtener la estructura de la tabla
return false;
}
$row = mysqli_fetch_row($tableStructure);
// Añadir la estructura de la tabla a la cadena de contenido del backup
$backupContent .= "DROP TABLE IF EXISTS `$table`;\n";
$backupContent .= $row[1] . ";\n";
// Obtener los datos de la tabla y añadirlos a la cadena de contenido del backup
$tableData = mysqli_query($conexion, "SELECT * FROM $table");
if (!$tableData) {
// Error al obtener los datos de la tabla
return false;
}
while ($rowData = mysqli_fetch_row($tableData)) {
$backupContent .= "INSERT INTO `$table` VALUES ('" . implode("', '", $rowData) . "');\n";
}
$backupContent .= "\n";
}
// Devilver un array con los datos descargados
return array("backup_content" => $backupContent);
}
function reiniciarBD($conexion) {
// Obtener todas las tablas en la base de datos
$result = $conexion->query("SHOW TABLES");
if ($result) {
while ($row = $result->fetch_array()) {
$table = $row[0];
// Verificar si la tabla es 'usuariosHotel'
if ($table == 'usuariosHotel') {
// Eliminar el contenido de todas las tuplas excepto la del usuario actual
$conexion->query("DELETE FROM $table WHERE email <> '" . $_SESSION["email"] . "'");
} else {
// Eliminar el contenido de cada tabla
$conexion->query("TRUNCATE TABLE $table");
}
}
return true;
} else {
return false;
}
}
function restaurarBackup($conexion, $filename){
// Leer el contenido del archivo de backup
$backupContent = file_get_contents($filename);
if ($backupContent === false) {
return false;
}
// Separar el contenido del backup en instrucciones SQL
$sqlCommands = explode(";\n", $backupContent);
// Ejecutar las instrucciones SQL del backup
foreach ($sqlCommands as $sqlCommand) {
$sqlCommand = trim($sqlCommand);
if (!empty($sqlCommand)) {
// Cambiar "" por NULL en las instrucciones SQL para que no de excepciones
$sqlCommand = str_replace("''", "NULL", $sqlCommand);
$result = $conexion->query($sqlCommand);
if (!$result) {
echo "Error MySQL: " . $conexion->error . "\n";
return false;
}
}
}
return true;
}
function getLetraReservas($resultado){
if($resultado == "Confirmada"){
return "R";
} else if($resultado == "Pendiente"){
return "P";
} else if($resultado == "Mantenimiento"){
return "M";
}
}