From 6feebac07f35658f42f4b61fee3f28e0d9e7fe07 Mon Sep 17 00:00:00 2001 From: Nikita Sinelnikov Date: Fri, 2 Jul 2021 17:36:01 +0300 Subject: [PATCH] - hotfixes for member directory settings and frontend functionality; --- includes/admin/core/class-admin-metabox.php | 2 ++ includes/admin/core/class-admin-settings.php | 12 ++++-------- includes/admin/templates/directory/search.php | 2 +- includes/admin/templates/directory/sorting.php | 2 +- includes/core/class-member-directory-meta.php | 10 +++++++++- includes/core/class-member-directory.php | 14 ++++++++++++-- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/includes/admin/core/class-admin-metabox.php b/includes/admin/core/class-admin-metabox.php index d8a32c7d..79deeaa0 100644 --- a/includes/admin/core/class-admin-metabox.php +++ b/includes/admin/core/class-admin-metabox.php @@ -1099,6 +1099,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) { delete_post_meta( $post_id, '_um_search_filters' ); delete_post_meta( $post_id, '_um_search_filters_gmt' ); + delete_post_meta( $post_id, '_um_sorting_fields' ); + //save metadata $metadata = UM()->admin()->sanitize_member_directory_meta( $_POST['um_metadata'] ); foreach ( $metadata as $k => $v ) { diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 85a35fc7..77b31d4a 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -188,12 +188,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { $wp_usermeta_option = get_option( 'um_usermeta_fields', array() ); $count = $wpdb->get_var( - $wpdb->prepare( - "SELECT COUNT(*) - FROM {$wpdb->usermeta} - WHERE meta_key IN (%s)", - implode( "','", $wp_usermeta_option ) - ) + "SELECT COUNT(*) + FROM {$wpdb->usermeta} + WHERE meta_key IN ('" . implode( "','", $wp_usermeta_option ) . "')" ); wp_send_json_success( array( 'count' => $count ) ); @@ -211,9 +208,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { $wpdb->prepare( "SELECT * FROM {$wpdb->usermeta} - WHERE meta_key IN (%s) + WHERE meta_key IN ('" . implode( "','", $wp_usermeta_option ) . "') LIMIT %d, %d", - implode( "','", $wp_usermeta_option ), ( absint( $_POST['page'] ) - 1 ) * $per_page, $per_page ), diff --git a/includes/admin/templates/directory/search.php b/includes/admin/templates/directory/search.php index 6d140aae..f11e17ac 100644 --- a/includes/admin/templates/directory/search.php +++ b/includes/admin/templates/directory/search.php @@ -63,7 +63,7 @@ $_um_search_filters = get_post_meta( $post_id, '_um_search_filters', true ); ?> 'conditional' => array( '_um_filters', '=', 1 ), 'options' => UM()->member_directory()->filter_fields, 'add_text' => __( 'Add New Custom Field', 'ultimate-member' ), - 'show_default_number' => 1, + 'show_default_number' => 0, 'sorting' => true, ), array( diff --git a/includes/admin/templates/directory/sorting.php b/includes/admin/templates/directory/sorting.php index 81a22dd6..fa601663 100644 --- a/includes/admin/templates/directory/sorting.php +++ b/includes/admin/templates/directory/sorting.php @@ -46,7 +46,7 @@ $fields = array( 'value' => $_um_sorting_fields, 'options' => array_merge( UM()->member_directory()->sort_fields, array( 'other' => __( 'Other (Custom Field)', 'ultimate-member' ) ) ), 'add_text' => __( 'Add New Field', 'ultimate-member' ), - 'show_default_number' => 1, + 'show_default_number' => 0, 'conditional' => array( '_um_enable_sorting', '=', 1 ), ), ); ?> diff --git a/includes/core/class-member-directory-meta.php b/includes/core/class-member-directory-meta.php index d565a458..66eb62a3 100644 --- a/includes/core/class-member-directory-meta.php +++ b/includes/core/class-member-directory-meta.php @@ -611,7 +611,11 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { foreach ( $filter_query as $field => $value ) { $field = sanitize_text_field( $field ); - $value = sanitize_text_field( $value ); + if ( is_array( $value ) ) { + $value = array_map( 'sanitize_text_field', $value ); + } else { + $value = sanitize_text_field( $value ); + } $attrs = UM()->fields()->get_field( $field ); // skip private invisible fields @@ -669,6 +673,10 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) { $this->sql_order = " ORDER BY CAST( umm_sort.um_value AS {$custom_sort_type} ) {$order} "; + } elseif ( 'username' == $sortby ) { + + $this->sql_order = " ORDER BY u.user_login {$order} "; + } elseif ( 'display_name' == $sortby ) { $display_name = UM()->options()->get( 'display_name' ); diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 108f9e0f..0d0ac949 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -1255,7 +1255,12 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { } } - if ( 'display_name' == $sortby ) { + if ( 'username' == $sortby ) { + + $this->query_args['orderby'] = 'user_login'; + $this->query_args['order'] = 'ASC'; + + } elseif ( 'display_name' == $sortby ) { $display_name = UM()->options()->get( 'display_name' ); if ( $display_name == 'username' ) { @@ -1539,6 +1544,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $filter_query = array(); if ( ! empty( $directory_data['search_fields'] ) ) { $search_filters = maybe_unserialize( $directory_data['search_fields'] ); + if ( ! empty( $search_filters ) && is_array( $search_filters ) ) { $filter_query = array_intersect_key( $_POST, array_flip( $search_filters ) ); } @@ -1554,7 +1560,11 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) { $this->is_search = true; foreach ( $filter_query as $field => $value ) { $field = sanitize_text_field( $field ); - $value = sanitize_text_field( $value ); + if ( is_array( $value ) ) { + $value = array_map( 'sanitize_text_field', $value ); + } else { + $value = sanitize_text_field( $value ); + } $attrs = UM()->fields()->get_field( $field ); // skip private invisible fields