![]() 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/ |
<?php
// Audit Track Click Flow
// This file traces exactly what happens when clicking a track title from the community page
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Audit Track Click Flow</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
.audit-section { margin: 20px 0; padding: 20px; border: 1px solid #ddd; border-radius: 8px; background: white; }
.audit-button {
background: #667eea; color: white; padding: 10px 20px;
border: none; border-radius: 5px; cursor: pointer; margin: 5px;
}
.audit-button:hover { background: #5a6fd8; }
.audit-result { margin: 10px 0; padding: 10px; border-radius: 5px; }
.success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
.info { background: #d1ecf1; color: #0c5460; border: 1px solid #bee5eb; }
.warning { background: #fff3cd; color: #856404; border: 1px solid #ffeaa7; }
.flow-diagram {
background: #f8f9fa; border: 1px solid #dee2e6;
padding: 20px; border-radius: 8px; margin: 20px 0;
font-family: monospace; line-height: 1.6;
}
.step { margin: 10px 0; padding: 10px; background: #e9ecef; border-radius: 5px; }
.step-number { background: #667eea; color: white; padding: 2px 8px; border-radius: 12px; margin-right: 10px; }
.test-area {
min-height: 300px; border: 2px dashed #ccc;
padding: 20px; margin: 20px 0; border-radius: 8px; background: white;
}
</style>
</head>
<body>
<h1>๐ Audit Track Click Flow</h1>
<div class="audit-section">
<h2>๐ Flow Overview</h2>
<div class="flow-diagram">
<div class="step">
<span class="step-number">1</span>
<strong>User clicks track title</strong> in community page card
</div>
<div class="step">
<span class="step-number">2</span>
<strong>Link href:</strong> <code>/track.php?id=TRACK_ID</code>
</div>
<div class="step">
<span class="step-number">3</span>
<strong>AJAX Navigation intercepts</strong> click (if enabled)
</div>
<div class="step">
<span class="step-number">4</span>
<strong>shouldHandleWithAjax()</strong> checks if <code>/track.php</code> is in ajaxPages array
</div>
<div class="step">
<span class="step-number">5</span>
<strong>navigateToPage()</strong> calls <code>/ajax_load_page.php?page=track&id=TRACK_ID</code>
</div>
<div class="step">
<span class="step-number">6</span>
<strong>ajax_load_page.php</strong> includes <code>track.php</code> with <code>$_GET['ajax'] = '1'</code>
</div>
<div class="step">
<span class="step-number">7</span>
<strong>track.php</strong> detects AJAX request and outputs content without HTML structure
</div>
<div class="step">
<span class="step-number">8</span>
<strong>Content cleaning</strong> removes any remaining HTML structure elements
</div>
<div class="step">
<span class="step-number">9</span>
<strong>updatePageContent()</strong> injects cleaned content into existing page
</div>
</div>
</div>
<div class="audit-section">
<h2>๐ง Test Controls</h2>
<p>Test each step of the track click flow:</p>
<button class="audit-button" onclick="testTrackAjaxLoad()">๐ต Test Track AJAX Load</button>
<button class="audit-button" onclick="testTrackDirectLoad()">๐ Test Track Direct Load</button>
<button class="audit-button" onclick="checkAjaxNavigation()">๐งญ Check AJAX Navigation</button>
<button class="audit-button" onclick="simulateTrackClick()">๐ฑ๏ธ Simulate Track Click</button>
<button class="audit-button" onclick="clearTestArea()">๐๏ธ Clear Test Area</button>
</div>
<div class="audit-section">
<h2>๐ Current Status</h2>
<div id="statusDisplay">
<p><strong>AJAX Navigation:</strong> <span id="ajaxStatus">Checking...</span></p>
<p><strong>Track.php in allowed pages:</strong> <span id="trackAllowedStatus">Checking...</span></p>
<p><strong>Track.php in ajaxPages array:</strong> <span id="trackAjaxStatus">Checking...</span></p>
<p><strong>Track.php parsing:</strong> <span id="trackParsingStatus">Checking...</span></p>
</div>
</div>
<div class="audit-section">
<h2>๐งช Test Area</h2>
<p>Test results and content will appear here:</p>
<div id="testArea" class="test-area">
<p style="color: #666; text-align: center;">Click a test button above to start...</p>
</div>
</div>
<div class="audit-section">
<h2>๐ Audit Results</h2>
<div id="auditResults"></div>
</div>
<script>
function logAudit(message, type = 'info') {
const results = document.getElementById('auditResults');
const div = document.createElement('div');
div.className = `audit-result ${type}`;
div.innerHTML = `[${new Date().toLocaleTimeString()}] ${message}`;
results.appendChild(div);
results.scrollTop = results.scrollHeight;
}
function clearTestArea() {
document.getElementById('testArea').innerHTML = '<p style="color: #666; text-align: center;">Test area cleared...</p>';
logAudit('Test area cleared');
}
function updateStatus() {
// Check AJAX Navigation
if (typeof window.ajaxNavigation !== 'undefined') {
document.getElementById('ajaxStatus').textContent = 'โ
Available';
} else {
document.getElementById('ajaxStatus').textContent = 'โ Not Available';
}
// Check if track.php is in allowed pages (we know it is from our code)
document.getElementById('trackAllowedStatus').textContent = 'โ
Yes (track => track.php)';
// Check if /track.php is in ajaxPages array
if (typeof window.shouldHandleWithAjax === 'function') {
const isTrackAjax = window.shouldHandleWithAjax('/track.php?id=123');
document.getElementById('trackAjaxStatus').textContent = isTrackAjax ? 'โ
Yes' : 'โ No';
} else {
document.getElementById('trackAjaxStatus').textContent = 'โ Function not available';
}
// Check track parsing
if (typeof window.parsePageURL === 'function') {
const trackParse = window.parsePageURL('/track.php?id=123');
document.getElementById('trackParsingStatus').textContent = trackParse.pageType === 'track' ? 'โ
Yes (track)' : 'โ No';
} else {
document.getElementById('trackParsingStatus').textContent = 'โ Function not available';
}
}
function testTrackAjaxLoad() {
logAudit('๐ต Testing track.php AJAX load...', 'info');
const testArea = document.getElementById('testArea');
testArea.innerHTML = '<p style="color: #666; text-align: center;">Loading track via AJAX...</p>';
// Test with a sample track ID
fetch('/ajax_load_page.php?page=track&id=123')
.then(response => {
logAudit(`๐ก Response status: ${response.status}`, 'info');
return response.json();
})
.then(data => {
if (data.success) {
testArea.innerHTML = data.content;
logAudit('โ
Track loaded successfully via AJAX', 'success');
logAudit(`๐ Content length: ${data.content.length} characters`, 'success');
logAudit(`๐ Page: ${data.page}`, 'success');
// Check for potential issues
checkTrackContentForIssues(data.content);
} else {
logAudit(`โ Track AJAX load failed: ${data.error}`, 'error');
testArea.innerHTML = `<div style="background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px;"><h3>Error:</h3><p>${data.error}</p></div>`;
}
})
.catch(error => {
logAudit(`โ Track AJAX request failed: ${error.message}`, 'error');
testArea.innerHTML = `<div style="background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px;"><h3>Request Error:</h3><p>${error.message}</p></div>`;
});
}
function testTrackDirectLoad() {
logAudit('๐ Testing track.php direct load...', 'info');
// Open track page in new tab
window.open('/track.php?id=123', '_blank');
logAudit('๐ Track page opened in new tab for comparison', 'info');
}
function checkAjaxNavigation() {
logAudit('๐งญ Checking AJAX navigation system...', 'info');
// Check if AJAX navigation is available
if (typeof window.ajaxNavigation !== 'undefined') {
logAudit('โ
AJAX navigation object available', 'success');
// Check if track links should be handled with AJAX
if (typeof window.shouldHandleWithAjax === 'function') {
const trackLink = '/track.php?id=123';
const shouldUseAjax = window.shouldHandleWithAjax(trackLink);
logAudit(`๐ Track link "${trackLink}" should use AJAX: ${shouldUseAjax ? 'Yes' : 'No'}`, shouldUseAjax ? 'success' : 'warning');
} else {
logAudit('โ shouldHandleWithAjax function not available', 'error');
}
// Check URL parsing
if (typeof window.parsePageURL === 'function') {
const trackParse = window.parsePageURL('/track.php?id=123');
logAudit(`๐ Track URL parsing: pageType=${trackParse.pageType}, params=${JSON.stringify(trackParse.params)}`, 'info');
} else {
logAudit('โ parsePageURL function not available', 'error');
}
} else {
logAudit('โ AJAX navigation object not available', 'error');
}
}
function simulateTrackClick() {
logAudit('๐ฑ๏ธ Simulating track title click...', 'info');
// Create a test track link
const testLink = document.createElement('a');
testLink.href = '/track.php?id=123';
testLink.textContent = 'Test Track Title';
testLink.className = 'track-link';
testLink.style.display = 'inline-block';
testLink.style.padding = '10px';
testLink.style.background = '#667eea';
testLink.style.color = 'white';
testLink.style.textDecoration = 'none';
testLink.style.borderRadius = '5px';
testLink.style.margin = '10px';
// Add click event listener to see what happens
testLink.addEventListener('click', function(e) {
logAudit('๐ฑ๏ธ Track link clicked!', 'success');
logAudit(`๐ Href: ${this.href}`, 'info');
// Check if this should be handled with AJAX
if (typeof window.shouldHandleWithAjax === 'function') {
const shouldUseAjax = window.shouldHandleWithAjax(this.href);
logAudit(`๐งญ Should use AJAX: ${shouldUseAjax ? 'Yes' : 'No'}`, shouldUseAjax ? 'success' : 'warning');
if (shouldUseAjax) {
logAudit('โ
Link will be handled by AJAX navigation', 'success');
} else {
logAudit('โ ๏ธ Link will use normal navigation (fallback)', 'warning');
}
} else {
logAudit('โ Cannot determine AJAX handling - function not available', 'error');
}
});
// Add to test area
const testArea = document.getElementById('testArea');
testArea.innerHTML = '<h3>Test Track Link:</h3>';
testArea.appendChild(testLink);
testArea.innerHTML += '<p>Click the link above to test the click handling...</p>';
}
function checkTrackContentForIssues(content) {
logAudit('๐ Checking track content for potential issues...', 'info');
// Check for HTML structure issues
if (content.includes('<html')) {
logAudit('โ ๏ธ Content contains <html> tags (may cause conflicts)', 'warning');
}
if (content.includes('<head')) {
logAudit('โ ๏ธ Content contains <head> tags (may cause conflicts)', 'warning');
}
if (content.includes('<body')) {
logAudit('โ ๏ธ Content contains <body> tags (may cause conflicts)', 'warning');
}
// Check for header/nav issues
if (content.includes('<header')) {
logAudit('โ ๏ธ Content contains <header> tags (may cause conflicts)', 'warning');
}
if (content.includes('<nav')) {
logAudit('โ ๏ธ Content contains <nav> tags (may cause conflicts)', 'warning');
}
// Check for script issues
if (content.includes('<script')) {
logAudit('โ ๏ธ Content contains <script> tags (may cause conflicts)', 'warning');
}
// Check for global player conflicts
if (content.includes('enhancedGlobalPlayer')) {
logAudit('โ ๏ธ Content contains global player elements (may cause conflicts)', 'warning');
}
// Check for large content
if (content.length > 100000) {
logAudit(`โ ๏ธ Content is very large (${content.length} chars) - may cause performance issues`, 'warning');
}
// Check for track-specific content
if (content.includes('track')) {
logAudit('โ
Content appears to contain track-related information', 'success');
}
}
// Auto-update status and run initial checks
window.addEventListener('load', function() {
logAudit('๐ Page loaded, starting audit...', 'success');
updateStatus();
// Auto-check AJAX navigation
setTimeout(() => {
logAudit('๐ Auto-checking AJAX navigation system...', 'info');
checkAjaxNavigation();
}, 1000);
});
// Update status periodically
setInterval(updateStatus, 10000);
</script>
</body>
</html>