Fix #2126 show more descriptive message if member mid is already used

This commit is contained in:
Kijin Sung 2023-06-22 22:29:36 +09:00
parent fbfbaa48a5
commit f0f414db1c
4 changed files with 39 additions and 28 deletions

View file

@ -52,6 +52,7 @@ $lang->group_image_mark_max_width = 'Max Width';
$lang->group_image_mark_max_height = 'Max Height'; $lang->group_image_mark_max_height = 'Max Height';
$lang->signature_max_height = 'Max Signature Height'; $lang->signature_max_height = 'Max Signature Height';
$lang->cmd_force_member_mid = 'Force'; $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 = 'Accept New Members';
$lang->enable_join_only_with_url_key = 'Only with valid URL key'; $lang->enable_join_only_with_url_key = 'Only with valid URL key';
$lang->enable_join_url_key = 'URL Key'; $lang->enable_join_url_key = 'URL Key';

View file

@ -52,6 +52,7 @@ $lang->group_image_mark_max_width = '가로 제한 길이';
$lang->group_image_mark_max_height = '세로 제한 길이'; $lang->group_image_mark_max_height = '세로 제한 길이';
$lang->signature_max_height = '서명 높이 제한'; $lang->signature_max_height = '서명 높이 제한';
$lang->cmd_force_member_mid = '강제 적용'; $lang->cmd_force_member_mid = '강제 적용';
$lang->msg_exists_member_mid = '회원 모듈이 요구하는 \'%s\' URL은 다른 모듈이 이미 사용하고 있습니다. 회원 모듈과 충돌하는 URL을 가진 게시판이나 페이지의 주소를 변경해 주십시오.';
$lang->enable_join = '회원 가입 허가'; $lang->enable_join = '회원 가입 허가';
$lang->enable_join_only_with_url_key = 'URL 키가 일치하는 경우에만 허가'; $lang->enable_join_only_with_url_key = 'URL 키가 일치하는 경우에만 허가';
$lang->enable_join_url_key = 'URL 키'; $lang->enable_join_url_key = 'URL 키';

View file

@ -257,13 +257,9 @@ class MemberAdminController extends Member
return new BaseObject(-1, 'msg_limit_mid'); 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); $module_info = \ModuleModel::getModuleInfoByMid($config->mid);
if (!$module_info || $module_info->module !== $this->module)
{
$module_info = null;
}
} }
else else
{ {

View file

@ -182,12 +182,7 @@ class Member extends ModuleObject
// Check mid // Check mid
$config = ModuleModel::getModuleConfig('member'); $config = ModuleModel::getModuleConfig('member');
if (empty($config->mid)) if (empty($config->mid) || $this->checkMid($config->mid) !== 1)
{
return true;
}
$mid_info = ModuleModel::getModuleInfoByMid($config->mid);
if (!$mid_info || $mid_info->module !== $this->module)
{ {
return true; return true;
} }
@ -437,20 +432,7 @@ class Member extends ModuleObject
$changed = false; $changed = false;
// Check mid // Check mid
$create_mid = false; if (empty($config->mid) || $this->checkMid($config->mid) !== 1)
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)
{ {
$config->mid = 'member'; $config->mid = 'member';
$output = $this->createMid($config->mid, $config->skin ?: 'default', $config->mskin ?: 'default'); $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 * Create mid
* *
@ -626,11 +635,15 @@ class Member extends ModuleObject
*/ */
public function createMid($mid = 'member', $skin = 'default', $mskin = 'default') public function createMid($mid = 'member', $skin = 'default', $mskin = 'default')
{ {
$module_info = \ModuleModel::getModuleInfoByMid($mid); $check = $this->checkMid($mid);
if ($module_info && $module_info->module === $this->module) if ($check == 1)
{ {
return new BaseObject(); return new BaseObject();
} }
if ($check == -1)
{
return new BaseObject(-1, sprintf(lang('msg_exists_member_mid'), $mid));
}
return ModuleController::getInstance()->insertModule((object)array( return ModuleController::getInstance()->insertModule((object)array(
'mid' => $mid, 'mid' => $mid,