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