Update from Git Manager GUI
This commit is contained in:
@@ -151,7 +151,6 @@ class WBF_DB {
|
||||
dbDelta( $sql_threads );
|
||||
dbDelta( $sql_posts );
|
||||
dbDelta( $sql_likes );
|
||||
dbDelta( $sql_reports );
|
||||
dbDelta( $sql_tags );
|
||||
dbDelta( $sql_thread_tags );
|
||||
dbDelta( $sql_messages );
|
||||
@@ -201,7 +200,6 @@ class WBF_DB {
|
||||
) $charset;";
|
||||
|
||||
// Ensure reports + notifications tables exist on existing installs
|
||||
dbDelta( $sql_reports );
|
||||
dbDelta( $sql_notifications );
|
||||
|
||||
// Einladungs-Tabelle
|
||||
@@ -604,10 +602,24 @@ class WBF_DB {
|
||||
) );
|
||||
}
|
||||
}
|
||||
// Posts zählen, User-IDs sammeln
|
||||
$posts = $wpdb->get_results($wpdb->prepare("SELECT user_id FROM {$wpdb->prefix}forum_posts WHERE thread_id=%d", $id));
|
||||
$post_count = count($posts);
|
||||
$user_post_counts = [];
|
||||
foreach ($posts as $p) {
|
||||
$uid = (int)$p->user_id;
|
||||
if (!isset($user_post_counts[$uid])) $user_post_counts[$uid] = 0;
|
||||
$user_post_counts[$uid]++;
|
||||
}
|
||||
// Posts löschen
|
||||
$wpdb->delete("{$wpdb->prefix}forum_posts", ['thread_id' => $id]);
|
||||
$wpdb->delete("{$wpdb->prefix}forum_threads", ['id' => $id]);
|
||||
// Zähler anpassen
|
||||
if ( $thread->status !== 'archived' ) {
|
||||
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}forum_categories SET thread_count=GREATEST(thread_count-1,0) WHERE id=%d", $thread->category_id));
|
||||
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}forum_categories SET thread_count=GREATEST(thread_count-1,0), post_count=GREATEST(post_count-%d,0) WHERE id=%d", $post_count, $thread->category_id));
|
||||
}
|
||||
foreach ($user_post_counts as $uid => $cnt) {
|
||||
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}forum_users SET post_count=GREATEST(post_count-%d,0) WHERE id=%d", $cnt, $uid));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -859,6 +871,8 @@ class WBF_DB {
|
||||
'object_id' => $object_id,
|
||||
'actor_id' => $actor_id,
|
||||
] );
|
||||
// MC Bridge: Ingame-Benachrichtigung auslösen wenn Spieler verknüpft ist
|
||||
do_action( 'wbf_notification_created', $user_id, $type, $object_id, $actor_id );
|
||||
}
|
||||
|
||||
public static function get_notifications( $user_id, $limit = 20 ) {
|
||||
@@ -1253,12 +1267,13 @@ class WBF_DB {
|
||||
public static function create_remember_token( $user_id ) {
|
||||
global $wpdb;
|
||||
$token = bin2hex( random_bytes(32) );
|
||||
$token_hash = hash('sha256', $token);
|
||||
$expires = date('Y-m-d H:i:s', strtotime('+30 days'));
|
||||
// Delete existing tokens for this user first
|
||||
$wpdb->delete( "{$wpdb->prefix}forum_remember_tokens", ['user_id' => $user_id] );
|
||||
$wpdb->insert( "{$wpdb->prefix}forum_remember_tokens", [
|
||||
'user_id' => $user_id,
|
||||
'token' => $token,
|
||||
'token' => $token_hash,
|
||||
'expires_at' => $expires,
|
||||
] );
|
||||
return $token;
|
||||
@@ -1268,10 +1283,11 @@ class WBF_DB {
|
||||
global $wpdb;
|
||||
$table = "{$wpdb->prefix}forum_remember_tokens";
|
||||
if ( $wpdb->get_var("SHOW TABLES LIKE '$table'") !== $table ) return null;
|
||||
$token_hash = hash('sha256', sanitize_text_field($token));
|
||||
return $wpdb->get_row( $wpdb->prepare(
|
||||
"SELECT user_id FROM {$wpdb->prefix}forum_remember_tokens
|
||||
WHERE token=%s AND expires_at > NOW()",
|
||||
sanitize_text_field($token)
|
||||
$token_hash
|
||||
) );
|
||||
}
|
||||
|
||||
@@ -1460,11 +1476,25 @@ class WBF_DB {
|
||||
|
||||
public static function soft_delete_post( $post_id ) {
|
||||
global $wpdb;
|
||||
// Soft-Delete setzen
|
||||
$wpdb->update(
|
||||
"{$wpdb->prefix}forum_posts",
|
||||
['deleted_at' => current_time('mysql')],
|
||||
['id' => (int)$post_id]
|
||||
);
|
||||
// Zähler anpassen
|
||||
$post = $wpdb->get_row($wpdb->prepare("SELECT thread_id, user_id FROM {$wpdb->prefix}forum_posts WHERE id=%d", $post_id));
|
||||
if ($post) {
|
||||
// Thread reply_count -1
|
||||
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}forum_threads SET reply_count=GREATEST(reply_count-1,0) WHERE id=%d", $post->thread_id));
|
||||
// User post_count -1
|
||||
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}forum_users SET post_count=GREATEST(post_count-1,0) WHERE id=%d", $post->user_id));
|
||||
// Kategorie post_count -1
|
||||
$cat_id = $wpdb->get_var($wpdb->prepare("SELECT category_id FROM {$wpdb->prefix}forum_threads WHERE id=%d", $post->thread_id));
|
||||
if ($cat_id) {
|
||||
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->prefix}forum_categories SET post_count=GREATEST(post_count-1,0) WHERE id=%d", $cat_id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static function restore_thread( $thread_id ) {
|
||||
@@ -1587,6 +1617,18 @@ class WBF_DB {
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt einen einzelnen Meta-Wert zurück (oder leeren String wenn nicht vorhanden).
|
||||
*/
|
||||
public static function get_user_meta_single( $user_id, $key ) {
|
||||
global $wpdb;
|
||||
$value = $wpdb->get_var( $wpdb->prepare(
|
||||
"SELECT meta_value FROM {$wpdb->prefix}forum_user_meta WHERE user_id = %d AND meta_key = %s LIMIT 1",
|
||||
(int) $user_id, $key
|
||||
) );
|
||||
return $value !== null ? $value : '';
|
||||
}
|
||||
|
||||
public static function set_user_meta( $user_id, $key, $value ) {
|
||||
global $wpdb;
|
||||
$wpdb->replace(
|
||||
|
||||
Reference in New Issue
Block a user