function um_block_wpadmin_by_user_role()
{
    global $ultimatemember;
    if (is_admin() && !defined('DOING_AJAX') && um_user('ID') && !um_user('can_access_wpadmin') && !is_super_admin(um_user('ID'))) {
        um_redirect_home();
    }
}
 function account()
 {
     global $ultimatemember;
     if (um_is_core_page('account') && !is_user_logged_in()) {
         um_redirect_home();
     }
     if (um_is_core_page('account')) {
         $ultimatemember->fields->set_mode = 'account';
         $ultimatemember->fields->editing = true;
         if (get_query_var('um_tab')) {
             $this->current_tab = get_query_var('um_tab');
         }
     }
 }
function um_submit_account_details($args)
{
    global $ultimatemember;
    $tab = get_query_var('um_tab') ? get_query_var('um_tab') : 'general';
    if ($_POST['user_password'] && $_POST['confirm_user_password']) {
        $changes['user_pass'] = $_POST['user_password'];
        add_filter('send_password_change_email', 'um_send_password_change_email');
    }
    foreach ($_POST as $k => $v) {
        if (!strstr($k, 'password') && !strstr($k, 'um_account')) {
            $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']);
    }
    // fired on account page, just before updating profile
    do_action('um_account_pre_update_profile', $changes, um_user('ID'));
    $ultimatemember->user->update_profile($changes);
    // delete account
    if ($_POST['single_user_password'] && $tab == 'delete') {
        if (current_user_can('delete_users') || um_user('can_delete_profile')) {
            if (!um_user('super_admin')) {
                $ultimatemember->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 = $ultimatemember->account->tab_link($tab);
    $url = add_query_arg('updated', 'account', $url);
    if (function_exists('icl_get_current_language')) {
        if (icl_get_current_language() != icl_get_default_language()) {
            $url = $ultimatemember->permalinks->get_current_url(true);
            $url = add_query_arg('updated', 'account', $url);
            exit(wp_redirect($url));
        }
    }
    exit(wp_redirect($url));
}
 function logout_page()
 {
     if (um_is_core_page('logout')) {
         if (is_user_logged_in()) {
             if (isset($_REQUEST['redirect_to']) && $_REQUEST['redirect_to'] !== '') {
                 $redirect_to = $_REQUEST['redirect_to'];
             } else {
                 if (um_user('after_logout') == 'redirect_home') {
                     $redirect_to = home_url();
                 } else {
                     $redirect_to = um_user('logout_redirect_url');
                 }
             }
             wp_logout();
             exit(wp_redirect($redirect_to));
         } else {
             um_redirect_home();
         }
     }
 }
 function logout_page()
 {
     if (um_is_core_page('logout')) {
         if (is_user_logged_in()) {
             if (isset($_REQUEST['redirect_to']) && $_REQUEST['redirect_to'] !== '') {
                 wp_logout();
                 session_unset();
                 exit(wp_redirect($_REQUEST['redirect_to']));
             } else {
                 if (um_user('after_logout') == 'redirect_home') {
                     wp_logout();
                     session_unset();
                     um_redirect_home();
                 } else {
                     wp_logout();
                     session_unset();
                     exit(wp_redirect(um_user('logout_redirect_url')));
                 }
             }
         } else {
             um_redirect_home();
         }
     }
 }
 function access_members()
 {
     if (um_get_option('members_page') == 0 && um_is_core_page('members')) {
         um_redirect_home();
     }
 }
function um_pre_profile_shortcode($args)
{
    global $ultimatemember;
    extract($args);
    if ($mode == 'profile' && $ultimatemember->fields->editing == false) {
        $ultimatemember->fields->viewing = 1;
        if (um_get_requested_user()) {
            if (!um_can_view_profile(um_get_requested_user())) {
                um_redirect_home();
            }
            if (!um_current_user_can('edit', um_get_requested_user())) {
                $ultimatemember->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')) {
                $ultimatemember->user->cannot_edit = 1;
            }
        }
    }
    if ($mode == 'profile' && $ultimatemember->fields->editing == true) {
        $ultimatemember->fields->editing = 1;
        if (um_get_requested_user()) {
            if (!um_current_user_can('edit', um_get_requested_user())) {
                um_redirect_home();
            }
            um_fetch_user(um_get_requested_user());
        }
    }
}
function um_access_profile($user_id)
{
    if (!um_is_myprofile() && um_is_core_page('user') && !current_user_can('edit_users')) {
        um_fetch_user($user_id);
        if (!in_array(um_user('account_status'), array('approved'))) {
            um_redirect_home();
        }
        um_reset_user();
    }
}