From 455287f05c52a636da1337392cd70b7bb23caaf0 Mon Sep 17 00:00:00 2001 From: nikitasinelnikov Date: Tue, 14 Jan 2020 23:48:33 +0200 Subject: [PATCH] - added option for hide_in_members default setting; --- includes/admin/core/class-admin-settings.php | 66 ++++++++++++++++--- .../core/packages/2.1.3-beta3/functions.php | 2 +- includes/class-config.php | 1 + includes/core/class-member-directory.php | 8 ++- includes/core/class-user.php | 2 +- includes/core/um-actions-account.php | 15 ++++- 6 files changed, 79 insertions(+), 15 deletions(-) diff --git a/includes/admin/core/class-admin-settings.php b/includes/admin/core/class-admin-settings.php index 51109663..02d28cce 100644 --- a/includes/admin/core/class-admin-settings.php +++ b/includes/admin/core/class-admin-settings.php @@ -700,17 +700,29 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { 'tooltip' => __( 'Password is required to save account data.', 'ultimate-member' ), ), array( - 'id' => 'account_hide_in_directory', - 'type' => 'checkbox', - 'label' => __( 'Allow users to hide their profiles from directory','ultimate-member' ), - 'tooltip' => __('Whether to allow users changing their profile visibility from member directory in account page.','ultimate-member'), + 'id' => 'account_require_strongpass', + 'type' => 'checkbox', + 'label' => __( 'Require a strong password?','ultimate-member' ), + 'tooltip' => __( 'Enable or disable a strong password rules on account page / change password tab', 'ultimate-member' ), ), array( - 'id' => 'account_require_strongpass', - 'type' => 'checkbox', - 'label' => __( 'Require a strong password?','ultimate-member' ), - 'tooltip' => __('Enable or disable a strong password rules on account page / change password tab','ultimate-member'), - ) + 'id' => 'account_hide_in_directory', + 'type' => 'checkbox', + 'label' => __( 'Allow users to hide their profiles from directory', 'ultimate-member' ), + 'tooltip' => __( 'Whether to allow users changing their profile visibility from member directory in account page.', 'ultimate-member' ), + ), + array( + 'id' => 'account_hide_in_directory_default', + 'type' => 'select', + 'label' => __( 'Hide profiles from directory by default', 'ultimate-member' ), + 'tooltip' => __( 'Set default value for the "Hide my profile from directory" option', 'ultimate-member' ), + 'options' => array( + 'No' => __( 'No', 'ultimate-member' ), + 'Yes' => __( 'Yes', 'ultimate-member' ) + ), + 'size' => 'small', + 'conditional' => array( 'account_hide_in_directory', '=', '1' ), + ), ) ), 'uploads' => array( @@ -1923,6 +1935,42 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) { update_option( 'um_member_directory_truncated', time() ); } + } elseif ( isset( $_POST['um_options']['account_hide_in_directory_default'] ) ) { + + global $wpdb; + + if ( $_POST['um_options']['account_hide_in_directory_default'] == 'No' ) { + + $results = $wpdb->get_col( + "SELECT u.ID FROM {$wpdb->users} AS u + LEFT JOIN {$wpdb->usermeta} AS um ON ( um.user_id = u.ID AND um.meta_key = 'hide_in_members' ) + LEFT JOIN {$wpdb->usermeta} AS um2 ON ( um2.user_id = u.ID AND um2.meta_key = 'um_member_directory_data' ) + WHERE um.meta_value IS NULL AND + um2.meta_value LIKE '%s:15:\"hide_in_members\";b:1;%'" + ); + + } else { + + $results = $wpdb->get_col( + "SELECT u.ID FROM {$wpdb->users} AS u + LEFT JOIN {$wpdb->usermeta} AS um ON ( um.user_id = u.ID AND um.meta_key = 'hide_in_members' ) + LEFT JOIN {$wpdb->usermeta} AS um2 ON ( um2.user_id = u.ID AND um2.meta_key = 'um_member_directory_data' ) + WHERE um.meta_value IS NULL AND + um2.meta_value LIKE '%s:15:\"hide_in_members\";b:0;%'" + ); + + } + + if ( ! empty( $results ) ) { + foreach ( $results as $user_id ) { + $md_data = get_user_meta( $user_id, 'um_member_directory_data', true ); + if ( ! empty( $md_data ) ) { + $md_data['hide_in_members'] = ( $_POST['um_options']['account_hide_in_directory_default'] == 'No' ) ? false : true; + update_user_meta( $user_id, 'um_member_directory_data', $md_data ); + } + } + } + } } } diff --git a/includes/admin/core/packages/2.1.3-beta3/functions.php b/includes/admin/core/packages/2.1.3-beta3/functions.php index c86759b2..78ebe0a7 100644 --- a/includes/admin/core/packages/2.1.3-beta3/functions.php +++ b/includes/admin/core/packages/2.1.3-beta3/functions.php @@ -75,7 +75,7 @@ function um_upgrade_metadata_per_user213beta3() { $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' ) ) ) ) { + array_intersect( array( 'Yes', __( 'Yes', 'ultimate-member' ) ), $metadatarow['meta_value'] ) ) { $hide_in_members = true; } else { $hide_in_members = false; diff --git a/includes/class-config.php b/includes/class-config.php index 57b98058..c53193d4 100644 --- a/includes/class-config.php +++ b/includes/class-config.php @@ -532,6 +532,7 @@ if ( ! class_exists( 'um\Config' ) ) { 'account_email' => 1, 'account_general_password' => 0, 'account_hide_in_directory' => 1, + 'account_hide_in_directory_default' => 'No', 'account_require_strongpass' => 0, 'photo_thumb_sizes' => array( 40, 80, 190 ), 'cover_thumb_sizes' => array( 300, 600 ), diff --git a/includes/core/class-member-directory.php b/includes/core/class-member-directory.php index 5e1056cd..68db44b4 100644 --- a/includes/core/class-member-directory.php +++ b/includes/core/class-member-directory.php @@ -102,7 +102,13 @@ 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 ); + $default = false; + $option = UM()->options()->get( 'account_hide_in_directory_default' ); + if ( $option == 'Yes' ) { + $default = true; + } + + $default = apply_filters( 'um_member_directory_hide_in_members_default', $default ); return $default; } diff --git a/includes/core/class-user.php b/includes/core/class-user.php index a443a644..e7087166 100644 --- a/includes/core/class-user.php +++ b/includes/core/class-user.php @@ -210,7 +210,7 @@ if ( ! class_exists( 'um\core\User' ) ) { $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' ) ) ) ) { + array_intersect( array( 'Yes', __( 'Yes', 'ultimate-member' ) ), $_meta_value ) ) { $hide_in_members = true; } else { $hide_in_members = false; diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php index 6ee91ccf..4b1cff41 100644 --- a/includes/core/um-actions-account.php +++ b/includes/core/um-actions-account.php @@ -267,9 +267,18 @@ function um_submit_account_details( $args ) { $changes[ $k ] = $v; } - if ( isset( $changes['hide_in_members'] ) && ( $changes['hide_in_members'] == __( 'No', 'ultimate-member' ) || $changes['hide_in_members'] == 'No' ) ) { - delete_user_meta( $user_id, 'hide_in_members' ); - unset( $changes['hide_in_members'] ); + if ( isset( $changes['hide_in_members'] ) ) { + if ( UM()->member_directory()->get_hide_in_members_default() ) { + if ( $changes['hide_in_members'] == __( 'Yes', 'ultimate-member' ) || $changes['hide_in_members'] == 'Yes' || array_intersect( array( 'Yes', __( 'Yes', 'ultimate-member' ) ), $changes['hide_in_members'] ) ) { + delete_user_meta( $user_id, 'hide_in_members' ); + unset( $changes['hide_in_members'] ); + } + } else { + if ( $changes['hide_in_members'] == __( 'No', 'ultimate-member' ) || $changes['hide_in_members'] == 'No' || array_intersect( array( 'No', __( 'No', 'ultimate-member' ) ), $changes['hide_in_members'] ) ) { + delete_user_meta( $user_id, 'hide_in_members' ); + unset( $changes['hide_in_members'] ); + } + } } /**