diff --git a/modules/member/lang/en.php b/modules/member/lang/en.php
index a5d4cbbbf..c47af54fc 100644
--- a/modules/member/lang/en.php
+++ b/modules/member/lang/en.php
@@ -120,6 +120,8 @@ $lang->cmd_trace_comment = 'Trace Written Comments';
$lang->cmd_view_scrapped_document = 'Scraps';
$lang->cmd_view_saved_document = 'Saved Articles';
$lang->cmd_send_email = 'Send Mail';
+$lang->cmd_allow_duplicate_nickname = 'Allow Duplicate Nicknames';
+$lang->about_allow_duplicate_nickname = 'Allow more than one member to use the same nickname.';
$lang->msg_email_not_exists = 'You have entered an invalid email address.';
$lang->msg_alreay_scrapped = 'This article is already scrapped.';
$lang->msg_folder_alreay_exists = 'A folder with the same name already exists.';
diff --git a/modules/member/lang/ko.php b/modules/member/lang/ko.php
index da50d6a5e..90f707169 100644
--- a/modules/member/lang/ko.php
+++ b/modules/member/lang/ko.php
@@ -124,6 +124,8 @@ $lang->cmd_view_saved_document = '저장함 보기';
$lang->cmd_send_email = '메일 보내기';
$lang->cmd_modify_nickname_log = '닉네임 변경 기록';
$lang->cmd_member_profile_view = '회원 프로필사진 보이기';
+$lang->cmd_allow_duplicate_nickname = '닉네임 중복 허용';
+$lang->about_allow_duplicate_nickname = '여러 회원이 동일한 닉네임을 사용하는 것을 허용합니다. 주의: 잘못 사용할 경우 혼란이 발생할 수 있습니다.';
$lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다.';
$lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다.';
$lang->msg_folder_alreay_exists = '이미 존재하는 폴더 이름입니다.';
diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php
index a7d1e9fb1..d1a807022 100644
--- a/modules/member/member.admin.controller.php
+++ b/modules/member/member.admin.controller.php
@@ -185,6 +185,7 @@ class memberAdminController extends member
'password_hashing_auto_upgrade',
'password_change_invalidate_other_sessions',
'update_nickname_log',
+ 'allow_duplicate_nickname',
'member_profile_view'
);
diff --git a/modules/member/member.class.php b/modules/member/member.class.php
index e859ff8a7..425d09cc2 100644
--- a/modules/member/member.class.php
+++ b/modules/member/member.class.php
@@ -249,6 +249,15 @@ class member extends ModuleObject {
if(!$oModuleModel->getTrigger('document.getDocumentMenu', 'member', 'controller', 'triggerGetDocumentMenu', 'after')) return true;
if(!$oModuleModel->getTrigger('comment.getCommentMenu', 'member', 'controller', 'triggerGetCommentMenu', 'after')) return true;
+ // Allow duplicate nickname
+ if($config->allow_duplicate_nickname == 'Y')
+ {
+ if($oDB->isIndexExists('member', 'unique_nick_name') || !$oDB->isIndexExists('member', 'idx_nick_name'))
+ {
+ return true;
+ }
+ }
+
return false;
}
@@ -412,6 +421,19 @@ class member extends ModuleObject {
$oModuleController->insertTrigger('document.getDocumentMenu', 'member', 'controller', 'triggerGetDocumentMenu', 'after');
if(!$oModuleModel->getTrigger('comment.getCommentMenu', 'member', 'controller', 'triggerGetCommentMenu', 'after'))
$oModuleController->insertTrigger('comment.getCommentMenu', 'member', 'controller', 'triggerGetCommentMenu', 'after');
+
+ // Allow duplicate nickname
+ if($config->allow_duplicate_nickname == 'Y')
+ {
+ if($oDB->isIndexExists('member', 'unique_nick_name'))
+ {
+ $oDB->dropIndex('member', 'unique_nick_name', true);
+ }
+ if(!$oDB->isIndexExists('member', 'idx_nick_name'))
+ {
+ $oDB->addIndex('member', 'idx_nick_name', array('nick_name'));
+ }
+ }
}
/**
diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php
index f33f47b0c..f89f5077e 100644
--- a/modules/member/member.controller.php
+++ b/modules/member/member.controller.php
@@ -2365,16 +2365,18 @@ class memberController extends member
}
// Check if nickname is duplicate
- $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
- if($member_srl)
+ if($config->allow_duplicate_nickname !== 'Y')
{
- return new BaseObject(-1, 'msg_exists_nick_name');
+ $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
+ if($member_srl)
+ {
+ return new BaseObject(-1, 'msg_exists_nick_name');
+ }
}
// Check managed Email Host
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address))
{
- $config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = lang('managed_email_host');
@@ -2580,7 +2582,6 @@ class memberController extends member
// Check managed Email Host
if($logged_info->is_admin !== 'Y' && $oMemberModel->isDeniedEmailHost($args->email_address))
{
- $config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = lang('managed_email_host');
@@ -2637,11 +2638,14 @@ class memberController extends member
}
// Check if nickname is duplicate
- $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
- if($member_srl && $args->member_srl != $member_srl)
- {
- return new BaseObject(-1, 'msg_exists_nick_name');
- }
+ if($config->allow_duplicate_nickname !== 'Y')
+ {
+ $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
+ if($member_srl && $args->member_srl != $member_srl)
+ {
+ return new BaseObject(-1, 'msg_exists_nick_name');
+ }
+ }
list($args->email_id, $args->email_host) = explode('@', $args->email_address);
diff --git a/modules/member/schemas/member.xml b/modules/member/schemas/member.xml
index 100be9c7a..24a3f5374 100644
--- a/modules/member/schemas/member.xml
+++ b/modules/member/schemas/member.xml
@@ -6,7 +6,7 @@
{$lang->about_update_nickname_log}
+{$lang->about_allow_duplicate_nickname}
+