![]() 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/api/ |
<?php
session_start();
header('Content-Type: application/json');
// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
echo json_encode([
'success' => false,
'message' => 'User not logged in'
]);
exit;
}
$track_id = $_GET['track_id'] ?? null;
if (!$track_id) {
echo json_encode([
'success' => false,
'message' => 'Track ID required'
]);
exit;
}
// Validate track_id is numeric
if (!is_numeric($track_id)) {
echo json_encode([
'success' => false,
'message' => 'Invalid track ID'
]);
exit;
}
try {
require_once '../config/database.php';
$pdo = getDBConnection();
if (!$pdo) {
throw new Exception('Database connection failed');
}
// Get track details and verify ownership
$stmt = $pdo->prepare("
SELECT id, title, status, user_id, audio_url
FROM music_tracks
WHERE id = ? AND user_id = ? AND status = 'failed'
");
$stmt->execute([$track_id, $_SESSION['user_id']]);
$track = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$track) {
echo json_encode([
'success' => false,
'message' => 'Track not found or not eligible for deletion'
]);
exit;
}
// Start transaction
$pdo->beginTransaction();
try {
// Delete related records first (these tables may not exist, so we'll handle errors gracefully)
$tables_to_clean = [
'audio_variations',
'track_comments',
'track_likes',
'track_downloads',
'track_plays'
];
foreach ($tables_to_clean as $table) {
try {
$stmt = $pdo->prepare("DELETE FROM {$table} WHERE track_id = ?");
$stmt->execute([$track_id]);
} catch (PDOException $e) {
// Log but don't fail if table doesn't exist
error_log("Warning: Could not delete from {$table}: " . $e->getMessage());
}
}
// Delete the main track
$stmt = $pdo->prepare("DELETE FROM music_tracks WHERE id = ?");
$stmt->execute([$track_id]);
// Commit transaction
$pdo->commit();
echo json_encode([
'success' => true,
'message' => 'Track deleted successfully'
]);
} catch (Exception $e) {
// Rollback on error
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
throw $e;
}
} catch (Exception $e) {
error_log("Error deleting track (ID: {$track_id}, User: {$_SESSION['user_id']}): " . $e->getMessage());
error_log("Stack trace: " . $e->getTraceAsString());
echo json_encode([
'success' => false,
'message' => 'Internal server error'
]);
}
?>