- fixed bbPress restrict content message on forums;

- fixed issues with permalinks (issue #375);
- fixed replacing placeholders in [show_content_for_role] shortcode;
This commit is contained in:
nikitozzzzzzz
2018-02-18 13:27:46 +02:00
parent 440aa59b28
commit cbf06f5835
14 changed files with 170 additions and 269 deletions
+76 -50
View File
@@ -167,37 +167,67 @@ if ( ! class_exists( 'User' ) ) {
/**
* @param $user_id
* @param bool $update_slug
*
* @return string
* @return bool|mixed
*/
function get_profile_url( $user_id, $update_slug = false ) {
function get_profile_slug( $user_id ) {
// Permalink base
$permalink_base = UM()->options()->get( 'permalink_base' );
// Get user slug
$profile_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true );
$generate_slug = UM()->options()->get( 'um_generate_slug_in_directory' );
// Return existing profile slug
if ( $generate_slug && $update_slug == false && $profile_slug ) {
return UM()->permalinks()->profile_permalink( $profile_slug );
//get default username permalink if it's empty then return false
if ( empty( $profile_slug ) ) {
if ( $permalink_base != 'user_login' ) {
$profile_slug = get_user_meta( $user_id, "um_user_profile_url_slug_user_login", true );
}
if ( empty( $profile_slug ) ) {
return false;
}
}
return $profile_slug;
}
// Reset cache
if ( $update_slug == true ) {
delete_option( "um_cache_userdata_{$user_id}" );
um_fetch_user( $user_id );
/**
* @param $user_id
*
* @return bool|string
*/
function get_profile_link( $user_id ) {
$profile_slug = $this->get_profile_slug( $user_id );
if ( empty( $profile_slug ) ) {
return false;
}
return UM()->permalinks()->profile_permalink( $profile_slug );
}
/**
* @param $user_id
*/
function generate_profile_slug( $user_id, $force = false ) {
$userdata = get_userdata( $user_id );
if ( empty( $userdata ) ) {
return UM()->permalinks()->profile_permalink( $profile_slug );
return;
}
delete_option( "um_cache_userdata_{$user_id}" );
$current_profile_slug = $this->get_profile_slug( $user_id );
$user_in_url = '';
$permalink_base = UM()->options()->get( 'permalink_base' );
// User ID
if ( $permalink_base == 'user_id' ) {
$user_in_url = $user_id;
}
// Username
if ( $permalink_base == 'user_login' ) {
@@ -221,11 +251,6 @@ if ( ! class_exists( 'User' ) ) {
}
}
// User ID
if ( $permalink_base == 'user_id' ) {
$user_in_url = $user_id;
}
// Fisrt and Last name
$full_name_permalinks = array( 'name', 'name_dash', 'name_plus' );
if ( in_array( $permalink_base, $full_name_permalinks ) ) {
@@ -234,43 +259,50 @@ if ( ! class_exists( 'User' ) ) {
$first_name = $userdata->first_name;
$last_name = $userdata->last_name;
$full_name = trim( sprintf( '%s %s', $first_name, $last_name ) );
$full_name = preg_replace( '/\s+/', ' ', $full_name ); // Remove double spaces
$profile_slug = UM()->permalinks()->profile_slug( $full_name, $first_name, $last_name );
$current_slug = get_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", true );
if ( $current_slug ) {
$username = $current_slug;
} else {
$append = 0;
$username = $full_name;
$_username = $full_name;
$append = 0;
$username = $full_name;
$_username = $full_name;
while ( 1 ) {
$username = $_username . ( empty( $append ) ? '': " $append" );
if ( ! UM()->permalinks()->exist_url_slug_permalink_base( $permalink_base, $profile_slug . ( empty( $append ) ? '' : "{$separate}{$append}" ) ) ) {
break;
}
$append++;
while ( 1 ) {
$username = $_username . ( empty( $append ) ? '' : " $append" );
$slug_exists_user_id = UM()->permalinks()->slug_exists_user_id( $profile_slug . ( empty( $append ) ? '' : "{$separate}{$append}" ) );
if ( empty( $slug_exists_user_id ) || $user_id == $slug_exists_user_id ) {
break;
}
$append++;
}
$user_in_url = UM()->permalinks()->profile_slug( $username, $first_name, $last_name );
if( empty( $user_in_url ) ) {
if ( empty( $user_in_url ) ) {
$user_in_url = $userdata->user_login;
}
if ( is_email( $user_in_url ) ) {
$user_email = $user_in_url;
$user_in_url = str_replace( '@', '', $user_in_url );
if ( ( $pos = strrpos( $user_in_url, '.' ) ) !== false ) {
$search_length = strlen( '.' );
$user_in_url = substr_replace( $user_in_url, '-', $pos, $search_length );
}
update_user_meta( $user_id, "um_email_as_username_{$user_in_url}", $user_email );
} else {
$user_in_url = sanitize_title( $user_in_url );
}
}
$user_in_url = trim( $user_in_url, $separate );
}
update_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", $user_in_url );
if ( empty ( $user_in_url ) ) {
$user_in_url = $user_id;
if ( $force || empty( $current_profile_slug ) || $current_profile_slug != $user_in_url ) {
update_user_meta( $user_id, "um_user_profile_url_slug_{$permalink_base}", $user_in_url );
}
return UM()->permalinks()->profile_permalink( $user_in_url );
}
@@ -325,13 +357,7 @@ if ( ! class_exists( 'User' ) ) {
do_action( 'um_after_member_role_upgrade', $new_roles, $old_roles );
//Update permalink
$changes = apply_filters( 'um_user_edit_after_updating_profile_array', $_POST );
if ( isset( $changes['need_change_permalink'] ) && $changes['need_change_permalink'] == true ) {
$pre_user_id = um_user( 'ID' );
um_fetch_user( $user_id );
UM()->permalinks()->profile_url( $changes );
um_fetch_user( $pre_user_id );
}
$this->generate_profile_slug( $user_id, true );
$this->remove_cache( $user_id );
}