function um_get_avatar($avatar = '', $id_or_email = '', $size = '96', $avatar_class = '', $default = '', $alt = '')
{
    if (is_numeric($id_or_email)) {
        $user_id = (int) $id_or_email;
    } elseif (is_string($id_or_email) && ($user = get_user_by('email', $id_or_email))) {
        $user_id = $user->ID;
    } elseif (is_object($id_or_email) && !empty($id_or_email->user_id)) {
        $user_id = (int) $id_or_email->user_id;
    }
    if (empty($user_id)) {
        return $avatar;
    }
    um_fetch_user($user_id);
    $avatar = um_user('profile_photo', $size);
    if (!$avatar && um_get_option('use_gravatars')) {
        $default = get_option('avatar_default', 'mystery');
        if ($default == 'gravatar_default') {
            $default = '';
        }
        $rating = get_option('avatar_rating');
        if (!empty($rating)) {
            $rating = "&r={$rating}";
        }
        $avatar_url = um_get_domain_protocol() . 'gravatar.com/avatar/' . um_user('synced_gravatar_hashed_id');
        $avatar = '<img src="' . $avatar_url . '?d=' . $default . '&amp;s=' . $size . $rating . '" class="func-um_get_avatar gravatar avatar avatar-' . $size . ' um-avatar" width="' . $size . '" height="' . $size . '" alt="" />';
    } else {
        if (empty($avatar)) {
            $default_avatar_uri = um_get_default_avatar_uri();
            $avatar = '<img src="' . $default_avatar_uri . '" class="gravatar avatar avatar-' . $size . ' um-avatar" width="' . $size . '" height="' . $size . '" alt="" />';
        }
    }
    return $avatar;
}
function um_user($data, $attrs = null)
{
    global $ultimatemember;
    switch ($data) {
        default:
            $value = um_profile($data);
            if ($ultimatemember->validation->is_serialized($value)) {
                $value = unserialize($value);
            }
            if ($data == 'role') {
                return strtolower($value);
            }
            return $value;
            break;
        case 'full_name':
            if (um_user('first_name') && um_user('last_name')) {
                $full_name = um_user('first_name') . ' ' . um_user('last_name');
            } else {
                $full_name = um_user('display_name');
            }
            $full_name = $ultimatemember->validation->safe_name_in_url($full_name);
            // update full_name changed
            if (um_profile($data) !== $full_name) {
                update_user_meta(um_user('ID'), 'full_name', $full_name);
            }
            return $full_name;
            break;
        case 'display_name':
            $op = um_get_option('display_name');
            $name = '';
            if ($op == 'default') {
                $name = um_profile('display_name');
            }
            if ($op == 'nickname') {
                $name = um_profile('nickname');
            }
            if ($op == 'full_name') {
                if (um_user('first_name') && um_user('last_name')) {
                    $name = um_user('first_name') . ' ' . um_user('last_name');
                } else {
                    $name = um_profile($data);
                }
                if (!$name) {
                    $name = um_user('user_login');
                }
            }
            if ($op == 'sur_name') {
                if (um_user('first_name') && um_user('last_name')) {
                    $name = um_user('last_name') . ' ' . um_user('first_name');
                } else {
                    $name = um_profile($data);
                }
            }
            if ($op == 'first_name') {
                if (um_user('first_name')) {
                    $name = um_user('first_name');
                } else {
                    $name = um_profile($data);
                }
            }
            if ($op == 'username') {
                $name = um_user('user_login');
            }
            if ($op == 'initial_name') {
                if (um_user('first_name') && um_user('last_name')) {
                    $initial = um_user('last_name');
                    $name = um_user('first_name') . ' ' . $initial[0];
                } else {
                    $name = um_profile($data);
                }
            }
            if ($op == 'initial_name_f') {
                if (um_user('first_name') && um_user('last_name')) {
                    $initial = um_user('first_name');
                    $name = $initial[0] . ' ' . um_user('last_name');
                } else {
                    $name = um_profile($data);
                }
            }
            if ($op == 'field' && um_get_option('display_name_field') != '') {
                $fields = array_filter(preg_split('/[,\\s]+/', um_get_option('display_name_field')));
                $name = '';
                foreach ($fields as $field) {
                    $name .= um_profile($field) . ' ';
                }
            }
            return apply_filters('um_user_display_name_filter', $name, um_user('ID'), $attrs == 'html' ? 1 : 0);
            break;
        case 'role_select':
        case 'role_radio':
            return $ultimatemember->user->get_role_name(um_user('role'));
            break;
        case 'submitted':
            $array = um_profile($data);
            if (empty($array)) {
                return '';
            }
            $array = unserialize($array);
            return $array;
            break;
        case 'password_reset_link':
            return $ultimatemember->password->reset_url();
            break;
        case 'account_activation_link':
            return $ultimatemember->permalinks->activate_url();
            break;
        case 'profile_photo':
            $has_profile_photo = false;
            if (um_profile('profile_photo')) {
                $avatar_uri = um_get_avatar_uri(um_profile('profile_photo'), $attrs);
                $has_profile_photo = true;
            } else {
                $avatar_uri = um_get_default_avatar_uri(um_user('ID'));
            }
            $avatar_uri = apply_filters('um_user_avatar_url_filter', $avatar_uri, um_user('ID'));
            if ($avatar_uri) {
                if (um_get_option('use_gravatars') && !um_user('synced_profile_photo') && !$has_profile_photo) {
                    $avatar_uri = um_get_domain_protocol() . 'gravatar.com/avatar/' . um_user('synced_gravatar_hashed_id');
                    $avatar_uri = add_query_arg('s', 400, $avatar_uri);
                    if (um_get_option('use_um_gravatar_default_image')) {
                        $avatar_uri = add_query_arg('d', um_get_default_avatar_uri(), $avatar_uri);
                    }
                }
            }
            return '<img src="' . $avatar_uri . '" class="func-um_user gravatar avatar avatar-' . $attrs . ' um-avatar" width="' . $attrs . '" height="' . $attrs . '" alt="" />';
            if (!$avatar_uri) {
                return '';
            }
            break;
        case 'cover_photo':
            if (um_profile('cover_photo')) {
                $cover_uri = um_get_cover_uri(um_profile('cover_photo'), $attrs);
            } else {
                $cover_uri = um_get_default_cover_uri();
            }
            if ($cover_uri) {
                return '<img src="' . $cover_uri . '" alt="" />';
            }
            if (!$cover_uri) {
                return '';
            }
            break;
    }
}