From f0f414db1c15a63aefc6d4f6ea0e2a1a9418f653 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 22 Jun 2023 22:29:36 +0900 Subject: [PATCH] Fix #2126 show more descriptive message if member mid is already used --- modules/member/lang/en.php | 1 + modules/member/lang/ko.php | 1 + modules/member/member.admin.controller.php | 8 +-- modules/member/member.class.php | 57 +++++++++++++--------- 4 files changed, 39 insertions(+), 28 deletions(-) diff --git a/modules/member/lang/en.php b/modules/member/lang/en.php index ddbfdb2ba..314749d36 100644 --- a/modules/member/lang/en.php +++ b/modules/member/lang/en.php @@ -52,6 +52,7 @@ $lang->group_image_mark_max_width = 'Max Width'; $lang->group_image_mark_max_height = 'Max Height'; $lang->signature_max_height = 'Max Signature Height'; $lang->cmd_force_member_mid = 'Force'; +$lang->msg_exists_member_mid = 'The URL \'%s\' required by the member module is already used by another module. Please change the URL of the other module and try again.'; $lang->enable_join = 'Accept New Members'; $lang->enable_join_only_with_url_key = 'Only with valid URL key'; $lang->enable_join_url_key = 'URL Key'; diff --git a/modules/member/lang/ko.php b/modules/member/lang/ko.php index 9d08d5f8d..2ad48c31c 100644 --- a/modules/member/lang/ko.php +++ b/modules/member/lang/ko.php @@ -52,6 +52,7 @@ $lang->group_image_mark_max_width = '가로 제한 길이'; $lang->group_image_mark_max_height = '세로 제한 길이'; $lang->signature_max_height = '서명 높이 제한'; $lang->cmd_force_member_mid = '강제 적용'; +$lang->msg_exists_member_mid = '회원 모듈이 요구하는 \'%s\' URL은 다른 모듈이 이미 사용하고 있습니다. 회원 모듈과 충돌하는 URL을 가진 게시판이나 페이지의 주소를 변경해 주십시오.'; $lang->enable_join = '회원 가입 허가'; $lang->enable_join_only_with_url_key = 'URL 키가 일치하는 경우에만 허가'; $lang->enable_join_url_key = 'URL 키'; diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index f02bd720d..ee12cfb97 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -257,13 +257,9 @@ class MemberAdminController extends Member return new BaseObject(-1, 'msg_limit_mid'); } - if ($config->mid) + if (!empty($config->mid) && $this->checkMid($config->mid) == 1) { - $module_info = ModuleModel::getModuleInfoByMid($config->mid); - if (!$module_info || $module_info->module !== $this->module) - { - $module_info = null; - } + $module_info = \ModuleModel::getModuleInfoByMid($config->mid); } else { diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 517dfbe33..9443f440b 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -182,12 +182,7 @@ class Member extends ModuleObject // Check mid $config = ModuleModel::getModuleConfig('member'); - if (empty($config->mid)) - { - return true; - } - $mid_info = ModuleModel::getModuleInfoByMid($config->mid); - if (!$mid_info || $mid_info->module !== $this->module) + if (empty($config->mid) || $this->checkMid($config->mid) !== 1) { return true; } @@ -437,20 +432,7 @@ class Member extends ModuleObject $changed = false; // Check mid - $create_mid = false; - if (empty($config->mid)) - { - $create_mid = true; - } - else - { - $mid_info = ModuleModel::getModuleInfoByMid($config->mid); - if (!$mid_info || $mid_info->module !== $this->module) - { - $create_mid = true; - } - } - if ($create_mid) + if (empty($config->mid) || $this->checkMid($config->mid) !== 1) { $config->mid = 'member'; $output = $this->createMid($config->mid, $config->skin ?: 'default', $config->mskin ?: 'default'); @@ -616,6 +598,33 @@ class Member extends ModuleObject } } + /** + * Check mid + * + * This method returns 0 if the mid doesn't exist, + * 1 if the mid exists and belongs to this module, + * and -1 if the mid exists but belongs to a different module. + * + * @param string $mid + * @return int + */ + public function checkMid($mid = 'member') + { + $module_info = \ModuleModel::getModuleInfoByMid($mid); + if (!$module_info) + { + return 0; + } + elseif ($module_info->module === $this->module) + { + return 1; + } + else + { + return -1; + } + } + /** * Create mid * @@ -626,11 +635,15 @@ class Member extends ModuleObject */ public function createMid($mid = 'member', $skin = 'default', $mskin = 'default') { - $module_info = \ModuleModel::getModuleInfoByMid($mid); - if ($module_info && $module_info->module === $this->module) + $check = $this->checkMid($mid); + if ($check == 1) { return new BaseObject(); } + if ($check == -1) + { + return new BaseObject(-1, sprintf(lang('msg_exists_member_mid'), $mid)); + } return ModuleController::getInstance()->insertModule((object)array( 'mid' => $mid,