diff --git a/modules/member/lang/en.php b/modules/member/lang/en.php
index 7a0ac8f0f..0f74e6ea2 100644
--- a/modules/member/lang/en.php
+++ b/modules/member/lang/en.php
@@ -33,6 +33,7 @@ $lang->group_order = 'Gropu Priority';
$lang->group_order_change = 'Change Group Priority';
$lang->phone_number_default_country = 'Default Country Code';
$lang->phone_number_hide_country = 'Hide Country Code Selection';
+$lang->phone_number_allow_duplicate = 'Allow Multiple Members';
$lang->signature = 'Signature';
$lang->profile_image = 'Profile Image';
$lang->profile_image_max_width = 'Max Width';
@@ -155,6 +156,8 @@ $lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the
$lang->msg_column_id_not_available = 'The ID already exists or is not usable.';
$lang->msg_exists_user_id = 'This ID already exists. Please try another one.';
$lang->msg_exists_email_address = 'This email address already exists. Please try another one.';
+$lang->msg_exists_phone_number = 'This phone number already exists. Please try another one.';
+$lang->msg_invalid_phone_number = 'The phone number you have entered is invalid.';
$lang->msg_exists_nick_name = 'This nickname already exists. Please try another one.';
$lang->msg_signup_disabled = 'You are not able to sign up';
$lang->msg_already_logged = 'You have already signed up.';
diff --git a/modules/member/lang/ko.php b/modules/member/lang/ko.php
index 388cc99d1..ed3d1eb01 100644
--- a/modules/member/lang/ko.php
+++ b/modules/member/lang/ko.php
@@ -33,6 +33,7 @@ $lang->group_order = '그룹 우선순위';
$lang->group_order_change = '그룹 우선순위 변경';
$lang->phone_number_default_country = '기본 선택 국가';
$lang->phone_number_hide_country = '국가 목록 숨김';
+$lang->phone_number_allow_duplicate = '중복 가입 허용';
$lang->signature = '서명';
$lang->profile_image = '프로필 사진';
$lang->profile_image_max_width = '가로 제한 길이';
@@ -163,6 +164,8 @@ $lang->msg_cannot_delete_admin = '관리자 아이디는 삭제할 수 없습니
$lang->msg_column_id_not_available = '이미 존재하거나 사용할 수 없는 ID입니다.';
$lang->msg_exists_user_id = '이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요.';
$lang->msg_exists_email_address = '이미 존재하는 메일 주소입니다. 다른 메일 주소를 입력해주세요.';
+$lang->msg_exists_phone_number = '이미 존재하는 전화번호입니다. 다른 전화번호를 입력해주세요.';
+$lang->msg_invalid_phone_number = '전화번호가 형식에 맞지 않습니다.';
$lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요.';
$lang->msg_signup_disabled = '회원 가입할 수 없습니다.';
$lang->msg_already_logged = '이미 회원 가입을 한 상태입니다.';
diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php
index bedc7d882..1c87adbad 100644
--- a/modules/member/member.admin.controller.php
+++ b/modules/member/member.admin.controller.php
@@ -300,7 +300,7 @@ class memberAdminController extends member
'limit_day_description',
'emailhost_check',
'redirect_url',
- 'phone_number_default_country', 'phone_number_hide_country',
+ 'phone_number_default_country', 'phone_number_hide_country', 'phone_number_allow_duplicate',
'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image_max_filesize',
'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name_max_filesize',
'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark_max_filesize',
@@ -330,6 +330,7 @@ class memberAdminController extends member
$args->phone_number_default_country = preg_replace('/[^0-9-]/', '', $args->phone_number_default_country);
$args->phone_number_hide_country = $args->phone_number_hide_country == 'Y' ? 'Y' : 'N';
+ $args->phone_number_allow_duplicate = $args->phone_number_allow_duplicate == 'Y' ? 'Y' : 'N';
$args->profile_image = $args->profile_image ? 'Y' : 'N';
$args->image_name = $args->image_name ? 'Y' : 'N';
$args->image_mark = $args->image_mark ? 'Y' : 'N';
diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php
index ccf8e5363..8629a8736 100644
--- a/modules/member/member.controller.php
+++ b/modules/member/member.controller.php
@@ -2538,13 +2538,20 @@ class memberController extends member
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', $args->phone_country), '-');
$args->phone_number = preg_replace('/[^0-9]/', '', $args->phone_number);
$args->phone_type = '';
- if(!$args->phone_country && $config->phone_number_default_country)
+ if ($config->phone_number_hide_country || (!$args->phone_country && $config->phone_number_default_country))
{
$args->phone_country = $config->phone_number_default_country;
}
if ($args->phone_country == '82')
{
- $args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
+ if (Rhymix\Framework\Korea::isValidPhoneNumber($args->phone_number))
+ {
+ $args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
+ }
+ else
+ {
+ return new BaseObject(-1, 'msg_invalid_phone_number');
+ }
}
}
else
@@ -2561,6 +2568,16 @@ class memberController extends member
return new BaseObject(-1, 'msg_exists_email_address');
}
+ // Check if phone number is duplicate
+ if ($config->phone_number_allow_duplicate !== 'Y' && $args->phone_number)
+ {
+ $member_srl = $oMemberModel->getMemberSrlByPhoneNumber($args->phone_number, $args->phone_country);
+ if($member_srl)
+ {
+ return new BaseObject(-1, 'msg_exists_phone_number');
+ }
+ }
+
// Insert data into the DB
$args->list_order = -1 * $args->member_srl;
@@ -2750,13 +2767,20 @@ class memberController extends member
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', $args->phone_country), '-');
$args->phone_number = preg_replace('/[^0-9]/', '', $args->phone_number);
$args->phone_type = '';
- if(!$args->phone_country && $config->phone_number_default_country)
+ if ($config->phone_number_hide_country || (!$args->phone_country && $config->phone_number_default_country))
{
$args->phone_country = $config->phone_number_default_country;
}
if ($args->phone_country == '82')
{
- $args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
+ if (Rhymix\Framework\Korea::isValidPhoneNumber($args->phone_number))
+ {
+ $args->phone_number = Rhymix\Framework\Korea::formatPhoneNumber($args->phone_number);
+ }
+ else
+ {
+ return new BaseObject(-1, 'msg_invalid_phone_number');
+ }
}
}
else
@@ -2802,6 +2826,16 @@ class memberController extends member
$args->user_id = $orgMemberInfo->user_id;
}
+ // Check if phone number is duplicate
+ if ($config->phone_number_allow_duplicate !== 'Y' && $args->phone_number)
+ {
+ $member_srl = $oMemberModel->getMemberSrlByPhoneNumber($args->phone_number, $args->phone_country);
+ if ($member_srl && $args->member_srl != $member_srl)
+ {
+ return new BaseObject(-1, 'msg_exists_phone_number');
+ }
+ }
+
// Check if ID is prohibited
if($logged_info->is_admin !== 'Y' && $args->user_id && $oMemberModel->isDeniedID($args->user_id))
{
diff --git a/modules/member/member.model.php b/modules/member/member.model.php
index 42904ba6c..3d542869a 100644
--- a/modules/member/member.model.php
+++ b/modules/member/member.model.php
@@ -453,6 +453,18 @@ class memberModel extends member
return $output->data->member_srl;
}
+ /**
+ * @brief Get member_srl corresponding to phone number
+ */
+ function getMemberSrlByPhoneNumber($phone_number, $phone_country = null)
+ {
+ $args = new stdClass();
+ $args->phone_number = $phone_number;
+ $args->phone_country = $phone_country;
+ $output = executeQueryArray('member.getMemberSrl', $args);
+ return count($output->data) ? array_first($output->data)->member_srl : null;
+ }
+
/**
* @brief Get member_srl corresponding to nickname
*/
diff --git a/modules/member/queries/getMemberSrl.xml b/modules/member/queries/getMemberSrl.xml
index 7d7382f53..0898373cf 100644
--- a/modules/member/queries/getMemberSrl.xml
+++ b/modules/member/queries/getMemberSrl.xml
@@ -8,6 +8,8 @@
-
-
-
+
+
+ + + +
++ + + +