T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/.cursor-server/data/User/History/-2d8041a4/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/.cursor-server/data/User/History/-2d8041a4/0KiU.php
<?php
/**
 * Vote for next track API endpoint
 */

session_start();
header('Content-Type: application/json');
require_once __DIR__ . '/../../../config/database.php';

$pdo = getDBConnection();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['error' => 'Method not allowed']);
    exit;
}

$data = json_decode(file_get_contents('php://input'), true);

if (!isset($data['track_id']) || !isset($data['stream_id'])) {
    http_response_code(400);
    echo json_encode(['error' => 'Missing required fields']);
    exit;
}

$track_id = (int)$data['track_id'];
$stream_id = (int)$data['stream_id'];

// Verify stream is live
$stmt = $pdo->prepare("SELECT is_live FROM radio_streams WHERE id = ?");
$stmt->execute([$stream_id]);
$stream = $stmt->fetch();

if (!$stream || !$stream['is_live']) {
    http_response_code(400);
    echo json_encode(['error' => 'Stream is not live']);
    exit;
}

// Verify track exists and is radio-enabled
$stmt = $pdo->prepare("SELECT id FROM music_tracks WHERE id = ? AND radio_enabled = 1");
$stmt->execute([$track_id]);
$track = $stmt->fetch();

if (!$track) {
    http_response_code(404);
    echo json_encode(['error' => 'Track not found or not available for radio']);
    exit;
}

// Get or create user session
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null;
$user_ip = $_SERVER['REMOTE_ADDR'] ?? null;
$user_session = session_id();

// Check if user already voted for this track (prevent duplicate votes)
$stmt = $pdo->prepare("
    SELECT id FROM radio_votes
    WHERE stream_id = ? AND track_id = ? 
    AND (user_id = ? OR (user_session = ? AND user_ip = ?))
    AND voted_at > DATE_SUB(NOW(), INTERVAL 1 HOUR)
    LIMIT 1
");
$stmt->execute([$stream_id, $track_id, $user_id, $user_session, $user_ip]);
$existing_vote = $stmt->fetch();

if ($existing_vote) {
    http_response_code(400);
    echo json_encode(['error' => 'You have already voted for this track']);
    exit;
}

// Record vote
$stmt = $pdo->prepare("
    INSERT INTO radio_votes (stream_id, track_id, user_id, user_ip, user_session, voted_at)
    VALUES (?, ?, ?, ?, ?, NOW())
");
$stmt->execute([$stream_id, $track_id, $user_id, $user_ip, $user_session]);

// Update or create queue entry
$stmt = $pdo->prepare("
    SELECT id, vote_count FROM radio_stream_queue
    WHERE stream_id = ? AND track_id = ? AND played_at IS NULL
    LIMIT 1
");
$stmt->execute([$stream_id, $track_id]);
$queue_entry = $stmt->fetch();

if ($queue_entry) {
    // Update existing queue entry
    $stmt = $pdo->prepare("
        UPDATE radio_stream_queue
        SET vote_count = vote_count + 1
        WHERE id = ?
    ");
    $stmt->execute([$queue_entry['id']]);
    $vote_count = $queue_entry['vote_count'] + 1;
} else {
    // Create new queue entry
    $stmt = $pdo->prepare("
        INSERT INTO radio_stream_queue (stream_id, track_id, vote_count, queued_at)
        VALUES (?, ?, 1, NOW())
    ");
    $stmt->execute([$stream_id, $track_id]);
    $vote_count = 1;
}

echo json_encode([
    'success' => true,
    'vote_count' => $vote_count,
    'message' => 'Vote recorded successfully'
]);


CasperSecurity Mini