From 32dea5d00b5a92413c3a0a29bbbf793f7cd6267a Mon Sep 17 00:00:00 2001 From: M_Viper Date: Sat, 8 Mar 2025 20:23:02 +0000 Subject: [PATCH] wp-multi.php aktualisiert --- wp-multi.php | 198 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 180 insertions(+), 18 deletions(-) diff --git a/wp-multi.php b/wp-multi.php index 680e554..2a483b9 100644 --- a/wp-multi.php +++ b/wp-multi.php @@ -3,7 +3,7 @@ * Plugin Name: WP Multi * Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi * Description: Erweiterter Anti-Spam-Schutz mit Honeypot, Keyword-Filter, Link-Limit und mehr. Jetzt mit Statistik im Dashboard und HappyForms-Integration. - * Version: 2.3 + * Version: 2.4 * Author: M_Viper * Author URI: https://m-viper.de * Requires at least: 6.7.2 @@ -33,7 +33,7 @@ function wp_multi_alphabetical_index($atts) { // Hole alle Beiträge $args = array( 'post_type' => 'post', - 'posts_per_page' => -1, // Alle Beiträge (wir filtern später nach Buchstabenbereich) + 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', ); @@ -866,6 +866,7 @@ function wp_multi_statistics_page() { +
+ + +
+ Verwenden Sie ein zufälliges Zeichenfolgen für das Honeypot-Feld. + + + Die Nachricht, die angezeigt wird, wenn ein Honeypot ausgelöst wird. + + > + Deaktivieren Sie das Honeypot-Test-Widget im Frontend. + + + Maximale Anzahl von Links, die in einem Kommentar erlaubt sind. + + + Schlüsselwörter, die blockiert werden sollen (durch Kommas getrennt). + + + Blockierte IP-Adressen (jede Adresse in einer neuen Zeile). + array( - 'Authorization' => 'token ' . $api_token - ) - )); + // Hole die Einstellung, ob PreRelease-Versionen angezeigt werden sollen + $show_prereleases = get_option('wp_multi_update_show_prereleases', false); + + // Gitea API-Anfrage für die neuesten Releases ohne Authentifizierung + $response = wp_remote_get($api_url); + + if (is_wp_error($response)) { + return; // Fehler nicht weitergeben, aber nichts tun + } + + // API-Antwort verarbeiten + $body = wp_remote_retrieve_body($response); + $data = json_decode($body, true); + + // Finde das neueste, gültige Release (nicht PreRelease, falls deaktiviert) + $valid_release = null; + foreach ($data as $release) { + // Wenn PreRelease deaktiviert ist, überspringe alle PreRelease-Versionen + if (!$show_prereleases && isset($release['prerelease']) && $release['prerelease']) { + continue; + } + + if (!empty($release['tag_name'])) { + $valid_release = $release; + break; // Nur das erste gültige Release verwenden + } + } + + if ($valid_release) { + $latest_version = $valid_release['tag_name']; + $release_notes = isset($valid_release['body']) ? $valid_release['body'] : ''; + $is_prerelease = isset($valid_release['prerelease']) && $valid_release['prerelease']; + + // Speichern von Release-Daten + update_option('wp_multi_update_latest_version', $latest_version); + update_option('wp_multi_update_release_notes', $release_notes); + update_option('wp_multi_update_is_prerelease', $is_prerelease); + } +} +add_action('wp_multi_update_check_event', 'wp_multi_update_check'); + +// Callback-Funktion für das Widget +function wp_multi_update_dashboard_widget_content() { + // Gitea API-URL + $api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi/releases'; + + // Die Version des Plugins aus den Metadaten der Plugin-Datei holen + $plugin_data = get_plugin_data( __FILE__ ); + $installed_version = $plugin_data['Version']; // Die installierte Version aus den Plugin-Metadaten + + // Hole die Einstellung, ob PreRelease-Versionen angezeigt werden sollen + $show_prereleases = get_option('wp_multi_update_show_prereleases', false); + + // Gitea API-Anfrage für die neuesten Releases ohne Authentifizierung + $response = wp_remote_get($api_url); if (is_wp_error($response)) { echo 'Fehler beim Abrufen der Versionsinformationen von Gitea.'; @@ -2414,11 +2519,27 @@ function wp_multi_update_dashboard_widget_content() { // API-Antwort verarbeiten $body = wp_remote_retrieve_body($response); $data = json_decode($body, true); - - if (!empty($data) && isset($data[0]['tag_name'])) { - $latest_version = $data[0]['tag_name']; // Neuste Version von Gitea - // Vergleiche die installierte Version mit der neuesten Version + // Finde das neueste, gültige Release (nicht PreRelease, falls deaktiviert) + $valid_release = null; + foreach ($data as $release) { + // Wenn PreRelease deaktiviert ist, überspringe alle PreRelease-Versionen + if (!$show_prereleases && isset($release['prerelease']) && $release['prerelease']) { + continue; + } + + if (!empty($release['tag_name'])) { + $valid_release = $release; + break; // Nur das erste gültige Release verwenden + } + } + + if ($valid_release) { + $latest_version = $valid_release['tag_name']; + $release_notes = isset($valid_release['body']) ? $valid_release['body'] : ''; + $is_prerelease = isset($valid_release['prerelease']) && $valid_release['prerelease']; + + // Anzeige der Versionen und Text basierend auf PreRelease if (version_compare($installed_version, $latest_version, '>=')) { // Wenn die installierte Version gleich oder neuer ist als die Version in Gitea echo '

