3600,
        'display'  => __('Stündlich', 'wp-multi-comment-notifications'),
    );
    return $schedules;
});
// Cron-Event planen
function wp_multi_cmn_schedule_update_check() {
    if (!wp_next_scheduled('wp_multi_cmn_update_check_event')) {
        wp_schedule_event(time(), 'hourly', 'wp_multi_cmn_update_check_event');
    }
}
add_action('wp', 'wp_multi_cmn_schedule_update_check');
// Gitea API aufrufen
function wp_multi_cmn_fetch_latest_release($show_prereleases = false) {
    $api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi-comment-notifications/releases';
    $response = wp_remote_get($api_url, array('timeout' => 10));
    if (is_wp_error($response)) {
        error_log('WP Multi Comment Notifications – Update Fehler: ' . $response->get_error_message());
        return false;
    }
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);
    if (!is_array($data)) {
        error_log('WP Multi Comment Notifications – Ungültige API-Antwort');
        return false;
    }
    foreach ($data as $release) {
        if (!$show_prereleases && isset($release['prerelease']) && $release['prerelease']) {
            continue;
        }
        if (!empty($release['tag_name'])) {
            return $release;
        }
    }
    return null;
}
// Cron Callback
function wp_multi_cmn_update_check() {
    if (!function_exists('get_plugin_data')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $plugin_data = get_plugin_data(__FILE__);
    $installed_version = $plugin_data['Version'];
    $show_prereleases = get_option('wp_multi_cmn_show_prereleases', false);
    $release = wp_multi_cmn_fetch_latest_release($show_prereleases);
    if ($release) {
        update_option('wp_multi_cmn_latest_version', $release['tag_name']);
        update_option('wp_multi_cmn_release_notes', $release['body']);
        update_option('wp_multi_cmn_is_prerelease', $release['prerelease']);
    }
}
add_action('wp_multi_cmn_update_check_event', 'wp_multi_cmn_update_check');
// Widget Callback
function wp_multi_cmn_update_dashboard_widget_content() {
    if (!function_exists('get_plugin_data')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $plugin_data = get_plugin_data(__FILE__);
    $installed_version = $plugin_data['Version'];
    $show_prereleases = get_option('wp_multi_cmn_show_prereleases', false);
    $release = wp_multi_cmn_fetch_latest_release($show_prereleases);
    if ($release === false) {
        echo '
Fehler beim Abrufen der Update-Informationen.
';
        return;
    }
    $latest_version = $release['tag_name'];
    $release_notes = isset($release['body']) ? $release['body'] : '';
    $is_prerelease = isset($release['prerelease']) && $release['prerelease'];
    if (version_compare($installed_version, $latest_version, '>=')) {
        echo 'Du verwendest die aktuelle Version: ' . esc_html($installed_version) . '
';
    } else {
        echo 'Neue Version verfügbar: ' . esc_html($latest_version) . '
';
        echo 'Installiert: ' . esc_html($installed_version) . '
';
        if ($is_prerelease && $show_prereleases) {
            echo 'Hinweis: Dies ist ein PreRelease.
';
        }
        if (!empty($release_notes)) {
            echo 'Release Notes:
' . nl2br(esc_html($release_notes)) . '
';
        }
        $download_url = isset($release['assets'][0]['browser_download_url']) ? $release['assets'][0]['browser_download_url'] : '#';
        echo 'Update herunterladen
';
    }
}
// 1. Plugin-Optionen im Admin-Bereich unter dem Menü "Kommentare" hinzufügen
function wp_multi_comment_notifications_menu() {
    add_submenu_page(
        'edit-comments.php',
        'WP Multi Comment Notifications',
        'Kommentar Benachrichtigungen',
        'manage_options',
        'wp-multi-comment-notifications',
        'wp_multi_comment_notifications_settings_page'
    );
}
add_action('admin_menu', 'wp_multi_comment_notifications_menu');
function wp_multi_comment_notifications_settings_page() {
    ?>
    
        WP Multi Comment Notifications Einstellungen
        
     
    
    comment_author;
    $text = $comment->comment_content;
    $site = get_bloginfo('name');
    $url = get_option('wp_backend_button_url');
    $logo = esc_url(get_option('wp_email_logo_url'));
    $discord_webhook = get_option('wp_discord_webhook_url');
    $discord_template = get_option('wp_discord_message');
    // Nachricht für Discord nur einmal senden
    if ($discord_webhook && $discord_template) {
        $discord_msg = strtr($discord_template, [
            '{{COMMENT_AUTHOR}}' => $author,
            '{{COMMENT_TEXT}}'   => $text,
        ]);
        wp_multi_comment_notifications_send_discord($discord_webhook, $discord_msg);
    }
    // E-Mail & Telegram Benachrichtigungen pro Benutzer
    for ($i = 1; $i <= 6; $i++) {
        $name = get_option("wp_user_{$i}_name");
        $email = get_option("wp_user_{$i}_email");
        $chat_id = get_option("wp_user_{$i}_telegram_chat_id");
        // Nachricht für E-Mail & Telegram
        $replacements = [
            '{{COMMENT_AUTHOR}}' => $author,
            '{{COMMENT_TEXT}}'   => $text,
            '{{USER_NAME}}'      => $name,
        ];
        $email_msg = strtr(get_option('wp_email_message'), $replacements);
        if ($url) $email_msg .= "\n\nWeitere Details hier: $url";
        if ($email) {
            $html = $logo ? "
" : '';
            $html .= nl2br(esc_html($email_msg));
            $headers = [
                'Content-Type: text/html; charset=UTF-8',
                "From: $site ',
            ];
            wp_mail($email, 'Neuer Kommentar', $html, $headers);
        }
        $tg_msg = strtr(get_option('wp_telegram_message'), $replacements);
        if ($chat_id) {
            wp_multi_comment_notifications_send_telegram(
                get_option('wp_telegram_token'),
                $chat_id,
                $comment_ID,
                $tg_msg
            );
        }
    }
}
add_action('wp_insert_comment', 'wp_multi_comment_notifications_on_comment', 10, 1);
/** -------------------------
 * Testnachrichten senden
 * ------------------------- */
add_action('admin_init', function () {
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        for ($i = 1; $i <= 6; $i++) {
            if (isset($_POST["send_test_message_user_$i"])) {
                wp_multi_comment_notifications_send_test_message($i);
            }
        }
    }
});
function wp_multi_comment_notifications_send_test_message($user_number) {
    $name = get_option("wp_user_{$user_number}_name");
    $email = get_option("wp_user_{$user_number}_email");
    $chat_id = get_option("wp_user_{$user_number}_telegram_chat_id");
    $discord_webhook = get_option('wp_discord_webhook_url');
    $token = get_option('wp_telegram_token');
    $button_url = get_option('wp_backend_button_url');
    $message = "Dies ist eine Testnachricht für $name.";
    if ($email) {
        wp_mail($email, 'Testnachricht', $message);
    }
    if ($chat_id) {
        wp_multi_comment_notifications_send_telegram($token, $chat_id, 0, $message);
    }
    if ($discord_webhook) {
        wp_multi_comment_notifications_send_discord($discord_webhook, $message);
    }
}
/** -------------------------
 * Telegram-Nachricht mit Button
 * ------------------------- */
function wp_multi_comment_notifications_send_telegram($token, $chat_id, $comment_ID, $message) {
    $url = "https://api.telegram.org/bot$token/sendMessage";
    $button_url = get_option('wp_backend_button_url');
    $data = [
        'chat_id' => $chat_id,
        'text' => $message,
        'parse_mode' => 'HTML'
    ];
    if ($button_url) {
        $data['reply_markup'] = json_encode([
            'inline_keyboard' => [[['text' => 'Zum Backend', 'url' => $button_url]]]
        ]);
    }
    wp_remote_post($url, [
        'body' => $data,
        'timeout' => 10,
        'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'],
    ]);
}
/** -------------------------
 * Discord-Nachricht senden
 * ------------------------- */
function wp_multi_comment_notifications_send_discord($webhook_url, $message) {
    $payload = json_encode(['content' => $message]);
    wp_remote_post($webhook_url, [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => $payload,
        'timeout' => 10,
    ]);
}