diff --git a/includes/class-functions.php b/includes/class-functions.php
index 58491d11..928bd67a 100644
--- a/includes/class-functions.php
+++ b/includes/class-functions.php
@@ -176,6 +176,48 @@ if ( ! class_exists( 'UM_Functions' ) ) {
}
+
+
+ /*
+ * redirect
+ */
+ function redirect( $url ) {
+ if ( headers_sent() || empty( $url ) ) {
+ $this->cc_js_redirect( $url );
+ } else {
+ wp_redirect( $url );
+ }
+ exit;
+ }
+
+
+ /*
+ * JS redirect
+ */
+ function cc_js_redirect( $url ) {
+
+ //for blank redirects
+ if ( '' == $url ) {
+ $url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
+ }
+
+ $funtext="echo \"\";";
+ register_shutdown_function( create_function( '', $funtext ) );
+
+ if ( 1 < ob_get_level() ) {
+ while ( ob_get_level() > 1 ) {
+ ob_end_clean();
+ }
+ }
+
+ ?>
+
+ register_fields = array();
+ add_shortcode( 'ultimatemember_account', array( &$this, 'ultimatemember_account' ) );
- add_shortcode('ultimatemember_account', array(&$this, 'ultimatemember_account') );
+ add_action( 'template_redirect', array( &$this, 'account_page_restrict' ), 10001 );
- add_filter('um_account_page_default_tabs_hook', array(&$this, 'core_tabs'), 1);
+ add_action( 'template_redirect', array( &$this, 'account_submit' ), 10002 );
- add_action('template_redirect', array(&$this, 'account'), 10001 );
-
- add_action('template_redirect', array(&$this, 'form_init'), 10002);
-
- add_filter('um_predefined_fields_hook', array(&$this,'predefined_fields_hook'),1 );
-
- $this->current_tab = 'general';
+ add_filter( 'um_predefined_fields_hook', array( &$this, 'predefined_fields_hook' ), 1 );
}
+
/**
- * Get Core account tabs
- * @return array
+ * Init AllTabs for user account
+ *
+ * @param $args
*/
- function core_tabs() {
+ function init_tabs( $args ) {
- $tabs[100]['general']['icon'] = 'um-faicon-user';
- $tabs[100]['general']['title'] = __('Account','ultimate-member');
+ $tabs[100]['general'] = array(
+ 'icon' => 'um-faicon-user',
+ 'title' => __( 'Account', 'ultimate-member' ),
+ 'submit_title' => __( 'Update Account', 'ultimate-member' ),
+ );
- $tabs[200]['password']['icon'] = 'um-faicon-asterisk';
- $tabs[200]['password']['title'] = __('Change Password','ultimate-member');
+ $tabs[200]['password'] = array(
+ 'icon' => 'um-faicon-asterisk',
+ 'title' => __( 'Change Password', 'ultimate-member' ),
+ 'submit_title' => __( 'Update Password', 'ultimate-member' ),
+ );
- $tabs[300]['privacy']['icon'] = 'um-faicon-lock';
- $tabs[300]['privacy']['title'] = __('Privacy','ultimate-member');
+ $tabs[300]['privacy'] = array(
+ 'icon' => 'um-faicon-lock',
+ 'title' => __( 'Privacy', 'ultimate-member' ),
+ 'submit_title' => __( 'Update Privacy', 'ultimate-member' ),
+ );
- $tabs[400]['notifications']['icon'] = 'um-faicon-envelope';
- $tabs[400]['notifications']['title'] = __('Notifications','ultimate-member');
+ $tabs[400]['notifications'] = array(
+ 'icon' => 'um-faicon-envelope',
+ 'title' => __( 'Notifications', 'ultimate-member' ),
+ 'submit_title' => __( 'Update Notifications', 'ultimate-member' ),
+ );
- $tabs[9999]['delete']['icon'] = 'um-faicon-trash-o';
- $tabs[9999]['delete']['title'] = __('Delete Account','ultimate-member');
+ //if user cannot delete profile hide delete tab
+ if ( um_user( 'can_delete_profile' ) || um_user( 'can_delete_everyone' ) ) {
- return $tabs;
+ $tabs[99999]['delete'] = array(
+ 'icon' => 'um-faicon-trash-o',
+ 'title' => __( 'Delete Account', 'ultimate-member' ),
+ 'submit_title' => __( 'Delete Account', 'ultimate-member' ),
+ );
+
+ }
+
+ $this->tabs = apply_filters( 'um_account_page_default_tabs_hook', $tabs );
+
+ ksort( $this->tabs );
+
+ $tabs_structed = array();
+ foreach ( $this->tabs as $k => $arr ) {
+
+ foreach ( $arr as $id => $info ) {
+
+ if ( ! empty( $args['tab'] ) && $id != $args['tab'] )
+ continue;
+
+ $output = $this->get_tab_fields( $id, $args );
+
+ if ( ! empty( $output ) )
+ $tabs_structed[$id] = $info;
+
+ }
+
+ }
+
+ $this->tabs = $tabs_structed;
}
+
/**
- * Account page form
+ * Account Shortcode
+ *
+ * @param array $args
+ * @return string
*/
- function form_init() {
+ function ultimatemember_account( $args = array() ) {
+ um_fetch_user( get_current_user_id() );
+
+ ob_start();
+
+ $defaults = array(
+ 'template' => 'account',
+ 'mode' => 'account',
+ 'form_id' => 'um_account_id',
+ );
+ $args = wp_parse_args( $args, $defaults );
+
+ $args = apply_filters( 'um_account_shortcode_args_filter', $args );
+
+ if ( ! empty( $args['tab'] ) ) {
+
+ if ( $args['tab'] == 'account' )
+ $args['tab'] = 'general';
+
+ $this->init_tabs( $args );
+
+ $this->current_tab = $args['tab'];
+
+ if ( ! empty( $this->tabs[$args['tab']] ) ) { ?>
+
';
diff --git a/includes/core/class-password.php b/includes/core/class-password.php
index 333fa3d7..3fe33278 100644
--- a/includes/core/class-password.php
+++ b/includes/core/class-password.php
@@ -116,7 +116,7 @@ if ( ! class_exists( 'Password' ) ) {
/***
*** @Add class based on shortcode
***/
- function get_class( $mode ){
+ function get_class( $mode ) {
$classes = 'um-'.$mode;
@@ -160,9 +160,9 @@ if ( ! class_exists( 'Password' ) ) {
$args = wp_parse_args( $args, $defaults );
if ( empty( $args['use_custom_settings'] ) ) {
- $args = array_merge( $args, $this->get_css_args( $args ) );
+ $args = array_merge( $args, UM()->shortcodes()->get_css_args( $args ) );
} else {
- $args = array_merge( $this->get_css_args( $args ), $args );
+ $args = array_merge( UM()->shortcodes()->get_css_args( $args ), $args );
}
$args = apply_filters('um_reset_password_shortcode_args_filter', $args);
@@ -180,12 +180,12 @@ if ( ! class_exists( 'Password' ) ) {
do_action("um_before_form_is_loaded", $args);
- do_action("um_before_{$mode}_form_is_loaded", $args);
+ do_action( "um_before_{$mode}_form_is_loaded", $args );
- $this->template_load( $template, $args );
+ UM()->shortcodes()->template_load( $template, $args );
- if ( !is_admin() && !defined( 'DOING_AJAX' ) ) {
- $this->dynamic_css( $args );
+ if ( ! is_admin() && ! defined( 'DOING_AJAX' ) ) {
+ UM()->shortcodes()->dynamic_css( $args );
}
$output = ob_get_contents();
@@ -194,36 +194,5 @@ if ( ! class_exists( 'Password' ) ) {
}
- /***
- *** @Get dynamic css args
- ***/
- function get_css_args( $args ) {
- $arr = um_styling_defaults( $args['mode'] );
- $arr = array_merge( $arr, array( 'form_id' => $args['form_id'], 'mode' => $args['mode'] ) );
- return $arr;
- }
-
- /***
- *** @Load dynamic css
- ***/
- function dynamic_css( $args=array() ) {
- extract($args);
- $global = um_path . 'assets/dynamic_css/dynamic_global.php';
- $file = um_path . 'assets/dynamic_css/dynamic_'.$mode.'.php';
- include $global;
- if ( file_exists( $file ) )
- include $file;
- }
-
- /***
- *** @Loads a template file
- ***/
- function template_load( $template, $args=array() ) {
- if ( is_array( $args ) ) {
- UM()->shortcodes()->set_args = $args;
- }
- UM()->shortcodes()->load_template( $template );
- }
-
}
}
\ No newline at end of file
diff --git a/includes/core/class-shortcodes.php b/includes/core/class-shortcodes.php
index 55724f9b..24723295 100644
--- a/includes/core/class-shortcodes.php
+++ b/includes/core/class-shortcodes.php
@@ -331,50 +331,50 @@ if ( ! class_exists( 'Shortcodes' ) ) {
return $output;
}
- /***
- *** @Get dynamic css args
+
+ /**
+ * Get dynamic CSS args
+ *
+ * @param $args
+ * @return array
*/
- function get_css_args($args) {
- $arr = um_styling_defaults($args['mode']);
- $arr = array_merge($arr, array('form_id' => $args['form_id'], 'mode' => $args['mode']));
+ function get_css_args( $args ) {
+ $arr = um_styling_defaults( $args['mode'] );
+ $arr = array_merge( $arr, array( 'form_id' => $args['form_id'], 'mode' => $args['mode'] ) );
return $arr;
}
- /***
- *** @Load dynamic css
+
+ /**
+ * Load dynamic css
+ *
+ * @param array $args
*/
- function dynamic_css($args = array()) {
- extract($args);
+ function dynamic_css( $args = array() ) {
+ extract( $args );
- $global = um_path . 'assets/dynamic_css/dynamic_global.php';
+ include_once um_path . 'assets/dynamic_css/dynamic_global.php';
- if (isset($mode)) {
- $file = um_path . 'assets/dynamic_css/dynamic_' . $mode . '.php';
+ if ( isset( $mode ) ) {
+ $file = um_path . 'assets/dynamic_css/dynamic_' . $mode . '.php';
+
+ if ( file_exists( $file ) )
+ include_once $file;
+ }
}
- include $global;
-
- if (isset($file) && file_exists($file)) {
- include $file;
- }
-
- if (isset($args['custom_css'])) {
- $css = $args['custom_css'];
- ?>shortcodes()->set_args = $args;
}
- UM()->shortcodes()->load_template($template);
+ UM()->shortcodes()->load_template( $template );
}
+
/***
*** @Checks if a template file exists
*/
diff --git a/includes/core/um-actions-account.php b/includes/core/um-actions-account.php
index 05e59c53..2bf8eb0d 100644
--- a/includes/core/um-actions-account.php
+++ b/includes/core/um-actions-account.php
@@ -1,5 +1,117 @@
form()->add_error('single_user_password', __('You must enter your password','ultimate-member') );
+ } else {
+ if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
+ UM()->form()->add_error('single_user_password', __('This is not your password','ultimate-member') );
+ }
+ }
+
+ UM()->account()->current_tab = 'delete';
+
+ break;
+ }
+
+ case 'password': {
+ // change password
+ if ( ( isset( $_POST['current_user_password'] ) && $_POST['current_user_password'] != '' ) ||
+ ( isset( $_POST['user_password'] ) && $_POST['user_password'] != '' ) ||
+ ( isset( $_POST['confirm_user_password'] ) && $_POST['confirm_user_password'] != '') ) {
+
+ if ( $_POST['current_user_password'] == '' || ! wp_check_password( $_POST['current_user_password'], $user->data->user_pass, $user->data->ID ) ) {
+
+ UM()->form()->add_error('current_user_password', __('This is not your password','ultimate-member') );
+ UM()->account()->current_tab = 'password';
+ } else { // correct password
+
+ if ( $_POST['user_password'] != $_POST['confirm_user_password'] && $_POST['user_password'] ) {
+ UM()->form()->add_error('user_password', __('Your new password does not match','ultimate-member') );
+ UM()->account()->current_tab = 'password';
+ }
+
+ if ( um_get_option('account_require_strongpass') ) {
+
+ if ( strlen( utf8_decode( $_POST['user_password'] ) ) < 8 ) {
+ UM()->form()->add_error('user_password', __('Your password must contain at least 8 characters','ultimate-member') );
+ }
+
+ if ( strlen( utf8_decode( $_POST['user_password'] ) ) > 30 ) {
+ UM()->form()->add_error('user_password', __('Your password must contain less than 30 characters','ultimate-member') );
+ }
+
+ if ( ! UM()->validation()->strong_pass( $_POST['user_password'] ) ) {
+ UM()->form()->add_error('user_password', __('Your password must contain at least one lowercase letter, one capital letter and one number','ultimate-member') );
+ }
+
+ }
+
+ }
+ }
+
+ break;
+ }
+
+ case 'account':
+ case 'general': {
+ // errors on general tab
+
+ $account_name_require = um_get_option( "account_name_require" );
+
+ if ( ! empty( $_POST['user_login'] ) && ! validate_username( $_POST['user_login'] ) ) {
+ UM()->form()->add_error('user_login', __( 'Your username is invalid', 'ultimate-member' ) );
+ return;
+ }
+
+ if ( isset( $_POST['first_name'] ) && ( strlen( trim( $_POST['first_name'] ) ) == 0 && $account_name_require ) ) {
+ UM()->form()->add_error( 'first_name', __( 'You must provide your first name', 'ultimate-member' ) );
+ }
+
+ if ( isset( $_POST['last_name'] ) && ( strlen( trim( $_POST['last_name'] ) ) == 0 && $account_name_require ) ) {
+ UM()->form()->add_error( 'last_name', __( 'You must provide your last name', 'ultimate-member' ) );
+ }
+
+ if ( isset( $_POST['user_email'] ) ) {
+ if ( strlen( trim( $_POST['user_email'] ) ) == 0 )
+ UM()->form()->add_error( 'user_email', __( 'You must provide your e-mail', 'ultimate-member' ) );
+
+ if ( ! is_email( $_POST['user_email'] ) )
+ UM()->form()->add_error( 'user_email', __( 'Please provide a valid e-mail', 'ultimate-member' ) );
+
+ if ( email_exists( $_POST['user_email'] ) && email_exists( $_POST['user_email'] ) != get_current_user_id() )
+ UM()->form()->add_error( 'user_email', __( 'Email already linked to another account', 'ultimate-member' ) );
+ }
+
+ break;
+ }
+
+ default:
+ do_action( 'um_submit_account_' . $_POST['_um_account_tab'] . '_tab_errors_hook' );
+ break;
+ }
+
+ UM()->account()->current_tab = $_POST['_um_account_tab'];
+ }
+
+}
+
+
/**
* Submit account page changes
*/
@@ -7,39 +119,63 @@
function um_submit_account_details( $args ) {
$tab = ( get_query_var('um_tab') ) ? get_query_var('um_tab') : 'general';
- if ( $_POST['user_password'] && $_POST['confirm_user_password'] ) {
+ $current_tab = isset( $_POST['_um_account_tab'] ) ? $_POST['_um_account_tab']: '';
+
+ //change password account's tab
+ if ( 'password' == $current_tab && $_POST['user_password'] && $_POST['confirm_user_password'] ) {
+
$changes['user_pass'] = $_POST['user_password'];
$args['user_id'] = um_user('ID');
- do_action('send_password_change_email', $args );
+ do_action( 'send_password_change_email', $args );
- wp_set_password( $changes['user_pass'], um_user('ID') );
+ wp_set_password( $changes['user_pass'], um_user( 'ID' ) );
- wp_signon( array('user_login' => um_user('user_login'), 'user_password' => $changes['user_pass']) );
+ wp_signon( array( 'user_login' => um_user( 'user_login' ), 'user_password' => $changes['user_pass'] ) );
}
- $arr_fields = array();
- $account_fields = get_user_meta( um_user('ID'), 'um_account_secure_fields', true );
- $secure_fields = apply_filters('um_secure_account_fields', $account_fields , um_user('ID') );
-
- if( isset( $secure_fields ) ){
- foreach ( $secure_fields as $tab_key => $fields ) {
- if( isset( $fields ) ){
- foreach ($fields as $key => $value) {
- $arr_fields[ ] = $key;
+
+ // delete account
+ $user = get_user_by( 'login', um_user( 'user_login' ) );
+
+ if ( 'delete' == $current_tab && isset( $_POST['single_user_password'] ) && wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
+ if ( current_user_can( 'delete_users' ) || um_user( 'can_delete_profile' ) ) {
+ if ( ! um_user( 'super_admin' ) ) {
+ UM()->user()->delete();
+
+ if ( um_user( 'after_delete' ) && um_user( 'after_delete' ) == 'redirect_home' ) {
+ um_redirect_home();
+ } elseif ( um_user( 'delete_redirect_url' ) ) {
+ exit( wp_redirect( um_user( 'delete_redirect_url' ) ) );
+ } else {
+ um_redirect_home();
}
}
}
}
+
+ $arr_fields = array();
+ $account_fields = get_user_meta( um_user('ID'), 'um_account_secure_fields', true );
+ $secure_fields = apply_filters( 'um_secure_account_fields', $account_fields , um_user( 'ID' ) );
+
+ if ( is_array( $secure_fields ) ) {
+ foreach ( $secure_fields as $tab_key => $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;
- }
- }
+ foreach ( $_POST as $k => $v ) {
+ if ( strstr( $k, 'password' ) || strstr( $k, 'um_account' ) || ! in_array( $k, $arr_fields ) )
+ continue;
+
+ $changes[ $k ] = $v;
+ }
if ( isset( $changes['hide_in_members'] ) && $changes['hide_in_members'] == __('No','ultimate-member') ) {
delete_user_meta( um_user('ID'), 'hide_in_members' );
@@ -51,140 +187,33 @@
UM()->user()->update_profile( $changes );
- // delete account
- $user = get_user_by('login', um_user('user_login') );
- $current_tab = isset( $_POST['_um_account_tab'] ) ? $_POST['_um_account_tab']: '';
-
- if ( isset( $_POST['single_user_password'] ) && wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) && $current_tab == 'delete' ) {
- if ( current_user_can('delete_users') || um_user('can_delete_profile') ) {
- if ( !um_user('super_admin') ) {
- UM()->user()->delete();
- if ( um_user('after_delete') && um_user('after_delete') == 'redirect_home' ) {
- um_redirect_home();
- } elseif ( um_user('delete_redirect_url') ) {
- exit( wp_redirect( um_user('delete_redirect_url') ) );
- } else {
- um_redirect_home();
- }
- }
- }
- }
-
do_action('um_post_account_update');
do_action('um_after_user_account_updated', get_current_user_id() );
- $url = UM()->account()->tab_link( $tab );
+ $url = '';
+ if ( um_is_core_page( 'account' ) ) {
- $url = add_query_arg( 'updated', 'account', $url );
+ $url = UM()->account()->tab_link( $tab );
- if ( function_exists('icl_get_current_language') ) {
- if ( icl_get_current_language() != icl_get_default_language() ) {
- $url = UM()->permalinks()->get_current_url( true );
- $url = add_query_arg( 'updated', 'account', $url );
- exit( wp_redirect( $url ) );
+ $url = add_query_arg( 'updated', 'account', $url );
+
+ if ( function_exists( 'icl_get_current_language' ) ) {
+ if ( icl_get_current_language() != icl_get_default_language() ) {
+ $url = UM()->permalinks()->get_current_url( true );
+ $url = add_query_arg( 'updated', 'account', $url );
+
+ UM()->redirect( $url );
+ exit;
+ }
}
}
- exit( wp_redirect( $url ) );
-
+ UM()->redirect( $url );
+ exit;
}
- /**
- * Validate for errors in account form
- */
- add_action('um_submit_account_errors_hook','um_submit_account_errors_hook');
- function um_submit_account_errors_hook( $args ) {
- $current_tab = isset( $_POST['_um_account_tab'] ) ? $_POST['_um_account_tab']: '';
- $user = get_user_by('login', um_user('user_login') );
-
- if( isset( $_POST['_um_account_tab'] ) && $current_tab != "delete" ){
- // errors on general tab
- if ( isset($_POST['um_account_submit']) ) {
-
- if( $current_tab != 'password' ){
-
- $account_name_require = um_get_option("account_name_require");
- if ( isset($_POST['first_name']) && ( strlen(trim( $_POST['first_name'] ) ) == 0 && $account_name_require ) ) {
- UM()->form()->add_error('first_name', __('You must provide your first name','ultimate-member') );
- }
-
- if ( isset($_POST['last_name']) && ( strlen(trim( $_POST['last_name'] ) ) == 0 && $account_name_require ) ) {
- UM()->form()->add_error('last_name', __('You must provide your last name','ultimate-member') );
- }
-
- if ( isset($_POST['user_email']) && strlen(trim( $_POST['user_email'] ) ) == 0 ) {
- UM()->form()->add_error('user_email', __('You must provide your e-mail','ultimate-member') );
- }
-
- if ( isset($_POST['user_email']) && !is_email( $_POST['user_email'] ) ) {
- UM()->form()->add_error('user_email', __('Please provide a valid e-mail','ultimate-member') );
- }
-
- if ( email_exists( $_POST['user_email'] ) && email_exists( $_POST['user_email'] ) != get_current_user_id() ) {
- UM()->form()->add_error('user_email', __('Email already linked to another account','ultimate-member') );
- }
- }
-
- }
- UM()->account()->current_tab = 'general';
-
- // change password
- if ( ( isset( $_POST['current_user_password'] ) && $_POST['current_user_password'] != '' ) ||
- ( isset( $_POST['user_password'] ) && $_POST['user_password'] != '' ) ||
- ( isset( $_POST['confirm_user_password'] ) && $_POST['confirm_user_password'] != '') ) {
-
- if ( $_POST['current_user_password'] == '' || ! wp_check_password( $_POST['current_user_password'], $user->data->user_pass, $user->data->ID ) ) {
-
- UM()->form()->add_error('current_user_password', __('This is not your password','ultimate-member') );
- UM()->account()->current_tab = 'password';
- } else { // correct password
-
- if ( $_POST['user_password'] != $_POST['confirm_user_password'] && $_POST['user_password'] ) {
- UM()->form()->add_error('user_password', __('Your new password does not match','ultimate-member') );
- UM()->account()->current_tab = 'password';
- }
-
- if ( um_get_option('account_require_strongpass') ) {
-
- if ( strlen( utf8_decode( $_POST['user_password'] ) ) < 8 ) {
- UM()->form()->add_error('user_password', __('Your password must contain at least 8 characters','ultimate-member') );
- }
-
- if ( strlen( utf8_decode( $_POST['user_password'] ) ) > 30 ) {
- UM()->form()->add_error('user_password', __('Your password must contain less than 30 characters','ultimate-member') );
- }
-
- if ( ! UM()->validation()->strong_pass( $_POST['user_password'] ) ) {
- UM()->form()->add_error('user_password', __('Your password must contain at least one lowercase letter, one capital letter and one number','ultimate-member') );
- UM()->account()->current_tab = 'password';
- }
-
- }
-
- }
- }
-
- if ( ! empty( $_POST['user_login'] ) && ! validate_username( $_POST['user_login'] ) ) {
- UM()->form()->add_error('user_login', __('Your username is invalid','ultimate-member') );
- return;
- }
- }
- // delete account
- if ( isset( $_POST['um_account_submit'] ) && $_POST['_um_account_tab'] == "delete" ) {
- if ( strlen(trim( $_POST['single_user_password'] ) ) == 0 ) {
- UM()->form()->add_error('single_user_password', __('You must enter your password','ultimate-member') );
- } else {
- if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
- UM()->form()->add_error('single_user_password', __('This is not your password','ultimate-member') );
- }
- }
-
- UM()->account()->current_tab = 'delete';
- }
-
- }
/**
* Hidden inputs for account form
@@ -194,284 +223,41 @@
?>
-
- account()->current_tab; ?>
-
-
+
account()->get_tab_output('delete');
-
- if ( $output ) { ?>
-
-
-
-
-
-
-
-
-
-
-
- account()->get_tab_output('privacy');
-
- if ( $output ) { ?>
-
-
-
-
-
-
-
-
-
- account()->get_tab_output('general');
-
- if ( $output ) { ?>
-
-
-
-
-
-
-
-
-
- account()->get_tab_output('password');
-
- if ( $output ) { ?>
-
-
-
-
-
-
-
-
-
- account()->get_tab_output('notifications');
-
- if ( $output ) { ?>
-
-
-
-
+ add_action( 'um_before_account_notifications', 'um_before_account_notifications' );
+ function um_before_account_notifications() { ?>
-
-
-
-
-
-
-
-
-
-
-
-
+
+