diff --git a/wp-litebans-manager.php b/wp-litebans-manager.php index 7263adc..75019b7 100644 --- a/wp-litebans-manager.php +++ b/wp-litebans-manager.php @@ -2,12 +2,116 @@ /* Plugin Name: LiteBans Manager Description: Die ultimative Lösung, um deine LiteBans Datenbank nahtlos in WordPress zu integrieren. Verwalte Bans, Mutes, Warnings und Kicks direkt im WordPress Admin-Panel und biete deinen Spielern ein modernes Frontend-Dashboard. -Version: 1.0.0 +Version: 1.0.1 Author: M_Viper */ if ( ! defined( 'ABSPATH' ) ) { exit; } +// =============================== +// LITEBANS MANAGER - UPDATE NOTICE +// =============================== + +// Plugin-Version aus Header lesen +function litebans_get_plugin_version() { + if ( ! function_exists( 'get_plugin_data' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + $plugin_data = get_plugin_data( __FILE__ ); + return $plugin_data['Version'] ?? '0.0.0'; +} + +// Cache manuell leeren (Button "Jetzt neu prüfen") +function litebans_clear_update_cache() { + if ( isset( $_GET['litebans_clear_cache'] ) && current_user_can( 'manage_options' ) ) { + check_admin_referer( 'litebans_clear_cache_action' ); + delete_transient( 'litebans_latest_release' ); + wp_redirect( admin_url( 'plugins.php' ) ); + exit; + } +} +add_action( 'admin_init', 'litebans_clear_update_cache' ); + +// Neueste Release-Infos von Gitea holen +function litebans_get_latest_release_info( $force_refresh = false ) { + $transient_key = 'litebans_latest_release'; + + if ( $force_refresh ) { + delete_transient( $transient_key ); + } + + $release_info = get_transient( $transient_key ); + + if ( false === $release_info ) { + $response = wp_remote_get( + 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/LiteBans-Manager/releases/latest', + array( 'timeout' => 10 ) + ); + + if ( ! is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) { + $body = wp_remote_retrieve_body( $response ); + $data = json_decode( $body, true ); + + if ( $data && isset( $data['tag_name'] ) ) { + $tag = ltrim( $data['tag_name'], 'vV' ); + + $release_info = array( + 'version' => $tag, + 'download_url' => $data['zipball_url'] ?? '', + 'notes' => $data['body'] ?? '', + 'published_at' => $data['published_at'] ?? '', + ); + + // Cache 6 Stunden + set_transient( $transient_key, $release_info, 6 * HOUR_IN_SECONDS ); + } else { + // leere Struktur cachen (Kurzcache) + set_transient( $transient_key, array(), HOUR_IN_SECONDS ); + } + } else { + set_transient( $transient_key, array(), HOUR_IN_SECONDS ); + } + } + + return $release_info; +} + +// Admin-Notice anzeigen wenn Update vorhanden +function litebans_show_update_notice() { + if ( ! current_user_can( 'manage_options' ) ) { + return; + } + + $current_version = litebans_get_plugin_version(); + $latest_release = litebans_get_latest_release_info(); + + if ( ! empty( $latest_release['version'] ) && version_compare( $current_version, $latest_release['version'], '<' ) ) { + $refresh_url = wp_nonce_url( admin_url( 'plugins.php?litebans_clear_cache=1' ), 'litebans_clear_cache_action' ); + ?> +
+ Installiert:
+ Neueste Version:
+
+ + Update herunterladen + + + Releases ansehen + + + Jetzt neu prüfen + +
+