Ultimate Member – User Profile & Membership Plugin - Version 2.0.28

Version Description

Download this release

Release Info

Developer nsinelnikov
Plugin Icon 128x128 Ultimate Member – User Profile & Membership Plugin
Version 2.0.28
Comparing to
See all releases

Code changes from version 2.0.26 to 2.0.28

includes/core/class-fields.php CHANGED
@@ -2313,6 +2313,13 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
2313
} else {
2314
$file_url = UM()->files()->get_download_link( $this->set_id, $key, um_user( 'ID' ) );
2315
$file_dir = UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $this->field_value( $key, $default, $data );
2316
}
2317
2318
if ( file_exists( $file_dir ) ) {
2313
} else {
2314
$file_url = UM()->files()->get_download_link( $this->set_id, $key, um_user( 'ID' ) );
2315
$file_dir = UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $this->field_value( $key, $default, $data );
2316
+
2317
+ if ( ! file_exists( $file_dir ) ) {
2318
+ if ( is_multisite() ) {
2319
+ //multisite fix for old customers
2320
+ $file_dir = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $file_dir );
2321
+ }
2322
+ }
2323
}
2324
2325
if ( file_exists( $file_dir ) ) {
includes/core/class-files.php CHANGED
@@ -100,18 +100,19 @@ if ( ! class_exists( 'um\core\Files' ) ) {
100
return false;
101
}
102
103
- if ( empty( get_query_var( 'um_form' ) ) ) {
104
return false;
105
}
106
107
$form_id = get_query_var( 'um_form' );
108
-
109
- if ( empty( get_query_var( 'um_field' ) ) ) {
110
return false;
111
}
112
$field_key = urldecode( get_query_var( 'um_field' ) );
113
-
114
- if ( empty( get_query_var( 'um_user' ) ) ) {
115
return false;
116
}
117
@@ -121,9 +122,9 @@ if ( ! class_exists( 'um\core\Files' ) ) {
121
if ( empty( $user ) || is_wp_error( $user ) ) {
122
return false;
123
}
124
-
125
- if ( empty( get_query_var( 'um_verify' ) ) ||
126
- ! wp_verify_nonce( get_query_var( 'um_verify' ), $user_id . $form_id . 'um-download-nonce' ) ) {
127
return false;
128
}
129
@@ -160,11 +161,19 @@ if ( ! class_exists( 'um\core\Files' ) ) {
160
*/
161
function image_download( $user_id, $field_key, $field_value ) {
162
$file_path = UM()->uploader()->get_upload_base_dir() . $user_id . DIRECTORY_SEPARATOR . $field_value;
163
$file_info = get_user_meta( $user_id, $field_key . "_metadata", true );
164
165
$size = filesize( $file_path );
166
- $originalname = $file_info['original_name'];
167
- $type = $file_info['type'];
168
169
header('Content-Description: File Transfer');
170
header('Content-Type: ' . $type );
@@ -186,11 +195,19 @@ if ( ! class_exists( 'um\core\Files' ) ) {
186
*/
187
function file_download( $user_id, $field_key, $field_value ) {
188
$file_path = UM()->uploader()->get_upload_base_dir() . $user_id . DIRECTORY_SEPARATOR . $field_value;
189
$file_info = get_user_meta( $user_id, $field_key . "_metadata", true );
190
191
$size = filesize( $file_path );
192
- $originalname = $file_info['original_name'];
193
- $type = $file_info['type'];
194
195
header('Content-Description: File Transfer');
196
header('Content-Type: ' . $type );
100
return false;
101
}
102
103
+ $query_form = get_query_var( 'um_form' );
104
+ if ( empty( $query_form ) ) {
105
return false;
106
}
107
108
$form_id = get_query_var( 'um_form' );
109
+ $query_field = get_query_var( 'um_field' );
110
+ if ( empty( $query_field ) ) {
111
return false;
112
}
113
$field_key = urldecode( get_query_var( 'um_field' ) );
114
+ $query_user = get_query_var( 'um_user' );
115
+ if ( empty( $query_user ) ) {
116
return false;
117
}
118
122
if ( empty( $user ) || is_wp_error( $user ) ) {
123
return false;
124
}
125
+ $query_verify = get_query_var( 'um_verify' );
126
+ if ( empty( $query_verify ) ||
127
+ ! wp_verify_nonce( $query_verify, $user_id . $form_id . 'um-download-nonce' ) ) {
128
return false;
129
}
130
161
*/
162
function image_download( $user_id, $field_key, $field_value ) {
163
$file_path = UM()->uploader()->get_upload_base_dir() . $user_id . DIRECTORY_SEPARATOR . $field_value;
164
+ if ( ! file_exists( $file_path ) ) {
165
+ if ( is_multisite() ) {
166
+ //multisite fix for old customers
167
+ $file_path = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $file_path );
168
+ }
169
+ }
170
+
171
$file_info = get_user_meta( $user_id, $field_key . "_metadata", true );
172
173
+ $pathinfo = pathinfo( $file_path );
174
$size = filesize( $file_path );
175
+ $originalname = ! empty( $file_info['original_name'] ) ? $file_info['original_name'] : $pathinfo['basename'];
176
+ $type = ! empty( $file_info['type'] ) ? $file_info['type'] : $pathinfo['extension'];
177
178
header('Content-Description: File Transfer');
179
header('Content-Type: ' . $type );
195
*/
196
function file_download( $user_id, $field_key, $field_value ) {
197
$file_path = UM()->uploader()->get_upload_base_dir() . $user_id . DIRECTORY_SEPARATOR . $field_value;
198
+ if ( ! file_exists( $file_path ) ) {
199
+ if ( is_multisite() ) {
200
+ //multisite fix for old customers
201
+ $file_path = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $file_path );
202
+ }
203
+ }
204
+
205
$file_info = get_user_meta( $user_id, $field_key . "_metadata", true );
206
207
+ $pathinfo = pathinfo( $file_path );
208
$size = filesize( $file_path );
209
+ $originalname = ! empty( $file_info['original_name'] ) ? $file_info['original_name'] : $pathinfo['basename'];
210
+ $type = ! empty( $file_info['type'] ) ? $file_info['type'] : $pathinfo['extension'];
211
212
header('Content-Description: File Transfer');
213
header('Content-Type: ' . $type );
includes/core/class-user.php CHANGED
@@ -1214,12 +1214,14 @@ if ( ! class_exists( 'um\core\User' ) ) {
1214
?>
1215
*
1216
*/
1217
- function approve() {
1218
$user_id = um_user('ID');
1219
1220
- $status = get_user_meta( $user_id, 'account_status', true );
1221
- if ( 'approved' === $status ) {
1222
- return;
1223
}
1224
1225
delete_option( "um_cache_userdata_{$user_id}" );
1214
?>
1215
*
1216
*/
1217
+ function approve( $repeat = true ) {
1218
$user_id = um_user('ID');
1219
1220
+ if ( ! $repeat ) {
1221
+ $status = get_user_meta( $user_id, 'account_status', true );
1222
+ if ( 'approved' === $status ) {
1223
+ return;
1224
+ }
1225
}
1226
1227
delete_option( "um_cache_userdata_{$user_id}" );
includes/core/um-actions-login.php CHANGED
@@ -47,16 +47,18 @@ function um_submit_form_errors_hook_login( $args ) {
47
$user_name = $args['user_login'];
48
}
49
50
- if ( !username_exists( $user_name ) ) {
51
if ( $is_email ) {
52
UM()->form()->add_error( $field, __(' Sorry, we can\'t find an account with that email address','ultimate-member') );
53
} else {
54
UM()->form()->add_error( $field, __(' Sorry, we can\'t find an account with that username','ultimate-member') );
55
}
56
} else {
57
- if ( $args['user_password'] == '' ) {
58
- UM()->form()->add_error( 'user_password', __('Please enter your password','ultimate-member') );
59
- }
60
}
61
62
$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
100
*/
101
function um_display_login_errors( $args ) {
102
$error = '';
103
-
104
- if( UM()->form()->count_errors() > 0 ) {
105
$errors = UM()->form()->errors;
106
// hook for other plugins to display error
107
$error_keys = array_keys( $errors );
108
- }
109
110
- if( isset( $args['custom_fields'] ) ){
111
- $custom_fields = $args['custom_fields'];
112
- }
113
114
- if( ! empty( $error_keys ) && ! empty( $custom_fields ) ){
115
- foreach( $error_keys as $error ){
116
- if( trim( $error ) && ! isset( $custom_fields[ $error ] ) && ! empty( $errors[ $error ] ) ){
117
- $error_message = apply_filters( 'login_errors', $errors[ $error ] );
118
- echo '<p class="um-notice err um-error-code-'.$error.'"><i class="um-icon-ios-close-empty" onclick="jQuery(this).parent().fadeOut();"></i>' . $error_message . '</p>';
119
}
120
}
121
}
122
}
123
add_action( 'um_before_login_fields', 'um_display_login_errors' );
124
125
@@ -421,12 +426,12 @@ function um_add_submit_button_to_login( $args ) {
421
422
<?php if ( isset($args['secondary_btn']) && $args['secondary_btn'] != 0 ) { ?>
423
424
- <div class="um-left um-half"><input type="submit" value="<?php echo __( $primary_btn_word,'ultimate-member'); ?>" class="um-button" id="um-submit-btn" /></div>
425
- <div class="um-right um-half"><a href="<?php echo $secondary_btn_url; ?>" class="um-button um-alt"><?php echo __( $secondary_btn_word,'ultimate-member'); ?></a></div>
426
427
<?php } else { ?>
428
429
- <div class="um-center"><input type="submit" value="<?php echo __( $args['primary_btn_word'],'ultimate-member'); ?>" class="um-button" id="um-submit-btn" /></div>
430
431
<?php } ?>
432
47
$user_name = $args['user_login'];
48
}
49
50
+ /*if ( !username_exists( $user_name ) ) {
51
if ( $is_email ) {
52
UM()->form()->add_error( $field, __(' Sorry, we can\'t find an account with that email address','ultimate-member') );
53
} else {
54
UM()->form()->add_error( $field, __(' Sorry, we can\'t find an account with that username','ultimate-member') );
55
}
56
} else {
57
+
58
+ }*/
59
+
60
+ if ( $args['user_password'] == '' ) {
61
+ UM()->form()->add_error( 'user_password', __('Please enter your password','ultimate-member') );
62
}
63
64
$user = get_user_by( 'login', $user_name );
102
*/
103
function um_display_login_errors( $args ) {
104
$error = '';
105
+
106
+ if ( UM()->form()->count_errors() > 0 ) {
107
$errors = UM()->form()->errors;
108
// hook for other plugins to display error
109
$error_keys = array_keys( $errors );
110
+ }
111
112
+ if ( isset( $args['custom_fields'] ) ) {
113
+ $custom_fields = $args['custom_fields'];
114
+ }
115
116
+ if ( ! empty( $error_keys ) && ! empty( $custom_fields ) ) {
117
+ foreach ( $error_keys as $error ) {
118
+ if ( trim( $error ) && ! isset( $custom_fields[ $error ] ) && ! empty( $errors[ $error ] ) ) {
119
+ $error_message = apply_filters( 'login_errors', $errors[ $error ], $error );
120
+ if ( empty( $error_message ) ) {
121
+ return;
122
}
123
+ echo '<p class="um-notice err um-error-code-' . esc_attr( $error ) . '"><i class="um-icon-ios-close-empty" onclick="jQuery(this).parent().fadeOut();"></i>' . $error_message . '</p>';
124
}
125
}
126
}
127
+ }
128
add_action( 'um_before_login_fields', 'um_display_login_errors' );
129
130
426
427
<?php if ( isset($args['secondary_btn']) && $args['secondary_btn'] != 0 ) { ?>
428
429
+ <div class="um-left um-half"><input type="submit" value="<?php esc_attr_e( $primary_btn_word, 'ultimate-member' ); ?>" class="um-button" id="um-submit-btn" /></div>
430
+ <div class="um-right um-half"><a href="<?php echo esc_attr( $secondary_btn_url ); ?>" class="um-button um-alt"><?php esc_attr_e( $secondary_btn_word,'ultimate-member'); ?></a></div>
431
432
<?php } else { ?>
433
434
+ <div class="um-center"><input type="submit" value="<?php esc_attr_e( $args['primary_btn_word'],'ultimate-member' ); ?>" class="um-button" id="um-submit-btn" /></div>
435
436
<?php } ?>
437
includes/core/um-actions-profile.php CHANGED
@@ -1195,15 +1195,15 @@ function um_add_submit_button_to_profile( $args ) {
1195
1196
<?php if (isset( $args['secondary_btn'] ) && $args['secondary_btn'] != 0) { ?>
1197
1198
- <div class="um-left um-half"><input type="submit" value="<?php echo $args['primary_btn_word']; ?>"
1199
class="um-button"/></div>
1200
- <div class="um-right um-half"><a href="<?php echo um_edit_my_profile_cancel_uri(); ?>"
1201
- class="um-button um-alt"><?php echo $args['secondary_btn_word']; ?></a>
1202
</div>
1203
1204
<?php } else { ?>
1205
1206
- <div class="um-center"><input type="submit" value="<?php echo $args['primary_btn_word']; ?>"
1207
class="um-button"/></div>
1208
1209
<?php } ?>
1195
1196
<?php if (isset( $args['secondary_btn'] ) && $args['secondary_btn'] != 0) { ?>
1197
1198
+ <div class="um-left um-half"><input type="submit" value="<?php esc_attr_e( $args['primary_btn_word'], 'ultimate-member' ); ?>"
1199
class="um-button"/></div>
1200
+ <div class="um-right um-half"><a href="<?php echo esc_attr( um_edit_my_profile_cancel_uri() ); ?>"
1201
+ class="um-button um-alt"><?php esc_attr_e( $args['secondary_btn_word'], 'ultimate-member' ); ?></a>
1202
</div>
1203
1204
<?php } else { ?>
1205
1206
+ <div class="um-center"><input type="submit" value="<?php esc_attr_e( $args['primary_btn_word'], 'ultimate-member' ); ?>"
1207
class="um-button"/></div>
1208
1209
<?php } ?>
includes/core/um-actions-register.php CHANGED
@@ -585,12 +585,12 @@ function um_add_submit_button_to_register( $args ) {
585
586
<?php if ( isset($args['secondary_btn']) && $args['secondary_btn'] != 0 ) { ?>
587
588
- <div class="um-left um-half"><input type="submit" value="<?php echo __( $primary_btn_word,'ultimate-member'); ?>" class="um-button" id="um-submit-btn" /></div>
589
- <div class="um-right um-half"><a href="<?php echo $secondary_btn_url; ?>" class="um-button um-alt"><?php echo __( $secondary_btn_word,'ultimate-member'); ?></a></div>
590
591
<?php } else { ?>
592
593
- <div class="um-center"><input type="submit" value="<?php echo __( $primary_btn_word,'ultimate-member'); ?>" class="um-button" id="um-submit-btn" /></div>
594
595
<?php } ?>
596
585
586
<?php if ( isset($args['secondary_btn']) && $args['secondary_btn'] != 0 ) { ?>
587
588
+ <div class="um-left um-half"><input type="submit" value="<?php esc_attr_e( $primary_btn_word,'ultimate-member' ) ?>" class="um-button" id="um-submit-btn" /></div>
589
+ <div class="um-right um-half"><a href="<?php echo esc_attr( $secondary_btn_url ); ?>" class="um-button um-alt"><?php esc_attr_e( $secondary_btn_word,'ultimate-member'); ?></a></div>
590
591
<?php } else { ?>
592
593
+ <div class="um-center"><input type="submit" value="<?php esc_attr_e( $primary_btn_word,'ultimate-member' ) ?>" class="um-button" id="um-submit-btn" /></div>
594
595
<?php } ?>
596
includes/core/um-filters-fields.php CHANGED
@@ -226,7 +226,20 @@ function um_profile_field_filter_hook__file( $value, $data ) {
226
$file_type = wp_check_filetype( $value );
227
$uri = UM()->files()->get_download_link( UM()->fields()->set_id, $data['metakey'], um_user( 'ID' ) );
228
229
if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
230
$value = __( 'This file has been removed.', 'ultimate-member' );
231
} else {
232
$file_info = um_user( $data['metakey'] . "_metadata" );
@@ -260,11 +273,24 @@ function um_profile_field_filter_hook__image( $value, $data ) {
260
$uri = UM()->files()->get_download_link( UM()->fields()->set_id, $data['metakey'], um_user( 'ID' ) );
261
$title = ( isset( $data['title'] ) ) ? $data['title'] : __( 'Untitled photo', 'ultimate-member' );
262
263
// if value is an image tag
264
if( preg_match( '/\<img.*src=\"([^"]+).*/', $value, $matches ) ) {
265
$uri = $matches[1];
266
$value = '<div class="um-photo"><a href="#" class="um-photo-modal" data-src="' . esc_attr( $uri ) . '"><img src="' . esc_attr( $uri ) . '" alt="' . esc_attr( $title ) . '" title="' . esc_attr( $title ) . '" class="" /></a></div>';
267
- } else if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
268
$value = '<div class="um-photo"><a href="#" class="um-photo-modal" data-src="' . esc_attr( $uri ) . '"><img src="' . esc_attr( $uri ) . '" alt="' . esc_attr( $title ) . '" title="' . esc_attr( $title ) . '" class="" /></a></div>';
269
} else {
270
$value = '';
@@ -637,6 +663,26 @@ function um_profile_field_filter_xss_validation( $value, $data, $type = '' ) {
637
add_filter( 'um_profile_field_filter_hook__','um_profile_field_filter_xss_validation', 10, 3 );
638
639
640
/**
641
* add role_select and role_radio to the $post_form
642
* It is necessary for that if on these fields the conditional logic
226
$file_type = wp_check_filetype( $value );
227
$uri = UM()->files()->get_download_link( UM()->fields()->set_id, $data['metakey'], um_user( 'ID' ) );
228
229
+ $removed = false;
230
if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
231
+ if ( is_multisite() ) {
232
+ //multisite fix for old customers
233
+ $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 );
234
+ if ( ! file_exists( $file_path ) ) {
235
+ $removed = true;
236
+ }
237
+ } else {
238
+ $removed = true;
239
+ }
240
+ }
241
+
242
+ if ( $removed ) {
243
$value = __( 'This file has been removed.', 'ultimate-member' );
244
} else {
245
$file_info = um_user( $data['metakey'] . "_metadata" );
273
$uri = UM()->files()->get_download_link( UM()->fields()->set_id, $data['metakey'], um_user( 'ID' ) );
274
$title = ( isset( $data['title'] ) ) ? $data['title'] : __( 'Untitled photo', 'ultimate-member' );
275
276
+ $removed = false;
277
+ if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $value ) ) {
278
+ if ( is_multisite() ) {
279
+ //multisite fix for old customers
280
+ $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 );
281
+ if ( ! file_exists( $file_path ) ) {
282
+ $removed = true;
283
+ }
284
+ } else {
285
+ $removed = true;
286
+ }
287
+ }
288
+
289
// if value is an image tag
290
if( preg_match( '/\<img.*src=\"([^"]+).*/', $value, $matches ) ) {
291
$uri = $matches[1];
292
$value = '<div class="um-photo"><a href="#" class="um-photo-modal" data-src="' . esc_attr( $uri ) . '"><img src="' . esc_attr( $uri ) . '" alt="' . esc_attr( $title ) . '" title="' . esc_attr( $title ) . '" class="" /></a></div>';
293
+ } else if ( ! $removed ) {
294
$value = '<div class="um-photo"><a href="#" class="um-photo-modal" data-src="' . esc_attr( $uri ) . '"><img src="' . esc_attr( $uri ) . '" alt="' . esc_attr( $title ) . '" title="' . esc_attr( $title ) . '" class="" /></a></div>';
295
} else {
296
$value = '';
663
add_filter( 'um_profile_field_filter_hook__','um_profile_field_filter_xss_validation', 10, 3 );
664
665
666
+ /**
667
+ * Trim All form POST submitted data
668
+ *
669
+ * @param $post_form
670
+ * @param $mode
671
+ *
672
+ * @return mixed
673
+ */
674
+ function um_submit_form_data_trim_fields( $post_form, $mode ) {
675
+ foreach ( $post_form as $key => $field ) {
676
+ if ( is_string( $field ) ) {
677
+ $post_form[ $key ] = trim( $field );
678
+ }
679
+ }
680
+
681
+ return $post_form;
682
+ }
683
+ add_filter( 'um_submit_form_data', 'um_submit_form_data_trim_fields', 9, 2 );
684
+
685
+
686
/**
687
* add role_select and role_radio to the $post_form
688
* It is necessary for that if on these fields the conditional logic
includes/um-short-functions.php CHANGED
@@ -556,10 +556,19 @@ function um_user_submitted_registration( $style = false ) {
556
if ( UM()->fields()->get_field_type( $k ) == 'image' || UM()->fields()->get_field_type( $k ) == 'file' ) {
557
$file = basename( $v );
558
$filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
559
if ( ! empty( $filedata['original_name'] ) ) {
560
- $v = '<a href="' . esc_attr( UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $file ) . '">' . $filedata['original_name'] . '</a>';
561
} else {
562
- $v = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $file;
563
}
564
}
565
@@ -1659,8 +1668,27 @@ function um_closest_num( $array, $number ) {
1659
*/
1660
function um_get_cover_uri( $image, $attrs ) {
1661
$uri = false;
1662
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
1663
1664
if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo{$ext}" ) ) {
1665
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
1666
}
@@ -1670,6 +1698,11 @@ function um_get_cover_uri( $image, $attrs ) {
1670
} elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
1671
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
1672
}
1673
return $uri;
1674
}
1675
@@ -1699,8 +1732,64 @@ function um_get_avatar_url( $get_avatar ) {
1699
*/
1700
function um_get_avatar_uri( $image, $attrs ) {
1701
$uri = false;
1702
$find = false;
1703
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
1704
/**
1705
* UM hook
1706
*
@@ -1723,30 +1812,10 @@ function um_get_avatar_uri( $image, $attrs ) {
1723
* ?>
1724
*/
1725
$cache_time = apply_filters( 'um_filter_avatar_cache_time', current_time( 'timestamp' ), um_user( 'ID' ) );
1726
- if ( $attrs == 'original' && file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
1727
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
1728
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
1729
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}x{$attrs}{$ext}";
1730
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}{$ext}" ) ) {
1731
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}";
1732
- } else {
1733
- $sizes = UM()->options()->get( 'photo_thumb_sizes' );
1734
- if ( is_array( $sizes ) ) {
1735
- $find = um_closest_num( $sizes, $attrs );
1736
- }
1737
-
1738
- if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}x{$find}{$ext}" ) ) {
1739
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}x{$find}{$ext}";
1740
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}{$ext}" ) ) {
1741
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}";
1742
- } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
1743
- $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
1744
- }
1745
- }
1746
-
1747
if ( ! empty( $cache_time ) ) {
1748
$uri .= "?{$cache_time}";
1749
}
1750
return $uri;
1751
}
1752
556
if ( UM()->fields()->get_field_type( $k ) == 'image' || UM()->fields()->get_field_type( $k ) == 'file' ) {
557
$file = basename( $v );
558
$filedata = get_user_meta( um_user( 'ID' ), $k . "_metadata", true );
559
+
560
+ $baseurl = UM()->uploader()->get_upload_base_url();
561
+ if ( ! file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . $file ) ) {
562
+ if ( is_multisite() ) {
563
+ //multisite fix for old customers
564
+ $baseurl = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $baseurl );
565
+ }
566
+ }
567
+
568
if ( ! empty( $filedata['original_name'] ) ) {
569
+ $v = '<a href="' . esc_attr( $baseurl . um_user( 'ID' ) . '/' . $file ) . '">' . $filedata['original_name'] . '</a>';
570
} else {
571
+ $v = $baseurl . um_user( 'ID' ) . '/' . $file;
572
}
573
}
574
1668
*/
1669
function um_get_cover_uri( $image, $attrs ) {
1670
$uri = false;
1671
+ $uri_common = false;
1672
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
1673
1674
+ if ( is_multisite() ) {
1675
+ //multisite fix for old customers
1676
+ $multisite_fix_dir = UM()->uploader()->get_upload_base_dir();
1677
+ $multisite_fix_url = UM()->uploader()->get_upload_base_url();
1678
+ $multisite_fix_dir = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $multisite_fix_dir );
1679
+ $multisite_fix_url = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $multisite_fix_url );
1680
+
1681
+ if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo{$ext}" ) ) {
1682
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
1683
+ }
1684
+
1685
+ if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}x{$attrs}{$ext}" ) ) {
1686
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}x{$attrs}{$ext}?". current_time( 'timestamp' );
1687
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
1688
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
1689
+ }
1690
+ }
1691
+
1692
if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo{$ext}" ) ) {
1693
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo{$ext}?" . current_time( 'timestamp' );
1694
}
1698
} elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "cover_photo-{$attrs}{$ext}" ) ) {
1699
$uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/cover_photo-{$attrs}{$ext}?" . current_time( 'timestamp' );
1700
}
1701
+
1702
+ if ( ! empty( $uri_common ) && empty( $uri ) ) {
1703
+ $uri = $uri_common;
1704
+ }
1705
+
1706
return $uri;
1707
}
1708
1732
*/
1733
function um_get_avatar_uri( $image, $attrs ) {
1734
$uri = false;
1735
+ $uri_common = false;
1736
$find = false;
1737
$ext = '.' . pathinfo( $image, PATHINFO_EXTENSION );
1738
+
1739
+ if ( is_multisite() ) {
1740
+ //multisite fix for old customers
1741
+ $multisite_fix_dir = UM()->uploader()->get_upload_base_dir();
1742
+ $multisite_fix_url = UM()->uploader()->get_upload_base_url();
1743
+ $multisite_fix_dir = str_replace( DIRECTORY_SEPARATOR . 'sites' . DIRECTORY_SEPARATOR . get_current_blog_id() . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, $multisite_fix_dir );
1744
+ $multisite_fix_url = str_replace( '/sites/' . get_current_blog_id() . '/', '/', $multisite_fix_url );
1745
+
1746
+ if ( $attrs == 'original' && file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
1747
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo{$ext}";
1748
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
1749
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$attrs}x{$attrs}{$ext}";
1750
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}{$ext}" ) ) {
1751
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}";
1752
+ } else {
1753
+ $sizes = UM()->options()->get( 'photo_thumb_sizes' );
1754
+ if ( is_array( $sizes ) ) {
1755
+ $find = um_closest_num( $sizes, $attrs );
1756
+ }
1757
+
1758
+ if ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}x{$find}{$ext}" ) ) {
1759
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$find}x{$find}{$ext}";
1760
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}{$ext}" ) ) {
1761
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}";
1762
+ } elseif ( file_exists( $multisite_fix_dir . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
1763
+ $uri_common = $multisite_fix_url . um_user( 'ID' ) . "/profile_photo{$ext}";
1764
+ }
1765
+ }
1766
+ }
1767
+
1768
+ if ( $attrs == 'original' && file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
1769
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
1770
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}x{$attrs}{$ext}" ) ) {
1771
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}x{$attrs}{$ext}";
1772
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$attrs}{$ext}" ) ) {
1773
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$attrs}{$ext}";
1774
+ } else {
1775
+ $sizes = UM()->options()->get( 'photo_thumb_sizes' );
1776
+ if ( is_array( $sizes ) ) {
1777
+ $find = um_closest_num( $sizes, $attrs );
1778
+ }
1779
+
1780
+ if ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}x{$find}{$ext}" ) ) {
1781
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}x{$find}{$ext}";
1782
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo-{$find}{$ext}" ) ) {
1783
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo-{$find}{$ext}";
1784
+ } elseif ( file_exists( UM()->uploader()->get_upload_base_dir() . um_user( 'ID' ) . DIRECTORY_SEPARATOR . "profile_photo{$ext}" ) ) {
1785
+ $uri = UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . "/profile_photo{$ext}";
1786
+ }
1787
+ }
1788
+
1789
+ if ( ! empty( $uri_common ) && empty( $uri ) ) {
1790
+ $uri = $uri_common;
1791
+ }
1792
+
1793
/**
1794
* UM hook
1795
*
1812
* ?>
1813
*/
1814
$cache_time = apply_filters( 'um_filter_avatar_cache_time', current_time( 'timestamp' ), um_user( 'ID' ) );
1815
if ( ! empty( $cache_time ) ) {
1816
$uri .= "?{$cache_time}";
1817
}
1818
+
1819
return $uri;
1820
}
1821
languages/ultimate-member-en_US.mo CHANGED
Binary file
languages/ultimate-member-en_US.po CHANGED
@@ -1,8 +1,8 @@
1
msgid ""
2
msgstr ""
3
"Project-Id-Version: Ultimate Member\n"
4
- "POT-Creation-Date: 2018-10-02 13:01+0300\n"
5
- "PO-Revision-Date: 2018-10-02 13:01+0300\n"
6
"Last-Translator: \n"
7
"Language-Team: \n"
8
"Language: en_US\n"
@@ -115,7 +115,7 @@ msgstr ""
115
116
#: includes/admin/core/class-admin-builder.php:609
117
#: includes/admin/core/class-admin-builder.php:763
118
- #: includes/core/class-fields.php:4026
119
msgid "Please login as administrator"
120
msgstr ""
121
@@ -3526,7 +3526,7 @@ msgstr ""
3526
#: includes/admin/templates/modal/dynamic_new_group.php:14
3527
#: includes/admin/templates/modal/fonticons.php:11
3528
#: includes/admin/templates/role/publish.php:24
3529
- #: includes/core/class-fields.php:2272 includes/core/class-fields.php:2362
3530
#: includes/core/um-actions-profile.php:554
3531
#: includes/core/um-actions-profile.php:693
3532
#: includes/core/um-actions-profile.php:726
@@ -4165,7 +4165,7 @@ msgstr ""
4165
msgid "You must add a shortcode to the content area"
4166
msgstr ""
4167
4168
- #: includes/core/class-builtin.php:663 includes/core/class-user.php:1536
4169
msgid "Only me"
4170
msgstr ""
4171
@@ -6294,7 +6294,7 @@ msgstr ""
6294
msgid "Change photo"
6295
msgstr ""
6296
6297
- #: includes/core/class-fields.php:2271 includes/core/class-fields.php:2361
6298
msgid "Processing..."
6299
msgstr ""
6300
@@ -6302,58 +6302,58 @@ msgstr ""
6302
msgid "Upload File"
6303
msgstr ""
6304
6305
- #: includes/core/class-fields.php:2328 includes/core/um-filters-fields.php:230
6306
msgid "This file has been removed."
6307
msgstr ""
6308
6309
- #: includes/core/class-fields.php:2331 includes/core/class-fields.php:2361
6310
msgid "Change file"
6311
msgstr ""
6312
6313
- #: includes/core/class-fields.php:2361
6314
msgid "Save"
6315
msgstr ""
6316
6317
- #: includes/core/class-fields.php:3784
6318
#, php-format
6319
msgid ""
6320
"Your profile is looking a little empty. Why not <a href=\"%s\">add</a> some "
6321
"information!"
6322
msgstr ""
6323
6324
- #: includes/core/class-fields.php:3786
6325
msgid "This user has not added any information to their profile yet."
6326
msgstr ""
6327
6328
- #: includes/core/class-files.php:239
6329
msgid "Invalid parameters"
6330
msgstr ""
6331
6332
- #: includes/core/class-files.php:244
6333
msgid "Invalid coordinates"
6334
msgstr ""
6335
6336
- #: includes/core/class-files.php:249
6337
msgid "Invalid file ownership"
6338
msgstr ""
6339
6340
- #: includes/core/class-files.php:302
6341
msgid "Invalid nonce"
6342
msgstr ""
6343
6344
- #: includes/core/class-files.php:322 includes/core/class-files.php:407
6345
msgid "A theme or plugin compatibility issue"
6346
msgstr ""
6347
6348
- #: includes/core/class-files.php:950
6349
msgid "Ultimate Member: Not a valid temp file"
6350
msgstr ""
6351
6352
- #: includes/core/class-files.php:1078
6353
msgid "Invalid user ID: "
6354
msgstr ""
6355
6356
- #: includes/core/class-files.php:1087 includes/core/class-files.php:1115
6357
msgid "Unauthorized to do this attempt."
6358
msgstr ""
6359
@@ -6778,31 +6778,23 @@ msgstr ""
6778
msgid "Please enter your email"
6779
msgstr ""
6780
6781
- #: includes/core/um-actions-login.php:52
6782
- msgid " Sorry, we can't find an account with that email address"
6783
- msgstr ""
6784
-
6785
- #: includes/core/um-actions-login.php:54
6786
- msgid " Sorry, we can't find an account with that username"
6787
- msgstr ""
6788
-
6789
- #: includes/core/um-actions-login.php:58
6790
msgid "Please enter your password"
6791
msgstr ""
6792
6793
- #: includes/core/um-actions-login.php:66
6794
msgid "Password is incorrect. Please try again."
6795
msgstr ""
6796
6797
- #: includes/core/um-actions-login.php:194
6798
msgid "This action has been prevented for security measures."
6799
msgstr ""
6800
6801
- #: includes/core/um-actions-login.php:418
6802
msgid "Keep me signed in"
6803
msgstr ""
6804
6805
- #: includes/core/um-actions-login.php:453
6806
msgid "Forgot your password?"
6807
msgstr ""
6808
@@ -6952,7 +6944,7 @@ msgstr ""
6952
msgid "Last login: %s"
6953
msgstr ""
6954
6955
- #: includes/core/um-filters-fields.php:261
6956
msgid "Untitled photo"
6957
msgstr ""
6958
@@ -6977,11 +6969,11 @@ msgstr ""
6977
msgid "Login as this user"
6978
msgstr ""
6979
6980
- #: includes/um-short-functions.php:571
6981
msgid "date submitted"
6982
msgstr ""
6983
6984
- #: includes/um-short-functions.php:577
6985
msgid "(empty)"
6986
msgstr ""
6987
1
msgid ""
2
msgstr ""
3
"Project-Id-Version: Ultimate Member\n"
4
+ "POT-Creation-Date: 2018-10-05 10:16+0300\n"
5
+ "PO-Revision-Date: 2018-10-05 10:16+0300\n"
6
"Last-Translator: \n"
7
"Language-Team: \n"
8
"Language: en_US\n"
115
116
#: includes/admin/core/class-admin-builder.php:609
117
#: includes/admin/core/class-admin-builder.php:763
118
+ #: includes/core/class-fields.php:4033
119
msgid "Please login as administrator"
120
msgstr ""
121
3526
#: includes/admin/templates/modal/dynamic_new_group.php:14
3527
#: includes/admin/templates/modal/fonticons.php:11
3528
#: includes/admin/templates/role/publish.php:24
3529
+ #: includes/core/class-fields.php:2272 includes/core/class-fields.php:2369
3530
#: includes/core/um-actions-profile.php:554
3531
#: includes/core/um-actions-profile.php:693
3532
#: includes/core/um-actions-profile.php:726
4165
msgid "You must add a shortcode to the content area"
4166
msgstr ""
4167
4168
+ #: includes/core/class-builtin.php:663 includes/core/class-user.php:1538
4169
msgid "Only me"
4170
msgstr ""
4171
6294
msgid "Change photo"
6295
msgstr ""
6296
6297
+ #: includes/core/class-fields.php:2271 includes/core/class-fields.php:2368
6298
msgid "Processing..."
6299
msgstr ""
6300
6302
msgid "Upload File"
6303
msgstr ""
6304
6305
+ #: includes/core/class-fields.php:2335 includes/core/um-filters-fields.php:243
6306
msgid "This file has been removed."
6307
msgstr ""
6308
6309
+ #: includes/core/class-fields.php:2338 includes/core/class-fields.php:2368
6310
msgid "Change file"
6311
msgstr ""
6312
6313
+ #: includes/core/class-fields.php:2368
6314
msgid "Save"
6315
msgstr ""
6316
6317
+ #: includes/core/class-fields.php:3791
6318
#, php-format
6319
msgid ""
6320
"Your profile is looking a little empty. Why not <a href=\"%s\">add</a> some "
6321
"information!"
6322
msgstr ""
6323
6324
+ #: includes/core/class-fields.php:3793
6325
msgid "This user has not added any information to their profile yet."
6326
msgstr ""
6327
6328
+ #: includes/core/class-files.php:256
6329
msgid "Invalid parameters"
6330
msgstr ""
6331
6332
+ #: includes/core/class-files.php:261
6333
msgid "Invalid coordinates"
6334
msgstr ""
6335
6336
+ #: includes/core/class-files.php:266
6337
msgid "Invalid file ownership"
6338
msgstr ""
6339
6340
+ #: includes/core/class-files.php:319
6341
msgid "Invalid nonce"
6342
msgstr ""
6343
6344
+ #: includes/core/class-files.php:339 includes/core/class-files.php:424
6345
msgid "A theme or plugin compatibility issue"
6346
msgstr ""
6347
6348
+ #: includes/core/class-files.php:967
6349
msgid "Ultimate Member: Not a valid temp file"
6350
msgstr ""
6351
6352
+ #: includes/core/class-files.php:1095
6353
msgid "Invalid user ID: "
6354
msgstr ""
6355
6356
+ #: includes/core/class-files.php:1104 includes/core/class-files.php:1132
6357
msgid "Unauthorized to do this attempt."
6358
msgstr ""
6359
6778
msgid "Please enter your email"
6779
msgstr ""
6780
6781
+ #: includes/core/um-actions-login.php:61
6782
msgid "Please enter your password"
6783
msgstr ""
6784
6785
+ #: includes/core/um-actions-login.php:68
6786
msgid "Password is incorrect. Please try again."
6787
msgstr ""
6788
6789
+ #: includes/core/um-actions-login.php:199
6790
msgid "This action has been prevented for security measures."
6791
msgstr ""
6792
6793
+ #: includes/core/um-actions-login.php:423
6794
msgid "Keep me signed in"
6795
msgstr ""
6796
6797
+ #: includes/core/um-actions-login.php:458
6798
msgid "Forgot your password?"
6799
msgstr ""
6800
6944
msgid "Last login: %s"
6945
msgstr ""
6946
6947
+ #: includes/core/um-filters-fields.php:274
6948
msgid "Untitled photo"
6949
msgstr ""
6950
6969
msgid "Login as this user"
6970
msgstr ""
6971
6972
+ #: includes/um-short-functions.php:580
6973
msgid "date submitted"
6974
msgstr ""
6975
6976
+ #: includes/um-short-functions.php:586
6977
msgid "(empty)"
6978
msgstr ""
6979
readme.txt CHANGED
@@ -6,7 +6,7 @@ Donate link:
6
Tags: community, member, membership, user-profile, user-registration
7
Requires at least: 4.7
8
Tested up to: 4.9
9
- Stable tag: 2.0.26
10
License: GNU Version 2 or Any Later Version
11
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
@@ -133,6 +133,21 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
133
134
= Important: UM2.0+ is a significant update to the code base from 1.3.88. Please make sure you take a full-site backup with restore point before updating the plugin =
135
136
= 2.0.26: October 2, 2018 =
137
138
* Enhancements:
6
Tags: community, member, membership, user-profile, user-registration
7
Requires at least: 4.7
8
Tested up to: 4.9
9
+ Stable tag: 2.0.28
10
License: GNU Version 2 or Any Later Version
11
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
133
134
= Important: UM2.0+ is a significant update to the code base from 1.3.88. Please make sure you take a full-site backup with restore point before updating the plugin =
135
136
+ = 2.0.28: October 5, 2018 =
137
+
138
+ * Bugfixes:
139
+ - Fixed Email notifications
140
+ - Fixed Download files/images for multisites
141
+ - Fixed Profile/Cover image for multisites
142
+ - Fixed XSS vulnerabilities (detected by @Serhack)
143
+ - Fixed trim fields on submit forms
144
+ - Fixed submitted info
145
+
146
+ = 2.0.27: October 2, 2018 =
147
+
148
+ * Bugfixes:
149
+ - Fixed files class
150
+
151
= 2.0.26: October 2, 2018 =
152
153
* Enhancements:
ultimate-member.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: Ultimate Member
4
Plugin URI: http://ultimatemember.com/
5
Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
6
- Version: 2.0.26
7
Author: Ultimate Member
8
Author URI: http://ultimatemember.com/
9
Text Domain: ultimate-member
3
Plugin Name: Ultimate Member
4
Plugin URI: http://ultimatemember.com/
5
Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
6
+ Version: 2.0.28
7
Author: Ultimate Member
8
Author URI: http://ultimatemember.com/
9
Text Domain: ultimate-member