diff --git a/wp-multi-ticket.php b/wp-multi-ticket.php index 896b0d8..3be4130 100644 --- a/wp-multi-ticket.php +++ b/wp-multi-ticket.php @@ -1,10 +1,23 @@ $current_version, + 'url' => $this->update_url, + ); + + // Gitea API – Releases + $api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi-ticket/releases'; + + $response = wp_remote_get( $api_url, array( + 'timeout' => 10, + 'headers' => array( + 'Accept' => 'application/json', + 'User-Agent' => 'WP-Multi-Ticket-Updater', + ), + ) ); + + if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) { + + $releases = json_decode( wp_remote_retrieve_body( $response ), true ); + + if ( is_array( $releases ) && ! empty( $releases ) ) { + + // Neuestes Release (Gitea liefert neueste zuerst) + $latest = $releases[0]; + + // Version (genau wie im Toolkit) + if ( ! empty( $latest['tag_name'] ) ) { + $cached['version'] = ltrim( $latest['tag_name'], 'vV' ); + } elseif ( ! empty( $latest['name'] ) ) { + $cached['version'] = ltrim( $latest['name'], 'vV' ); + } + + // Exaktes ZIP-Asset suchen + if ( ! empty( $latest['assets'] ) && is_array( $latest['assets'] ) ) { + foreach ( $latest['assets'] as $asset ) { + if ( + ! empty( $asset['name'] ) && + ! empty( $asset['browser_download_url'] ) && + strtolower( $asset['name'] ) === 'wp-multi-ticket.zip' + ) { + $cached['url'] = $asset['browser_download_url']; + break; + } + } + } + } + } + + // Cache setzen + set_transient( $cache_key, $cached, 12 * HOUR_IN_SECONDS ); + } + + // Update-Hinweis anzeigen + if ( version_compare( $cached['version'], $current_version, '>' ) ) { + + echo '
'; + echo '

WP Multi Ticket Pro – Update verfügbar

'; + echo '

Neue Version: ' . esc_html( $cached['version'] ) . '
'; + echo 'Installiert: ' . esc_html( $current_version ) . '

'; + echo '

'; + echo 'Release ansehen '; + echo 'Direkter Download (ZIP)'; + echo '

'; + echo '
'; + } +} + + // *** HIER: korrigierter Hook-Name für die Analytics-Unterseite *** public function load_analytics_scripts( $hook ) { // Für Submenu: parent slug wmt_tickets -> Hook: wmt-tickets_page_wmt_analytics @@ -123,7 +229,7 @@ class WP_Multi_Ticket_Pro { .wmt-css-label { width: 120px; font-size: 13px; font-weight: 600; text-align: right; margin-right: 10px; } .wmt-css-bar-bg { flex-grow: 1; background: #f3f4f6; height: 24px; border-radius: 4px; overflow: hidden; position: relative; } .wmt-css-bar-fill { height: 100%; background: #3b82f6; display: flex; align-items: center; padding-left: 10px; color: #fff; font-size: 11px; white-space: nowrap; transition: width 0.5s ease; } - .wmt-css-bar-val { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font-size: 11px; color: #6b7280; font-weight: bold; } + .wmt-css-bar-val { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font-size: 11px; color: #6c757d; font-weight: bold; }