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( $array ) && isset( $array['editable'] ) && ! $array['editable'] ) { continue; } if ( $array['type'] == 'multiselect' || $array['type'] == 'checkbox' && ! isset( $args['submitted'][ $key ] ) ) { delete_user_meta( um_user( 'ID' ), $key ); } if ( isset( $args['submitted'][ $key ] ) ) { if ( isset( $array['type'] ) && in_array( $array['type'], array( 'image', 'file' ) ) && ( /*um_is_file_owner( UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $args['submitted'][ $key ], um_user( 'ID' ) ) ||*/ um_is_temp_file( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) { $files[ $key ] = $args['submitted'][ $key ]; } else { if ( $array['type'] == 'password' ) { $to_update[ $key ] = wp_hash_password( $args['submitted'][ $key ] ); $args['submitted'][ $key ] = sprintf( __( 'Your choosed %s', 'ultimate-member' ), $array['title'] ); } 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 ( ! empty( $files ) && is_array( $files ) ) { UM()->uploader()->replace_upload_dir = true; UM()->uploader()->move_temporary_files( um_user( 'ID' ), $files ); UM()->uploader()->replace_upload_dir = false; } /** * 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 ) { $hide_remove = um_profile( 'cover_photo' ) ? false : ' style="display:none;"'; $items = array( '' . __( 'Change cover photo', 'ultimate-member' ) . '', '' . __( 'Remove', 'ultimate-member' ) . '', '' . __( 'Cancel', 'ultimate-member' ) . '', ); 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 = ' '; ?>
*/ do_action( 'um_pre_header_editprofile', $args ); ?>
user()->cannot_edit )) { UM()->fields()->add_hidden_field( 'profile_photo' ); if (!um_profile( 'profile_photo' )) { // has profile photo $items = array( '' . __( 'Upload photo', 'ultimate-member' ) . '', '' . __( 'Cancel', 'ultimate-member' ) . '', ); /** * UM hook * * @type filter * @title um_user_photo_menu_view * @description Change user photo on menu view * @input_vars * [{"var":"$items","type":"array","desc":"User Photos"}] * @change_log * ["Since: 2.0"] * @usage * * @example * */ $items = apply_filters( 'um_user_photo_menu_view', $items ); echo UM()->profile()->new_ui( 'bc', 'div.um-profile-photo', 'click', $items ); } else if (UM()->fields()->editing == true) { $items = array( '' . __( 'Change photo', 'ultimate-member' ) . '', '' . __( 'Remove photo', 'ultimate-member' ) . '', '' . __( 'Cancel', 'ultimate-member' ) . '', ); /** * UM hook * * @type filter * @title um_user_photo_menu_edit * @description Change user photo on menu edit * @input_vars * [{"var":"$items","type":"array","desc":"User Photos"}] * @change_log * ["Since: 2.0"] * @usage * * @example * */ $items = apply_filters( 'um_user_photo_menu_edit', $items ); echo UM()->profile()->new_ui( 'bc', 'div.um-profile-photo', 'click', $items ); } } ?>
*/ do_action( 'um_before_profile_main_meta', $args ); ?>
*/ do_action( 'um_after_profile_name_inline', $args ); ?>
*/ do_action( 'um_after_profile_header_name_args', $args ); /** * UM hook * * @type action * @title um_after_profile_name_inline * @description Insert after profile name some content * @change_log * ["Since: 2.0"] * @usage add_action( 'um_after_profile_name_inline', 'function_name', 10 ); * @example * */ do_action( 'um_after_profile_header_name' ); ?>
profile()->show_meta( $args['metafields'] ); ?>
fields()->viewing == true && um_user( 'description' ) && $args['show_bio']) { ?>
options()->get( 'profile_show_html_bio' ) ) : ?>
fields()->editing == true && $args['show_bio']) { ?>
options()->get( 'profile_bio_maxchars' ); ?> fields()->is_error( 'description' )) { echo UM()->fields()->field_error( UM()->fields()->show_error( 'description' ), true ); } ?>
*/ do_action( 'um_after_header_meta', um_user( 'ID' ), $args ); ?>
fields()->is_error( 'profile_photo' ) ) { echo UM()->fields()->field_error( UM()->fields()->show_error( 'profile_photo' ), 'force_show' ); } /** * UM hook * * @type action * @title um_after_header_info * @description Insert after header info some content * @input_vars * [{"var":"$user_id","type":"int","desc":"User ID"}, * {"var":"$args","type":"array","desc":"Form Arguments"}] * @change_log * ["Since: 2.0"] * @usage add_action( 'um_after_header_info', 'function_name', 10, 2 ); * @example * */ do_action( 'um_after_header_info', um_user( 'ID' ), $args ); ?>
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 ) { if ( ! is_user_logged_in() ) { // not allowed for guests return; } // 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() ) ) { return; } $items = UM()->user()->get_admin_actions(); if ( UM()->roles()->um_current_user_can( 'edit', um_profile_id() ) ) { $items['editprofile'] = '' . __( 'Edit Profile', 'ultimate-member' ) . ''; } /** * UM hook * * @type filter * @title um_profile_edit_menu_items * @description Edit menu items on profile page * @input_vars * [{"var":"$items","type":"array","desc":"User Menu"}, * {"var":"$user_id","type":"int","desc":"Profile ID"}] * @change_log * ["Since: 2.0"] * @usage * * @example * */ $items = apply_filters( 'um_profile_edit_menu_items', $items, um_profile_id() ); $items['cancel'] = '' . __( 'Cancel', 'ultimate-member' ) . ''; } else { $items = array( 'editprofile' => '' . __( 'Edit Profile', 'ultimate-member' ) . '', 'myaccount' => '' . __( 'My Account', 'ultimate-member' ) . '', 'logout' => '' . __( 'Logout', 'ultimate-member' ) . '', 'cancel' => '' . __( 'Cancel', 'ultimate-member' ) . '', ); if ( ! empty( UM()->user()->cannot_edit ) ) { unset( $items['editprofile'] ); } /** * UM hook * * @type filter * @title um_myprofile_edit_menu_items * @description Edit menu items on my profile page * @input_vars * [{"var":"$items","type":"array","desc":"User Menu"}] * @change_log * ["Since: 2.0"] * @usage * * @example * */ $items = apply_filters( 'um_myprofile_edit_menu_items', $items ); } ?>
profile()->new_ui( $args['header_menu'], 'div.um-profile-edit', 'click', $items ); ?>
fields()->editing == true ) { echo UM()->fields()->display( 'profile', $args ); } else { UM()->fields()->viewing = true; echo UM()->fields()->display_view( 'profile', $args ); } } add_action( 'um_main_profile_fields', 'um_add_profile_fields', 100 ); /** * Form processing * * @param $args */ function um_submit_form_profile( $args ) { if ( isset( UM()->form()->errors ) ) { return; } /** * UM hook * * @type action * @title um_user_edit_profile * @description Run on successful submit profile form * @input_vars * [{"var":"$args","type":"array","desc":"Form Arguments"}] * @change_log * ["Since: 2.0"] * @usage add_action( 'um_user_edit_profile', 'function_name', 10, 1 ); * @example * */ do_action( 'um_user_edit_profile', $args ); } add_action( 'um_submit_form_profile', 'um_submit_form_profile', 10 ); /** * Show the submit button (highest priority) * * @param $args */ function um_add_submit_button_to_profile( $args ) { // DO NOT add when reviewing user's details if (UM()->user()->preview == true && is_admin()) return; // only when editing if (UM()->fields()->editing == false) return; ?>
options()->get( 'profile_menu' ) ) { return; } // get active tabs $tabs = UM()->profile()->tabs_active(); /** * UM hook * * @type filter * @title um_user_profile_tabs * @description Extend profile tabs * @input_vars * [{"var":"$tabs","type":"array","desc":"Profile Tabs"}] * @change_log * ["Since: 2.0"] * @usage * * @example * */ $tabs = apply_filters( 'um_user_profile_tabs', $tabs ); UM()->user()->tabs = $tabs; // need enough tabs to continue if ( count( $tabs ) <= 1 ) { return; } $active_tab = UM()->profile()->active_tab(); if ( ! isset( $tabs[ $active_tab ] ) ) { $active_tab = 'main'; UM()->profile()->active_tab = $active_tab; UM()->profile()->active_subnav = null; } // Move default tab priority $default_tab = UM()->options()->get( 'profile_menu_default_tab' ); $dtab = ( isset( $tabs[ $default_tab ] ) ) ? $tabs[ $default_tab ] : 'main'; if ( isset( $tabs[ $default_tab] ) ) { unset( $tabs[ $default_tab ] ); $dtabs[ $default_tab ] = $dtab; $tabs = $dtabs + $tabs; } ?>
$tab ) { if ( isset( $tab['hidden'] ) ) { continue; } $nav_link = UM()->permalinks()->get_current_url( get_option( 'permalink_structure' ) ); $nav_link = remove_query_arg( 'um_action', $nav_link ); $nav_link = remove_query_arg( 'subnav', $nav_link ); $nav_link = add_query_arg( 'profiletab', $id, $nav_link ); /** * UM hook * * @type filter * @title um_profile_menu_link_{$id} * @description Change profile menu link by tab $id * @input_vars * [{"var":"$nav_link","type":"string","desc":"Profile Tab Link"}] * @change_log * ["Since: 2.0"] * @usage * * @example * */ $nav_link = apply_filters( "um_profile_menu_link_{$id}", $nav_link ); $profile_nav_class = ''; if ( ! UM()->options()->get( 'profile_menu_icons' ) ) { $profile_nav_class .= ' without-icon'; } if ( $id == $active_tab ) { $profile_nav_class .= ' active'; } ?>
options()->get( 'profile_menu_icons' ) ) { ?> 0 ) { ?> 0 ) { ?> 0 ) { ?> 0) { ?>
$tab ) { if ( isset( $tab['subnav'] ) && $active_tab == $id ) { $active_subnav = ( UM()->profile()->active_subnav() ) ? UM()->profile()->active_subnav() : $tab['subnav_default']; ?>
$subtab ) { ?>