Upload folder via GUI - includes
This commit is contained in:
@@ -393,9 +393,26 @@ class MC_Gallery_Core {
|
|||||||
$mc_user = MC_Gallery_Forum_Bridge::get_mc_username( $forum_user->id );
|
$mc_user = MC_Gallery_Forum_Bridge::get_mc_username( $forum_user->id );
|
||||||
$verified = MC_Gallery_Forum_Bridge::is_verified( $forum_user->id );
|
$verified = MC_Gallery_Forum_Bridge::is_verified( $forum_user->id );
|
||||||
if ( $mc_user && $verified ) {
|
if ( $mc_user && $verified ) {
|
||||||
|
$raw_sv = MC_Gallery_Forum_Bridge::get_mc_server( $forum_user->id );
|
||||||
|
// Sicherstellen dass server_id immer ein Integer (Post-ID) ist
|
||||||
|
$server_id_int = is_numeric( $raw_sv ) ? intval( $raw_sv ) : 0;
|
||||||
|
if ( ! $server_id_int && ! empty( $raw_sv ) ) {
|
||||||
|
// Slug/Titel auflösen
|
||||||
|
$p = get_page_by_path( $raw_sv, OBJECT, 'mc_server' );
|
||||||
|
if ( $p ) {
|
||||||
|
$server_id_int = $p->ID;
|
||||||
|
MC_Gallery_Forum_Bridge::set_mc_server( $forum_user->id, $server_id_int );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Fallback: ersten aktiven Server nehmen
|
||||||
|
if ( ! $server_id_int ) {
|
||||||
|
$fallback = get_posts( [ 'post_type' => 'mc_server', 'posts_per_page' => 1,
|
||||||
|
'post_status' => 'publish', 'meta_key' => 'mc_server_active', 'meta_value' => 1 ] );
|
||||||
|
if ( $fallback ) $server_id_int = $fallback[0]->ID;
|
||||||
|
}
|
||||||
$forum_verified_data = [
|
$forum_verified_data = [
|
||||||
'mc_username' => $mc_user,
|
'mc_username' => $mc_user,
|
||||||
'server_id' => MC_Gallery_Forum_Bridge::get_mc_server( $forum_user->id ),
|
'server_id' => $server_id_int,
|
||||||
'display_name' => $forum_user->display_name,
|
'display_name' => $forum_user->display_name,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -295,8 +295,14 @@ class MC_Gallery_Forum_Bridge {
|
|||||||
wp_send_json_error( 'Dieser Minecraft-Name ist bereits mit einem anderen Forum-Konto verknüpft.' );
|
wp_send_json_error( 'Dieser Minecraft-Name ist bereits mit einem anderen Forum-Konto verknüpft.' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Server-ID auflösen und als Integer-Post-ID speichern
|
||||||
|
$resolved_server = self::resolve_server_id( $server );
|
||||||
|
if ( ! $resolved_server && ! empty( $server ) ) {
|
||||||
|
// Fallback: rohen Wert speichern wenn Auflösung fehlschlägt
|
||||||
|
$resolved_server = $server;
|
||||||
|
}
|
||||||
self::set_mc_username( $user->id, $mc_user );
|
self::set_mc_username( $user->id, $mc_user );
|
||||||
self::set_mc_server( $user->id, $server );
|
self::set_mc_server( $user->id, $resolved_server );
|
||||||
// Verifizierung: automatisch wenn gültiger Ingame-Token vorliegt
|
// Verifizierung: automatisch wenn gültiger Ingame-Token vorliegt
|
||||||
$auto_verified = self::check_active_token_for( $mc_user );
|
$auto_verified = self::check_active_token_for( $mc_user );
|
||||||
self::set_verified( $user->id, $auto_verified );
|
self::set_verified( $user->id, $auto_verified );
|
||||||
@@ -376,19 +382,31 @@ class MC_Gallery_Forum_Bridge {
|
|||||||
] );
|
] );
|
||||||
}
|
}
|
||||||
|
|
||||||
$server_id = self::get_mc_server( $forum_user->id )
|
// Server-ID aus Profil laden und als gültige Post-ID auflösen
|
||||||
?: sanitize_text_field( $_POST['server_id'] ?? '' );
|
$raw_server = self::get_mc_server( $forum_user->id )
|
||||||
|
?: sanitize_text_field( $_POST['server_id'] ?? '' );
|
||||||
|
$server_id = self::resolve_server_id( $raw_server );
|
||||||
|
|
||||||
if ( empty( $server_id ) ) {
|
// Kein Server gefunden: ersten verfügbaren nehmen
|
||||||
|
if ( ! $server_id ) {
|
||||||
$servers = self::get_server_list();
|
$servers = self::get_server_list();
|
||||||
if ( ! empty( $servers ) ) {
|
if ( ! empty( $servers ) ) {
|
||||||
$first = array_key_first( $servers );
|
$first = array_key_first( $servers );
|
||||||
if ( $first !== null ) {
|
if ( $first !== null ) {
|
||||||
$server_id = (string) $first;
|
$server_id = (int) $first;
|
||||||
|
// Für diesen User speichern damit es beim nächsten Mal direkt klappt
|
||||||
|
self::set_mc_server( $forum_user->id, $server_id );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( ! $server_id ) {
|
||||||
|
wp_send_json_error( [
|
||||||
|
'code' => 'no_server',
|
||||||
|
'message' => 'Kein Server gefunden. Bitte einen Admin kontaktieren.',
|
||||||
|
] );
|
||||||
|
}
|
||||||
|
|
||||||
wp_send_json_success( [
|
wp_send_json_success( [
|
||||||
'mc_username' => $mc_user,
|
'mc_username' => $mc_user,
|
||||||
'server_id' => $server_id,
|
'server_id' => $server_id,
|
||||||
@@ -762,10 +780,50 @@ class MC_Gallery_Forum_Bridge {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Server-Liste aus Gallery-Config laden
|
// Server-Liste aus mc_server Custom Post Type laden (Post-ID => Titel)
|
||||||
private static function get_server_list() {
|
private static function get_server_list() {
|
||||||
$servers = get_option( 'mc_gallery_servers', [] );
|
$posts = get_posts( [
|
||||||
if ( ! empty( $servers ) && is_array( $servers ) ) return $servers;
|
'post_type' => 'mc_server',
|
||||||
return [ 'default' => 'Standard-Server' ];
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'meta_key' => 'mc_server_active',
|
||||||
|
'meta_value' => 1,
|
||||||
|
] );
|
||||||
|
$out = [];
|
||||||
|
foreach ( $posts as $p ) {
|
||||||
|
$out[ $p->ID ] = $p->post_title;
|
||||||
|
}
|
||||||
|
if ( ! empty( $out ) ) return $out;
|
||||||
|
// Fallback: alle mc_server Posts ohne Aktiv-Filter
|
||||||
|
$posts = get_posts( [ 'post_type' => 'mc_server', 'posts_per_page' => -1, 'post_status' => 'publish' ] );
|
||||||
|
foreach ( $posts as $p ) {
|
||||||
|
$out[ $p->ID ] = $p->post_title;
|
||||||
|
}
|
||||||
|
return ! empty( $out ) ? $out : [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Löst einen Server-String (Slug oder ID) zu einer gültigen Post-ID auf
|
||||||
|
private static function resolve_server_id( $raw_server_id ) {
|
||||||
|
if ( empty( $raw_server_id ) ) return 0;
|
||||||
|
|
||||||
|
// Bereits eine gültige Post-ID?
|
||||||
|
if ( is_numeric( $raw_server_id ) && get_post_type( (int) $raw_server_id ) === 'mc_server' ) {
|
||||||
|
return (int) $raw_server_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Slug-Lookup
|
||||||
|
$post = get_page_by_path( $raw_server_id, OBJECT, 'mc_server' );
|
||||||
|
if ( $post ) return $post->ID;
|
||||||
|
|
||||||
|
// Titel-Lookup (case-insensitive)
|
||||||
|
global $wpdb;
|
||||||
|
$id = (int) $wpdb->get_var( $wpdb->prepare(
|
||||||
|
"SELECT ID FROM {$wpdb->posts}
|
||||||
|
WHERE post_type = 'mc_server' AND post_status = 'publish'
|
||||||
|
AND LOWER(post_title) = LOWER(%s)
|
||||||
|
LIMIT 1",
|
||||||
|
(string) $raw_server_id
|
||||||
|
) );
|
||||||
|
return $id ?: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user