diff --git a/wp-multi.php b/wp-multi.php index 194e17e..a79e20b 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.7 + * Version: 2.8 * Author: M_Viper * Author URI: https://m-viper.de * Requires at least: 6.7.2 @@ -70,212 +70,6 @@ } add_filter('plugin_row_meta', 'wp_multi_plugin_row_meta', 10, 2); - -/* - * Update Widget - */ - -// Widget zum Admin-Dashboard hinzufügen -function wp_multi_update_dashboard_widget() { - wp_add_dashboard_widget( - 'wp_multi_update_widget', - __('Verfügbare Updates für WP Multi', 'wp-multi'), - 'wp_multi_update_dashboard_widget_content' - ); -} -add_action('wp_dashboard_setup', 'wp_multi_update_dashboard_widget'); - -// Benutzerdefiniertes Cron-Intervall hinzufügen -add_filter('cron_schedules', function ($schedules) { - $schedules['hourly'] = array( - 'interval' => 3600, // 1 Stunde in Sekunden - 'display' => __('Stündlich', 'wp-multi'), - ); - return $schedules; -}); - -// Cron-Job registrieren -function wp_multi_update_schedule_check() { - if (!wp_next_scheduled('wp_multi_update_check_event')) { - wp_schedule_event(time(), 'hourly', 'wp_multi_update_check_event'); - } -} -add_action('wp', 'wp_multi_update_schedule_check'); - -// Hilfsfunktion zur Wiederverwendung der Gitea-API-Abfrage -function wp_multi_fetch_latest_release($show_prereleases = false) { - $api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi/releases'; - $response = wp_remote_get($api_url, array('timeout' => 10)); - - if (is_wp_error($response)) { - error_log('WP Multi Update Check 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 Update Check: 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-Job für Update-Überprüfung -function wp_multi_update_check() { - $plugin_data = get_plugin_data(__FILE__); - $installed_version = $plugin_data['Version']; - $show_prereleases = get_option('wp_multi_update_show_prereleases', false); - - $valid_release = wp_multi_fetch_latest_release($show_prereleases); - - 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']; - - 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() { - $plugin_data = get_plugin_data(__FILE__); - $installed_version = $plugin_data['Version']; - $show_prereleases = get_option('wp_multi_update_show_prereleases', false); - - $valid_release = wp_multi_fetch_latest_release($show_prereleases); - - if ($valid_release === false) { - printf('

%s

', esc_html__('Fehler beim Abrufen der Versionsinformationen von Gitea.', 'wp-multi')); - return; - } - - 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']; - - if (version_compare($installed_version, $latest_version, '>=')) { - printf( - '

%s

', - sprintf( - __('Ihre Version ist aktuell. Version %s ist die neueste Version.', 'wp-multi'), - esc_html($installed_version) - ) - ); - } else { - printf( - '

%s

', - sprintf( - __('Es ist eine neue Version von WP Multi verfügbar! Version %s ist jetzt verfügbar.', 'wp-multi'), - esc_html($latest_version) - ) - ); - printf( - '

%s: %s

', - __('Aktuell installierte Version', 'wp-multi'), - esc_html($installed_version) - ); - printf( - '

%s: %s

', - __('Neue Version auf Gitea', 'wp-multi'), - esc_html($latest_version) - ); - - if ($is_prerelease && $show_prereleases) { - printf('

%s

', __('Dieses Update ist ein PreRelease.', 'wp-multi')); - } - - if (!empty($release_notes)) { - printf( - '

%s:

%s

', - __('Information zum Update', 'wp-multi'), - nl2br(esc_html($release_notes)) - ); - } - - $button_text = $is_prerelease ? __('PreRelease herunterladen', 'wp-multi') : __('Update herunterladen', 'wp-multi'); - $download_url = isset($valid_release['assets'][0]['browser_download_url']) ? $valid_release['assets'][0]['browser_download_url'] : '#'; - printf( - '

%s

', - esc_url($download_url), - esc_html($button_text) - ); - } - } else { - printf('

%s

', esc_html__('Keine Versionsinformationen gefunden.', 'wp-multi')); - } -} - -// Füge die Checkbox zu den allgemeinen Einstellungen hinzu -function wp_multi_update_general_settings() { - // Füge die Option für Pre-Releases unter "Allgemein" hinzu - add_settings_section( - 'wp_multi_update_section', - __('WP Multi Update Einstellungen', 'wp-multi'), - null, - 'general' - ); - - add_settings_field( - 'wp_multi_update_show_prereleases', - __('Pre-Releases anzeigen', 'wp-multi'), - 'wp_multi_update_show_prereleases_callback', - 'general', - 'wp_multi_update_section' - ); - - register_setting('general', 'wp_multi_update_show_prereleases', array( - 'type' => 'boolean', - 'description' => __('Aktivieren, um Pre-Releases im Dashboard und in den Versionsinformationen anzuzeigen.', 'wp-multi'), - 'default' => 0, - )); -} -add_action('admin_init', 'wp_multi_update_general_settings'); - -// Callback-Funktion für das Anzeigen der Checkbox -function wp_multi_update_show_prereleases_callback() { - $checked = get_option('wp_multi_update_show_prereleases', false); - echo ''; - // Hinweistext unter der Checkbox in Rot - echo '

' . __('Achtung: Pre-Releases sind Beta-Versionen und können Fehler enthalten. Verwenden Sie sie nur, wenn Sie Fehlerberichterstattung oder Tests durchführen möchten.', 'wp-multi') . '

'; -} - - - - - - - - - - - - - - - - - - - - - - /* * Index Verzeichnis [alphabetical_index]