Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d1fdf5e8cf | ||
|
|
7bdc5b0182 | ||
|
|
e3ebfbe3fb |
@@ -110,3 +110,9 @@ Bei Fragen oder Problemen kontaktieren Sie bitte:
|
|||||||
|
|
||||||
- **Telegram Support:** [t.me/M_Viper04](https://t.me/M_Viper04)
|
- **Telegram Support:** [t.me/M_Viper04](https://t.me/M_Viper04)
|
||||||
- **Web:** [m-viper.de](https://m-viper.de)
|
- **Web:** [m-viper.de](https://m-viper.de)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Copyright © 2026 - M_Viper - Alle Rechte vorbehalten**
|
||||||
|
|
||||||
|
Die unbefugte Vervielfältigung, Verbreitung oder Weitergabe dieses Plugins ist strafbar und wird rechtlich verfolgt.
|
||||||
+61
-40
@@ -1,21 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
* Plugin Name: WP Multi Ticket Pro
|
Plugin Name: WP Multi Ticket Pro
|
||||||
* Plugin URI: https://git.viper.ipv64.net/M_Viper/wp-multi-ticket
|
Plugin URI:https://git.viper.ipv64.net/M_Viper/wp-multi-ticket
|
||||||
* Description: Leistungsstarkes Ticket- und Support-System für WordPress mit Gast-Tickets, Admin-Antworten, CSV-Export, Dashboard-Widgets und integriertem Update-Management über Gitea.
|
Description: Leistungsstarkes Ticket- und Support-System für WordPress mit Gast-Tickets, Admin-Antworten, CSV-Export, Dashboard-Widgets und integriertem Update-Management über Gitea.
|
||||||
* Version: 1.3
|
Version: 1.4
|
||||||
* Author: M_Viper
|
Author: M_Viper
|
||||||
* Author URI: https://m-viper.de
|
Author URI: https://m-viper.de
|
||||||
* Requires at least: 6.7.2
|
Requires at least: 6.7.2
|
||||||
* Tested up to: 6.7.2
|
Tested up to: 6.7.2
|
||||||
* Requires PHP: 7.4
|
PHP Version: 7.4
|
||||||
* License: GPL-2.0-or-later
|
License: GPL2
|
||||||
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||||||
* Text Domain: wp-multi-ticket
|
Text Domain: wp-multi-ticket
|
||||||
* Domain Path: /languages
|
Domain Path: /languages
|
||||||
* Tags: ticket, support, helpdesk, customer-support, guest-tickets, wp-multi
|
Tags: ticket, support, helpdesk, customer-support, guest-tickets, wp-multi
|
||||||
* Support: https://t.me/M_Viper04
|
Support: [Discord Support](https://discord.com/invite/FdRs4BRd8D)
|
||||||
*/
|
Support: [Telegram Support](https://t.me/M_Viper04)
|
||||||
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) exit;
|
if ( ! defined( 'ABSPATH' ) ) exit;
|
||||||
|
|
||||||
@@ -235,11 +236,11 @@ class WP_Multi_Ticket_Pro {
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prüft auf Updates von der Git-URL und zeigt eine Admin-Notice an
|
* Prüft auf Updates von der Git-URL und zeigt eine Admin-Notice an
|
||||||
*/
|
* (Ersetze die vorhandene check_plugin_updates() Methode in WP_Multi_Ticket_Pro mit dieser)
|
||||||
public function check_plugin_updates() {
|
*/
|
||||||
|
public function check_plugin_updates() {
|
||||||
if ( ! current_user_can( 'update_plugins' ) ) {
|
if ( ! current_user_can( 'update_plugins' ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -249,10 +250,17 @@ class WP_Multi_Ticket_Pro {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$plugin_data = get_plugin_data( __FILE__ );
|
$plugin_data = get_plugin_data( __FILE__ );
|
||||||
$current_version = $plugin_data['Version'];
|
$current_version = isset( $plugin_data['Version'] ) ? $plugin_data['Version'] : '0.0.0';
|
||||||
|
|
||||||
$cache_key = 'wmt_ticket_update_check';
|
$cache_key = 'wmt_ticket_update_check';
|
||||||
$cached = get_transient( $cache_key );
|
// Manuelles Neuladen erlauben: ?wmt_check_update=1 (nur für Admins mit Nonce)
|
||||||
|
if ( isset( $_GET['wmt_check_update'] ) && current_user_can( 'update_plugins' ) ) {
|
||||||
|
if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), 'wmt_check_update_action' ) ) {
|
||||||
|
delete_transient( $cache_key );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$cached = get_transient( $cache_key );
|
||||||
|
|
||||||
if ( false === $cached ) {
|
if ( false === $cached ) {
|
||||||
|
|
||||||
@@ -261,7 +269,7 @@ class WP_Multi_Ticket_Pro {
|
|||||||
'url' => $this->update_url,
|
'url' => $this->update_url,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Gitea API – Releases
|
// Gitea API – Releases (Liste)
|
||||||
$api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi-ticket/releases';
|
$api_url = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/wp-multi-ticket/releases';
|
||||||
|
|
||||||
$response = wp_remote_get( $api_url, array(
|
$response = wp_remote_get( $api_url, array(
|
||||||
@@ -277,53 +285,66 @@ class WP_Multi_Ticket_Pro {
|
|||||||
$releases = json_decode( wp_remote_retrieve_body( $response ), true );
|
$releases = json_decode( wp_remote_retrieve_body( $response ), true );
|
||||||
|
|
||||||
if ( is_array( $releases ) && ! empty( $releases ) ) {
|
if ( is_array( $releases ) && ! empty( $releases ) ) {
|
||||||
|
// Gitea liefert Releases in der Regel vom neuesten zum ältesten
|
||||||
// Neuestes Release (Gitea liefert neueste zuerst)
|
|
||||||
$latest = $releases[0];
|
$latest = $releases[0];
|
||||||
|
|
||||||
// Version (genau wie im Toolkit)
|
// Version bestimmen (tag_name bevorzugt, sonst release name)
|
||||||
if ( ! empty( $latest['tag_name'] ) ) {
|
if ( ! empty( $latest['tag_name'] ) ) {
|
||||||
$cached['version'] = ltrim( $latest['tag_name'], 'vV' );
|
$cached['version'] = ltrim( (string) $latest['tag_name'], 'vV' );
|
||||||
} elseif ( ! empty( $latest['name'] ) ) {
|
} elseif ( ! empty( $latest['name'] ) ) {
|
||||||
$cached['version'] = ltrim( $latest['name'], 'vV' );
|
$cached['version'] = ltrim( (string) $latest['name'], 'vV' );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exaktes ZIP-Asset suchen
|
// ZIP-Asset suchen (prefer exact filename 'wp-multi-ticket.zip')
|
||||||
if ( ! empty( $latest['assets'] ) && is_array( $latest['assets'] ) ) {
|
if ( ! empty( $latest['assets'] ) && is_array( $latest['assets'] ) ) {
|
||||||
foreach ( $latest['assets'] as $asset ) {
|
foreach ( $latest['assets'] as $asset ) {
|
||||||
if (
|
if ( ! empty( $asset['browser_download_url'] ) ) {
|
||||||
! empty( $asset['name'] ) &&
|
// precise match if available
|
||||||
! empty( $asset['browser_download_url'] ) &&
|
if ( ! empty( $asset['name'] ) && strtolower( $asset['name'] ) === 'wp-multi-ticket.zip' ) {
|
||||||
strtolower( $asset['name'] ) === 'wp-multi-ticket.zip'
|
$cached['url'] = $asset['browser_download_url'];
|
||||||
) {
|
break;
|
||||||
$cached['url'] = $asset['browser_download_url'];
|
}
|
||||||
break;
|
// fallback: use first available asset
|
||||||
|
if ( empty( $cached['url'] ) ) {
|
||||||
|
$cached['url'] = $asset['browser_download_url'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wenn noch kein URL gesetzt, fallback auf releases-Seite
|
||||||
|
if ( empty( $cached['url'] ) ) {
|
||||||
|
$cached['url'] = $this->update_url;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache setzen
|
// Cache 12 Stunden
|
||||||
set_transient( $cache_key, $cached, 12 * HOUR_IN_SECONDS );
|
set_transient( $cache_key, $cached, 12 * HOUR_IN_SECONDS );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update-Hinweis anzeigen
|
// Anzeige der Admin-Notice, falls Version neuer ist
|
||||||
if ( version_compare( $cached['version'], $current_version, '>' ) ) {
|
if ( version_compare( $cached['version'], $current_version, '>' ) ) {
|
||||||
|
|
||||||
|
$check_now_url = wp_nonce_url( add_query_arg( 'wmt_check_update', '1', admin_url( 'plugins.php' ) ), 'wmt_check_update_action' );
|
||||||
|
|
||||||
echo '<div class="notice notice-warning is-dismissible">';
|
echo '<div class="notice notice-warning is-dismissible">';
|
||||||
echo '<p><strong>WP Multi Ticket Pro – Update verfügbar</strong></p>';
|
echo '<p><strong>WP Multi Ticket Pro – Update verfügbar</strong></p>';
|
||||||
echo '<p>Neue Version: <strong>' . esc_html( $cached['version'] ) . '</strong><br>';
|
echo '<p>Neue Version: <strong>' . esc_html( $cached['version'] ) . '</strong><br>';
|
||||||
echo 'Installiert: <strong>' . esc_html( $current_version ) . '</strong></p>';
|
echo 'Installiert: <strong>' . esc_html( $current_version ) . '</strong></p>';
|
||||||
echo '<p>';
|
echo '<p>';
|
||||||
echo '<a href="' . esc_url( $this->update_url ) . '" target="_blank" class="button">Release ansehen</a> ';
|
echo '<a href="' . esc_url( $this->update_url ) . '" target="_blank" class="button">Release ansehen</a> ';
|
||||||
echo '<a href="' . esc_url( $cached['url'] ) . '" target="_blank" class="button button-primary">Direkter Download (ZIP)</a>';
|
if ( ! empty( $cached['url'] ) ) {
|
||||||
|
echo '<a href="' . esc_url( $cached['url'] ) . '" target="_blank" class="button button-primary" style="margin-left:8px;">Direkter Download (ZIP)</a> ';
|
||||||
|
}
|
||||||
|
echo '<a href="' . esc_url( $check_now_url ) . '" class="button" style="margin-left:8px;">Jetzt neu prüfen</a>';
|
||||||
echo '</p>';
|
echo '</p>';
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function load_analytics_scripts( $hook ) {
|
public function load_analytics_scripts( $hook ) {
|
||||||
if ( 'wmt-tickets_page_wmt_analytics' !== $hook ) return;
|
if ( 'wmt-tickets_page_wmt_analytics' !== $hook ) return;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user