diff --git a/core/um-account.php b/core/um-account.php index 1f54bbd5..f0a4423c 100644 --- a/core/um-account.php +++ b/core/um-account.php @@ -150,7 +150,7 @@ class UM_Account { global $ultimatemember; $output = null; - + switch( $id ) { case 'notifications': @@ -166,6 +166,9 @@ class UM_Account { $args = apply_filters('um_account_tab_privacy_fields', $args ); $fields = $ultimatemember->builtin->get_specific_fields( $args ); + + $fields = apply_filters('um_account_secure_fields', $fields, $id ); + foreach( $fields as $key => $data ){ $output .= $ultimatemember->fields->edit_field( $key, $data ); } @@ -179,6 +182,9 @@ class UM_Account { $args = 'single_user_password'; $fields = $ultimatemember->builtin->get_specific_fields( $args ); + + $fields = apply_filters('um_account_secure_fields', $fields, $id ); + foreach( $fields as $key => $data ){ $output .= $ultimatemember->fields->edit_field( $key, $data ); } @@ -200,6 +206,9 @@ class UM_Account { } $fields = $ultimatemember->builtin->get_specific_fields( $args ); + + $fields = apply_filters('um_account_secure_fields', $fields, $id ); + foreach( $fields as $key => $data ){ $output .= $ultimatemember->fields->edit_field( $key, $data ); } @@ -213,6 +222,9 @@ class UM_Account { $args = 'user_password'; $fields = $ultimatemember->builtin->get_specific_fields( $args ); + + $fields = apply_filters('um_account_secure_fields', $fields, $id ); + foreach( $fields as $key => $data ){ $output .= $ultimatemember->fields->edit_field( $key, $data ); } diff --git a/core/um-actions-account.php b/core/um-actions-account.php index 78341a4e..cce1706c 100644 --- a/core/um-actions-account.php +++ b/core/um-actions-account.php @@ -15,12 +15,25 @@ } - foreach( $_POST as $k => $v ) { - if ( !strstr( $k, 'password' ) && !strstr( $k, 'um_account' ) ) { - $changes[ $k ] = $v; + $arr_fields = array(); + $secure_fields = get_user_meta( um_user('ID'), 'um_account_secure_fields', true ); + if( isset( $secure_fields ) ){ + foreach ( $secure_fields as $tab_key => $fields ) { + if( isset( $fields ) ){ + foreach ($fields as $key => $value) { + $arr_fields[ ] = $key; + } + } } } + $changes = array(); + foreach( $_POST as $k => $v ) { + if ( !strstr( $k, 'password' ) && !strstr( $k, 'um_account' ) && in_array( $k, $arr_fields ) ) { + $changes[ $k ] = $v; + } + } + if ( isset( $changes['hide_in_members'] ) && $changes['hide_in_members'] == __('No','ultimatemember') ) { delete_user_meta( um_user('ID'), 'hide_in_members' ); unset( $changes['hide_in_members'] ); diff --git a/core/um-filters-account.php b/core/um-filters-account.php index 32aee01f..4d895284 100644 --- a/core/um-filters-account.php +++ b/core/um-filters-account.php @@ -1,8 +1,12 @@