diff --git a/Minecraft-BungeeCord-Status/minecraft-bungeecord-status.php b/Minecraft-BungeeCord-Status/minecraft-bungeecord-status.php index 8e40bfc..024a788 100644 --- a/Minecraft-BungeeCord-Status/minecraft-bungeecord-status.php +++ b/Minecraft-BungeeCord-Status/minecraft-bungeecord-status.php @@ -3,7 +3,7 @@ * Plugin Name: Minecraft BungeeCord Status – Network Edition * Description: Der ultimative Live-Status für dein BungeeCord Netzwerk (Border None Fix). * Tags: minecraft, bungeecord, server status, player list - * Version: 3.6.4 + * Version: 3.6.5 * Author: M_Viper * Requires at least: 6.0 * Requires PHP: 7.4 @@ -76,144 +76,116 @@ function mcss_get_3d_avatar($name, $uuid = null) { } } -/* ---------------- AUTO UPDATE (MCSS) ---------------- */ -if ( ! class_exists( 'MCSS_Auto_Update' ) ) { - class MCSS_Auto_Update { - private $plugin_file; - private $repo_owner = 'M_Viper'; - private $repo_name = 'Minecraft-BungeeCord-Status'; - private $api_url; - private $transient_key; +// =============================== +// MCSS - UPDATE NOTICE SYSTEM +// =============================== - public function __construct( $plugin_file ) { - $this->plugin_file = $plugin_file; - $this->api_url = 'https://git.viper.ipv64.net/api/v1/repos/' . rawurlencode( $this->repo_owner ) . '/' . rawurlencode( $this->repo_name ) . '/releases'; - $this->transient_key = 'mcss_update_check_' . md5( $this->repo_owner . '/' . $this->repo_name ); +// Plugin-Version aus Header lesen +function mcss_get_plugin_version() { + if ( ! function_exists( 'get_plugin_data' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } - if ( is_admin() ) { - add_action( 'admin_init', array( $this, 'check_for_update' ) ); + $plugin_data = get_plugin_data( __FILE__ ); + return $plugin_data['Version'] ?? '0.0.0'; +} + +// Cache manuell leeren +function mcss_clear_update_cache() { + if ( isset($_GET['mcss_clear_cache']) && current_user_can('manage_options') ) { + check_admin_referer('mcss_clear_cache_action'); + delete_transient('mcss_latest_release'); + wp_redirect( admin_url('plugins.php') ); + exit; + } +} +add_action('admin_init', 'mcss_clear_update_cache'); + +// Neueste Release-Infos von Gitea holen +function mcss_get_latest_release_info( $force_refresh = false ) { + $transient_key = 'mcss_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/Minecraft-BungeeCord-Status/releases/latest', + ['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 = [ + 'version' => $tag, + 'download_url' => $data['zipball_url'] ?? '', + 'notes' => $data['body'] ?? '', + 'published_at' => $data['published_at'] ?? '', + ]; + + set_transient( $transient_key, $release_info, 6 * HOUR_IN_SECONDS ); + } else { + set_transient( $transient_key, [], HOUR_IN_SECONDS ); } - } - - public function check_for_update() { - if ( ! function_exists( 'get_file_data' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - $current = get_file_data( $this->plugin_file, array( 'Version' => 'Version' ), 'plugin' ); - $current_version = isset( $current['Version'] ) ? $current['Version'] : '0.0.0'; - - $latest = $this->get_latest_release_info(); - - if ( $latest && ! empty( $latest['version'] ) && ! empty( $latest['url'] ) ) { - if ( version_compare( $latest['version'], $current_version, '>' ) ) { - add_action( 'admin_notices', function() use ( $latest, $current_version ) { - ?> -
- Minecraft BungeeCord Status – Update verfügbar
- Neue Version:
- Installiert:
- Direkter Download (ZIP)
- Releases ansehen
-
+ Installiert:
+ Neueste Version:
+
+ + Update herunterladen + + + Release Notes + + + Jetzt neu prüfen + +
+