Minecraft-Modern-Theme/inc/theme-updater.php aktualisiert

This commit is contained in:
2026-01-06 23:19:18 +00:00
parent 57e758353a
commit b62c52cfad

View File

@@ -1,125 +1,125 @@
<?php <?php
// Exit if accessed directly. // Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) { if ( ! defined( 'ABSPATH' ) ) {
exit; exit;
} }
// === ZENTRALE VERSIONSKONSTANTE === // === ZENTRALE VERSIONSKONSTANTE ===
// Bitte passen Sie diese Version bei jedem Release an! // Bitte passen Sie diese Version bei jedem Release an!
define( 'MINECRAFT_MODERN_THEME_VERSION', '1.4' ); define( 'MINECRAFT_MODERN_THEME_VERSION', '1.5' );
// === THEME UPDATE NOTIFICATION SYSTEM === // === THEME UPDATE NOTIFICATION SYSTEM ===
// Funktion zum Abrufen der neuesten Release-Informationen vom Git-Repository // Funktion zum Abrufen der neuesten Release-Informationen vom Git-Repository
function minecraft_modern_get_latest_release_info() { function minecraft_modern_get_latest_release_info() {
$transient_key = 'minecraft_modern_latest_release'; $transient_key = 'minecraft_modern_latest_release';
// Versuche, die Daten aus dem Transient-Cache zu holen // Versuche, die Daten aus dem Transient-Cache zu holen
$release_info = get_transient($transient_key); $release_info = get_transient($transient_key);
// Wenn der Cache leer oder abgelaufen ist, rufe neue Daten ab // Wenn der Cache leer oder abgelaufen ist, rufe neue Daten ab
if (false === $release_info) { if (false === $release_info) {
$response = wp_remote_get('https://git.viper.ipv64.net/api/v1/repos/M_Viper/Minecraft-Modern-Theme/releases/latest'); $response = wp_remote_get('https://git.viper.ipv64.net/api/v1/repos/M_Viper/Minecraft-Modern-Theme/releases/latest');
if (!is_wp_error($response) && 200 === wp_remote_retrieve_response_code($response)) { if (!is_wp_error($response) && 200 === wp_remote_retrieve_response_code($response)) {
$body = wp_remote_retrieve_body($response); $body = wp_remote_retrieve_body($response);
$release_data = json_decode($body, true); $release_data = json_decode($body, true);
if ($release_data && isset($release_data['tag_name'])) { if ($release_data && isset($release_data['tag_name'])) {
$release_info = array( $release_info = array(
'version' => $release_data['tag_name'], 'version' => $release_data['tag_name'],
'download_url' => $release_data['zipball_url'], 'download_url' => $release_data['zipball_url'],
'release_notes' => isset($release_data['body']) ? $release_data['body'] : '', 'release_notes' => isset($release_data['body']) ? $release_data['body'] : '',
'published_at' => isset($release_data['published_at']) ? $release_data['published_at'] : '' 'published_at' => isset($release_data['published_at']) ? $release_data['published_at'] : ''
); );
// Speichere die Daten für 12 Stunden im Cache // Speichere die Daten für 12 Stunden im Cache
set_transient($transient_key, $release_info, 12 * HOUR_IN_SECONDS); set_transient($transient_key, $release_info, 12 * HOUR_IN_SECONDS);
} }
} else { } else {
// Bei Fehler, leere Daten für 1 Stunde cachen, um wiederholte fehlgeschlagene Anfragen zu vermeiden // Bei Fehler, leere Daten für 1 Stunde cachen, um wiederholte fehlgeschlagene Anfragen zu vermeiden
set_transient($transient_key, array(), HOUR_IN_SECONDS); set_transient($transient_key, array(), HOUR_IN_SECONDS);
} }
} }
return $release_info; return $release_info;
} }
// Funktion zum Anzeigen der Update-Benachrichtigung im Admin-Bereich // Funktion zum Anzeigen der Update-Benachrichtigung im Admin-Bereich
function minecraft_modern_show_update_notification() { function minecraft_modern_show_update_notification() {
// Nur im Admin-Bereich und für Administratoren anzeigen // 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; return;
} }
// Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE) // Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE)
$current_version = MINECRAFT_MODERN_THEME_VERSION; $current_version = MINECRAFT_MODERN_THEME_VERSION;
// Neueste Release-Informationen abrufen // Neueste Release-Informationen abrufen
$latest_release = minecraft_modern_get_latest_release_info(); $latest_release = minecraft_modern_get_latest_release_info();
// Wenn wir gültige Release-Informationen haben und die Versionen unterschiedlich sind // 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'], '<')) {
?> ?>
<div class="notice notice-warning is-dismissible"> <div class="notice notice-warning is-dismissible">
<h3><?php _e('Minecraft Modern Theme Update Available', 'minecraft-modern-theme'); ?></h3> <h3><?php _e('Minecraft Modern Theme Update Available', 'minecraft-modern-theme'); ?></h3>
<p> <p>
<?php <?php
printf( printf(
__('You are using version %1$s of the Minecraft Modern Theme. Version %2$s is now available.', 'minecraft-modern-theme'), __('You are using version %1$s of the Minecraft Modern Theme. Version %2$s is now available.', 'minecraft-modern-theme'),
'<strong>' . esc_html($current_version) . '</strong>', '<strong>' . esc_html($current_version) . '</strong>',
'<strong>' . esc_html($latest_release['version']) . '</strong>' '<strong>' . esc_html($latest_release['version']) . '</strong>'
); );
?> ?>
</p> </p>
<p> <p>
<a href="<?php echo esc_url($latest_release['download_url']); ?>" class="button button-primary" target="_blank"> <a href="<?php echo esc_url($latest_release['download_url']); ?>" class="button button-primary" target="_blank">
<?php _e('Download Latest Version', 'minecraft-modern-theme'); ?> <?php _e('Download Latest Version', 'minecraft-modern-theme'); ?>
</a> </a>
<a href="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/releases" class="button" target="_blank"> <a href="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/releases" class="button" target="_blank">
<?php _e('View Release Notes', 'minecraft-modern-theme'); ?> <?php _e('View Release Notes', 'minecraft-modern-theme'); ?>
</a> </a>
</p> </p>
</div> </div>
<?php <?php
} }
} }
add_action('admin_notices', 'minecraft_modern_show_update_notification'); add_action('admin_notices', 'minecraft_modern_show_update_notification');
// Funktion zum Hinzufügen eines Update-Status-Widgets zum Dashboard // Funktion zum Hinzufügen eines Update-Status-Widgets zum Dashboard
function minecraft_modern_add_dashboard_widget() { function minecraft_modern_add_dashboard_widget() {
wp_add_dashboard_widget( wp_add_dashboard_widget(
'minecraft_modern_update_widget', // Widget slug. 'minecraft_modern_update_widget', // Widget slug.
'Minecraft Modern Theme Status', // Title. 'Minecraft Modern Theme Status', // Title.
'minecraft_modern_update_widget_function' // Display function. 'minecraft_modern_update_widget_function' // Display function.
); );
} }
add_action('wp_dashboard_setup', 'minecraft_modern_add_dashboard_widget'); add_action('wp_dashboard_setup', 'minecraft_modern_add_dashboard_widget');
// Funktion zum Anzeigen des Inhalts im Dashboard-Widget // Funktion zum Anzeigen des Inhalts im Dashboard-Widget
function minecraft_modern_update_widget_function() { function minecraft_modern_update_widget_function() {
// Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE) // Aktuelle Theme-Version abrufen (JETZT AUS UNSERER KONSTANTE)
$current_version = MINECRAFT_MODERN_THEME_VERSION; $current_version = MINECRAFT_MODERN_THEME_VERSION;
// Neueste Release-Informationen abrufen // Neueste Release-Informationen abrufen
$latest_release = minecraft_modern_get_latest_release_info(); $latest_release = minecraft_modern_get_latest_release_info();
echo '<p><strong>' . __('Current Version:', 'minecraft-modern-theme') . '</strong> ' . esc_html($current_version) . '</p>'; echo '<p><strong>' . __('Current Version:', 'minecraft-modern-theme') . '</strong> ' . esc_html($current_version) . '</p>';
if (!empty($latest_release) && isset($latest_release['version'])) { if (!empty($latest_release) && isset($latest_release['version'])) {
if (version_compare($current_version, $latest_release['version'], '<')) { if (version_compare($current_version, $latest_release['version'], '<')) {
echo '<p><strong>' . __('Latest Version:', 'minecraft-modern-theme') . '</strong> <span style="color: #d63638;">' . esc_html($latest_release['version']) . '</span></p>'; echo '<p><strong>' . __('Latest Version:', 'minecraft-modern-theme') . '</strong> <span style="color: #d63638;">' . esc_html($latest_release['version']) . '</span></p>';
echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> <span style="color: #d63638;">' . __('Update Available', 'minecraft-modern-theme') . '</span></p>'; echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> <span style="color: #d63638;">' . __('Update Available', 'minecraft-modern-theme') . '</span></p>';
echo '<p><a href="' . esc_url($latest_release['download_url']) . '" class="button button-primary" target="_blank">' . __('Download Update', 'minecraft-modern-theme') . '</a></p>'; echo '<p><a href="' . esc_url($latest_release['download_url']) . '" class="button button-primary" target="_blank">' . __('Download Update', 'minecraft-modern-theme') . '</a></p>';
} else { } else {
echo '<p><strong>' . __('Latest Version:', 'minecraft-modern-theme') . '</strong> <span style="color: #46b450;">' . esc_html($latest_release['version']) . '</span></p>'; echo '<p><strong>' . __('Latest Version:', 'minecraft-modern-theme') . '</strong> <span style="color: #46b450;">' . esc_html($latest_release['version']) . '</span></p>';
echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> <span style="color: #46b450;">' . __('Up to Date', 'minecraft-modern-theme') . '</span></p>'; echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> <span style="color: #46b450;">' . __('Up to Date', 'minecraft-modern-theme') . '</span></p>';
} }
} else { } else {
echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> ' . __('Unable to check for updates', 'minecraft-modern-theme') . '</p>'; echo '<p><strong>' . __('Status:', 'minecraft-modern-theme') . '</strong> ' . __('Unable to check for updates', 'minecraft-modern-theme') . '</p>';
} }
echo '<p><a href="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/releases" target="_blank">' . __('View All Releases', 'minecraft-modern-theme') . '</a></p>'; echo '<p><a href="https://git.viper.ipv64.net/M_Viper/Minecraft-Modern-Theme/releases" target="_blank">' . __('View All Releases', 'minecraft-modern-theme') . '</a></p>';
} }