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_includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/private_html/admin_includes/track_pricing.php
<?php
// Track Pricing Management Tab
// This file handles track pricing and artist revenue sharing

// Get tracks with pricing information
try {
    $stmt = $pdo->prepare("
        SELECT 
            mt.*,
            u.name as artist_name,
            u.email as artist_email,
            COUNT(tp.id) as purchase_count,
            SUM(tp.price_paid) as total_revenue
        FROM music_tracks mt
        LEFT JOIN users u ON mt.user_id = u.id
        LEFT JOIN track_purchases tp ON mt.id = tp.track_id
        WHERE mt.status = 'complete'
        GROUP BY mt.id
        ORDER BY mt.created_at DESC
        LIMIT 100
    ");
    $stmt->execute();
    $tracks = $stmt->fetchAll();
} catch (Exception $e) {
    $tracks = [];
}

// Get pricing statistics
$pricing_stats = $pdo->query("
    SELECT 
        COUNT(*) as total_tracks,
        AVG(price) as avg_price,
        MIN(price) as min_price,
        MAX(price) as max_price,
        SUM(CASE WHEN price > 0 THEN 1 ELSE 0 END) as priced_tracks,
        SUM(CASE WHEN price = 0 THEN 1 ELSE 0 END) as free_tracks
    FROM music_tracks 
    WHERE status = 'complete'
")->fetch();

// Revenue sharing settings (you can adjust these)
$platform_fee_percentage = 30; // Platform takes 30%
$artist_revenue_percentage = 70; // Artist gets 70%
?>

<!-- Track Pricing Management -->
<div class="section-header">
    <h2><i class="fas fa-dollar-sign"></i> Track Pricing & Revenue</h2>
    <p>Manage track pricing and artist revenue sharing</p>
</div>

<!-- Pricing Statistics Cards -->
<div class="stats-grid" style="margin-bottom: 3rem;">
    <div class="stat-card">
        <div class="stat-number"><?= number_format($pricing_stats['total_tracks']) ?></div>
        <div class="stat-label">Total Tracks</div>
    </div>
    <div class="stat-card">
        <div class="stat-number">$<?= number_format($pricing_stats['avg_price'], 2) ?></div>
        <div class="stat-label">Average Price</div>
    </div>
    <div class="stat-card">
        <div class="stat-number"><?= number_format($pricing_stats['priced_tracks']) ?></div>
        <div class="stat-label">Priced Tracks</div>
    </div>
    <div class="stat-card">
        <div class="stat-number"><?= number_format($pricing_stats['free_tracks']) ?></div>
        <div class="stat-label">Free Tracks</div>
    </div>
</div>

<!-- Revenue Sharing Info -->
<div class="info-card" style="background: linear-gradient(135deg, #667eea, #764ba2); padding: 20px; border-radius: 10px; margin-bottom: 2rem;">
    <h3 style="color: white; margin: 0 0 10px 0;">💰 Revenue Sharing Model</h3>
    <div style="color: #e2e8f0;">
        <p><strong>Platform Fee:</strong> <?= $platform_fee_percentage ?>% (covers processing, hosting, development)</p>
        <p><strong>Artist Revenue:</strong> <?= $artist_revenue_percentage ?>% (goes directly to track creator)</p>
        <p><strong>Example:</strong> For a $2.99 track, artist earns $2.09, platform gets $0.90</p>
    </div>
</div>

<input type="text" id="trackPricingSearch" placeholder="Search tracks by title, artist, or price..." class="search-input">

<table class="data-table">
    <thead>
        <tr>
            <th>Track</th>
            <th>Artist</th>
            <th>Current Price</th>
            <th>Purchases</th>
            <th>Revenue</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($tracks as $track): ?>
        <tr data-track-id="<?= $track['id'] ?>">
            <td>
                <div style="display: flex; align-items: center; gap: 1rem;">
                    <div style="width: 50px; height: 50px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: white;">
                        <i class="fas fa-music"></i>
                    </div>
                    <div>
                        <div style="font-weight: 600; color: white;"><?= htmlspecialchars($track['title'] ?? 'Untitled') ?></div>
                        <div style="font-size: 1.2rem; color: #a0aec0;">ID: <?= $track['id'] ?></div>
                        <div style="font-size: 1.2rem; color: #a0aec0;"><?= gmdate('i:s', $track['duration'] ?? 0) ?></div>
                    </div>
                </div>
            </td>
            <td>
                <?php if ($track['artist_name']): ?>
                <div>
                    <div style="font-weight: 600; color: white;"><?= htmlspecialchars($track['artist_name']) ?></div>
                    <div style="font-size: 1.2rem; color: #a0aec0;"><?= htmlspecialchars($track['artist_email']) ?></div>
                </div>
                <?php else: ?>
                <span style="color: #f56565;">Unknown Artist</span>
                <?php endif; ?>
            </td>
            <td>
                <div style="font-weight: 600; color: white;">
                    $<?= number_format($track['price'], 2) ?>
                </div>
                <div style="font-size: 1.2rem; color: #a0aec0;">
                    <?= ceil($track['price']) ?> credits
                </div>
            </td>
            <td>
                <div style="font-weight: 600; color: white;">
                    <?= number_format($track['purchase_count']) ?>
                </div>
                <div style="font-size: 1.2rem; color: #a0aec0;">
                    purchases
                </div>
            </td>
            <td>
                <div style="font-weight: 600; color: white;">
                    $<?= number_format($track['total_revenue'] ?? 0, 2) ?>
                </div>
                <div style="font-size: 1.2rem; color: #a0aec0;">
                    Artist: $<?= number_format(($track['total_revenue'] ?? 0) * ($artist_revenue_percentage / 100), 2) ?>
                </div>
            </td>
            <td>
                <div class="action-buttons">
                    <button class="btn btn-secondary btn-sm" onclick="editTrackPrice(<?= $track['id'] ?>, <?= $track['price'] ?>)">
                        <i class="fas fa-dollar-sign"></i>
                    </button>
                    <button class="btn btn-primary btn-sm" onclick="viewTrackAnalytics(<?= $track['id'] ?>)">
                        <i class="fas fa-chart-line"></i>
                    </button>
                    <button class="btn btn-success btn-sm" onclick="setTrackFree(<?= $track['id'] ?>)">
                        <i class="fas fa-gift"></i>
                    </button>
                </div>
            </td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

<script>
// Track pricing search functionality
document.getElementById('trackPricingSearch')?.addEventListener('input', function() {
    const query = this.value.toLowerCase();
    const rows = document.querySelectorAll('.data-table tbody tr');
    
    rows.forEach(row => {
        const text = row.textContent.toLowerCase();
        row.style.display = text.includes(query) ? '' : 'none';
    });
});

// Edit track price function
function editTrackPrice(trackId, currentPrice) {
    const newPrice = prompt('Enter new track price (USD):', currentPrice);
    if (newPrice !== null && !isNaN(newPrice) && newPrice >= 0) {
        fetch('/api/update_track_price.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({
                track_id: trackId,
                price: parseFloat(newPrice)
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                alert('Track price updated successfully!');
                location.reload();
            } else {
                alert('Error updating track price: ' + (data.error || 'Unknown error'));
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('Error updating track price');
        });
    }
}

// View track analytics function
function viewTrackAnalytics(trackId) {
    window.open(`/admin_track_analytics.php?track_id=${trackId}`, '_blank');
}

// Set track as free function
function setTrackFree(trackId) {
    if (confirm('Set this track as free (price = $0.00)?')) {
        fetch('/api/update_track_price.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({
                track_id: trackId,
                price: 0.00
            })
        })
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                alert('Track set as free successfully!');
                location.reload();
            } else {
                alert('Error setting track as free: ' + (data.error || 'Unknown error'));
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('Error setting track as free');
        });
    }
}
</script> 

CasperSecurity Mini