Ultimate Member – User Profile & Membership Plugin - Version 1.2.4

Version Description

Download this release

Release Info

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

Code changes from version 1.2.3 to 1.2.4

core/um-access.php CHANGED
@@ -28,7 +28,7 @@ class UM_Access {
28
  // login page add protected page automatically
29
  if ( strstr( $this->redirect_handler, um_get_core_page('login') ) ){
30
  $curr = $ultimatemember->permalinks->get_current_url();
31
- $this->redirect_handler = add_query_arg('redirect_to', $curr, $this->redirect_handler);
32
  }
33
 
34
  exit( wp_redirect( $this->redirect_handler ) );
28
  // login page add protected page automatically
29
  if ( strstr( $this->redirect_handler, um_get_core_page('login') ) ){
30
  $curr = $ultimatemember->permalinks->get_current_url();
31
+ $this->redirect_handler = esc_url( add_query_arg('redirect_to', $curr, $this->redirect_handler) );
32
  }
33
 
34
  exit( wp_redirect( $this->redirect_handler ) );
core/um-account.php CHANGED
@@ -101,7 +101,7 @@ class UM_Account {
101
 
102
  } else {
103
 
104
- $url = add_query_arg( 'um_tab', $id, um_get_core_page('account') );
105
 
106
  }
107
 
101
 
102
  } else {
103
 
104
+ $url = esc_url( add_query_arg( 'um_tab', $id, um_get_core_page('account') ) );
105
 
106
  }
107
 
core/um-actions-account.php CHANGED
@@ -49,7 +49,7 @@
49
 
50
  $url = $ultimatemember->account->tab_link( $tab );
51
 
52
- $url = add_query_arg('updated','account',$url);
53
 
54
  exit( wp_redirect( $url ) );
55
 
49
 
50
  $url = $ultimatemember->account->tab_link( $tab );
51
 
52
+ $url = esc_url( add_query_arg('updated','account',$url) );
53
 
54
  exit( wp_redirect( $url ) );
55
 
core/um-actions-form.php CHANGED
@@ -9,7 +9,7 @@
9
 
10
  $can_register = get_option('users_can_register');
11
  if ( !$can_register ) {
12
- exit( wp_redirect( add_query_arg('err', 'registration_disabled') ) );
13
  }
14
 
15
  }
@@ -33,10 +33,10 @@
33
  $check_domain = str_replace($domain[0], '*', $args['user_email']);
34
 
35
  if ( in_array( $args['user_email'], $emails ) )
36
- exit( wp_redirect( add_query_arg('err', 'blocked_email') ) );
37
 
38
  if ( in_array( $check_domain, $emails ) )
39
- exit( wp_redirect( add_query_arg('err', 'blocked_domain') ) );
40
 
41
  }
42
 
@@ -46,10 +46,10 @@
46
  $check_domain = str_replace($domain[0], '*', $args['username']);
47
 
48
  if ( in_array( $args['username'], $emails ) )
49
- exit( wp_redirect( add_query_arg('err', 'blocked_email') ) );
50
 
51
  if ( in_array( $check_domain, $emails ) )
52
- exit( wp_redirect( add_query_arg('err', 'blocked_domain') ) );
53
 
54
  }
55
 
@@ -72,7 +72,7 @@
72
  foreach($ips as $ip) {
73
  $ip = str_replace('*','',$ip);
74
  if (strpos($user_ip, $ip) === 0) {
75
- exit( wp_redirect( add_query_arg('err', 'blocked_ip') ) );
76
  }
77
  }
78
  }
9
 
10
  $can_register = get_option('users_can_register');
11
  if ( !$can_register ) {
12
+ exit( wp_redirect( esc_url( add_query_arg('err', 'registration_disabled') ) ) );
13
  }
14
 
15
  }
33
  $check_domain = str_replace($domain[0], '*', $args['user_email']);
34
 
35
  if ( in_array( $args['user_email'], $emails ) )
36
+ exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_email') ) ) );
37
 
38
  if ( in_array( $check_domain, $emails ) )
39
+ exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_domain') ) ) );
40
 
41
  }
42
 
46
  $check_domain = str_replace($domain[0], '*', $args['username']);
47
 
