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/domains/soundstudiopro.com/private_html/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/private_html/admin/manage_playlists.php
<?php
// Admin Playlist Management
session_start();

// Check admin access
if (!isset($_SESSION['user_id']) || $_SESSION['user_role'] !== 'admin') {
    header('Location: /auth/login.php');
    exit;
}

require_once __DIR__ . '/../config/database.php';

// Handle form submissions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $pdo = getDBConnection();
    
    if (isset($_POST['action'])) {
        switch ($_POST['action']) {
            case 'toggle_featured':
                $track_id = intval($_POST['track_id']);
                $is_featured = isset($_POST['is_featured']) ? 1 : 0;
                $stmt = $pdo->prepare("UPDATE music_tracks SET is_featured = ? WHERE id = ?");
                $stmt->execute([$is_featured, $track_id]);
                break;
                
            case 'toggle_vip':
                $track_id = intval($_POST['track_id']);
                $is_vip = isset($_POST['is_vip']) ? 1 : 0;
                $stmt = $pdo->prepare("UPDATE music_tracks SET is_vip_sample = ? WHERE id = ?");
                $stmt->execute([$is_vip, $track_id]);
                break;
                
            case 'update_order':
                $track_id = intval($_POST['track_id']);
                $order = intval($_POST['order']);
                $stmt = $pdo->prepare("UPDATE music_tracks SET playlist_order = ? WHERE id = ?");
                $stmt->execute([$order, $track_id]);
                break;
        }
        
        // Redirect to prevent resubmission
        header('Location: ' . $_SERVER['PHP_SELF'] . '?tab=' . ($_POST['tab'] ?? 'all'));
        exit;
    }
}

// Get current tab
$current_tab = $_GET['tab'] ?? 'all';

// Get database connection
$pdo = getDBConnection();

// Fetch tracks based on current tab
switch ($current_tab) {
    case 'featured':
        $where_clause = "WHERE mt.is_featured = 1";
        break;
    case 'vip':
        $where_clause = "WHERE mt.is_vip_sample = 1";
        break;
    case 'all':
    default:
        $where_clause = "WHERE 1=1";
        break;
}

$query = "
    SELECT 
        mt.id,
        mt.title,
        mt.audio_url,
        mt.is_featured,
        mt.is_vip_sample,
        mt.playlist_order,
        mt.created_at,
        u.user_name as artist_name,
        COALESCE(play_count.count, 0) as play_count,
        COALESCE(like_count.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 count 
        FROM track_plays 
        GROUP BY track_id
    ) play_count ON mt.id = play_count.track_id
    LEFT JOIN (
        SELECT track_id, COUNT(*) as count 
        FROM track_likes 
        GROUP BY track_id
    ) like_count ON mt.id = like_count.track_id
    $where_clause
    AND mt.status = 'complete' 
    AND mt.audio_url IS NOT NULL
    ORDER BY mt.playlist_order ASC, mt.created_at DESC
    LIMIT 100
";

$tracks = $pdo->query($query)->fetchAll(PDO::FETCH_ASSOC);

