Eliminar Sala (Se ejecuta cuando el host abandona la sala)

He modificado salirDeSala() de ClaseEquipoxUsuario.php
This commit is contained in:
2026-09-29 11:25:56 +02:00
parent 94bfe480cb
commit 534c20a45d
2 changed files with 45 additions and 91 deletions
+29 -75
View File
@@ -60,6 +60,7 @@ class EquipoxUsuario
];
}
}
public function obtenerSalaUsuario($idUsuario)
{
$conexion = conexionBD();
@@ -128,15 +129,10 @@ class EquipoxUsuario
try {
// 1. Averiguamos el equipo y la partida del usuario
$sql = "
SELECT exu.idEquipo, exp.idPartida, p.idUsuario AS idHost FROM equipoxusuario exu INNER JOIN equipoxpartida exp ON exu.idEquipo = exp.idEquipo INNER JOIN partida p ON exp.idPartida = p.idPartida WHERE exu.idUsuario = :idUsuario LIMIT 1";
$sql = "SELECT exu.idEquipo, exp.idPartida, p.idUsuario AS idHost FROM equipoxusuario exu INNER JOIN equipoxpartida exp ON exu.idEquipo = exp.idEquipo INNER JOIN partida p ON exp.idPartida = p.idPartida WHERE exu.idUsuario = :idUsuario LIMIT 1";
$consulta = $conexion->prepare($sql);
$consulta->bindParam(
':idUsuario',
$idUsuario,
PDO::PARAM_INT
);
$consulta->bindParam(':idUsuario',$idUsuario, PDO::PARAM_INT);
$consulta->execute();
$datosSala = $consulta->fetch(PDO::FETCH_ASSOC);
@@ -164,18 +160,10 @@ class EquipoxUsuario
* Obtenemos todos los equipos pertenecientes
* a esta partida.
*/
$sqlEquipos = "
SELECT idEquipo
FROM equipoxpartida
WHERE idPartida = :idPartida
";
$sqlEquipos = "SELECT idEquipo FROM equipoxpartida WHERE idPartida = :idPartida";
$consultaEquipos = $conexion->prepare($sqlEquipos);
$consultaEquipos->bindParam(
':idPartida',
$idPartida,
PDO::PARAM_INT
);
$consultaEquipos->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
$consultaEquipos->execute();
$equipos = $consultaEquipos->fetchAll(PDO::FETCH_COLUMN);
@@ -186,15 +174,9 @@ class EquipoxUsuario
*/
if (!empty($equipos)) {
$placeholders = implode(
',',
array_fill(0, count($equipos), '?')
);
$placeholders = implode(',', array_fill(0, count($equipos), '?'));
$sqlUsuarios = "
DELETE FROM equipoxusuario
WHERE idEquipo IN ($placeholders)
";
$sqlUsuarios = "DELETE FROM equipoxusuario WHERE idEquipo IN ($placeholders)";
$consultaUsuarios = $conexion->prepare($sqlUsuarios);
$consultaUsuarios->execute($equipos);
@@ -204,21 +186,10 @@ class EquipoxUsuario
* 4. Eliminamos las relaciones
* entre equipos y partida.
*/
$sqlEquipoxPartida = "
DELETE FROM equipoxpartida
WHERE idPartida = :idPartida
";
$consultaEquipoxPartida = $conexion->prepare(
$sqlEquipoxPartida
);
$consultaEquipoxPartida->bindParam(
':idPartida',
$idPartida,
PDO::PARAM_INT
);
$sqlEquipoxPartida = "DELETE FROM equipoxpartida WHERE idPartida = :idPartida";
$consultaEquipoxPartida = $conexion->prepare($sqlEquipoxPartida);
$consultaEquipoxPartida->bindParam(':idPartida', $idPartida,PDO::PARAM_INT);
$consultaEquipoxPartida->execute();
/*
@@ -229,38 +200,30 @@ class EquipoxUsuario
*/
if (!empty($equipos)) {
$placeholders = implode(
',',
array_fill(0, count($equipos), '?')
);
$sqlEliminarEquipos = "
DELETE FROM equipo
WHERE idEquipo IN ($placeholders)
";
$consultaEliminarEquipos =
$conexion->prepare($sqlEliminarEquipos);
$placeholders = implode(',', array_fill(0, count($equipos), '?'));
$sqlEliminarEquipos = "DELETE FROM equipo WHERE idEquipo IN ($placeholders)";
$consultaEliminarEquipos = $conexion->prepare($sqlEliminarEquipos);
$consultaEliminarEquipos->execute($equipos);
}
/*
* 6. Finalmente eliminamos la partida.
/*
* 6. Eliminamos las relaciones
* entre preguntas y partida.
*/
$sqlPartida = "
DELETE FROM partida
WHERE idPartida = :idPartida
";
$sqlPartidaxPregunta = "DELETE FROM partidaxpregunta WHERE idPartida = :idPartida";
$consultaPartidaxPregunta = $conexion->prepare($sqlPartidaxPregunta);
$consultaPartidaxPregunta->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
$consultaPartidaxPregunta->execute();
/*
* 7. Finalmente eliminamos la partida.
*/
$sqlPartida = "DELETE FROM partida WHERE idPartida = :idPartida";
$consultaPartida = $conexion->prepare($sqlPartida);
$consultaPartida->bindParam(
':idPartida',
$idPartida,
PDO::PARAM_INT
);
$consultaPartida->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
$consultaPartida->execute();
// Todo ha ido correctamente
@@ -277,19 +240,10 @@ class EquipoxUsuario
* 7. Si NO es el host, simplemente abandona
* su relación con el equipo.
*/
$sqlSalir = "
DELETE FROM equipoxusuario
WHERE idUsuario = :idUsuario
";
$sqlSalir = "DELETE FROM equipoxusuario WHERE idUsuario = :idUsuario";
$consultaSalir = $conexion->prepare($sqlSalir);
$consultaSalir->bindParam(
':idUsuario',
$idUsuario,
PDO::PARAM_INT
);
$consultaSalir->bindParam(':idUsuario', $idUsuario, PDO::PARAM_INT);
$consultaSalir->execute();
$conexion->commit();