false, 'error' => 'Invalid CSRF token']); exit; } } $currentUser = $_SESSION['user']; $userId = $currentUser['user_id']; $isAdmin = $currentUser['is_admin'] ?? false; // Use centralized database connection $conn = Database::getConnection(); // Get POST/PUT data $data = json_decode(file_get_contents('php://input'), true); if (!$data || !isset($data['comment_id']) || !isset($data['comment_text'])) { throw new Exception("Missing required fields: comment_id, comment_text"); } $commentId = (int)$data['comment_id']; $commentText = trim($data['comment_text']); $markdownEnabled = isset($data['markdown_enabled']) && $data['markdown_enabled']; if (empty($commentText)) { throw new Exception("Comment text cannot be empty"); } // Initialize models $commentModel = new CommentModel($conn); $auditLog = new AuditLogModel($conn); // Update comment $result = $commentModel->updateComment($commentId, $commentText, $markdownEnabled, $userId, $isAdmin); // Log the update if successful if ($result['success']) { $auditLog->log( $userId, 'update', 'comment', (string)$commentId, ['comment_text_preview' => substr($commentText, 0, 100)] ); } // Discard any unexpected output ob_end_clean(); header('Content-Type: application/json'); echo json_encode($result); } catch (Exception $e) { ob_end_clean(); error_log("Update comment API error: " . $e->getMessage()); header('Content-Type: application/json'); echo json_encode([ 'success' => false, 'error' => 'An internal error occurred' ]); }