Tul xxx Tul
User / IP
:
216.73.217.33
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
/
emprendo.com.co
/
public_html
/
soy4
/
admin
/
models
/
Viewing: DiagnosticoDocumento.php
<?php class DiagnosticoDocumento { public const ESTADOS = ['pendiente', 'revisar', 'aprobado', 'rechazado', 'renovar']; public static function estados(): array { return self::ESTADOS; } public static function stateLabels(): array { return [ 'pendiente' => 'Pendiente', 'revisar' => 'Revisar', 'aprobado' => 'Aprobado', 'rechazado' => 'Rechazado', 'renovar' => 'Renovar', ]; } public static function stateLabel(string $estado): string { $labels = self::stateLabels(); $key = strtolower($estado); return $labels[$key] ?? ucfirst($key); } public static function allForDiagnostico(int $diagnosticoId): array { if ($diagnosticoId <= 0) { return []; } $pdo = Database::connection(); $stmt = $pdo->prepare('SELECT d.id, d.diagnostico_id, d.documento_config_id, d.estado, d.comentarios_revision, d.ruta_archivo, d.nombre_original, d.mime_type, d.tamano_bytes, d.fecha_revision, d.revisado_por, d.creado, d.actualizado, c.slug AS config_slug, c.titulo AS config_titulo, c.descripcion AS config_descripcion, c.es_obligatorio AS config_obligatorio FROM producto_diagnostico_documentos d INNER JOIN producto_documento_config c ON c.id = d.documento_config_id WHERE d.diagnostico_id = :diagnostico ORDER BY c.orden ASC, c.id ASC, d.id ASC'); $stmt->execute(['diagnostico' => $diagnosticoId]); $rows = $stmt->fetchAll() ?: []; return array_map(static function ($row) { $row['es_obligatorio'] = (bool)($row['config_obligatorio'] ?? false); unset($row['config_obligatorio']); return $row; }, $rows); } public static function find(int $id, int $diagnosticoId): ?array { if ($id <= 0 || $diagnosticoId <= 0) { return null; } $pdo = Database::connection(); $stmt = $pdo->prepare('SELECT id, diagnostico_id, documento_config_id, estado, comentarios_revision, ruta_archivo, nombre_original, mime_type, tamano_bytes, fecha_revision, revisado_por, creado, actualizado FROM producto_diagnostico_documentos WHERE id = :id AND diagnostico_id = :diagnostico'); $stmt->execute([ 'id' => $id, 'diagnostico' => $diagnosticoId, ]); $row = $stmt->fetch(); return $row ?: null; } public static function findByConfig(int $diagnosticoId, int $configId): ?array { if ($diagnosticoId <= 0 || $configId <= 0) { return null; } $pdo = Database::connection(); $stmt = $pdo->prepare('SELECT id, diagnostico_id, documento_config_id, estado, comentarios_revision, ruta_archivo, nombre_original, mime_type, tamano_bytes, fecha_revision, revisado_por, creado, actualizado FROM producto_diagnostico_documentos WHERE diagnostico_id = :diagnostico AND documento_config_id = :config ORDER BY id DESC LIMIT 1'); $stmt->execute([ 'diagnostico' => $diagnosticoId, 'config' => $configId, ]); $row = $stmt->fetch(); return $row ?: null; } public static function upsert(array $data): array { $diagnosticoId = (int)($data['diagnostico_id'] ?? 0); $configId = (int)($data['documento_config_id'] ?? 0); if ($diagnosticoId <= 0 || $configId <= 0) { throw new InvalidArgumentException('Datos incompletos para guardar el documento.'); } $pdo = Database::connection(); $existing = static::findByConfig($diagnosticoId, $configId); if ($existing) { $stmt = $pdo->prepare('UPDATE producto_diagnostico_documentos SET estado = :estado, comentarios_revision = :comentarios, ruta_archivo = :ruta, nombre_original = :nombre, mime_type = :mime, tamano_bytes = :tamano, fecha_revision = :fecha_revision, revisado_por = :revisado_por WHERE id = :id'); $stmt->execute([ 'estado' => $data['estado'] ?? $existing['estado'], 'comentarios' => $data['comentarios_revision'] ?? $existing['comentarios_revision'], 'ruta' => $data['ruta_archivo'] ?? $existing['ruta_archivo'], 'nombre' => $data['nombre_original'] ?? $existing['nombre_original'], 'mime' => $data['mime_type'] ?? $existing['mime_type'], 'tamano' => $data['tamano_bytes'] ?? $existing['tamano_bytes'], 'fecha_revision' => $data['fecha_revision'] ?? $existing['fecha_revision'], 'revisado_por' => $data['revisado_por'] ?? $existing['revisado_por'], 'id' => $existing['id'], ]); return static::find((int)$existing['id'], $diagnosticoId) ?? $existing; } $stmt = $pdo->prepare('INSERT INTO producto_diagnostico_documentos (diagnostico_id, documento_config_id, estado, comentarios_revision, ruta_archivo, nombre_original, mime_type, tamano_bytes, fecha_revision, revisado_por) VALUES (:diagnostico_id, :documento_config_id, :estado, :comentarios_revision, :ruta_archivo, :nombre_original, :mime_type, :tamano_bytes, :fecha_revision, :revisado_por)'); $stmt->execute([ 'diagnostico_id' => $diagnosticoId, 'documento_config_id' => $configId, 'estado' => $data['estado'] ?? 'pendiente', 'comentarios_revision' => $data['comentarios_revision'] ?? null, 'ruta_archivo' => $data['ruta_archivo'] ?? null, 'nombre_original' => $data['nombre_original'] ?? null, 'mime_type' => $data['mime_type'] ?? null, 'tamano_bytes' => $data['tamano_bytes'] ?? null, 'fecha_revision' => $data['fecha_revision'] ?? null, 'revisado_por' => $data['revisado_por'] ?? null, ]); $id = (int)$pdo->lastInsertId(); return static::find($id, $diagnosticoId) ?? []; } public static function delete(int $id, int $diagnosticoId): bool { if ($id <= 0 || $diagnosticoId <= 0) { return false; } $pdo = Database::connection(); $stmt = $pdo->prepare('DELETE FROM producto_diagnostico_documentos WHERE id = :id AND diagnostico_id = :diagnostico'); $stmt->execute([ 'id' => $id, 'diagnostico' => $diagnosticoId, ]); return $stmt->rowCount() > 0; } }
Coded With 💗 by
0x6ick