diff --git a/modules/member/lang/en.php b/modules/member/lang/en.php index 305947b29..874008eb8 100644 --- a/modules/member/lang/en.php +++ b/modules/member/lang/en.php @@ -152,6 +152,7 @@ $lang->cmd_modify_nickname_allow = 'Allow Nickname Change'; $lang->cmd_modify_nickname_log = 'Nickname Change Log'; $lang->cmd_nickname_symbols = 'Allow Symbols in Nickname'; $lang->cmd_nickname_symbols_list = 'Only Allow:'; +$lang->cmd_nickname_allow_spaces = 'Allow Spaces'; $lang->cmd_member_profile_view = 'Show member profile picture'; $lang->cmd_allow_duplicate_nickname = 'Allow Duplicate Nicknames'; $lang->about_allow_duplicate_nickname = 'Allow more than one member to use the same nickname.'; diff --git a/modules/member/lang/ko.php b/modules/member/lang/ko.php index d49ba42ea..fd29a4d81 100644 --- a/modules/member/lang/ko.php +++ b/modules/member/lang/ko.php @@ -154,6 +154,7 @@ $lang->cmd_modify_nickname_allow = '닉네임 변경 허용'; $lang->cmd_modify_nickname_log = '닉네임 변경 기록'; $lang->cmd_nickname_symbols = '닉네임에 특수문자 허용'; $lang->cmd_nickname_symbols_list = '다음의 문자만 허용:'; +$lang->cmd_nickname_allow_spaces = '띄어쓰기 허용'; $lang->cmd_member_profile_view = '회원 프로필사진 보이기'; $lang->cmd_allow_duplicate_nickname = '닉네임 중복 허용'; $lang->about_allow_duplicate_nickname = '여러 회원이 동일한 닉네임을 사용하는 것을 허용합니다. 주의: 잘못 사용할 경우 혼란이 발생할 수 있습니다.'; diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index c9aebbfae..1ffb3a725 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -127,18 +127,26 @@ class MemberAdminController extends Member } // remove whitespace - foreach(['user_id', 'nick_name', 'email_address'] as $val) + foreach (['user_id', 'email_address'] as $val) { - if(isset($args->{$val})) + if (isset($args->{$val})) { $args->{$val} = preg_replace('/[\pZ\pC]+/u', '', utf8_clean(html_entity_decode($args->{$val}))); } } - foreach(['user_name'] as $val) + if (isset($args->user_name)) { - if(isset($args->{$val})) + $args->user_name = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->user_name))); + } + if (isset($args->nick_name)) + { + if (isset($config->nickname_spaces) && $config->nickname_spaces === 'Y') { - $args->{$val} = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->{$val}))); + $args->nick_name = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->nick_name))); + } + else + { + $args->nick_name = preg_replace('/[\pZ\pC]+/u', '', utf8_clean(html_entity_decode($args->nick_name))); } } @@ -256,6 +264,7 @@ class MemberAdminController extends Member 'update_nickname_log', 'nickname_symbols', 'nickname_symbols_allowed_list', + 'nickname_spaces', 'allow_duplicate_nickname', 'member_profile_view' ); @@ -347,6 +356,7 @@ class MemberAdminController extends Member $args->nickname_symbols = 'Y'; } $args->nickname_symbols_allowed_list = utf8_trim($args->nickname_symbols_allowed_list); + $args->nickname_spaces = (isset($args->nickname_spaces) && $args->nickname_spaces === 'Y') ? 'Y' : 'N'; $oModuleController = getController('module'); $output = $oModuleController->updateModuleConfig('member', $args); diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 09e6eff0f..f5f972cdf 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -796,25 +796,34 @@ class MemberController extends Member } // remove whitespace - foreach(['user_id', 'nick_name', 'email_address'] as $val) + foreach (['user_id', 'email_address'] as $val) { - if(isset($args->{$val})) + if (isset($args->{$val})) { $args->{$val} = preg_replace('/[\pZ\pC]+/u', '', utf8_clean(html_entity_decode($args->{$val}))); } } - foreach(['user_name'] as $val) + if (isset($args->user_name)) { - if(isset($args->{$val})) + $args->user_name = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->user_name))); + } + if (isset($args->nick_name)) + { + if (isset($config->nickname_spaces) && $config->nickname_spaces === 'Y') { - $args->{$val} = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->{$val}))); + $args->nick_name = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->nick_name))); } + else + { + $args->nick_name = preg_replace('/[\pZ\pC]+/u', '', utf8_clean(html_entity_decode($args->nick_name))); + } + } // Check symbols in nickname if($config->nickname_symbols === 'N') { - if(preg_match('/[^\pL\d]/u', $args->nick_name, $matches)) + if(preg_match('/[^\pL\d\s]/u', $args->nick_name, $matches)) { throw new Rhymix\Framework\Exception(sprintf(lang('msg_invalid_symbol_in_nickname'), escape($matches[0]))); } @@ -822,7 +831,7 @@ class MemberController extends Member elseif($config->nickname_symbols === 'LIST') { $list = preg_quote($config->nickname_symbols_allowed_list, '/'); - if(preg_match('/[^\pL\d' . $list . ']/u', $args->nick_name, $matches)) + if(preg_match('/[^\pL\d\s' . $list . ']/u', $args->nick_name, $matches)) { throw new Rhymix\Framework\Exception(sprintf(lang('msg_invalid_symbol_in_nickname'), escape($matches[0]))); } @@ -1098,19 +1107,28 @@ class MemberController extends Member $args->extra_vars = serialize($extra_vars); // remove whitespace - foreach(['user_id', 'nick_name', 'email_address'] as $val) + foreach (['user_id', 'email_address'] as $val) { - if(isset($args->{$val})) + if (isset($args->{$val})) { $args->{$val} = preg_replace('/[\pZ\pC]+/u', '', utf8_clean(html_entity_decode($args->{$val}))); } } - foreach(['user_name'] as $val) + if (isset($args->user_name)) { - if(isset($args->{$val})) + $args->user_name = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->user_name))); + } + if (isset($args->nick_name)) + { + if (isset($config->nickname_spaces) && $config->nickname_spaces === 'Y') { - $args->{$val} = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->{$val}))); + $args->nick_name = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->nick_name))); } + else + { + $args->nick_name = preg_replace('/[\pZ\pC]+/u', '', utf8_clean(html_entity_decode($args->nick_name))); + } + } // Check if nickname change is allowed @@ -1134,7 +1152,7 @@ class MemberController extends Member // Check symbols in nickname if($config->nickname_symbols === 'N') { - if(preg_match('/[^\pL\d]/u', $args->nick_name, $matches)) + if(preg_match('/[^\pL\d\s]/u', $args->nick_name, $matches)) { throw new Rhymix\Framework\Exception(sprintf(lang('msg_invalid_symbol_in_nickname'), escape($matches[0]))); } @@ -1142,7 +1160,7 @@ class MemberController extends Member elseif($config->nickname_symbols === 'LIST') { $list = preg_quote($config->nickname_symbols_allowed_list, '/'); - if(preg_match('/[^\pL\d' . $list . ']/u', $args->nick_name, $matches)) + if(preg_match('/[^\pL\d\s' . $list . ']/u', $args->nick_name, $matches)) { throw new Rhymix\Framework\Exception(sprintf(lang('msg_invalid_symbol_in_nickname'), escape($matches[0]))); } diff --git a/modules/member/tpl/default_config.html b/modules/member/tpl/default_config.html index ceb2b259e..0155e3140 100644 --- a/modules/member/tpl/default_config.html +++ b/modules/member/tpl/default_config.html @@ -83,6 +83,7 @@

{$lang->about_nickname_symbols}

+