![]() 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/utils/ |
<?php
// Check specific track status with API.Box
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Get track_id from URL parameter
$track_id = $_GET['track_id'] ?? null;
if (!$track_id) {
echo "<h1>❌ Error: No track_id provided</h1>";
echo "<p>Usage: /check_track_status.php?track_id=TRACK_ID</p>";
exit;
}
$api_key = '63edba40620216c5aa2c04240ac41dbd';
echo "<h1>🔍 API.Box Track Status Check</h1>";
echo "<h2>Track ID: $track_id</h2>";
// Check local database first
require_once 'config/database.php';
$pdo = getDBConnection();
if ($pdo) {
$stmt = $pdo->prepare("SELECT * FROM music_tracks WHERE id = ?");
$stmt->execute([$track_id]);
$track = $stmt->fetch();
if ($track) {
echo "<h3>📊 Local Database Status</h3>";
echo "<table border='1' style='border-collapse: collapse; margin: 20px 0;'>";
echo "<tr><th>Field</th><th>Value</th></tr>";
echo "<tr><td>ID</td><td>{$track['id']}</td></tr>";
echo "<tr><td>User ID</td><td>{$track['user_id']}</td></tr>";
echo "<tr><td>Task ID</td><td>{$track['task_id']}</td></tr>";
echo "<tr><td>Title</td><td>{$track['title']}</td></tr>";
echo "<tr><td>Prompt</td><td>{$track['prompt']}</td></tr>";
echo "<tr><td>Music Type</td><td>{$track['music_type']}</td></tr>";
echo "<tr><td>Model Version</td><td>{$track['model_version']}</td></tr>";
echo "<tr><td>Duration</td><td>{$track['duration']}s</td></tr>";
echo "<tr><td>Status</td><td style='color: " . ($track['status'] === 'complete' ? 'green' : ($track['status'] === 'failed' ? 'red' : 'orange')) . "'>{$track['status']}</td></tr>";
echo "<tr><td>Audio URL</td><td>" . ($track['audio_url'] ?: 'NULL') . "</td></tr>";
echo "<tr><td>Created At</td><td>{$track['created_at']}</td></tr>";
echo "<tr><td>Updated At</td><td>{$track['updated_at']}</td></tr>";
echo "</table>";
$task_id = $track['task_id'];
} else {
echo "<p style='color: red;'>❌ Track not found in local database</p>";
exit;
}
} else {
echo "<p style='color: red;'>❌ Database connection failed</p>";
exit;
}
// Check API.Box status
echo "<h3>🌐 API.Box Status Check</h3>";
$api_url = "https://api.api.box/api/v1/status/$task_id";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $api_key,
'Content-Type: application/json',
'User-Agent: MusicStudio-Pro/1.0'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);
echo "<p><strong>API URL:</strong> $api_url</p>";
echo "<p><strong>HTTP Code:</strong> $http_code</p>";
if ($curl_error) {
echo "<p style='color: red;'><strong>cURL Error:</strong> $curl_error</p>";
} else {
echo "<p style='color: green;'><strong>cURL:</strong> Success</p>";
}
echo "<p><strong>Raw Response:</strong></p>";
echo "<pre style='background: #f0f0f0; padding: 10px; max-height: 400px; overflow-y: auto; border: 1px solid #ccc;'>";
echo htmlspecialchars($response);
echo "</pre>";
// Parse and display response
if ($response) {
$data = json_decode($response, true);
if ($data) {
echo "<h3>📋 Parsed API.Box Response</h3>";
echo "<table border='1' style='border-collapse: collapse; margin: 20px 0;'>";
echo "<tr><th>Field</th><th>Value</th></tr>";
if (isset($data['data'])) {
foreach ($data['data'] as $key => $value) {
if (is_array($value)) {
$value = json_encode($value);
}
echo "<tr><td>$key</td><td>" . htmlspecialchars($value) . "</td></tr>";
}
} else {
foreach ($data as $key => $value) {
if (is_array($value)) {
$value = json_encode($value);
}
echo "<tr><td>$key</td><td>" . htmlspecialchars($value) . "</td></tr>";
}
}
echo "</table>";
// Check if we need to update local database
if (isset($data['data']['status']) && $data['data']['status'] === 'complete' && isset($data['data']['audioUrl'])) {
echo "<h3>🔄 Update Local Database</h3>";
if ($pdo && $track) {
$stmt = $pdo->prepare("
UPDATE music_tracks
SET status = 'complete',
audio_url = ?,
updated_at = NOW()
WHERE id = ?
");
if ($stmt->execute([$data['data']['audioUrl'], $track_id])) {
echo "<p style='color: green;'>✅ Local database updated successfully!</p>";
} else {
echo "<p style='color: red;'>❌ Failed to update local database</p>";
}
}
}
} else {
echo "<p style='color: red;'>❌ Failed to parse JSON response</p>";
}
}
// Test callback endpoint
echo "<h3>🔄 Test Callback Endpoint</h3>";
echo "<p>If the track is complete, you can manually trigger the callback:</p>";
echo "<button onclick='testCallback()' style='padding: 10px 20px; background: #667eea; color: white; border: none; border-radius: 5px; cursor: pointer;'>Test Callback</button>";
echo "<div id='callbackResult' style='margin-top: 20px;'></div>";
echo "<h3>🔗 Quick Links</h3>";
echo "<p><a href='/library.php' style='color: #667eea;'>📚 View Library</a> | ";
echo "<a href='/create_music.php' style='color: #667eea;'>🎵 Create New Music</a> | ";
echo "<a href='/dashboard.php' style='color: #667eea;'>📊 Dashboard</a></p>";
?>
<script>
async function testCallback() {
const resultDiv = document.getElementById('callbackResult');
resultDiv.innerHTML = '<p>Testing callback...</p>';
try {
const response = await fetch('/callback.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
taskId: '<?php echo $task_id; ?>',
status: 'complete',
audioUrl: 'https://example.com/test_audio.mp3',
title: '<?php echo htmlspecialchars($track['title']); ?>',
duration: <?php echo $track['duration']; ?>
})
});
const data = await response.json();
if (data.success) {
resultDiv.innerHTML = '<p style="color: green;">✅ Callback test successful!</p>';
setTimeout(() => location.reload(), 2000);
} else {
resultDiv.innerHTML = '<p style="color: red;">❌ Callback test failed: ' + data.error + '</p>';
}
} catch (error) {
resultDiv.innerHTML = '<p style="color: red;">❌ Callback test failed: ' + error.message + '</p>';
}
}
</script>