From c7e870378773fc680cfac3e110011dc823b719bd Mon Sep 17 00:00:00 2001
From: M_Viper
Date: Fri, 9 Jan 2026 21:55:21 +0000
Subject: [PATCH] Minecraft-Modern-Theme/inc/theme-updater.php aktualisiert
---
Minecraft-Modern-Theme/inc/theme-updater.php | 133 +++++++++++--------
1 file changed, 75 insertions(+), 58 deletions(-)
diff --git a/Minecraft-Modern-Theme/inc/theme-updater.php b/Minecraft-Modern-Theme/inc/theme-updater.php
index 81007df..6bf5945 100644
--- a/Minecraft-Modern-Theme/inc/theme-updater.php
+++ b/Minecraft-Modern-Theme/inc/theme-updater.php
@@ -6,120 +6,137 @@ if ( ! defined( 'ABSPATH' ) ) {
}
// === ZENTRALE VERSIONSKONSTANTE ===
-// Bitte passen Sie diese Version bei jedem Release an!
define( 'MINECRAFT_MODERN_THEME_VERSION', '1.6' );
-
// === THEME UPDATE NOTIFICATION SYSTEM ===
-// Funktion zum Abrufen der neuesten Release-Informationen vom Git-Repository
-function minecraft_modern_get_latest_release_info() {
+// Funktion zum Leeren des Caches (wenn man auf "Update prüfen" klickt)
+function minecraft_modern_clear_cache() {
+ if ( isset( $_GET['mm_clear_cache'] ) && current_user_can( 'manage_options' ) ) {
+ check_admin_referer( 'mm_clear_cache_action' );
+ delete_transient( 'minecraft_modern_latest_release' );
+ wp_redirect( admin_url( 'index.php' ) );
+ exit;
+ }
+}
+add_action( 'admin_init', 'minecraft_modern_clear_cache' );
+
+// Funktion zum Abrufen der neuesten Release-Informationen
+function minecraft_modern_get_latest_release_info( $force_refresh = false ) {
$transient_key = 'minecraft_modern_latest_release';
- // Versuche, die Daten aus dem Transient-Cache zu holen
- $release_info = get_transient($transient_key);
+ // Wenn erzwungen wird (oder Cache leer), frische Daten holen
+ if ( $force_refresh ) {
+ delete_transient( $transient_key );
+ }
- // Wenn der Cache leer oder abgelaufen ist, rufe neue Daten ab
- if (false === $release_info) {
- $response = wp_remote_get('https://git.viper.ipv64.net/api/v1/repos/M_Viper/Minecraft-Modern-Theme/releases/latest');
+ $release_info = get_transient( $transient_key );
+
+ if ( false === $release_info ) {
+ // Timeout auf 10 Sekunden erhöht für langsame Verbindungen
+ $response = wp_remote_get( 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/Minecraft-Modern-Theme/releases/latest', array( 'timeout' => 10 ) );
- if (!is_wp_error($response) && 200 === wp_remote_retrieve_response_code($response)) {
- $body = wp_remote_retrieve_body($response);
- $release_data = json_decode($body, true);
+ if ( ! is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) {
+ $body = wp_remote_retrieve_body( $response );
+ $release_data = json_decode( $body, true );
- if ($release_data && isset($release_data['tag_name'])) {
+ if ( $release_data && isset( $release_data['tag_name'] ) ) {
+ // Tag bereinigen (falls 'v' davor steht, z.B. v1.6 -> 1.6)
+ $tag_name = $release_data['tag_name'];
+ if ( strpos( $tag_name, 'v' ) === 0 ) {
+ $tag_name = ltrim( $tag_name, 'v' );
+ }
+
$release_info = array(
- 'version' => $release_data['tag_name'],
- 'download_url' => $release_data['zipball_url'],
- 'release_notes' => isset($release_data['body']) ? $release_data['body'] : '',
- 'published_at' => isset($release_data['published_at']) ? $release_data['published_at'] : ''
+ 'version' => $tag_name,
+ 'download_url' => $release_data['zipball_url'],
+ 'release_notes' => isset( $release_data['body'] ) ? $release_data['body'] : '',
+ 'published_at' => isset( $release_data['published_at'] ) ? $release_data['published_at'] : ''
);
- // Speichere die Daten für 12 Stunden im Cache
- set_transient($transient_key, $release_info, 12 * HOUR_IN_SECONDS);
+ // Cache für 6 Stunden (kannst du anpassen)
+ set_transient( $transient_key, $release_info, 6 * HOUR_IN_SECONDS );
+ } else {
+ // Fehlerhafte Daten leer cachen
+ set_transient( $transient_key, array(), HOUR_IN_SECONDS );
}
} else {
- // Bei Fehler, leere Daten für 1 Stunde cachen, um wiederholte fehlgeschlagene Anfragen zu vermeiden
- set_transient($transient_key, array(), HOUR_IN_SECONDS);
+ // Fehler beim Abrufen
+ set_transient( $transient_key, array(), HOUR_IN_SECONDS );
}
}
return $release_info;
}
-// Funktion zum Anzeigen der Update-Benachrichtigung im Admin-Bereich
+// Benachrichtigung im Admin-Bereich
function minecraft_modern_show_update_notification() {
- // Nur im Admin-Bereich und für Administratoren anzeigen
- if (!is_admin() || !current_user_can('manage_options')) {
+ if ( ! is_admin() || ! current_user_can( 'manage_options' ) ) {
return;
}
- // Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE)
$current_version = MINECRAFT_MODERN_THEME_VERSION;
+ $latest_release = minecraft_modern_get_latest_release_info();
- // Neueste Release-Informationen abrufen
- $latest_release = minecraft_modern_get_latest_release_info();
-
- // Wenn wir gültige Release-Informationen haben und die Versionen unterschiedlich sind
- if (!empty($latest_release) && isset($latest_release['version']) && version_compare($current_version, $latest_release['version'], '<')) {
+ if ( ! empty( $latest_release ) && isset( $latest_release['version'] ) && version_compare( $current_version, $latest_release['version'], '<' ) ) {
?>
-
+
' . esc_html($current_version) . '',
- '' . esc_html($latest_release['version']) . ''
+ __( 'You are using version %1$s of the Minecraft Modern Theme. Version %2$s is now available.', 'minecraft-modern-theme' ),
+ '' . esc_html( $current_version ) . '',
+ '' . esc_html( $latest_release['version'] ) . ''
);
?>
-
-
+
+
-
+
' . __( 'Current Version:', 'minecraft-modern-theme' ) . ' ' . esc_html( $current_version ) . '
';
- echo '' . __('Current Version:', 'minecraft-modern-theme') . ' ' . esc_html($current_version) . '
';
-
- if (!empty($latest_release) && isset($latest_release['version'])) {
- if (version_compare($current_version, $latest_release['version'], '<')) {
- echo '' . __('Latest Version:', 'minecraft-modern-theme') . ' ' . esc_html($latest_release['version']) . '
';
- echo '' . __('Status:', 'minecraft-modern-theme') . ' ' . __('Update Available', 'minecraft-modern-theme') . '
';
- echo '' . __('Download Update', 'minecraft-modern-theme') . '
';
+ if ( ! empty( $latest_release ) && isset( $latest_release['version'] ) ) {
+ echo '' . __( 'Latest Version:', 'minecraft-modern-theme' ) . ' ' . esc_html( $latest_release['version'] ) . '
';
+
+ if ( version_compare( $current_version, $latest_release['version'], '<' ) ) {
+ echo '' . __( 'Status:', 'minecraft-modern-theme' ) . ' ' . __( 'Update Available', 'minecraft-modern-theme' ) . '
';
+ echo '' . __( 'Download Update', 'minecraft-modern-theme' ) . '
';
} else {
- echo '' . __('Latest Version:', 'minecraft-modern-theme') . ' ' . esc_html($latest_release['version']) . '
';
- echo '' . __('Status:', 'minecraft-modern-theme') . ' ' . __('Up to Date', 'minecraft-modern-theme') . '
';
+ echo '' . __( 'Status:', 'minecraft-modern-theme' ) . ' ' . __( 'Up to Date', 'minecraft-modern-theme' ) . '
';
}
} else {
- echo '' . __('Status:', 'minecraft-modern-theme') . ' ' . __('Unable to check for updates', 'minecraft-modern-theme') . '
';
+ echo '' . __( 'Status:', 'minecraft-modern-theme' ) . ' ' . __( 'Unable to check for updates', 'minecraft-modern-theme' ) . '
';
}
- echo '' . __('View All Releases', 'minecraft-modern-theme') . '
';
+ // Link für "Jetzt prüfen" hinzugefügt
+ $refresh_url = wp_nonce_url( admin_url( 'index.php?mm_clear_cache=1' ), 'mm_clear_cache_action' );
+ echo '' . __( 'Check for Updates Now', 'minecraft-modern-theme' ) . '
';
+
+ echo '' . __( 'View All Releases', 'minecraft-modern-theme' ) . '
';
}
\ No newline at end of file