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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/private_html/sitemap-generator.php
<?php
/**
 * Dynamic Sitemap Generator for SoundStudioPro
 * Generates XML sitemaps for tracks, artists, and other dynamic content
 * Run this periodically via cron job for fresh content indexing
 */

require_once 'config/database.php';

// Set headers for XML output
header('Content-Type: application/xml; charset=utf-8');

// Get database connection
try {
    $pdo = getDBConnection();
} catch (Exception $e) {
    http_response_code(500);
    echo '<?xml version="1.0" encoding="UTF-8"?><error>Database connection failed</error>';
    exit;
}

// Generate tracks sitemap
function generateTracksSitemap($pdo) {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"' . PHP_EOL;
    $xml .= '        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">' . PHP_EOL;
    
    // Get recent public tracks for sitemap
    $stmt = $pdo->prepare("
        SELECT 
            mt.id,
            mt.title,
            mt.prompt,
            mt.created_at,
            mt.updated_at,
            u.name as artist_name
        FROM music_tracks mt 
        JOIN users u ON mt.user_id = u.id 
        WHERE mt.status = 'complete'
        AND (mt.is_public = 1 OR mt.is_public IS NULL)
        AND (mt.audio_url IS NOT NULL AND mt.audio_url != '' OR mt.variations_count > 0)
        AND mt.title IS NOT NULL
        AND mt.user_id IS NOT NULL
        ORDER BY mt.created_at DESC 
        LIMIT 5000
    ");
    
    $stmt->execute();
    $tracks = $stmt->fetchAll();
    
    foreach ($tracks as $track) {
        $lastmod = max($track['created_at'], $track['updated_at'] ?? $track['created_at']);
        $lastmod = date('Y-m-d', strtotime($lastmod));
        
        $xml .= '    <url>' . PHP_EOL;
        $xml .= '        <loc>https://soundstudiopro.com/track.php?id=' . $track['id'] . '</loc>' . PHP_EOL;
        $xml .= '        <lastmod>' . $lastmod . '</lastmod>' . PHP_EOL;
        $xml .= '        <changefreq>weekly</changefreq>' . PHP_EOL;
        $xml .= '        <priority>0.6</priority>' . PHP_EOL;
        $xml .= '    </url>' . PHP_EOL;
    }
    
    $xml .= '</urlset>';
    
    file_put_contents('sitemap-tracks.xml', $xml);
    return count($tracks);
}

// Generate artists sitemap
function generateArtistsSitemap($pdo) {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
    
    // Get active artists with public tracks
    $stmt = $pdo->prepare("
        SELECT DISTINCT
            u.id,
            u.name,
            u.created_at,
            u.updated_at,
            COUNT(mt.id) as track_count
        FROM users u 
        JOIN music_tracks mt ON u.id = mt.user_id 
        WHERE mt.status = 'complete'
        AND (mt.is_public = 1 OR mt.is_public IS NULL)
        AND (mt.audio_url IS NOT NULL AND mt.audio_url != '' OR mt.variations_count > 0)
        AND u.name IS NOT NULL
        AND mt.user_id IS NOT NULL
        GROUP BY u.id, u.name, u.created_at, u.updated_at
        HAVING track_count > 0
        ORDER BY track_count DESC 
        LIMIT 2000
    ");
    
    $stmt->execute();
    $artists = $stmt->fetchAll();
    
    foreach ($artists as $artist) {
        $lastmod = max($artist['created_at'], $artist['updated_at'] ?? $artist['created_at']);
        $lastmod = date('Y-m-d', strtotime($lastmod));
        
        $xml .= '    <url>' . PHP_EOL;
        $xml .= '        <loc>https://soundstudiopro.com/artist_profile.php?id=' . $artist['id'] . '</loc>' . PHP_EOL;
        $xml .= '        <lastmod>' . $lastmod . '</lastmod>' . PHP_EOL;
        $xml .= '        <changefreq>weekly</changefreq>' . PHP_EOL;
        $xml .= '        <priority>0.5</priority>' . PHP_EOL;
        $xml .= '    </url>' . PHP_EOL;
    }
    
    $xml .= '</urlset>';
    
    file_put_contents('sitemap-artists.xml', $xml);
    return count($artists);
}

// Generate keyword-based landing pages sitemap
function generateKeywordsSitemap() {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
    
    // SEO-optimized search terms for landing pages
    $seo_keywords = [
        'free+ai+music+generator',
        'ai+music+software',
        'music+production+software',
        'beat+maker+software',
        'ai+song+generator',
        'royalty+free+music',
        'music+creation+software',
        'ai+music+composer',
        'online+music+maker',
        'free+music+software',
        'ai+beat+maker',
        'music+generator+app',
        'artificial+intelligence+music',
        'automated+music+creation',
        'music+studio+software',
        'digital+music+creator',
        'music+composition+software',
        'electronic+music+maker',
        'hip+hop+beat+maker',
        'pop+music+generator'
    ];
    
    foreach ($seo_keywords as $keyword) {
        $xml .= '    <url>' . PHP_EOL;
        $xml .= '        <loc>https://soundstudiopro.com/community_fixed.php?search=' . $keyword . '</loc>' . PHP_EOL;
        $xml .= '        <lastmod>' . date('Y-m-d') . '</lastmod>' . PHP_EOL;
        $xml .= '        <changefreq>daily</changefreq>' . PHP_EOL;
        $xml .= '        <priority>0.8</priority>' . PHP_EOL;
        $xml .= '    </url>' . PHP_EOL;
    }
    
    $xml .= '</urlset>';
    
    file_put_contents('sitemap-keywords.xml', $xml);
    return count($seo_keywords);
}

// Generate sitemap index
function generateSitemapIndex() {
    $xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    $xml .= '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . PHP_EOL;
    
    $sitemaps = [
        'sitemap.xml' => 'Main sitemap with static pages',
        'sitemap-tracks.xml' => 'Music tracks sitemap',
        'sitemap-artists.xml' => 'Artists profiles sitemap',
        'sitemap-keywords.xml' => 'SEO keywords landing pages'
    ];
    
    foreach ($sitemaps as $sitemap => $description) {
        $xml .= '    <sitemap>' . PHP_EOL;
        $xml .= '        <loc>https://soundstudiopro.com/' . $sitemap . '</loc>' . PHP_EOL;
        $xml .= '        <lastmod>' . date('Y-m-d\TH:i:s+00:00') . '</lastmod>' . PHP_EOL;
        $xml .= '    </sitemap>' . PHP_EOL;
    }
    
    $xml .= '</sitemapindex>';
    
    file_put_contents('sitemap-index.xml', $xml);
}

// Check if running from command line or web
if (php_sapi_name() === 'cli') {
    echo "Generating sitemaps for SoundStudioPro...\n";
    
    $tracks_count = generateTracksSitemap($pdo);
    echo "Generated sitemap-tracks.xml with {$tracks_count} tracks\n";
    
    $artists_count = generateArtistsSitemap($pdo);
    echo "Generated sitemap-artists.xml with {$artists_count} artists\n";
    
    $keywords_count = generateKeywordsSitemap();
    echo "Generated sitemap-keywords.xml with {$keywords_count} keyword pages\n";
    
    generateSitemapIndex();
    echo "Generated sitemap-index.xml\n";
    
    echo "All sitemaps generated successfully!\n";
    echo "Don't forget to submit sitemap-index.xml to Google Search Console\n";
} else {
    // Web interface
    echo '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
    echo '<status>' . PHP_EOL;
    
    try {
        $tracks_count = generateTracksSitemap($pdo);
        $artists_count = generateArtistsSitemap($pdo);
        $keywords_count = generateKeywordsSitemap();
        generateSitemapIndex();
        
        echo '<success>true</success>' . PHP_EOL;
        echo '<tracks>' . $tracks_count . '</tracks>' . PHP_EOL;
        echo '<artists>' . $artists_count . '</artists>' . PHP_EOL;
        echo '<keywords>' . $keywords_count . '</keywords>' . PHP_EOL;
        echo '<message>Sitemaps generated successfully</message>' . PHP_EOL;
    } catch (Exception $e) {
        echo '<success>false</success>' . PHP_EOL;
        echo '<error>' . htmlspecialchars($e->getMessage()) . '</error>' . PHP_EOL;
    }
    
    echo '</status>';
}
?>

CasperSecurity Mini