options()->get( 'profile_tab_main' ) && ! isset( $_REQUEST['um_action'] ) )
return;
/**
* UM hook
*
* @type filter
* @title um_profile_can_view_main
* @description Check user can view profile
* @input_vars
* [{"var":"$view","type":"bool","desc":"Can view?"},
* {"var":"$user_id","type":"int","desc":"User profile ID"}]
* @change_log
* ["Since: 2.0"]
* @usage
*
* @example
*
*/
$can_view = apply_filters( 'um_profile_can_view_main', -1, um_profile_id() );
if ( $can_view == -1 ) {
/**
* UM hook
*
* @type action
* @title um_before_form
* @description Some actions before profile form
* @input_vars
* [{"var":"$args","type":"array","desc":"Profile form shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_before_form', 'function_name', 10, 1 );
* @example
*
*/
do_action( "um_before_form", $args );
/**
* UM hook
*
* @type action
* @title um_before_{$mode}_fields
* @description Some actions before profile form fields
* @input_vars
* [{"var":"$args","type":"array","desc":"{Profile} form shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_before_{$mode}_fields', 'function_name', 10, 1 );
* @example
*
*/
do_action( "um_before_{$mode}_fields", $args );
/**
* UM hook
*
* @type action
* @title um_main_{$mode}_fields
* @description Some actions before login form fields
* @input_vars
* [{"var":"$args","type":"array","desc":"Login form shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_before_{$mode}_fields', 'function_name', 10, 1 );
* @example
*
*/
do_action( "um_main_{$mode}_fields", $args );
/**
* UM hook
*
* @type action
* @title um_after_form_fields
* @description Some actions after login form fields
* @input_vars
* [{"var":"$args","type":"array","desc":"Login form shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_after_form_fields', 'function_name', 10, 1 );
* @example
*
*/
do_action( "um_after_form_fields", $args );
/**
* UM hook
*
* @type action
* @title um_after_{$mode}_fields
* @description Some actions after profile form fields
* @input_vars
* [{"var":"$args","type":"array","desc":"Profile form shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_after_{$mode}_fields', 'function_name', 10, 1 );
* @example
*
*/
do_action( "um_after_{$mode}_fields", $args );
/**
* UM hook
*
* @type action
* @title um_after_form
* @description Some actions after profile form fields
* @input_vars
* [{"var":"$args","type":"array","desc":"Profile form shortcode arguments"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_after_form', 'function_name', 10, 1 );
* @example
*
*/
do_action( "um_after_form", $args );
} else { ?>
roles()->um_current_user_can( 'edit', $args['user_id'] ) ) {
UM()->user()->set( $args['user_id'] );
} else {
wp_die( __( 'You are not allowed to edit this user.', 'ultimate-member' ) );
}
} elseif ( isset( $args['_user_id'] ) ) {
UM()->user()->set( $args['_user_id'] );
}
$userinfo = UM()->user()->profile;
/**
* UM hook
*
* @type action
* @title um_user_before_updating_profile
* @description Some actions before profile submit
* @input_vars
* [{"var":"$userinfo","type":"array","desc":"User Data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_user_before_updating_profile', 'function_name', 10, 1 );
* @example
*
*/
do_action( 'um_user_before_updating_profile', $userinfo );
if ( ! empty( $args['custom_fields'] ) ) {
$fields = unserialize( $args['custom_fields'] );
}
// loop through fields
if ( ! empty( $fields ) ) {
foreach ( $fields as $key => $array ) {
if ( ! um_can_edit_field( $fields[ $key ] ) && isset( $fields[ $key ]['editable'] ) && ! $fields[ $key ]['editable'] )
continue;
if ( $fields[$key]['type'] == 'multiselect' || $fields[$key]['type'] == 'checkbox' && ! isset( $args['submitted'][ $key ] ) ) {
delete_user_meta( um_user( 'ID' ), $key );
}
if ( isset( $args['submitted'][ $key ] ) ) {
if ( isset( $fields[ $key ]['type'] ) && in_array( $fields[ $key ]['type'], array( 'image', 'file' ) ) &&
( um_is_temp_upload( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) {
$files[ $key ] = $args['submitted'][ $key ];
} else {
if ( isset( $userinfo[ $key ] ) && $args['submitted'][ $key ] != $userinfo[ $key ] ) {
$to_update[ $key ] = $args['submitted'][ $key ];
} elseif ( $args['submitted'][ $key ] ) {
$to_update[ $key ] = $args['submitted'][ $key ];
}
}
}
}
}
if ( isset( $args['submitted']['description'] ) ) {
$to_update['description'] = $args['submitted']['description'];
}
if ( ! empty( $args['submitted']['role'] ) ) {
global $wp_roles;
$role_keys = array_map( function( $item ) {
return 'um_' . $item;
}, get_option( 'um_roles' ) );
$exclude_roles = array_diff( array_keys( $wp_roles->roles ), array_merge( $role_keys, array( 'subscriber' ) ) );
if ( ! in_array( $args['submitted']['role'], $exclude_roles ) ) {
$to_update['role'] = $args['submitted']['role'];
}
$args['roles_before_upgrade'] = UM()->roles()->get_all_user_roles( um_user( 'ID' ) );
}
/**
* UM hook
*
* @type action
* @title um_user_pre_updating_profile
* @description Some actions before profile submit
* @input_vars
* [{"var":"$userinfo","type":"array","desc":"Submitted User Data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_user_pre_updating_profile', 'function_name', 10, 1 );
* @example
*
*/
do_action( 'um_user_pre_updating_profile', $to_update );
/**
* UM hook
*
* @type filter
* @title um_user_pre_updating_profile_array
* @description Change submitted data before update profile
* @input_vars
* [{"var":"$to_update","type":"array","desc":"Profile data upgrade"}]
* @change_log
* ["Since: 2.0"]
* @usage
*
* @example
*
*/
$to_update = apply_filters( 'um_user_pre_updating_profile_array', $to_update );
if ( is_array( $to_update ) ) {
UM()->user()->update_profile( $to_update );
/**
* UM hook
*
* @type action
* @title um_after_user_updated
* @description Some actions after user profile updated
* @input_vars
* [{"var":"$user_id","type":"int","desc":"User ID"},
* {"var":"$args","type":"array","desc":"Form Data"},
* {"var":"$userinfo","type":"array","desc":"Submitted User Data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_after_user_updated', 'function_name', 10, 33 );
* @example
*
*/
do_action( 'um_after_user_updated', um_user( 'ID' ), $args, $to_update );
}
/**
* UM hook
*
* @type filter
* @title um_user_pre_updating_files_array
* @description Change submitted files before update profile
* @input_vars
* [{"var":"$files","type":"array","desc":"Profile data files"}]
* @change_log
* ["Since: 2.0"]
* @usage
*
* @example
*
*/
$files = apply_filters( 'um_user_pre_updating_files_array', $files );
if ( is_array( $files ) ) {
/**
* UM hook
*
* @type action
* @title um_before_user_upload
* @description Before file uploaded on complete UM user profile.
* @input_vars
* [{"var":"$user_id","type":"int","desc":"User ID"},
* {"var":"$files","type":"array","desc":"Files data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_before_user_upload', 'function_name', 10, 2 );
* @example
*
*/
do_action( 'um_before_user_upload', um_user( 'ID' ), $files );
UM()->user()->update_files( $files );
/**
* UM hook
*
* @type action
* @title um_after_user_upload
* @description After complete UM user profile edit and file uploaded.
* @input_vars
* [{"var":"$user_id","type":"int","desc":"User ID"},
* {"var":"$files","type":"array","desc":"Files data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_after_user_upload', 'function_name', 10, 2 );
* @example
*
*/
do_action( 'um_after_user_upload', um_user( 'ID' ), $files );
}
/**
* UM hook
*
* @type action
* @title um_user_after_updating_profile
* @description After upgrade user's profile
* @input_vars
* [{"var":"$submitted","type":"array","desc":"Form data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_user_after_updating_profile', 'function_name', 10, 1 );
* @example
*
*/
do_action( 'um_user_after_updating_profile', $to_update );
/**
* UM hook
*
* @type action
* @title um_update_profile_full_name
* @description On update user profile change full name
* @input_vars
* [{"var":"$user_id","type":"int","desc":"User ID"},
* {"var":"$args","type":"array","desc":"Form data"}]
* @change_log
* ["Since: 2.0"]
* @usage add_action( 'um_update_profile_full_name', 'function_name', 10, 2 );
* @example
*
*/
do_action( 'um_update_profile_full_name', um_user( 'ID' ), $to_update );
if ( ! isset( $args['is_signup'] ) ) {
$url = um_user_profile_url( um_user( 'ID' ) );
exit( wp_redirect( um_edit_my_profile_cancel_uri( $url ) ) );
}
}
add_action( 'um_user_edit_profile', 'um_user_edit_profile', 10 );
/**
* Leave roles for User, which are not in the list of update profile (are default WP or 3rd plugins roles)
*
* @param $user_id
* @param $args
* @param $to_update
*/
function um_restore_default_roles( $user_id, $args, $to_update ) {
if ( ! empty( $args['submitted']['role'] ) ) {
$wp_user = new WP_User( $user_id );
$role_keys = array_map( function( $item ) {
return 'um_' . $item;
}, get_option( 'um_roles' ) );
$leave_roles = array_diff( $args['roles_before_upgrade'], array_merge( $role_keys, array( 'subscriber' ) ) );
if ( UM()->roles()->is_role_custom( $to_update['role'] ) ) {
$wp_user->remove_role( $to_update['role'] );
$roles = array_merge( $leave_roles, array( $to_update['role'] ) );
} else {
$roles = array_merge( array( $to_update['role'] ), $leave_roles );
}
foreach ( $roles as $role_k ) {
$wp_user->add_role( $role_k );
}
}
}
add_action( 'um_after_user_updated', 'um_restore_default_roles', 10, 3 );
/**
* If editing another user
*
* @param $args
*/
function um_editing_user_id_input( $args ) {
if ( UM()->fields()->editing == 1 && UM()->fields()->set_mode == 'profile' && UM()->user()->target_id ) { ?>
options()->get( 'profile_desc' ) );
$user_id = um_user( 'ID' );
$url = um_user_profile_url();
$avatar = um_get_user_avatar_url( $user_id, 'original' );
um_reset_user(); ?>
options()->get( 'default_cover' );
$overlay = '
' . __( 'Change your cover photo', 'ultimate-member' ) . '
';
?>
*/
do_action( 'um_cover_area_content', um_profile_id() );
if ( UM()->fields()->editing ) {
$items = array(
'
' . __( 'Change cover photo', 'ultimate-member' ) . '',
'
' . __( 'Remove', 'ultimate-member' ) . '',
'
' . __( 'Cancel', 'ultimate-member' ) . '',
);
echo UM()->profile()->new_ui( 'bc', 'div.um-cover', 'click', $items );
}
UM()->fields()->add_hidden_field( 'cover_photo' );
echo $overlay; ?>
mobile()->isMobile()) {
if (UM()->mobile()->isTablet()) {
echo um_user( 'cover_photo', 1000 );
} else {
echo um_user( 'cover_photo', 300 );
}
} else {
echo um_user( 'cover_photo', 1000 );
}
?>
';
} else {
if (!isset( UM()->user()->cannot_edit )) { ?>
';
UM()->fields()->show_social_urls();
echo '';
}
}
add_action( 'um_after_profile_header_name_args', 'um_social_links_icons', 50 );
/**
* Profile header
*
* @param $args
*/
function um_profile_header( $args ) {
$classes = null;
if (!$args['cover_enabled']) {
$classes .= ' no-cover';
}
$default_size = str_replace( 'px', '', $args['photosize'] );
$overlay = '
';
?>
fields()->editing == false ) {
UM()->fields()->viewing = 1;
if ( um_get_requested_user() ) {
if ( ! um_can_view_profile( um_get_requested_user() ) && ! um_is_myprofile() )
um_redirect_home();
if ( ! UM()->roles()->um_current_user_can( 'edit', um_get_requested_user() ) )
UM()->user()->cannot_edit = 1;
um_fetch_user( um_get_requested_user() );
} else {
if ( ! is_user_logged_in() )
um_redirect_home();
if ( ! um_user( 'can_edit_profile' ) )
UM()->user()->cannot_edit = 1;
}
}
if ( $mode == 'profile' && UM()->fields()->editing == true ) {
UM()->fields()->editing = 1;
if ( um_get_requested_user() ) {
if ( ! UM()->roles()->um_current_user_can( 'edit', um_get_requested_user() ) ) {
um_redirect_home();
}
um_fetch_user( um_get_requested_user() );
}
}
}
add_action( 'um_pre_profile_shortcode', 'um_pre_profile_shortcode' );
/**
* Display the edit profile icon
*
* @param $args
*/
function um_add_edit_icon( $args ) {
$output = '';
if (!is_user_logged_in()) return; // not allowed for guests
// do not proceed if user cannot edit
if (UM()->fields()->editing == true) {
?>
roles()->um_current_user_can( 'edit', um_profile_id() ) || UM()->roles()->um_current_user_can( 'delete', um_profile_id() ) ) ) {
?>