Add option to allow spaces in nick_name

This commit is contained in:
Kijin Sung 2025-12-17 16:59:27 +09:00
parent f3ff338711
commit 7bbb03d835
5 changed files with 50 additions and 19 deletions

View file

@ -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.';

View file

@ -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 = '여러 회원이 동일한 닉네임을 사용하는 것을 허용합니다. 주의: 잘못 사용할 경우 혼란이 발생할 수 있습니다.';

View file

@ -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))
{
$args->{$val} = utf8_normalize_spaces(utf8_clean(html_entity_decode($args->{$val})));
if (isset($config->nickname_spaces) && $config->nickname_spaces === 'Y')
{
$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);

View file

@ -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->{$val} = utf8_normalize_spaces(utf8_clean(html_entity_decode($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->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->{$val} = utf8_normalize_spaces(utf8_clean(html_entity_decode($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->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])));
}

View file

@ -83,6 +83,7 @@
<label class="x_inline" for="nickname_symbols_list"><input type="radio" name="nickname_symbols" id="nickname_symbols_list" value="LIST" checked="checked"|cond="$config->nickname_symbols == 'LIST'"/> {$lang->cmd_nickname_symbols_list}</label>
<input type="text" name="nickname_symbols_allowed_list" value="{$config->nickname_symbols_allowed_list ?: ''}" />
<p class="x_help-block">{$lang->about_nickname_symbols}</p>
<label for="nickname_spaces"><input type="checkbox" name="nickname_spaces" id="nickname_spaces" value="Y" checked="checked"|cond="$config->nickname_spaces == 'Y'" /> {$lang->cmd_nickname_allow_spaces}</label>
</div>
</div>
<div class="x_control-group" style="display:none"|cond="$config->allow_duplicate_nickname != 'Y'">