@@ -2,12 +2,116 @@
/*
Plugin Name: LiteBans Manager
Description: Die ultimative Lösung, um deine LiteBans Datenbank nahtlos in WordPress zu integrieren. Verwalte Bans, Mutes, Warnings und Kicks direkt im WordPress Admin-Panel und biete deinen Spielern ein modernes Frontend-Dashboard.
Version: 1.0.0
Version: 1.0.1
Author: M_Viper
*/
if ( ! defined ( 'ABSPATH' ) ) { exit ; }
// ===============================
// LITEBANS MANAGER - UPDATE NOTICE
// ===============================
// Plugin-Version aus Header lesen
function litebans_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 (Button "Jetzt neu prüfen")
function litebans_clear_update_cache () {
if ( isset ( $_GET [ 'litebans_clear_cache' ] ) && current_user_can ( 'manage_options' ) ) {
check_admin_referer ( 'litebans_clear_cache_action' );
delete_transient ( 'litebans_latest_release' );
wp_redirect ( admin_url ( 'plugins.php' ) );
exit ;
}
}
add_action ( 'admin_init' , 'litebans_clear_update_cache' );
// Neueste Release-Infos von Gitea holen
function litebans_get_latest_release_info ( $force_refresh = false ) {
$transient_key = 'litebans_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/LiteBans-Manager/releases/latest' ,
array ( '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' ], 'vV' );
$release_info = array (
'version' => $tag ,
'download_url' => $data [ 'zipball_url' ] ? ? '' ,
'notes' => $data [ 'body' ] ? ? '' ,
'published_at' => $data [ 'published_at' ] ? ? '' ,
);
// Cache 6 Stunden
set_transient ( $transient_key , $release_info , 6 * HOUR_IN_SECONDS );
} else {
// leere Struktur cachen (Kurzcache)
set_transient ( $transient_key , array (), HOUR_IN_SECONDS );
}
} else {
set_transient ( $transient_key , array (), HOUR_IN_SECONDS );
}
}
return $release_info ;
}
// Admin-Notice anzeigen wenn Update vorhanden
function litebans_show_update_notice () {
if ( ! current_user_can ( 'manage_options' ) ) {
return ;
}
$current_version = litebans_get_plugin_version ();
$latest_release = litebans_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?litebans_clear_cache=1' ), 'litebans_clear_cache_action' );
?>
<div class="notice notice-warning is-dismissible">
<h3>LiteBans Manager – Update verfügbar</h3>
<p>
Installiert: <strong><?php echo esc_html( $current_version ); ?></strong><br>
Neueste Version: <strong><?php echo esc_html( $latest_release['version'] ); ?></strong>
</p>
<p>
<a href="<?php echo esc_url( $latest_release['download_url'] ); ?>" class="button button-primary" target="_blank" rel="noreferrer noopener">
Update herunterladen
</a>
<a href="https://git.viper.ipv64.net/M_Viper/LiteBans-Manager/releases" class="button" target="_blank" rel="noreferrer noopener">
Releases ansehen
</a>
<a href="<?php echo esc_url( $refresh_url ); ?>" class="button">
Jetzt neu prüfen
</a>
</p>
</div>
<?php
}
}
add_action( 'admin_notices', 'litebans_show_update_notice' );
class WP_LiteBans_Pro {
private $option_name = 'wp_litebans_pro_settings';
@@ -389,6 +493,7 @@ class WP_LiteBans_Pro {
$settings = get_option( $this->option_name );
$fields = array(
'db_host' => array('label'=>'Host', 'type'=>'text', 'default'=>'localhost'),
'db_port' => array('label'=>'Port', 'type'=>'number', 'default'=>'3306'),
'db_name' => array('label'=>'Datenbank Name', 'type'=>'text', 'default'=>'litebans'),
'db_user' => array('label'=>'User', 'type'=>'text'),
'db_pass' => array('label'=>'Passwort', 'type'=>'password'),
@@ -434,7 +539,14 @@ class WP_LiteBans_Pro {
if ($this->db) return $this->db;
$s = get_option( $this->option_name );
if ( empty( $s['db_name'] ) ) return new WP_Error( 'no_config', 'LiteBans nicht konfiguriert.' );
$this->db = new wpdb( $s['db_user'], $s['db_pass'], $s['db_name'], $s['db_host'] );
// Host und Port zusammenfügen
$db_host = $s['db_host'];
if ( ! empty( $s['db_port'] ) ) {
$db_host .= ':' . intval( $s['db_port'] );
}
$this->db = new wpdb( $s['db_user'], $s['db_pass'], $s['db_name'], $db_host );
if ( $this->db->last_error ) return new WP_Error( 'db_error', 'DB Fehler: ' . $this->db->last_error );
$this->db->prefix = isset($s['table_prefix']) ? $s['table_prefix'] : 'litebans_';
return $this->db;