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->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';

View file

@ -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 키';

View file

@ -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
{

View file

@ -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,