prepare("SELECT * FROM projects WHERE id = ? AND client_id = ? AND status = 'Closed'"); $stmt->execute([$project_id, $_SESSION['client_id']]); $project = $stmt->fetch(PDO::FETCH_ASSOC); if (!$project) { $_SESSION['error'] = 'Project not found or not eligible for reopening.'; header('Location: projects-list.php'); exit; } if ($project['reopen_requested']) { $_SESSION['info'] = 'A reopen request is already pending admin approval.'; header('Location: view-project.php?id=' . $project_id); exit; } // Submit reopen request $stmt = $pdo->prepare(" UPDATE projects SET reopen_requested = 1, reopen_reason = ?, reopen_requested_at = NOW() WHERE id = ? "); $stmt->execute([$reason, $project_id]); // Log $stmt = $pdo->prepare(" INSERT INTO project_activity_log (project_id, action, description, performed_by) VALUES (?, 'reopen_requested', ?, ?) "); $stmt->execute([ $project_id, "Reopen requested. Reason: $reason", $_SESSION['client_id'] ]); $_SESSION['success'] = 'Reopen request submitted. An admin will review and approve or reject your request.'; header('Location: view-project.php?id=' . $project_id); exit; } catch (Exception $e) { error_log("Reopen request error: " . $e->getMessage()); $_SESSION['error'] = 'Error submitting reopen request.'; header('Location: view-project.php?id=' . $project_id); exit; }