Ihre Version ist aktuell. Version ' . $installed_version . ' ist die neueste Version.

'; @@ -2427,13 +2548,54 @@ function wp_multi_update_dashboard_widget_content() { echo '

Es ist eine neue Version von WP Multi verfügbar! Version ' . $latest_version . ' ist jetzt verfügbar.

'; echo '

Aktuell installierte Version: ' . $installed_version . '

'; echo '

Neue Version auf Gitea: ' . $latest_version . '

'; - echo '

Update herunterladen

'; + + // PreRelease in blauer Schrift anzeigen, wenn erlaubt und das Update ein PreRelease ist + if ($is_prerelease && $show_prereleases) { + echo '

Dieses Update ist ein PreRelease.

'; + } + + // Verfassen-Text anzeigen, falls verfügbar + if (!empty($release_notes)) { + echo '

Information zum Update:

'; + echo '

' . nl2br(esc_html($release_notes)) . '

'; + } + + // Button-Text anpassen je nachdem, ob es ein PreRelease ist + $button_text = $is_prerelease ? 'PreRelease herunterladen' : 'Update herunterladen'; + $download_url = $valid_release['assets'][0]['browser_download_url']; + echo '

' . esc_html($button_text) . '

'; } } else { echo 'Fehler beim Abrufen der neuesten Version von Gitea.'; } } +// Benutzerdefinierte Intervalle für Cron hinzufügen +function wp_multi_update_custom_intervals($schedules) { + // 3 Minuten Intervall hinzufügen + $schedules['three_minutes'] = array( + 'interval' => 180, // Alle 3 Minuten + 'display' => __('Alle 3 Minuten'), + ); + return $schedules; +} +add_filter('cron_schedules', 'wp_multi_update_custom_intervals'); + +// PreRelease Option in den Einstellungen hinzufügen +function wp_multi_update_register_settings() { + add_option('wp_multi_update_show_prereleases', false); + register_setting('general', 'wp_multi_update_show_prereleases'); + add_settings_field('wp_multi_update_show_prereleases', 'Pre-Release-Versionen anzeigen', 'wp_multi_update_show_prereleases_field', 'general'); +} +add_action('admin_init', 'wp_multi_update_register_settings'); + +// Einstellung für PreRelease-Versionen +function wp_multi_update_show_prereleases_field() { + $value = get_option('wp_multi_update_show_prereleases', false); + echo ''; + echo '

Aktiviere diese Option, um Pre-Release-Versionen anzuzeigen, die noch nicht vollständig veröffentlicht wurden. Deaktiviere die Option, um nur stabile Versionen anzuzeigen.

'; +} + /* * Notify Seite Discord & Telegram