48
  if ( in_array( $args['username'], $emails ) )
49
+ exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_email') ) ) );
50
 
51
  if ( in_array( $check_domain, $emails ) )
52
+ exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_domain') ) ) );
53
 
54
  }
55
 
72
  foreach($ips as $ip) {
73
  $ip = str_replace('*','',$ip);
74
  if (strpos($user_ip, $ip) === 0) {
75
+ exit( wp_redirect( esc_url( add_query_arg('err', 'blocked_ip') ) ) );
76
  }
77
  }
78
  }
core/um-actions-login.php CHANGED
@@ -101,7 +101,7 @@
101
  case 'awaiting_email_confirmation':
102
  case 'rejected':
103
  um_reset_user();
104
- exit( wp_redirect( add_query_arg( 'err', $status, $ultimatemember->permalinks->get_current_url() ) ) );
105
  break;
106
 
107
  }
101
  case 'awaiting_email_confirmation':
102
  case 'rejected':
103
  um_reset_user();
104
+ exit( wp_redirect( esc_url( add_query_arg( 'err', $status, $ultimatemember->permalinks->get_current_url() ) ) ) );
105
  break;
106
 
107
  }
core/um-actions-members.php CHANGED
@@ -231,13 +231,13 @@
231
  $default_size = str_replace( 'px', '', um_get_option('profile_photosize') );
232
  $corner = um_get_option('profile_photocorner');
233
  ?>
234
- <div class="um-member-photo radius-<?php echo $corner; ?>"><a href="<?php echo um_user_profile_url(); ?>" title="<?php echo um_cap_initials( um_user('display_name') ); ?>"><?php echo get_avatar( um_user('ID'), $default_size ); ?></a></div>
235
  <?php } ?>
236
 
237
  <div class="um-member-card <?php if (!$profile_photo) { echo 'no-photo'; } ?>">
238
 
239
  <?php if ( $show_name ) { ?>
240
- <div class="um-member-name"><a href="<?php echo um_user_profile_url(); ?>" title="<?php echo um_cap_initials( um_user('display_name') ); ?>"><?php echo um_cap_initials( um_user('display_name') ); ?></a></div>
241
  <?php } ?>
242
 
243
  <?php do_action('um_members_after_user_name', um_user('ID'), $args); ?>
231
  $default_size = str_replace( 'px', '', um_get_option('profile_photosize') );
232
  $corner = um_get_option('profile_photocorner');
233
  ?>
234
+ <div class="um-member-photo radius-<?php echo $corner; ?>"><a href="<?php echo um_user_profile_url(); ?>" title="<?php echo um_user('display_name'); ?>"><?php echo get_avatar( um_user('ID'), $default_size ); ?></a></div>
235
  <?php } ?>
236
 
237
  <div class="um-member-card <?php if (!$profile_photo) { echo 'no-photo'; } ?>">
238
 
239
  <?php if ( $show_name ) { ?>
240
+ <div class="um-member-name"><a href="<?php echo um_user_profile_url(); ?>" title="<?php echo um_user('display_name'); ?>"><?php echo um_user('display_name'); ?></a></div>
241
  <?php } ?>
242
 
243
  <?php do_action('um_members_after_user_name', um_user('ID'), $args); ?>
