- added filter for default setting for Hide in Members;

This commit is contained in:
nikitasinelnikov
2020-01-14 22:22:11 +02:00
parent 7a722065ee
commit 5006ac83fb
7 changed files with 44 additions and 99 deletions
@@ -59,7 +59,7 @@ function um_upgrade_metadata_per_user213beta3() {
if ( ! isset( $users_map[ $metadatarow['user_id'] ] ) ) {
$users_map[ $metadatarow['user_id'] ] = array(
'account_status' => 'approved',
'hide_in_members' => false,
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
'profile_photo' => false,
'cover_photo' => false,
'verified' => false,
@@ -72,11 +72,13 @@ function um_upgrade_metadata_per_user213beta3() {
break;
case 'hide_in_members':
$hide_in_members = false;
$hide_in_members = UM()->member_directory()->get_hide_in_members_default();
if ( ! empty( $metadatarow['meta_value'] ) ) {
if ( $metadatarow['meta_value'] == 'Yes' || $metadatarow['meta_value'] == __( 'Yes', 'ultimate-member' ) ||
$metadatarow['meta_value'] == serialize( array( 'Yes' ) ) || $metadatarow['meta_value'] == serialize( array( __( 'Yes', 'ultimate-member' ) ) ) ) {
$hide_in_members = true;
} else {
$hide_in_members = false;
}
}
-2
View File
@@ -1464,8 +1464,6 @@ if ( ! class_exists( 'UM' ) ) {
require_once 'core/um-filters-avatars.php';
require_once 'core/um-filters-user.php';
//require_once 'core/um-filters-members.php';
require_once 'core/um-filters-profile.php';
require_once 'core/um-filters-account.php';
require_once 'core/um-filters-misc.php';
+15 -12
View File
@@ -1123,18 +1123,21 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
),
'hide_in_members' => array(
'title' => __('Hide my profile from directory','ultimate-member'),
'metakey' => 'hide_in_members',
'type' => 'radio',
'label' => __('Hide my profile from directory','ultimate-member'),
'help' => __('Here you can hide yourself from appearing in public directory','ultimate-member'),
'required' => 0,
'public' => 1,
'editable' => 1,
'default' => 'No',
'options' => array( 'No' => __('No','ultimate-member'), 'Yes' => __('Yes','ultimate-member') ),
'account_only' => true,
'required_opt' => array( 'members_page', 1 ),
'title' => __( 'Hide my profile from directory', 'ultimate-member' ),
'metakey' => 'hide_in_members',
'type' => 'radio',
'label' => __( 'Hide my profile from directory', 'ultimate-member' ),
'help' => __( 'Here you can hide yourself from appearing in public directory', 'ultimate-member' ),
'required' => 0,
'public' => 1,
'editable' => 1,
'default' => UM()->member_directory()->get_hide_in_members_default() ? 'Yes' : 'No',
'options' => array(
'No' => __( 'No', 'ultimate-member' ),
'Yes' => __( 'Yes', 'ultimate-member' ),
),
'account_only' => true,
'required_opt' => array( 'members_page', 1 ),
),
'delete_account' => array(
@@ -667,7 +667,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
$_SESSION['um_member_directory_seed'] = $seed;
}
$this->sql_order = 'ORDER by RAND(' . $seed . ')';
$this->sql_order = 'ORDER BY RAND(' . $seed . ')';
} else {
+18 -5
View File
@@ -98,6 +98,15 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
}
/**
* @return bool
*/
function get_hide_in_members_default() {
$default = apply_filters( 'um_member_directory_hide_in_members_default', false );
return $default;
}
/**
* Getting member directory post ID via hash
* Hash is unique attr, which we use visible at frontend
@@ -1404,11 +1413,15 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$custom_fields[] = $field_key;
}
$sql['join'] = preg_replace(
'/(' . $meta_join_for_search . ' ON \( ' . $wpdb->users . '\.ID = ' . $meta_join_for_search . '\.user_id )(\))/im',
"$1 AND " . $meta_join_for_search . ".meta_key IN( '" . implode( "','", $custom_fields ) . "' ) $2",
$sql['join']
);
$custom_fields = apply_filters( 'um_general_search_custom_fields', $custom_fields );
if ( ! empty( $custom_fields ) ) {
$sql['join'] = preg_replace(
'/(' . $meta_join_for_search . ' ON \( ' . $wpdb->users . '\.ID = ' . $meta_join_for_search . '\.user_id )(\))/im',
"$1 AND " . $meta_join_for_search . ".meta_key IN( '" . implode( "','", $custom_fields ) . "' ) $2",
$sql['join']
);
}
}
// Add OR instead AND to search in WP core fields user_email, user_login, user_display_name
+6 -4
View File
@@ -120,7 +120,7 @@ if ( ! class_exists( 'um\core\User' ) ) {
if ( empty( $md_data ) ) {
$md_data = array(
'account_status' => 'approved',
'hide_in_members' => false,
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
'profile_photo' => false,
'cover_photo' => false,
'verified' => false,
@@ -132,7 +132,7 @@ if ( ! class_exists( 'um\core\User' ) ) {
$md_data['account_status'] = 'approved';
break;
case 'hide_in_members':
$md_data['hide_in_members'] = false;
$md_data['hide_in_members'] = UM()->member_directory()->get_hide_in_members_default();
break;
case 'synced_gravatar_hashed_id':
if ( UM()->options()->get( 'use_gravatars' ) ) {
@@ -194,7 +194,7 @@ if ( ! class_exists( 'um\core\User' ) ) {
if ( empty( $md_data ) ) {
$md_data = array(
'account_status' => 'approved',
'hide_in_members' => false,
'hide_in_members' => UM()->member_directory()->get_hide_in_members_default(),
'profile_photo' => false,
'cover_photo' => false,
'verified' => false,
@@ -207,11 +207,13 @@ if ( ! class_exists( 'um\core\User' ) ) {
break;
case 'hide_in_members':
$hide_in_members = false;
$hide_in_members = UM()->member_directory()->get_hide_in_members_default();
if ( ! empty( $_meta_value ) ) {
if ( $_meta_value == 'Yes' || $_meta_value == __( 'Yes', 'ultimate-member' ) ||
$_meta_value == serialize( array( 'Yes' ) ) || $_meta_value == serialize( array( __( 'Yes', 'ultimate-member' ) ) ) ) {
$hide_in_members = true;
} else {
$hide_in_members = false;
}
}
-73
View File
@@ -1,73 +0,0 @@
<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
/**
* Remove users we do not need to show in directory
*
* @param $query_args
* @param $args
*
* @return mixed
*/
function um_remove_special_users_from_list( $query_args, $args ) {
extract( $args );
$query_args['meta_query']['relation'] = 'AND';
if ( ! UM()->roles()->um_user_can( 'can_edit_everyone' ) ) {
$query_args['meta_query'][] = array(
'key' => 'account_status',
'value' => 'approved',
'compare' => '='
);
}
if ( UM()->options()->get( 'account_hide_in_directory' ) ) {
if ( ! UM()->roles()->um_user_can( 'can_access_private_profile' ) ) {
$query_args['meta_query'][] = array(
"relation" => "OR",
array(
'key' => 'hide_in_members',
'value' => '',
'compare' => 'NOT EXISTS'
),
array(
"relation" => "AND",
array(
'key' => 'hide_in_members',
'value' => __('Yes','ultimate-member'),
'compare' => 'NOT LIKE'
),
array(
'key' => 'hide_in_members',
'value' => 'Yes',
'compare' => 'NOT LIKE'
),
),
);
}
}
$roles = um_user( 'can_view_roles' );
if ( UM()->roles()->um_user_can( 'can_view_all' ) && ! empty( $roles ) ) {
$roles = maybe_unserialize( $roles );
if ( ! empty( $roles ) ) {
if ( ! empty( $query_args['role__in'] ) ) {
$roles_intersect = array_intersect( $query_args['role__in'], $roles );
if( ! empty( $roles_intersect ) ){
$query_args['role__in'] = $roles_intersect;
}
} else {
$query_args['role__in'] = $roles;
}
}
}
return $query_args;
}
//add_filter( 'um_prepare_user_query_args', 'um_remove_special_users_from_list', 99, 2 );