Update from Git Manager GUI
This commit is contained in:
@@ -490,7 +490,7 @@ class WBF_DB {
|
||||
}
|
||||
// Move post_count contribution too
|
||||
$post_count = (int)$wpdb->get_var($wpdb->prepare(
|
||||
"SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE thread_id=%d", $thread_id
|
||||
"SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE thread_id=%d AND deleted_at IS NULL", $thread_id
|
||||
));
|
||||
if ( $post_count > 0 ) {
|
||||
$wpdb->query($wpdb->prepare(
|
||||
@@ -512,7 +512,7 @@ class WBF_DB {
|
||||
FROM {$wpdb->prefix}forum_threads t
|
||||
JOIN {$wpdb->prefix}forum_users u ON u.id = t.user_id
|
||||
LEFT JOIN {$wpdb->prefix}forum_prefixes p ON p.id = t.prefix_id
|
||||
WHERE t.id = %d", $id
|
||||
WHERE t.id = %d AND t.deleted_at IS NULL", $id
|
||||
));
|
||||
}
|
||||
|
||||
@@ -572,7 +572,7 @@ class WBF_DB {
|
||||
|
||||
public static function count_posts( $thread_id ) {
|
||||
global $wpdb;
|
||||
return (int)$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE thread_id=%d", $thread_id));
|
||||
return (int)$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE thread_id=%d AND deleted_at IS NULL", $thread_id));
|
||||
}
|
||||
|
||||
public static function create_post( $data ) {
|
||||
@@ -643,8 +643,8 @@ class WBF_DB {
|
||||
public static function get_stats() {
|
||||
global $wpdb;
|
||||
return [
|
||||
'threads' => $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_threads WHERE status != 'archived'"),
|
||||
'posts' => $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts"),
|
||||
'threads' => $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_threads WHERE status != 'archived' AND deleted_at IS NULL"),
|
||||
'posts' => $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_posts WHERE deleted_at IS NULL"),
|
||||
'members' => $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}forum_users"),
|
||||
'newest' => $wpdb->get_var("SELECT display_name FROM {$wpdb->prefix}forum_users ORDER BY registered DESC LIMIT 1"),
|
||||
];
|
||||
@@ -731,9 +731,23 @@ class WBF_DB {
|
||||
|
||||
// ── Suche ─────────────────────────────────────────────────────────────────
|
||||
|
||||
public static function search( $query, $limit = 30 ) {
|
||||
public static function search( $query, $limit = 30, $user = null ) {
|
||||
global $wpdb;
|
||||
$like = '%' . $wpdb->esc_like( $query ) . '%';
|
||||
|
||||
// Kategorie-Sichtbarkeit: Gäste und Member dürfen keine privaten Kategorien sehen
|
||||
$user_level = $user ? WBF_Roles::level( $user->role ) : -99;
|
||||
if ( $user_level >= 50 ) {
|
||||
// Moderatoren+ sehen alles (inkl. soft-deleted ist extra)
|
||||
$cat_filter = '';
|
||||
} elseif ( $user ) {
|
||||
// Eingeloggte Member/VIP: nur guest_visible oder eigene Rolle reicht
|
||||
$cat_filter = "AND c.guest_visible = 1 AND (c.min_role IS NULL OR c.min_role IN ('member','vip'))";
|
||||
} else {
|
||||
// Gäste: nur komplett öffentliche Kategorien
|
||||
$cat_filter = "AND c.guest_visible = 1 AND (c.min_role IS NULL OR c.min_role = 'member')";
|
||||
}
|
||||
|
||||
return $wpdb->get_results( $wpdb->prepare(
|
||||
"SELECT 'thread' AS result_type,
|
||||
t.id, t.title, t.content, t.created_at, t.reply_count,
|
||||
@@ -742,7 +756,9 @@ class WBF_DB {
|
||||
FROM {$wpdb->prefix}forum_threads t
|
||||
JOIN {$wpdb->prefix}forum_users u ON u.id = t.user_id
|
||||
JOIN {$wpdb->prefix}forum_categories c ON c.id = t.category_id
|
||||
WHERE (t.title LIKE %s OR t.content LIKE %s) AND t.status != 'archived'
|
||||
WHERE (t.title LIKE %s OR t.content LIKE %s)
|
||||
AND t.status != 'archived' AND t.deleted_at IS NULL
|
||||
$cat_filter
|
||||
UNION ALL
|
||||
SELECT 'post' AS result_type,
|
||||
p.id, t.title, p.content, p.created_at, 0 AS reply_count,
|
||||
@@ -752,7 +768,9 @@ class WBF_DB {
|
||||
JOIN {$wpdb->prefix}forum_threads t ON t.id = p.thread_id
|
||||
JOIN {$wpdb->prefix}forum_users u ON u.id = p.user_id
|
||||
JOIN {$wpdb->prefix}forum_categories c ON c.id = t.category_id
|
||||
WHERE p.content LIKE %s AND t.status != 'archived'
|
||||
WHERE p.content LIKE %s
|
||||
AND p.deleted_at IS NULL AND t.status != 'archived' AND t.deleted_at IS NULL
|
||||
$cat_filter
|
||||
ORDER BY created_at DESC
|
||||
LIMIT %d",
|
||||
$like, $like, $like, $limit
|
||||
@@ -1476,6 +1494,25 @@ class WBF_DB {
|
||||
update_option( 'wbf_profile_fields', $fields );
|
||||
}
|
||||
|
||||
public static function get_profile_field_categories() {
|
||||
$cats = get_option( 'wbf_profile_field_cats', null );
|
||||
if ( $cats === null ) {
|
||||
// Default-Kategorien beim ersten Aufruf
|
||||
$defaults = [
|
||||
[ 'id' => 'cat_allgemein', 'name' => 'Allgemein', 'icon' => '👤' ],
|
||||
[ 'id' => 'cat_kontakt', 'name' => 'Kontakt', 'icon' => '✉️' ],
|
||||
[ 'id' => 'cat_social', 'name' => 'Social Media', 'icon' => '🌐' ],
|
||||
];
|
||||
update_option( 'wbf_profile_field_cats', $defaults );
|
||||
return $defaults;
|
||||
}
|
||||
return is_array( $cats ) ? $cats : [];
|
||||
}
|
||||
|
||||
public static function save_profile_field_categories( $cats ) {
|
||||
update_option( 'wbf_profile_field_cats', $cats );
|
||||
}
|
||||
|
||||
public static function get_user_meta( $user_id ) {
|
||||
global $wpdb;
|
||||
$rows = $wpdb->get_results( $wpdb->prepare(
|
||||
|
||||
Reference in New Issue
Block a user