core/um-actions-posts.php CHANGED
@@ -1,56 +0,0 @@
1
- <?php
2
-
3
- /***
4
- *** @Search results
5
- ***/
6
- add_action('pre_get_posts','um_pre_get_posts');
7
- function um_pre_get_posts($query) {
8
-
9
- if ( !is_admin() && $query->is_main_query() ) {
10
-
11
- // Incompatibility with The Events Calendar
12
- if ( isset( $query->query['post_type'] ) && $query->query['post_type'] == 'tribe_events' ) return;
13
-
14
- if ( $query->is_search || $query->is_archive() || $query->is_home ) {
15
-
16
- if ( $query->is_home && !um_get_option('exclude_from_main_loop' ) ) return;
17
- if ( $query->is_archive && !um_get_option('exclude_from_archive_loop' ) ) return;
18
- if ( $query->is_search && !um_get_option('exclude_from_search_loop' ) ) return;
19
-
20
- if ( is_user_logged_in() ) {
21
-
22
- $meta_query['relation'] = 'OR';
23
- $meta_query[] = array(
24
- 'key'=>'_um_accessible',
25
- 'value'=>'1',
26
- 'compare'=>'!=',
27
- );
28
- $meta_query[] = array(
29
- 'key'=>'_um_accessible',
30
- 'compare'=>'NOT EXISTS',
31
- );
32
- $query->set('meta_query',$meta_query);
33
-
34
- }
35
-
36
- if ( !is_user_logged_in() ) {
37
-
38
- $meta_query['relation'] = 'OR';
39
- $meta_query[] = array(
40
- 'key'=>'_um_accessible',
41
- 'value'=>'2',
42
- 'compare'=>'!=',
43
- );
44
- $meta_query[] = array(
45
- 'key'=>'_um_accessible',
46
- 'compare'=>'NOT EXISTS',
47
- );
48
- $query->set('meta_query',$meta_query);
49
-
50
- }
51
-
52
- }
53
-
54
- }
55
-
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
core/um-actions-profile.php CHANGED
@@ -590,7 +590,7 @@
590
  $nav_link = $ultimatemember->permalinks->get_current_url( get_option('permalink_structure') );
591
  $nav_link = remove_query_arg( 'um_action', $nav_link );
592
  $nav_link = remove_query_arg( 'subnav', $nav_link );
593
- $nav_link = add_query_arg('profiletab', $id, $nav_link )
594
  ?>
595
 
596
  <div class="um-profile-nav-item <?php if ( !um_get_option('profile_menu_icons') ) { echo 'without-icon'; } ?> <?php if ( $id == $active_tab ) { echo 'active'; } ?>">
@@ -623,7 +623,7 @@
623
 
624
  ?>
625
 
626
- <a href="<?php echo add_query_arg('subnav', $id ); ?>" class="<?php if ( $active_subnav == $id ) echo 'active'; ?>"><?php echo $subtab; ?></a>
627
 
628
  <?php
629
 
590
  $nav_link = $ultimatemember->permalinks->get_current_url( get_option('permalink_structure') );
591
  $nav_link = remove_query_arg( 'um_action', $nav_link );
592
  $nav_link = remove_query_arg( 'subnav', $nav_link );
593
+ $nav_link = esc_url( add_query_arg('profiletab', $id, $nav_link ) );
594
  ?>
595
 
596
  <div class="um-profile-nav-item <?php if ( !um_get_option('profile_menu_icons') ) { echo 'without-icon'; } ?> <?php if ( $id == $active_tab ) { echo 'active'; } ?>">
623
 
624
  ?>
625
 
626
+ <a href="<?php echo esc_url( add_query_arg('subnav', $id ) ); ?>" class="<?php if ( $active_subnav == $id ) echo 'active'; ?>"><?php echo $subtab; ?></a>
627
 
628
  <?php
629
 
core/um-actions-register.php CHANGED
@@ -171,8 +171,8 @@
171
 
172
  if ( um_user( $status . '_action' ) == 'show_message' && um_user( $status . '_message' ) != '' ) {
173
  $url = um_get_core_page('register');
174
- $url = add_query_arg( 'message', $status, $url );
175
- $url = add_query_arg( 'uid', um_user('ID'), $url );
176
  exit( wp_redirect( $url ) );
177
  }
178
 
171
 
172
  if ( um_user( $status . '_action' ) == 'show_message' && um_user( $status . '_message' ) != '' ) {
173
  $url = um_get_core_page('register');
174
+ $url = esc_url( add_query_arg( 'message', $status, $url ) );
175
+ $url = esc_url( add_query_arg( 'uid', um_user('ID'), $url ) );
176
  exit( wp_redirect( $url ) );
177
  }
178
 
core/um-actions-user.php CHANGED
@@ -59,7 +59,7 @@
59
  ?>
60
 
61
  <li><a href="<?php echo um_get_core_page('account'); ?>"><?php _e('Your account','ultimatemember'); ?></a></li>
62
- <li><a href="<?php echo add_query_arg('redirect_to', $ultimatemember->permalinks->get_current_url(true), um_get_core_page('logout') ); ?>"><?php _e('Logout','ultimatemember'); ?></a></li>
63
 
64
  <?php
65
 
59
  ?>
60
 
61
  <li><a href="<?php echo um_get_core_page('account'); ?>"><?php _e('Your account','ultimatemember'); ?></a></li>
62
+ <li><a href="<?php echo esc_url( add_query_arg('redirect_to', $ultimatemember->permalinks->get_current_url(true), um_get_core_page('logout') ) ); ?>"><?php _e('Logout','ultimatemember'); ?></a></li>
63
 
64
  <?php
65
 
core/um-password.php CHANGED
@@ -47,9 +47,9 @@ class UM_Password {
47
 
48
  if ( !um_user('reset_pass_hash') ) return false;
49
 
50
- $url = add_query_arg( 'act', 'reset_password', um_get_core_page('password-reset') );
51
- $url = add_query_arg( 'hash', um_user('reset_pass_hash'), $url );
52
- $url = add_query_arg( 'user_id', um_user('ID'), $url );
53
 
54
  return $url;
55
 
47
 
48
  if ( !um_user('reset_pass_hash') ) return false;
49
 
50
+ $url = esc_url( add_query_arg( 'act', 'reset_password', um_get_core_page('password-reset') ) );
51
+ $url = esc_url( add_query_arg( 'hash', um_user('reset_pass_hash'), $url ) );
52
+ $url = esc_url( add_query_arg( 'user_id', um_user('ID'), $url ) );
53
 
54
  return $url;
55
 
core/um-permalinks.php CHANGED
@@ -32,8 +32,21 @@ class UM_Permalinks {
32
  ***/
33
  function get_current_url( $no_query_params = false ) {
34
  global $post;
35
-
36
- $page_url = get_site_url() . $_SERVER["REQUEST_URI"];
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  if ( $no_query_params == true ) {
39
  $page_url = strtok($page_url, '?');
@@ -76,9 +89,9 @@ class UM_Permalinks {
76
 
77
  if ( !um_user('account_secret_hash') ) return false;
78
 
79
- $url = add_query_arg( 'act', 'activate_via_email', home_url() );
80
- $url = add_query_arg( 'hash', um_user('account_secret_hash'), $url );
81
- $url = add_query_arg( 'user_id', um_user('ID'), $url );
82
 
83
  return $url;
84
  }
@@ -101,7 +114,7 @@ class UM_Permalinks {
101
  *** @add a query param to url
102
  ***/
103
  function add_query( $key, $value ) {
104
- $this->current_url = add_query_arg( $key, $value, $this->current_url );
105
  return $this->current_url;
106
  }
107
  /***
@@ -153,7 +166,7 @@ class UM_Permalinks {
153
 
154
  } else {
155
 
156
- $profile_url = add_query_arg( 'um_user', $user_in_url, $profile_url );
157
 
158
  }
159
 
@@ -165,9 +178,9 @@ class UM_Permalinks {
165
  ***/
166
  function admin_act_url( $action, $subaction ) {
167
  $url = $this->get_current_url();
168
- $url = add_query_arg( 'um_adm_action', $action, $url );
169
- $url = add_query_arg( 'sub', $subaction, $url );
170
- $url = add_query_arg( 'user_id', um_user('ID'), $url );
171
  return $url;
172
  }
173
 
32
  ***/
33
  function get_current_url( $no_query_params = false ) {
34
  global $post;
35
+
36
+ if ( is_front_page() ) :
37
+ $page_url = home_url();
38
+ else :
39
+ $page_url = 'http';
40
+
41
+ if ( isset( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" )
42
+ $page_url .= "s";
43
+ $page_url .= "://";
44
+
45
+ if ( $_SERVER["SERVER_PORT"] != "80" )
46
+ $page_url .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
47
+ else
48
+ $page_url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
49
+ endif;
50
 
51
  if ( $no_query_params == true ) {
52
  $page_url = strtok($page_url, '?');
89
 
90
  if ( !um_user('account_secret_hash') ) return false;
91
 
92
+ $url = esc_url( add_query_arg( 'act', 'activate_via_email', home_url() ) );
93
+ $url = esc_url( add_query_arg( 'hash', um_user('account_secret_hash'), $url ) );
94
+ $url = esc_url( add_query_arg( 'user_id', um_user('ID'), $url ) );
95
 
96
  return $url;
97
  }
114
  *** @add a query param to url
115
  ***/
116
  function add_query( $key, $value ) {
117
+ $this->current_url = esc_url( add_query_arg( $key, $value, $this->current_url ) );
118
  return $this->current_url;
119
  }
120
  /***
166
 
167
  } else {
168
 
169
+ $profile_url = esc_url( add_query_arg( 'um_user', $user_in_url, $profile_url ) );
170
 
171
  }
172
 
178
  ***/
179
  function admin_act_url( $action, $subaction ) {
180
  $url = $this->get_current_url();
181
+ $url = esc_url( add_query_arg( 'um_adm_action', $action, $url ) );
182
+ $url = esc_url( add_query_arg( 'sub', $subaction, $url ) );
183
+ $url = esc_url( add_query_arg( 'user_id', um_user('ID'), $url ) );
184
  return $url;
185
  }
186
 
core/um-rewrite.php CHANGED
@@ -59,6 +59,8 @@ class UM_Rewrite {
59
  flush_rewrite_rules( true );
60
  update_option('um_flush_rules', true);
61
  }
 
 
62
 
63
  }
64
 
@@ -131,7 +133,7 @@ class UM_Rewrite {
131
 
132
  if ( $query ) {
133
  foreach( $query as $key => $val ) {
134
- $url = add_query_arg($key, $val, $url);
135
  }
136
  }
137
 
59
  flush_rewrite_rules( true );
60
  update_option('um_flush_rules', true);
61
  }
62
+
63
+ flush_rewrite_rules( true );
64
 
65
  }
66
 
133
 
134
  if ( $query ) {
135
  foreach( $query as $key => $val ) {
136
+ $url = esc_url( add_query_arg($key, $val, $url) );
137
  }
138
  }
139
 
core/um-short-functions.php CHANGED
@@ -264,7 +264,7 @@ function um_profile_id() {
264
  $url = get_permalink( $ultimatemember->permalinks->core[ $slug ] );
265
 
266
  if ( $updated )
267
- $url = add_query_arg( 'updated', $updated, $url );
268
 
269
  return $url;
270
 
@@ -650,8 +650,8 @@ function um_reset_user() {
650
  $url = um_user_profile_url();
651
  $url = remove_query_arg('profiletab', $url);
652
  $url = remove_query_arg('subnav', $url);
653
- $url = add_query_arg('profiletab', 'main',$url);
654
- $url = add_query_arg('um_action','edit', $url);
655
  return $url;
656
  }
657
 
264
  $url = get_permalink( $ultimatemember->permalinks->core[ $slug ] );
265
 
266
  if ( $updated )
267
+ $url = esc_url( add_query_arg( 'updated', $updated, $url ) );
268
 
269
  return $url;
270
 
650
  $url = um_user_profile_url();
651
  $url = remove_query_arg('profiletab', $url);
652
  $url = remove_query_arg('subnav', $url);
653
+ $url = esc_url( add_query_arg('profiletab', 'main',$url ) );
654
+ $url = esc_url( add_query_arg('um_action','edit', $url ) );
655
  return $url;
656
  }
657
 
core/um-shortcodes.php CHANGED
@@ -307,7 +307,7 @@ class UM_Shortcodes {
307
  $usermeta = str_replace('}','',$usermeta);
308
 
309
  if ( $usermeta == 'user_avatar_small' ) {
310
- $value = um_user('profile_photo', 40);
311
  } elseif ( um_user( $usermeta ) ){
312
  $value = um_user( $usermeta );
313
  }
307
  $usermeta = str_replace('}','',$usermeta);
308
 
309
  if ( $usermeta == 'user_avatar_small' ) {
310
+ $value = get_avatar( um_user('ID'), 40 );
311
  } elseif ( um_user( $usermeta ) ){
312
  $value = um_user( $usermeta );
313
  }
core/um-tracking.php CHANGED
@@ -139,8 +139,8 @@ class UM_Tracking {
139
  if ( $hide_notice )
140
  return;
141
 
142
- $optin_url = add_query_arg( 'um_adm_action', 'opt_into_tracking' );
143
- $optout_url = add_query_arg( 'um_adm_action', 'opt_out_of_tracking' );
144
 
145
  echo '<div class="updated" style="border-color: #3ba1da;"><p>';
146
 
139
  if ( $hide_notice )
140
  return;
141
 
142
+ $optin_url = esc_url( add_query_arg( 'um_adm_action', 'opt_into_tracking' ) );
143
+ $optout_url = esc_url( add_query_arg( 'um_adm_action', 'opt_out_of_tracking' ) );
144
 
145
  echo '<div class="updated" style="border-color: #3ba1da;"><p>';
146
 
core/um-user.php CHANGED
@@ -638,8 +638,8 @@ class UM_User {
638
  $actions = apply_filters('um_admin_user_actions_hook', $actions );
639
  if ( !isset( $actions ) || empty( $actions ) ) return false;
640
  foreach($actions as $id => $arr ) {
641
- $url = add_query_arg('um_action', $id );
642
- $url = add_query_arg('uid', um_profile_id(), $url );
643
  $items[] = '<a href="' . $url .'" class="real_url">' . $arr['label'] . '</a>';
644
  }
645
  return $items;
638
  $actions = apply_filters('um_admin_user_actions_hook', $actions );
639
  if ( !isset( $actions ) || empty( $actions ) ) return false;
640
  foreach($actions as $id => $arr ) {
641
+ $url = esc_url( add_query_arg('um_action', $id ) );
642
+ $url = esc_url( add_query_arg('uid', um_profile_id(), $url ) );
643
  $items[] = '<a href="' . $url .'" class="real_url">' . $arr['label'] . '</a>';
644
  }
645
  return $items;
index.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: 1.2.3
7
  Author: Ultimate Member
8
  Author URI: http://ultimatemember.com/
9
  */
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: 1.2.4
7
  Author: Ultimate Member
8
  Author URI: http://ultimatemember.com/
9
  */
readme.txt CHANGED
@@ -7,7 +7,7 @@ Tags: access control, author, authors, author profile, comments, community, comm
7
  Requires at least: 4.1
8
  Tested up to: 4.1.1
9
 
10
- Stable Tag: 1.2.3
11
 
12
  License: GNU Version 2 or Any Later Version
13
 
@@ -79,6 +79,7 @@ Ultimate Member has been translated into the following languages:
79
  * Dutch - Nederlands
80
  * Finnish - Suomi
81
  * Polish - Polski
 
82
  * Turkish - Türkçe
83
  * العربية
84
 
@@ -139,6 +140,12 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
139
 
140
  == Changelog ==
141
 
 
 
 
 
 
 
142
  = 1.2.3: April 16, 2015 =
143
 
144
  * Fixed: major bug with admin capability / editing user profiles via frontend
7
  Requires at least: 4.1
8
  Tested up to: 4.1.1
9
 
10
+ Stable Tag: 1.2.4
11
 
12
  License: GNU Version 2 or Any Later Version
13
 
79
  * Dutch - Nederlands
80
  * Finnish - Suomi
81
  * Polish - Polski
82
+ * Russian - Русский
83
  * Turkish - Türkçe
84
  * العربية
85
 
140
 
141
  == Changelog ==
142
 
143
+ = 1.2.4: April 20, 2015 =
144
+
145
+ * New: added Russian language support
146
+ * Fixed: Security patch related to add_query_arg()
147
+ * Fixed: bug with approval HTML e-mail
148
+
149
  = 1.2.3: April 16, 2015 =
150
 
151
  * Fixed: major bug with admin capability / editing user profiles via frontend
templates/email/{approval_email.html → approved_email.html} RENAMED
File without changes
um-init.php CHANGED
@@ -25,6 +25,7 @@ class UM_API {
25
  'nl_NL' => 'Nederlands',
26
  'fi_FI' => 'Suomi',
27
  'pl_PL' => 'Polski',
 
28
  'tr_TR' => 'Türkçe',
29
  'ar' => 'العربية'
30
  );
25
  'nl_NL' => 'Nederlands',
26
  'fi_FI' => 'Suomi',
27
  'pl_PL' => 'Polski',
28
+ 'ru_RU' => 'Русский',
29
  'tr_TR' => 'Türkçe',
30
  'ar' => 'العربية'
31
  );