<?php
// File: /admin/newsletter_send_handler.php
// TEMP DEBUG: remove display_errors lines once fixed
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

session_start();
require_once __DIR__ . '/../db.php';
require_once __DIR__ . '/email_helper.php'; // uses admin_send_email()

if (!isset($_SESSION['user_id']) || ($_SESSION['role'] ?? '') !== 'admin') {
    die("Access Denied.");
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: newsletter_compose.php');
    exit();
}

$subject = trim($_POST['subject'] ?? '');
$message_body = trim($_POST['message'] ?? '');

if (empty($subject) || empty($message_body)) {
    header('Location: newsletter_compose.php?error=empty');
    exit();
}

$log_file = __DIR__ . '/newsletter_log.txt';
file_put_contents($log_file, "=== Newsletter Log: " . date('Y-m-d H:i:s') . " ===\n", FILE_APPEND);

// fetch subscribers
$query = "SELECT email, unsubscribe_token FROM newsletter_subscribers 
          WHERE status = 'subscribed' 
          AND (unsubscribe_token IS NOT NULL AND unsubscribe_token != '')";
$result = $conn->query($query);

if (!$result) {
    $err = "DB fetch error: " . $conn->error . "\n";
    file_put_contents($log_file, $err, FILE_APPEND);
    error_log($err);
    header('Location: newsletter_compose.php?error=db_fetch');
    exit();
}

$subscribers = $result->fetch_all(MYSQLI_ASSOC);
file_put_contents($log_file, "Subscribers count: " . count($subscribers) . "\n", FILE_APPEND);

$sent_count = 0;
$error_count = 0;
$delay_seconds = 2;

foreach ($subscribers as $subscriber) {
    $email = trim($subscriber['email'] ?? '');
    $token = $subscriber['unsubscribe_token'] ?? '';

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        file_put_contents($log_file, "Invalid email skipped: $email\n", FILE_APPEND);
        continue;
    }

    $unsubscribe_link = "https://unitedculturalforum.com/unsubscribe.php?email=" . urlencode($email) . "&token=" . urlencode($token);
    $footer = "<hr><p style='font-size:12px; color:#777; text-align:center;'>
        You are receiving this because you subscribed to United Cultural Forum.<br>
        <a href='$unsubscribe_link'>Unsubscribe</a> | <a href='https://unitedculturalforum.com'>Visit our site</a>
    </p>";
    $final_message = $message_body . $footer;
    $alt_message = strip_tags($message_body . "\n\nUnsubscribe: $unsubscribe_link");

    file_put_contents($log_file, "Sending to: $email ... ", FILE_APPEND);

    $ok = false;
    try {
        $ok = admin_send_email($email, $subject, $final_message, $alt_message);
    } catch (Throwable $t) {
        file_put_contents($log_file, "EXCEPTION: " . $t->getMessage() . "\n", FILE_APPEND);
        error_log("Newsletter exception for $email: " . $t->getMessage());
        $ok = false;
    }

    if ($ok) {
        file_put_contents($log_file, "SUCCESS\n", FILE_APPEND);
        $sent_count++;
    } else {
        file_put_contents($log_file, "FAILED\n", FILE_APPEND);
        $error_count++;
    }

    // delay
    sleep($delay_seconds);
}

file_put_contents($log_file, "Summary: Sent=$sent_count, Failed=$error_count\n\n", FILE_APPEND);

// redirect with counts (or remove redirects while debugging)
if ($error_count > 0) {
    header('Location: newsletter_compose.php?status=partial_error&sent=' . $sent_count . '&failed=' . $error_count);
} else {
    header('Location: newsletter_compose.php?status=success&count=' . $sent_count);
}
exit();
