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 @@ + + diff --git a/modules/member/tpl/signup_config.html b/modules/member/tpl/signup_config.html index 451c80291..b79423e4b 100644 --- a/modules/member/tpl/signup_config.html +++ b/modules/member/tpl/signup_config.html @@ -157,10 +157,17 @@ -
- - - + +

+ + + +

+

+ + + +