Merge pull request #905 from ultimatemember/development/2.2.5

Development process 2.2.5
This commit is contained in:
Nikita Sinelnikov
2021-09-21 11:06:49 +03:00
committed by GitHub
18 changed files with 152 additions and 82 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ GNU Version 2 or Any Later Version
## Releases
[Official Release Version: 2.2.4](https://github.com/ultimatemember/ultimatemember/releases/tag/2.2.4).
[Official Release Version: 2.2.5](https://github.com/ultimatemember/ultimatemember/releases/tag/2.2.5).
## Changelog
+7 -2
View File
@@ -134,6 +134,7 @@ function um_set_range_label( slider, ui ) {
var placeholder = '';
var placeholder_s = slider.siblings( '.um-slider-range' ).data( 'placeholder-s' );
var placeholder_p = slider.siblings( '.um-slider-range' ).data( 'placeholder-p' );
var um_range_min, um_range_max;
if ( ui ) {
if ( ui.values[ 0 ] === ui.values[ 1 ] ) {
@@ -146,6 +147,8 @@ function um_set_range_label( slider, ui ) {
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
um_range_min = ui.values[0];
um_range_max = ui.values[1];
} else {
if ( slider.slider( "values", 0 ) === slider.slider( "values", 1 ) ) {
placeholder = placeholder_s.replace( '\{value\}', slider.slider( "values", 0 ) )
@@ -157,11 +160,13 @@ function um_set_range_label( slider, ui ) {
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
um_range_min = slider.slider( "values", 0 );
um_range_max = slider.slider( "values", 1 );
}
slider.siblings( '.um-slider-range' ).html( placeholder );
slider.siblings( ".um_range_min" ).val( slider.slider( "values", 0 ) );
slider.siblings( ".um_range_max" ).val( slider.slider( "values", 1 ) );
slider.siblings( ".um_range_min" ).val( um_range_min );
slider.siblings( ".um_range_max" ).val( um_range_max );
}
+1 -1
View File
File diff suppressed because one or more lines are too long
+7 -3
View File
@@ -483,10 +483,10 @@ jQuery(document).ready( function() {
});
function um_set_range_label( slider, ui ) {
console.log( slider );
var placeholder = '';
var placeholder_s = slider.siblings( '.um-slider-range' ).data( 'placeholder-s' );
var placeholder_p = slider.siblings( '.um-slider-range' ).data( 'placeholder-p' );
var um_range_min, um_range_max;
if ( ui ) {
if ( ui.values[ 0 ] === ui.values[ 1 ] ) {
@@ -499,6 +499,8 @@ jQuery(document).ready( function() {
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
um_range_min = ui.values[0];
um_range_max = ui.values[1];
} else {
if ( slider.slider( "values", 0 ) === slider.slider( "values", 1 ) ) {
placeholder = placeholder_s.replace( '\{value\}', slider.slider( "values", 0 ) )
@@ -510,11 +512,13 @@ jQuery(document).ready( function() {
.replace( '\{field_label\}', slider.siblings( '.um-slider-range' )
.data('label') );
}
um_range_min = slider.slider( "values", 0 );
um_range_max = slider.slider( "values", 1 );
}
slider.siblings( '.um-slider-range' ).html( placeholder );
slider.siblings( ".um_range_min" ).val( slider.slider( "values", 0 ) );
slider.siblings( ".um_range_max" ).val( slider.slider( "values", 1 ) );
slider.siblings( ".um_range_min" ).val( um_range_min );
slider.siblings( ".um_range_max" ).val( um_range_max );
}
+2 -2
View File
@@ -431,7 +431,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
'0' => __( 'Show access restricted message', 'ultimate-member' ),
'1' => __( 'Redirect user', 'ultimate-member' ),
),
'conditional' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? '' : array( '_um_access_hide_from_queries', '=', '0' ),
'conditional' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? array( '_um_accessible', '!=', '0' ) : array( '_um_access_hide_from_queries', '=', '0' ),
),
array(
'id' => '_um_restrict_by_custom_message',
@@ -583,7 +583,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {
'0' => __( 'Show access restricted message', 'ultimate-member' ),
'1' => __( 'Redirect user', 'ultimate-member' ),
),
'conditional' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? '' : array( '_um_access_hide_from_queries', '=', '0' ),
'conditional' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? array( '_um_accessible', '!=', '0' ) : array( '_um_access_hide_from_queries', '=', '0' ),
),
array(
'id' => '_um_restrict_by_custom_message',
@@ -16,13 +16,15 @@ if ( isset( $_GET['action'] ) ) {
switch ( sanitize_key( $_GET['action'] ) ) {
/* delete action */
case 'delete': {
// uses sanitize_title instead of sanitize_key for backward compatibility based on #906 pull-request (https://github.com/ultimatemember/ultimatemember/pull/906)
// roles e.g. "潜水艦subs" with both latin + not-UTB-8 symbols had invalid role ID
$role_keys = array();
if ( isset( $_REQUEST['id'] ) ) {
check_admin_referer( 'um_role_delete' . sanitize_key( $_REQUEST['id'] ) . get_current_user_id() );
$role_keys = (array) sanitize_key( $_REQUEST['id'] );
check_admin_referer( 'um_role_delete' . sanitize_title( $_REQUEST['id'] ) . get_current_user_id() );
$role_keys = (array) sanitize_title( $_REQUEST['id'] );
} elseif ( isset( $_REQUEST['item'] ) ) {
check_admin_referer( 'bulk-' . sanitize_key( __( 'Roles', 'ultimate-member' ) ) );
$role_keys = array_map( 'sanitize_key', $_REQUEST['item'] );
$role_keys = array_map( 'sanitize_title', $_REQUEST['item'] );
}
if ( ! count( $role_keys ) ) {
@@ -88,13 +90,15 @@ if ( isset( $_GET['action'] ) ) {
break;
}
case 'reset': {
// uses sanitize_title instead of sanitize_key for backward compatibility based on #906 pull-request (https://github.com/ultimatemember/ultimatemember/pull/906)
// roles e.g. "潜水艦subs" with both latin + not-UTB-8 symbols had invalid role ID
$role_keys = array();
if ( isset( $_REQUEST['id'] ) ) {
check_admin_referer( 'um_role_reset' . sanitize_key( $_REQUEST['id'] ) . get_current_user_id() );
$role_keys = (array) sanitize_key( $_REQUEST['id'] );
check_admin_referer( 'um_role_reset' . sanitize_title( $_REQUEST['id'] ) . get_current_user_id() );
$role_keys = (array) sanitize_title( $_REQUEST['id'] );
} elseif ( isset( $_REQUEST['item'] ) ) {
check_admin_referer( 'bulk-' . sanitize_key( __( 'Roles', 'ultimate-member' ) ) );
$role_keys = array_map( 'sanitize_key', $_REQUEST['item'] );
$role_keys = array_map( 'sanitize_title', $_REQUEST['item'] );
}
if ( ! count( $role_keys ) ) {
@@ -342,22 +346,23 @@ class UM_Roles_List_Table extends WP_List_Table {
*/
function column_title( $item ) {
$actions = array();
// for backward compatibility based on #906 pull-request (https://github.com/ultimatemember/ultimatemember/pull/906)
// roles e.g. "潜水艦subs" with both latin + not-UTB-8 symbols had invalid role ID
$id = urlencode( $item['key'] );
$actions['edit'] = '<a href="admin.php?page=um_roles&tab=edit&id=' . esc_attr( $item['key'] ) . '">' . __( 'Edit', 'ultimate-member' ) . '</a>';
$actions['edit'] = '<a href="admin.php?page=um_roles&tab=edit&id=' . esc_attr( $id ) . '">' . __( 'Edit', 'ultimate-member' ) . '</a>';
if ( ! empty( $item['_um_is_custom'] ) ) {
$actions['delete'] = '<a href="admin.php?page=um_roles&action=delete&id=' . esc_attr( $item['key'] ) . '&_wpnonce=' . wp_create_nonce( 'um_role_delete' . $item['key'] . get_current_user_id() ) . '" onclick="return confirm( \'' . __( 'Are you sure you want to delete this role?', 'ultimate-member' ) . '\' );">' . __( 'Delete', 'ultimate-member' ) . '</a>';
$actions['delete'] = '<a href="admin.php?page=um_roles&action=delete&id=' . esc_attr( $id ) . '&_wpnonce=' . wp_create_nonce( 'um_role_delete' . $item['key'] . get_current_user_id() ) . '" onclick="return confirm( \'' . __( 'Are you sure you want to delete this role?', 'ultimate-member' ) . '\' );">' . __( 'Delete', 'ultimate-member' ) . '</a>';
} else {
$role_meta = get_option( "um_role_{$item['key']}_meta" );
if ( ! empty( $role_meta ) ) {
$actions['reset'] = '<a href="admin.php?page=um_roles&action=reset&id=' . esc_attr( $item['key'] ) . '&_wpnonce=' . wp_create_nonce( 'um_role_reset' . $item['key'] . get_current_user_id() ) . '" onclick="return confirm( \'' . __( 'Are you sure you want to reset UM role meta?', 'ultimate-member' ) . '\' );">' . __( 'Reset UM Role meta', 'ultimate-member' ) . '</a>';
$actions['reset'] = '<a href="admin.php?page=um_roles&action=reset&id=' . esc_attr( $id ) . '&_wpnonce=' . wp_create_nonce( 'um_role_reset' . $item['key'] . get_current_user_id() ) . '" onclick="return confirm( \'' . __( 'Are you sure you want to reset UM role meta?', 'ultimate-member' ) . '\' );">' . __( 'Reset UM Role meta', 'ultimate-member' ) . '</a>';
}
}
return sprintf('%1$s %2$s', '<strong><a class="row-title" href="admin.php?page=um_roles&tab=edit&id=' . esc_attr( $item['key'] ) . '">' . stripslashes( $item['name'] ) . '</a></strong>', $this->row_actions( $actions ) );
return sprintf('%1$s %2$s', '<strong><a class="row-title" href="admin.php?page=um_roles&tab=edit&id=' . esc_attr( $id ) . '">' . stripslashes( $item['name'] ) . '</a></strong>', $this->row_actions( $actions ) );
}
@@ -96,7 +96,7 @@ if ( ! defined( 'ABSPATH' ) ) {
'0' => __( 'Show access restricted message', 'ultimate-member' ),
'1' => __( 'Redirect user', 'ultimate-member' ),
),
'conditional' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? '' : array( '_um_access_hide_from_queries', '=', '0' ),
'conditional' => UM()->options()->get( 'disable_restriction_pre_queries' ) ? array( '_um_accessible', '!=', '0' ) : array( '_um_access_hide_from_queries', '=', '0' ),
),
array(
'id' => '_um_restrict_by_custom_message',
+10 -4
View File
@@ -50,7 +50,9 @@ global $wp_roles;
if ( ! empty( $_GET['id'] ) ) {
$role_id = sanitize_key( $_GET['id'] );
// uses sanitize_title instead of sanitize_key for backward compatibility based on #906 pull-request (https://github.com/ultimatemember/ultimatemember/pull/906)
// roles e.g. "潜水艦subs" with both latin + not-UTB-8 symbols had invalid role ID
$role_id = sanitize_title( $_GET['id'] );
$data = get_option( "um_role_{$role_id}_meta" );
@@ -88,7 +90,9 @@ if ( ! empty( $_POST['role'] ) ) {
$error .= __( 'Title is empty!', 'ultimate-member' ) . '<br />';
}
if ( preg_match( "/[a-z0-9]+$/i", $data['name'] ) ) {
if ( preg_match( "/^[\p{Latin}\d\-_ ]+$/i", $data['name'] ) ) {
// uses sanitize_title instead of sanitize_key for backward compatibility based on #906 pull-request (https://github.com/ultimatemember/ultimatemember/pull/906)
// roles e.g. "潜水艦subs" with both latin + not-UTB-8 symbols had invalid role ID
$id = sanitize_title( $data['name'] );
} else {
$auto_increment = UM()->options()->get( 'custom_roles_increment' );
@@ -96,9 +100,11 @@ if ( ! empty( $_POST['role'] ) ) {
$id = 'custom_role_' . $auto_increment;
}
$redirect = add_query_arg( array( 'page'=>'um_roles', 'tab'=>'edit', 'id'=>$id, 'msg'=>'a' ), admin_url( 'admin.php' ) );
$redirect = add_query_arg( array( 'page' => 'um_roles', 'tab' => 'edit', 'id' => $id, 'msg' => 'a' ), admin_url( 'admin.php' ) );
} elseif ( 'edit' === sanitize_key( $_GET['tab'] ) && ! empty( $_GET['id'] ) ) {
$id = sanitize_key( $_GET['id'] );
// uses sanitize_title instead of sanitize_key for backward compatibility based on #906 pull-request (https://github.com/ultimatemember/ultimatemember/pull/906)
// roles e.g. "潜水艦subs" with both latin + not-UTB-8 symbols had invalid role ID
$id = sanitize_title( $_GET['id'] );
$pre_role_meta = get_option( "um_role_{$id}_meta", array() );
if ( isset( $pre_role_meta['name'] ) ) {
+33 -4
View File
@@ -127,7 +127,6 @@ if ( ! class_exists( 'um\core\Access' ) ) {
remove_action( 'pre_get_posts', array( &$this, 'exclude_posts' ), 99 );
remove_filter( 'posts_where', array( &$this, 'exclude_posts_where' ), 10 );
remove_filter( 'wp_count_posts', array( &$this, 'custom_count_posts_handler' ), 99 );
remove_filter( 'the_title', array( &$this, 'filter_restricted_post_title' ), 10 );
}
@@ -1131,8 +1130,8 @@ if ( ! class_exists( 'um\core\Access' ) ) {
continue;
} else {
$restriction_settings = $this->get_post_privacy_settings( $menu_item->object_id );
if ( UM()->options()->get( 'disable_restriction_pre_queries' ) || empty( $restriction_settings['_um_access_hide_from_queries'] ) ) {
$filtered_items[] = $menu_item;
if ( empty( $restriction_settings['_um_access_hide_from_queries'] ) || ! UM()->options()->get( 'disable_restriction_pre_queries' ) ) {
$filtered_items[] = $this->maybe_replace_nav_menu_title( $menu_item );
continue;
}
}
@@ -1270,6 +1269,36 @@ if ( ! class_exists( 'um\core\Access' ) ) {
}
/**
* @param \WP_Post $nav_item
*
* @return \WP_Post
*/
function maybe_replace_nav_menu_title( $nav_item ) {
if ( ! UM()->options()->get( 'restricted_post_title_replace' ) ) {
return $nav_item;
}
if ( current_user_can( 'administrator' ) ) {
return $nav_item;
}
if ( ! is_a( $nav_item, '\WP_Post' ) ) {
return $nav_item;
}
$ignore = apply_filters( 'um_ignore_restricted_title', false, $nav_item->ID );
if ( $ignore ) {
return $nav_item;
}
$restricted_global_title = UM()->options()->get( 'restricted_access_post_title' );
$nav_item->title = stripslashes( $restricted_global_title );
return $nav_item;
}
/**
* Protect Post Types in query
* Restrict content new logic
@@ -1379,7 +1408,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
}
}
} else {
if ( UM()->options()->get( 'disable_restriction_pre_queries' ) || empty( $restriction['_um_access_hide_from_queries'] ) ) {
if ( empty( $restriction['_um_access_hide_from_queries'] ) || ! UM()->options()->get( 'disable_restriction_pre_queries' ) ) {
$filtered_posts[] = $this->maybe_replace_title( $post );
continue;
}
+3 -3
View File
@@ -1003,10 +1003,10 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
),
'soundcloud' => array(
'title' => __('SoundCloud','ultimate-member'),
'title' => __( 'SoundCloud', 'ultimate-member' ),
'metakey' => 'soundcloud',
'type' => 'url',
'label' => __('SoundCloud','ultimate-member'),
'label' => __( 'SoundCloud', 'ultimate-member' ),
'required' => 0,
'public' => 1,
'editable' => 1,
@@ -1400,7 +1400,7 @@ if ( ! class_exists( 'um\core\Builtin' ) ) {
$array['numeric'] = __('Numeric value only','ultimate-member');
$array['phone_number'] = __('Phone Number','ultimate-member');
$array['skype'] = __('Skype ID','ultimate-member');
$array['soundcloud'] = __('SoundCloud Profile','ultimate-member');
$array['soundcloud'] = __( 'SoundCloud Profile', 'ultimate-member' );
$array['twitter_url'] = __('Twitter URL','ultimate-member');
$array['is_email'] = __('E-mail( Not Unique )','ultimate-member');
$array['unique_email'] = __('Unique E-mail','ultimate-member');
+2 -2
View File
@@ -1757,7 +1757,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
if ( ! isset( $array['max_files_error'] ) ) {
$array['max_files_error'] = __( 'You can only upload one image', 'ultimate-member' );
}
if ( ! isset( $array['max_size'] ) ) {
if ( empty( $array['max_size'] ) ) {
$array['max_size'] = 999999999;
}
if ( ! isset( $array['upload_help_text'] ) ) {
@@ -1798,7 +1798,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
if ( ! isset( $array['max_files_error'] ) ) {
$array['max_files_error'] = __( 'You can only upload one file', 'ultimate-member' );
}
if ( ! isset( $array['max_size'] ) ) {
if ( empty( $array['max_size'] ) ) {
$array['max_size'] = 999999999;
}
if ( ! isset( $array['upload_help_text'] ) ) {
+5 -1
View File
@@ -217,7 +217,11 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
if ( ! empty( $filter_type ) ) {
if ( 'slider' === $filter_type ) {
if ( ! empty( $_POST[ $k ] ) ) {
$temp_value[ $k ] = (int) $_POST[ $k ];
if ( count( $_POST[ $k ] ) > 1 ) {
$temp_value[ $k ] = array_map( 'intval', $_POST[ $k ] );
} else {
$temp_value[ $k ] = (int) $_POST[ $k ];
}
}
} elseif ( 'timepicker' === $filter_type || 'datepicker' === $filter_type ) {
if ( ! empty( $_POST[ $k . '_from' ] ) && ! empty( $_POST[ $k . '_to' ] ) ) {
+14 -12
View File
@@ -29,12 +29,13 @@ if ( ! class_exists( 'um\core\User_posts' ) ) {
*/
function add_posts() {
$args = array(
'post_type' => 'post',
'posts_per_page' => 10,
'offset' => 0,
'author' => um_get_requested_user(),
'post_status' => array( 'publish' ),
'um_main_query' => true,
'post_type' => 'post',
'posts_per_page' => 10,
'offset' => 0,
'author' => um_get_requested_user(),
'post_status' => array( 'publish' ),
'um_main_query' => true,
'suppress_filters' => false,
);
/**
@@ -108,12 +109,13 @@ if ( ! class_exists( 'um\core\User_posts' ) ) {
$page = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 0;
$args = array(
'post_type' => 'post',
'posts_per_page' => 10,
'offset' => ( $page - 1 ) * 10,
'author' => $author,
'post_status' => array( 'publish' ),
'um_main_query' => true,
'post_type' => 'post',
'posts_per_page' => 10,
'offset' => ( $page - 1 ) * 10,
'author' => $author,
'post_status' => array( 'publish' ),
'um_main_query' => true,
'suppress_filters' => false,
);
/**
+17 -26
View File
@@ -9,6 +9,8 @@
* @param array $args
*/
function um_submit_account_errors_hook( $args ) {
global $current_user;
if ( ! isset( $args['_um_account'] ) && ! isset( $args['_um_account_tab'] ) ) {
return;
}
@@ -19,8 +21,6 @@ function um_submit_account_errors_hook( $args ) {
UM()->form()->add_error( 'um_account_security', __( 'Are you hacking? Please try again!', 'ultimate-member' ) );
}
$user = get_user_by( 'login', um_user( 'user_login' ) );
switch ( $tab ) {
case 'delete': {
// delete account
@@ -28,7 +28,7 @@ function um_submit_account_errors_hook( $args ) {
if ( strlen( trim( sanitize_text_field( $args['single_user_password'] ) ) ) === 0 ) {
UM()->form()->add_error( 'single_user_password', __( 'You must enter your password', 'ultimate-member' ) );
} else {
if ( ! wp_check_password( sanitize_text_field( $args['single_user_password'] ), $user->data->user_pass, $user->data->ID ) ) {
if ( ! wp_check_password( sanitize_text_field( $args['single_user_password'] ), $current_user->data->user_pass, $current_user->data->ID ) ) {
UM()->form()->add_error( 'single_user_password', __( 'This is not your password', 'ultimate-member' ) );
}
}
@@ -69,7 +69,7 @@ function um_submit_account_errors_hook( $args ) {
UM()->form()->add_error( 'current_user_password', __( 'This is not your password', 'ultimate-member' ) );
return;
} else {
if ( ! wp_check_password( $args['current_user_password'], $user->data->user_pass, $user->data->ID ) ) {
if ( ! wp_check_password( $args['current_user_password'], $current_user->data->user_pass, $current_user->data->ID ) ) {
UM()->form()->add_error( 'current_user_password', __( 'This is not your password', 'ultimate-member' ) );
return;
}
@@ -105,7 +105,7 @@ function um_submit_account_errors_hook( $args ) {
$account_name_require = UM()->options()->get( 'account_name_require' );
if ( isset( $args['user_login'] ) ) {
$args['user_login'] = sanitize_text_field( $args['user_login'] );
$args['user_login'] = sanitize_user( $args['user_login'] );
}
if ( isset( $args['first_name'] ) ) {
$args['first_name'] = sanitize_text_field( $args['first_name'] );
@@ -120,11 +120,6 @@ function um_submit_account_errors_hook( $args ) {
$args['single_user_password'] = sanitize_text_field( $args['single_user_password'] );
}
if ( ! empty( $args['user_login'] ) && ! validate_username( $args['user_login'] ) ) {
UM()->form()->add_error( 'user_login', __( 'Your username is invalid', 'ultimate-member' ) );
return;
}
if ( isset( $args['first_name'] ) && ( strlen( trim( $args['first_name'] ) ) === 0 && $account_name_require ) ) {
UM()->form()->add_error( 'first_name', __( 'You must provide your first name', 'ultimate-member' ) );
}
@@ -153,7 +148,7 @@ function um_submit_account_errors_hook( $args ) {
if ( strlen( trim( $args['single_user_password'] ) ) === 0 ) {
UM()->form()->add_error( 'single_user_password', __( 'You must enter your password', 'ultimate-member' ) );
} else {
if ( ! wp_check_password( $args['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
if ( ! wp_check_password( $args['single_user_password'], $current_user->data->user_pass, $current_user->data->ID ) ) {
UM()->form()->add_error( 'single_user_password', __( 'This is not your password', 'ultimate-member' ) );
}
}
@@ -303,20 +298,12 @@ function um_submit_account_details( $args ) {
continue;
}
if ( 'single_user_password' === $k ) {
if ( 'single_user_password' === $k || 'user_login' === $k ) {
continue;
}
if ( 'user_login' === $k ) {
$v = sanitize_user( $v );
} elseif ( 'first_name' === $k ) {
$v = sanitize_text_field( $v );
} elseif ( 'last_name' === $k ) {
} elseif ( 'first_name' === $k || 'last_name' === $k || 'user_password' === $k ) {
$v = sanitize_text_field( $v );
} elseif ( 'user_email' === $k ) {
$v = sanitize_email( $v );
} elseif ( 'user_password' === $k ) {
$v = sanitize_text_field( $v );
} elseif ( 'hide_in_members' === $k ) {
$v = array_map( 'sanitize_text_field', $v );
}
@@ -502,13 +489,17 @@ add_action( 'um_before_account_notifications', 'um_before_account_notifications'
/**
* Update Profile URL
* Update Profile URL, display name, full name.
*
* @param $user_id
* @param $changed
* @version 2.2.5
*
* @param int $user_id The user ID.
* @param array $changes An array of fields values.
*/
function um_after_user_account_updated_permalink( $user_id, $changed ) {
UM()->user()->generate_profile_slug( $user_id );
function um_after_user_account_updated_permalink( $user_id, $changes ) {
if ( isset( $changes['first_name'] ) && isset( $changes['last_name'] ) ) {
do_action( 'um_update_profile_full_name', $user_id, $changes );
}
}
add_action( 'um_after_user_account_updated', 'um_after_user_account_updated_permalink', 10, 2 );
+15 -5
View File
@@ -23,21 +23,31 @@ add_filter( 'um_edit_label_all_fields', 'um_edit_label_all_fields', 10, 2 );
/**
* Outputs a soundcloud track
* Outputs a SoundCloud track
*
* @param $value
* @param $data
* @param string $value
* @param array $data
*
* @return string
*/
function um_profile_field_filter_hook__soundcloud_track( $value, $data ) {
if ( ! is_numeric( $value ) ) {
return __( 'Invalid soundcloud track ID', 'ultimate-member' );
# if we're passed a track url:
if ( preg_match( '/https:\/\/soundcloud.com\/.*/', $value ) ) {
$value = '<div class="um-soundcloud">
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=' . esc_attr( urlencode( $value ) ) . '&amp;color=ff6600&amp;auto_play=false&amp;show_artwork=true"></iframe>
</div>';
return $value;
} else {
# neither a track id nor url:
return __( 'Invalid SoundCloud track ID', 'ultimate-member' );
}
}
# if we're passed a track id:
$value = '<div class="um-soundcloud">
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' . $value . '&amp;color=ff6600&amp;auto_play=false&amp;show_artwork=true"></iframe>
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' . esc_attr( $value ) . '&amp;color=ff6600&amp;auto_play=false&amp;show_artwork=true"></iframe>
</div>';
return $value;
+1 -1
View File
@@ -700,7 +700,7 @@ function um_user_submitted_registration_formatted( $style = false ) {
$fields = maybe_unserialize( $fields );
}
if ( isset( $fields ) ) {
if ( ! empty( $fields ) ) {
$fields['form_id'] = array( 'title' => __( 'Form', 'ultimate-member' ) );
+15 -1
View File
@@ -7,7 +7,7 @@ Tags: community, member, membership, user-profile, user-registration
Requires PHP: 5.6
Requires at least: 5.0
Tested up to: 5.8
Stable tag: 2.2.4
Stable tag: 2.2.5
License: GNU Version 2 or Any Later Version
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -155,6 +155,20 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
* To learn more about version 2.1 please see this [docs](https://docs.ultimatemember.com/article/1512-upgrade-2-1-0)
* UM2.1+ is a significant update to the Member Directories' code base from 2.0.x. Please make sure you take a full-site backup with restore point before updating the plugin
= 2.2.5: September 21, 2021 =
* Enhancements:
- Added: Ability to insert SoundCloud track URL instead of Track ID
* Bugfixes:
- Fixed: Invalid role keys on the role list-table + role edit screen (case when latin symbols used with not UTF-8 symbols)
- Fixed: Restriction logic and archive lists (+ nav menu bar) with active "Disable pre-queries for restriction content logic" option
- Fixed: Restriction settings fields conditions on wp-admin screens
- Fixed: Account `user_login` field validation removed as redundant. The field is disabled and not used in code flow
- Fixed: `display_name` data update after First + Last name fields edition on the Account page
= 2.2.4: August 27, 2021 =
* Bugfixes:
+1 -1
View File
@@ -3,7 +3,7 @@
Plugin Name: Ultimate Member
Plugin URI: http://ultimatemember.com/
Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
Version: 2.2.4
Version: 2.2.5
Author: Ultimate Member
Author URI: http://ultimatemember.com/
Text Domain: ultimate-member