// Get counts
$featured_count = $pdo->query("SELECT COUNT(*) as count FROM music_tracks WHERE is_featured = 1")->fetch()['count'];
$vip_count = $pdo->query("SELECT COUNT(*) as count FROM music_tracks WHERE is_vip_sample = 1")->fetch()['count'];
$total_count = $pdo->query("SELECT COUNT(*) as count FROM music_tracks WHERE status = 'complete'")->fetch()['count'];
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Playlist Management - Admin</title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #f8fafc; }
        .container { max-width: 1200px; margin: 0 auto; padding: 20px; }
        .header { background: white; padding: 20px; border-radius: 8px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
        .tabs { display: flex; gap: 10px; margin-bottom: 20px; }
        .tab { padding: 10px 20px; background: white; border: 1px solid #e5e7eb; border-radius: 6px; text-decoration: none; color: #374151; }
        .tab.active { background: #3b82f6; color: white; }
        .track-list { background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
        .track-item { display: grid; grid-template-columns: 50px 2fr 100px 100px 80px 200px; gap: 15px; padding: 15px; border-bottom: 1px solid #f3f4f6; align-items: center; }
        .track-item:last-child { border-bottom: none; }
        .track-title { font-weight: 600; color: #111827; }
        .track-artist { font-size: 14px; color: #6b7280; }
        .checkbox-group { display: flex; flex-direction: column; gap: 5px; }
        .checkbox-group label { font-size: 12px; color: #374151; }
        .order-input { width: 60px; padding: 4px; border: 1px solid #d1d5db; border-radius: 4px; }
        .stats { font-size: 12px; color: #6b7280; }
        .actions { display: flex; gap: 5px; }
        .btn { padding: 6px 12px; border: none; border-radius: 4px; cursor: pointer; font-size: 12px; }
        .btn-primary { background: #3b82f6; color: white; }
        .btn-secondary { background: #6b7280; color: white; }
        .play-btn { background: #10b981; color: white; border: none; border-radius: 50%; width: 40px; height: 40px; cursor: pointer; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>🎵 Playlist Management</h1>
            <p>Manage Featured tracks and VIP Sample playlist for the homepage</p>
        </div>

        <div class="tabs">
            <a href="?tab=all" class="tab <?= $current_tab === 'all' ? 'active' : '' ?>">All Tracks (<?= $total_count ?>)</a>
            <a href="?tab=featured" class="tab <?= $current_tab === 'featured' ? 'active' : '' ?>">⭐ Featured (<?= $featured_count ?>)</a>
            <a href="?tab=vip" class="tab <?= $current_tab === 'vip' ? 'active' : '' ?>">🎵 VIP Samples (<?= $vip_count ?>)</a>
        </div>

        <div class="track-list">
            <div class="track-item" style="background: #f9fafb; font-weight: 600;">
                <div>Play</div>
                <div>Track Details</div>
                <div>Featured</div>
                <div>VIP Sample</div>
                <div>Order</div>
                <div>Actions</div>
            </div>
            
            <?php foreach ($tracks as $track): ?>
            <div class="track-item">
                <button class="play-btn" onclick="playTrack('<?= htmlspecialchars($track['audio_url']) ?>', '<?= htmlspecialchars($track['title']) ?>', '<?= htmlspecialchars($track['artist_name']) ?>')">
                    <i style="font-size: 14px;">▶</i>
                </button>
                
                <div>
                    <div class="track-title"><?= htmlspecialchars($track['title']) ?></div>
                    <div class="track-artist">by <?= htmlspecialchars($track['artist_name']) ?></div>
                    <div class="stats"><?= $track['play_count'] ?> plays • <?= $track['like_count'] ?> likes</div>
                </div>
                
                <form method="POST" style="margin: 0;">
                    <input type="hidden" name="action" value="toggle_featured">
                    <input type="hidden" name="track_id" value="<?= $track['id'] ?>">
                    <input type="hidden" name="tab" value="<?= $current_tab ?>">
                    <div class="checkbox-group">
                        <label>
                            <input type="checkbox" name="is_featured" <?= $track['is_featured'] ? 'checked' : '' ?> onchange="this.form.submit()">
                            Featured
                        </label>
                    </div>
                </form>
                
                <form method="POST" style="margin: 0;">
                    <input type="hidden" name="action" value="toggle_vip">
                    <input type="hidden" name="track_id" value="<?= $track['id'] ?>">
                    <input type="hidden" name="tab" value="<?= $current_tab ?>">
                    <div class="checkbox-group">
                        <label>
                            <input type="checkbox" name="is_vip" <?= $track['is_vip_sample'] ? 'checked' : '' ?> onchange="this.form.submit()">
                            VIP
                        </label>
                    </div>
                </form>
                
                <form method="POST" style="margin: 0;">
                    <input type="hidden" name="action" value="update_order">
                    <input type="hidden" name="track_id" value="<?= $track['id'] ?>">
                    <input type="hidden" name="tab" value="<?= $current_tab ?>">
                    <input type="number" name="order" value="<?= $track['playlist_order'] ?>" class="order-input" onchange="this.form.submit()">
                </form>
                
                <div class="actions">
                    <button class="btn btn-secondary" onclick="window.open('<?= htmlspecialchars($track['audio_url']) ?>', '_blank')">Download</button>
                </div>
            </div>
            <?php endforeach; ?>
        </div>

        <div style="margin-top: 20px; text-align: center;">
            <a href="/admin.php" class="btn btn-primary">← Back to Admin Dashboard</a>
        </div>
    </div>

    <script>
        function playTrack(audioUrl, title, artist) {
            // Use the global player if available
            if (typeof window.enhancedGlobalPlayer !== 'undefined') {
                window.enhancedGlobalPlayer.playTrack(audioUrl, title, artist);
            } else if (typeof window.playTrack === 'function') {
                window.playTrack(audioUrl, title, artist);
            } else {
                // Fallback: open in new window
                window.open(audioUrl, '_blank');
            }
        }
    </script>
</body>
</html> 

CasperSecurity Mini