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_html2
/
cuentame
/
models
/
Viewing: Activity.php
<?php class Activity { private $db; public function __construct() { $this->db = (new Database())->connect(); } // Obtener todas las actividades public function getAll() { $stmt = $this->db->query(' SELECT a.*, p.name as project_name, u.name as created_by_name FROM activities a LEFT JOIN projects p ON a.project_id = p.id LEFT JOIN users u ON a.created_by = u.id ORDER BY a.start_datetime ASC '); return $stmt->fetchAll(PDO::FETCH_ASSOC); } // Obtener actividades por usuario (creadas por él o donde está invitado) public function getByUser($user_id) { $stmt = $this->db->prepare(' SELECT DISTINCT a.*, p.name as project_name, u.name as created_by_name, ai.status as invitation_status FROM activities a LEFT JOIN projects p ON a.project_id = p.id LEFT JOIN users u ON a.created_by = u.id LEFT JOIN activity_invitations ai ON a.id = ai.activity_id AND ai.user_id = ? WHERE a.created_by = ? OR ai.user_id = ? ORDER BY a.start_datetime ASC '); $stmt->execute([$user_id, $user_id, $user_id]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } // Obtener actividades por proyecto public function getByProject($project_id) { $stmt = $this->db->prepare(' SELECT a.*, p.name as project_name, u.name as created_by_name FROM activities a LEFT JOIN projects p ON a.project_id = p.id LEFT JOIN users u ON a.created_by = u.id WHERE a.project_id = ? ORDER BY a.start_datetime ASC '); $stmt->execute([$project_id]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } // Obtener actividad por ID public function getById($id) { $stmt = $this->db->prepare(' SELECT a.*, p.name as project_name, u.name as created_by_name FROM activities a LEFT JOIN projects p ON a.project_id = p.id LEFT JOIN users u ON a.created_by = u.id WHERE a.id = ? '); $stmt->execute([$id]); return $stmt->fetch(PDO::FETCH_ASSOC); } // Crear nueva actividad public function create($data) { $stmt = $this->db->prepare(' INSERT INTO activities (name, description, start_datetime, end_datetime, project_id, created_by) VALUES (?, ?, ?, ?, ?, ?) '); if ($stmt->execute([ $data['name'], $data['description'], $data['start_datetime'], $data['end_datetime'], $data['project_id'], $data['created_by'] ])) { return $this->db->lastInsertId(); } return false; } // Actualizar actividad public function update($id, $data) { // Obtener datos actuales para preservar campos no proporcionados $current = $this->getById($id); if (!$current) { return false; } $stmt = $this->db->prepare(' UPDATE activities SET name = ?, description = ?, start_datetime = ?, end_datetime = ?, project_id = ? WHERE id = ? '); return $stmt->execute([ $data['name'] ?? $current['name'], isset($data['description']) ? $data['description'] : $current['description'], isset($data['start_datetime']) ? $data['start_datetime'] : $current['start_datetime'], isset($data['end_datetime']) ? $data['end_datetime'] : $current['end_datetime'], $data['project_id'] ?? $current['project_id'], $id ]); } // Eliminar actividad public function delete($id) { $stmt = $this->db->prepare('DELETE FROM activities WHERE id = ?'); return $stmt->execute([$id]); } // Obtener invitaciones de una actividad public function getInvitations($activity_id) { $stmt = $this->db->prepare(' SELECT ai.*, u.name as user_name, u.email as user_email FROM activity_invitations ai LEFT JOIN users u ON ai.user_id = u.id WHERE ai.activity_id = ? ORDER BY ai.created_at ASC '); $stmt->execute([$activity_id]); return $stmt->fetchAll(PDO::FETCH_ASSOC); } // Invitar usuario a actividad public function inviteUser($activity_id, $user_id) { $stmt = $this->db->prepare(' INSERT IGNORE INTO activity_invitations (activity_id, user_id) VALUES (?, ?) '); return $stmt->execute([$activity_id, $user_id]); } // Remover invitación public function removeInvitation($activity_id, $user_id) { $stmt = $this->db->prepare(' DELETE FROM activity_invitations WHERE activity_id = ? AND user_id = ? '); return $stmt->execute([$activity_id, $user_id]); } // Responder a invitación public function respondToInvitation($activity_id, $user_id, $status) { $stmt = $this->db->prepare(' UPDATE activity_invitations SET status = ?, response_date = CURRENT_TIMESTAMP WHERE activity_id = ? AND user_id = ? '); return $stmt->execute([$status, $activity_id, $user_id]); } // Obtener actividades por rango de fechas public function getByDateRange($start_date, $end_date, $user_id = null) { $sql = ' SELECT a.*, p.name as project_name, u.name as created_by_name FROM activities a LEFT JOIN projects p ON a.project_id = p.id LEFT JOIN users u ON a.created_by = u.id WHERE a.start_datetime BETWEEN ? AND ? '; $params = [$start_date, $end_date]; if ($user_id) { $sql .= ' AND (a.created_by = ? OR EXISTS ( SELECT 1 FROM activity_invitations ai WHERE ai.activity_id = a.id AND ai.user_id = ? ))'; $params[] = $user_id; $params[] = $user_id; } $sql .= ' ORDER BY a.start_datetime ASC'; $stmt = $this->db->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(PDO::FETCH_ASSOC); } // Obtener actividades del día public function getTodayActivities($user_id = null) { $today = date('Y-m-d'); return $this->getByDateRange($today . ' 00:00:00', $today . ' 23:59:59', $user_id); } // Obtener actividades de la semana public function getWeekActivities($user_id = null) { $start_of_week = date('Y-m-d', strtotime('monday this week')); $end_of_week = date('Y-m-d', strtotime('sunday this week')); return $this->getByDateRange($start_of_week . ' 00:00:00', $end_of_week . ' 23:59:59', $user_id); } // Obtener actividades del mes public function getMonthActivities($user_id = null) { $start_of_month = date('Y-m-01'); $end_of_month = date('Y-m-t'); return $this->getByDateRange($start_of_month . ' 00:00:00', $end_of_month . ' 23:59:59', $user_id); } // Verificar si usuario tiene permisos para la actividad public function userHasAccess($activity_id, $user_id) { $stmt = $this->db->prepare(' SELECT 1 FROM activities WHERE id = ? AND (created_by = ? OR EXISTS ( SELECT 1 FROM activity_invitations WHERE activity_id = ? AND user_id = ? )) '); $stmt->execute([$activity_id, $user_id, $activity_id, $user_id]); return $stmt->fetch() !== false; } // Obtener estadísticas de actividades public function getStats($user_id = null) { $sql = ' SELECT COUNT(*) as total_activities, COUNT(CASE WHEN start_datetime >= NOW() THEN 1 END) as upcoming_activities, COUNT(CASE WHEN start_datetime < NOW() THEN 1 END) as past_activities FROM activities '; $params = []; if ($user_id) { $sql .= ' WHERE created_by = ? OR EXISTS ( SELECT 1 FROM activity_invitations ai WHERE ai.activity_id = activities.id AND ai.user_id = ? )'; $params = [$user_id, $user_id]; } $stmt = $this->db->prepare($sql); $stmt->execute($params); return $stmt->fetch(PDO::FETCH_ASSOC); } // Elimina todas las invitaciones de una actividad public function removeAllInvitations($activity_id) { $stmt = $this->db->prepare('DELETE FROM activity_invitations WHERE activity_id = ?'); return $stmt->execute([$activity_id]); } }
Coded With 💗 by
0x6ick