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/-4f944c2/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/.cursor-server/data/User/History/-4f944c2/4Lmv.php
<?php
session_start();
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../utils/audio_token.php';

header('Content-Type: application/json; charset=utf-8');

$genre = $_GET['genre'] ?? '';
$per_page = intval($_GET['per_page'] ?? 50);

if (empty($genre)) {
    echo json_encode([
        'success' => false,
        'error' => 'Genre parameter is required'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    $pdo = getDBConnection();
    
    // Decode and clean genre name
    $genre = urldecode($genre);
    $genre = trim($genre, '"\'');
    $genre = trim($genre);
    
    // Get tracks by genre
    $stmt = $pdo->prepare("
        SELECT 
            mt.id,
            mt.title,
            mt.audio_url,
            mt.duration,
            mt.image_url,
            mt.created_at,
            mt.user_id,
            u.name as artist_name,
            COALESCE(play_stats.play_count, 0) as play_count,
            COALESCE(like_stats.like_count, 0) as like_count
        FROM music_tracks mt
        JOIN users u ON mt.user_id = u.id
        LEFT JOIN (
            SELECT track_id, COUNT(*) as play_count
            FROM track_plays
            GROUP BY track_id
        ) play_stats ON mt.id = play_stats.track_id
        LEFT JOIN (
            SELECT track_id, COUNT(*) as like_count
            FROM track_likes
            GROUP BY track_id
        ) like_stats ON mt.id = like_stats.track_id
        WHERE mt.status = 'complete'
        AND mt.is_public = 1
        AND mt.audio_url IS NOT NULL
        AND mt.audio_url != ''
        AND (
            LOWER(JSON_UNQUOTE(JSON_EXTRACT(mt.metadata, '$.genre'))) = LOWER(?)
            OR LOWER(mt.genre) = LOWER(?)
            OR LOWER(JSON_UNQUOTE(JSON_EXTRACT(mt.metadata, '$.style'))) = LOWER(?)
        )
        ORDER BY play_count DESC, like_count DESC, mt.created_at DESC
        LIMIT ?
    ");
    
    $stmt->execute([$genre, $genre, $genre, $per_page]);
    $tracks = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Process tracks and add signed URLs
    $processed_tracks = [];
    foreach ($tracks as $track) {
        $audio_url = $track['audio_url'];
        
        // Generate signed URL if audio token system is available
        if (function_exists('generateSignedAudioUrl')) {
            $audio_url = generateSignedAudioUrl($audio_url, $track['id']);
        }
        
        $processed_tracks[] = [
            'id' => (int)$track['id'],
            'title' => $track['title'],
            'audio_url' => $audio_url,
            'duration' => (int)$track['duration'],
            'image_url' => $track['image_url'],
            'artist_name' => $track['artist_name'],
            'user_id' => (int)$track['user_id'],
            'play_count' => (int)$track['play_count'],
            'like_count' => (int)$track['like_count'],
            'created_at' => $track['created_at']
        ];
    }
    
    echo json_encode([
        'success' => true,
        'tracks' => $processed_tracks,
        'playlist_info' => [
            'name' => $genre . ' Playlist',
            'description' => 'Popular ' . $genre . ' tracks',
            'genre' => $genre
        ]
    ], JSON_UNESCAPED_UNICODE);
    
} catch (Exception $e) {
    error_log("Error fetching genre tracks: " . $e->getMessage());
    echo json_encode([
        'success' => false,
        'error' => 'Failed to fetch genre tracks'
    ], JSON_UNESCAPED_UNICODE);
}
?>


CasperSecurity Mini