diff --git a/README.md b/README.md
index 442a24b9..83db873b 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ Ultimate Member is the #1 user profile & membership plugin for WordPress. The pl
| Latest Version |Requires at least|Stable Tag|
| :------------: |:------------:|:------------:|
-| 2.0.25 | WordPress 4.9 or higher| 2.0.25 |
+| 2.0.27 | WordPress 4.9 or higher| 2.0.27 |
Features of the plugin include:
@@ -48,7 +48,7 @@ GNU Version 2 or Any Later Version
Releases
====================
-[Official Release Version: 2.0.25](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.25).
+[Official Release Version: 2.0.27](https://github.com/ultimatemember/ultimatemember/releases/tag/2.0.27).
[Official Release Version: 1.3.88](https://github.com/ultimatemember/ultimatemember/releases).
diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php
index 9a266eff..bcfc29f6 100644
--- a/includes/core/class-fields.php
+++ b/includes/core/class-fields.php
@@ -2313,6 +2313,13 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
} else {
$file_url = UM()->files()->get_download_link( $this->set_id, $key, um_user( 'ID' ) );
$file_dir = UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $this->field_value( $key, $default, $data );
+
+ if ( ! file_exists( $file_dir ) ) {
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $file_dir = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $file_dir );
+ }
+ }
}
if ( file_exists( $file_dir ) ) {
diff --git a/includes/core/class-files.php b/includes/core/class-files.php
index 1d393632..6d01a50c 100644
--- a/includes/core/class-files.php
+++ b/includes/core/class-files.php
@@ -161,11 +161,19 @@ if ( ! class_exists( 'um\core\Files' ) ) {
*/
function image_download( $user_id, $field_key, $field_value ) {
$file_path = UM()->uploader()->get_upload_base_dir() . $user_id . DIRECTORY_SEPARATOR . $field_value;
+ if ( ! file_exists( $file_path ) ) {
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $file_path = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $file_path );
+ }
+ }
+
$file_info = get_user_meta( $user_id, $field_key . "_metadata", true );
+ $pathinfo = pathinfo( $file_path );
$size = filesize( $file_path );
- $originalname = $file_info['original_name'];
- $type = $file_info['type'];
+ $originalname = ! empty( $file_info['original_name'] ) ? $file_info['original_name'] : $pathinfo['basename'];
+ $type = ! empty( $file_info['type'] ) ? $file_info['type'] : $pathinfo['extension'];
header('Content-Description: File Transfer');
header('Content-Type: ' . $type );
@@ -187,11 +195,19 @@ if ( ! class_exists( 'um\core\Files' ) ) {
*/
function file_download( $user_id, $field_key, $field_value ) {
$file_path = UM()->uploader()->get_upload_base_dir() . $user_id . DIRECTORY_SEPARATOR . $field_value;
+ if ( ! file_exists( $file_path ) ) {
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $file_path = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $file_path );
+ }
+ }
+
$file_info = get_user_meta( $user_id, $field_key . "_metadata", true );
+ $pathinfo = pathinfo( $file_path );
$size = filesize( $file_path );
- $originalname = $file_info['original_name'];
- $type = $file_info['type'];
+ $originalname = ! empty( $file_info['original_name'] ) ? $file_info['original_name'] : $pathinfo['basename'];
+ $type = ! empty( $file_info['type'] ) ? $file_info['type'] : $pathinfo['extension'];
header('Content-Description: File Transfer');
header('Content-Type: ' . $type );
diff --git a/includes/core/um-actions-login.php b/includes/core/um-actions-login.php
index 2e4b28b2..7c4c7fc1 100644
--- a/includes/core/um-actions-login.php
+++ b/includes/core/um-actions-login.php
@@ -47,16 +47,18 @@ function um_submit_form_errors_hook_login( $args ) {
$user_name = $args['user_login'];
}
- if ( !username_exists( $user_name ) ) {
+ /*if ( !username_exists( $user_name ) ) {
if ( $is_email ) {
UM()->form()->add_error( $field, __(' Sorry, we can\'t find an account with that email address','ultimate-member') );
} else {
UM()->form()->add_error( $field, __(' Sorry, we can\'t find an account with that username','ultimate-member') );
}
} else {
- if ( $args['user_password'] == '' ) {
- UM()->form()->add_error( 'user_password', __('Please enter your password','ultimate-member') );
- }
+
+ }*/
+
+ if ( $args['user_password'] == '' ) {
+ UM()->form()->add_error( 'user_password', __('Please enter your password','ultimate-member') );
}
$user = get_user_by( 'login', $user_name );
@@ -100,26 +102,29 @@ add_action( 'um_submit_form_errors_hook_login', 'um_submit_form_errors_hook_logi
*/
function um_display_login_errors( $args ) {
$error = '';
-
- if( UM()->form()->count_errors() > 0 ) {
+
+ if ( UM()->form()->count_errors() > 0 ) {
$errors = UM()->form()->errors;
// hook for other plugins to display error
$error_keys = array_keys( $errors );
- }
+ }
- if( isset( $args['custom_fields'] ) ){
- $custom_fields = $args['custom_fields'];
- }
+ if ( isset( $args['custom_fields'] ) ) {
+ $custom_fields = $args['custom_fields'];
+ }
- if( ! empty( $error_keys ) && ! empty( $custom_fields ) ){
- foreach( $error_keys as $error ){
- if( trim( $error ) && ! isset( $custom_fields[ $error ] ) && ! empty( $errors[ $error ] ) ){
- $error_message = apply_filters( 'login_errors', $errors[ $error ] );
- echo '
' . $error_message . '
';
+ if ( ! empty( $error_keys ) && ! empty( $custom_fields ) ) {
+ foreach ( $error_keys as $error ) {
+ if ( trim( $error ) && ! isset( $custom_fields[ $error ] ) && ! empty( $errors[ $error ] ) ) {
+ $error_message = apply_filters( 'login_errors', $errors[ $error ], $error );
+ if ( empty( $error_message ) ) {
+ return;
}
+ echo '' . $error_message . '
';
}
}
}
+}
add_action( 'um_before_login_fields', 'um_display_login_errors' );
@@ -421,12 +426,12 @@ function um_add_submit_button_to_login( $args ) {
-
-
+
+
-
+
diff --git a/includes/core/um-actions-profile.php b/includes/core/um-actions-profile.php
index 30b89ac6..51f05672 100644
--- a/includes/core/um-actions-profile.php
+++ b/includes/core/um-actions-profile.php
@@ -1195,15 +1195,15 @@ function um_add_submit_button_to_profile( $args ) {
-
-
+
-
diff --git a/includes/core/um-actions-register.php b/includes/core/um-actions-register.php
index bd5d0b72..3e163100 100644
--- a/includes/core/um-actions-register.php
+++ b/includes/core/um-actions-register.php
@@ -585,12 +585,12 @@ function um_add_submit_button_to_register( $args ) {
-
-
+
+
-
+
diff --git a/includes/core/um-filters-fields.php b/includes/core/um-filters-fields.php
index 243c34d0..9f422e20 100644
--- a/includes/core/um-filters-fields.php
+++ b/includes/core/um-filters-fields.php
@@ -226,7 +226,20 @@ function um_profile_field_filter_hook__file( $value, $data ) {
$file_type = wp_check_filetype( $value );
$uri = UM()->files()->get_download_link( UM()->fields()->set_id, $data['metakey'], um_user( 'ID' ) );
+ $removed = false;
if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $file_path = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value );
+ if ( ! file_exists( $file_path ) ) {
+ $removed = true;
+ }
+ } else {
+ $removed = true;
+ }
+ }
+
+ if ( $removed ) {
$value = __( 'This file has been removed.', 'ultimate-member' );
} else {
$file_info = um_user( $data['metakey'] . "_metadata" );
@@ -260,11 +273,24 @@ function um_profile_field_filter_hook__image( $value, $data ) {
$uri = UM()->files()->get_download_link( UM()->fields()->set_id, $data['metakey'], um_user( 'ID' ) );
$title = ( isset( $data['title'] ) ) ? $data['title'] : __( 'Untitled photo', 'ultimate-member' );
+ $removed = false;
+ if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $file_path = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value );
+ if ( ! file_exists( $file_path ) ) {
+ $removed = true;
+ }
+ } else {
+ $removed = true;
+ }
+ }
+
// if value is an image tag
if( preg_match( '/\
 . ')
';
- } else if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
+ } else if ( ! $removed ) {
$value = ' . ')
';
} else {
$value = '';
@@ -637,6 +663,24 @@ function um_profile_field_filter_xss_validation( $value, $data, $type = '' ) {
add_filter( 'um_profile_field_filter_hook__','um_profile_field_filter_xss_validation', 10, 3 );
+/**
+ * Trim All form POST submitted data
+ *
+ * @param $post_form
+ * @param $mode
+ *
+ * @return mixed
+ */
+function um_submit_form_data_trim_fields( $post_form, $mode ) {
+ foreach ( $post_form as &$field ) {
+ $field = trim( $field );
+ }
+
+ return $post_form;
+}
+add_filter( 'um_submit_form_data', 'um_submit_form_data_trim_fields', 9, 2 );
+
+
/**
* add role_select and role_radio to the $post_form
* It is necessary for that if on these fields the conditional logic
diff --git a/includes/um-short-functions.php b/includes/um-short-functions.php
index ad591cdd..18da3bdb 100644
--- a/includes/um-short-functions.php
+++ b/includes/um-short-functions.php
@@ -556,10 +556,19 @@ function um_user_submitted_registration( $style = false ) {
if ( UM()->fields()->get_field_type( $k ) == 'image' || UM()->fields()->get_field_type( $k ) == 'file' ) {
$file = basename( $v );
$filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
+
+ $baseurl = UM()->uploader()->get_upload_base_url();
+ if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $file ) ) {
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $baseurl = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $baseurl );
+ }
+ }
+
if ( ! empty( $filedata['original_name'] ) ) {
- $v = '' . $filedata['original_name'] . '';
+ $v = '' . $filedata['original_name'] . '';
} else {
- $v = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $file;
+ $v = $baseurl . um_user( 'ID' ) . '/' . $file;
}
}
@@ -1659,8 +1668,27 @@ function um_closest_num( $array, $number ) {
*/
function um_get_cover_uri( $image, $attrs ) {
$uri = false;
+ $uri_common = false;
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $multisite_fix_dir = UM()->uploader()->get_upload_base_dir();
+ $multisite_fix_url = UM()->uploader()->get_upload_base_url();
+ $multisite_fix_dir = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $multisite_fix_dir );
+ $multisite_fix_url = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $multisite_fix_url );
+
+ if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
+ }
+
+ if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}x{$attrs}{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$attrs}{$ext}?". current_time( 'timestamp' );
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
+ }
+ }
+
if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo{$ext}" ) ) {
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
}
@@ -1670,6 +1698,11 @@ function um_get_cover_uri( $image, $attrs ) {
} elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
}
+
+ if ( ! empty( $uri_common ) && empty( $uri ) ) {
+ $uri = $uri_common;
+ }
+
return $uri;
}
@@ -1699,8 +1732,64 @@ function um_get_avatar_url( $get_avatar ) {
*/
function um_get_avatar_uri( $image, $attrs ) {
$uri = false;
+ $uri_common = false;
$find = false;
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
+
+ if ( is_multisite() ) {
+ //multisite fix for old customers
+ $multisite_fix_dir = UM()->uploader()->get_upload_base_dir();
+ $multisite_fix_url = UM()->uploader()->get_upload_base_url();
+ $multisite_fix_dir = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $multisite_fix_dir );
+ $multisite_fix_url = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $multisite_fix_url );
+
+ if ( $attrs == 'original' && file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo{$ext}";
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$attrs}x{$attrs}{$ext}";
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}";
+ } else {
+ $sizes = UM()->options()->get( 'photo_thumb_sizes' );
+ if ( is_array( $sizes ) ) {
+ $find = um_closest_num( $sizes, $attrs );
+ }
+
+ if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}x{$find}{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$find}x{$find}{$ext}";
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}";
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo{$ext}";
+ }
+ }
+ }
+
+ if ( $attrs == 'original' && file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}x{$attrs}{$ext}";
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}{$ext}" ) ) {
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}";
+ } else {
+ $sizes = UM()->options()->get( 'photo_thumb_sizes' );
+ if ( is_array( $sizes ) ) {
+ $find = um_closest_num( $sizes, $attrs );
+ }
+
+ if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}x{$find}{$ext}" ) ) {
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}x{$find}{$ext}";
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}{$ext}" ) ) {
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}";
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
+ }
+ }
+
+ if ( ! empty( $uri_common ) && empty( $uri ) ) {
+ $uri = $uri_common;
+ }
+
/**
* UM hook
*
@@ -1723,30 +1812,10 @@ function um_get_avatar_uri( $image, $attrs ) {
* ?>
*/
$cache_time = apply_filters( 'um_filter_avatar_cache_time', current_time( 'timestamp' ), um_user( 'ID' ) );
- if ( $attrs == 'original' && file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}x{$attrs}{$ext}";
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}{$ext}" ) ) {
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}";
- } else {
- $sizes = UM()->options()->get( 'photo_thumb_sizes' );
- if ( is_array( $sizes ) ) {
- $find = um_closest_num( $sizes, $attrs );
- }
-
- if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}x{$find}{$ext}" ) ) {
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}x{$find}{$ext}";
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}{$ext}" ) ) {
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}";
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
- }
- }
-
if ( ! empty( $cache_time ) ) {
$uri .= "?{$cache_time}";
}
+
return $uri;
}
diff --git a/readme.txt b/readme.txt
index ff2ed2ec..aecb8e95 100644
--- a/readme.txt
+++ b/readme.txt
@@ -6,7 +6,7 @@ Donate link:
Tags: community, member, membership, user-profile, user-registration
Requires at least: 4.7
Tested up to: 4.9
-Stable tag: 2.0.26
+Stable tag: 2.0.27
License: GNU Version 2 or Any Later Version
License URI: http://www.gnu.org/licenses/gpl-3.0.txt