diff --git a/mc-player-history.php b/mc-player-history.php index 3f9a50e..bc26c62 100644 --- a/mc-player-history.php +++ b/mc-player-history.php @@ -2,7 +2,7 @@ /* Plugin Name: MC Player History Description: Spielerverlauf deines Minecraft Servers. -Version: 1.1.2 +Version: 1.1.3 Author: M_Viper */ @@ -10,6 +10,113 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } +// =============================== +// MC PLAYER HISTORY - UPDATE SYSTEM +// =============================== + +// Aktuelle Plugin-Version aus Plugin-Header lesen +function mcph_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 +function mcph_clear_update_cache() { + if ( isset($_GET['mcph_clear_cache']) && current_user_can('manage_options') ) { + check_admin_referer('mcph_clear_cache_action'); + delete_transient('mcph_latest_release'); + wp_redirect( admin_url('plugins.php') ); + exit; + } +} +add_action('admin_init', 'mcph_clear_update_cache'); + +// Neueste Release-Infos von Gitea holen +function mcph_get_latest_release_info( $force_refresh = false ) { + $transient_key = 'mcph_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/MC-Player-History---WordPress-Plugin/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'], 'v' ); + + $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 ); + } + } else { + set_transient( $transient_key, [], HOUR_IN_SECONDS ); + } + } + + return $release_info; +} + +// Admin-Update-Hinweis +function mcph_show_update_notice() { + if ( ! current_user_can('manage_options') ) { + return; + } + + $current_version = mcph_get_plugin_version(); + $latest_release = mcph_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?mcph_clear_cache=1'), + 'mcph_clear_cache_action' + ); + ?> +
+ Aktuelle Version:
+ Neueste Version:
+
+ + Update herunterladen + + + Release Notes + + + Jetzt neu prüfen + +
+