728x90
반응형
시작에 앞서, 본 문서는 XE 1.11.0 버전 기준이다.
회원가입 시 멤버 추가를 처리하는 함수는 xe/modules/member/member.controller.php
에 function insertMember(&$args, $password_is_hashed = false)
함수 내에 있다. 이 함수의 마지막 부분에 mail을 보내는 코드를 넣으면 된다.
xe/modules/member/member.controller.php
의 2100번째 줄에 insertMember
함수가 정의되어 있다.
function insertMember(&$args, $password_is_hashed = false)
{
// Call a trigger (before)
$output = ModuleHandler::triggerCall('member.insertMember', 'before', $args);
if(!$output->toBool()) return $output;
// Terms and Conditions portion of the information set up by members reaffirmed
$oModuleModel = getModel('module');
$config = $oModuleModel->getModuleConfig('member');
$logged_info = Context::get('logged_info');
// If the date of the temporary restrictions limit further information on the date of
if($config->limit_day) $args->limit_date = date("YmdHis", $_SERVER['REQUEST_TIME']+$config->limit_day*60*60*24);
$args->member_srl = getNextSequence();
$args->list_order = -1 * $args->member_srl;
// Execute insert or update depending on the value of member_srl
if(!$args->user_id) $args->user_id = 't'.$args->member_srl;
// Enter the user's identity changed to lowercase
else $args->user_id = strtolower($args->user_id);
if(!$args->user_name) $args->user_name = $args->member_srl;
if(!$args->nick_name) $args->nick_name = $args->member_srl;
// Control of essential parameters
if($args->allow_mailing!='Y') $args->allow_mailing = 'N';
if($args->denied!='Y') $args->denied = 'N';
if(!$args->allow_message || ($args->allow_message && !in_array($args->allow_message, array('Y','N','F')))) $args->allow_message = 'Y';
if($logged_info->is_admin == 'Y')
{
if($args->is_admin!='Y') $args->is_admin = 'N';
}
else
{
unset($args->is_admin);
}
list($args->email_id, $args->email_host) = explode('@', $args->email_address);
// Sanitize user ID, username, nickname, homepage, blog
$args->user_id = htmlspecialchars($args->user_id, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->user_name = htmlspecialchars($args->user_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->nick_name = htmlspecialchars($args->nick_name, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->homepage = htmlspecialchars($args->homepage, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
$args->blog = htmlspecialchars($args->blog, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
if($args->homepage && !preg_match("/^[a-z]+:\/\//i",$args->homepage)) $args->homepage = 'http://'.$args->homepage;
if($args->blog && !preg_match("/^[a-z]+:\/\//i",$args->blog)) $args->blog = 'http://'.$args->blog;
// Create a model object
$oMemberModel = getModel('member');
// Check password strength
if($args->password && !$password_is_hashed)
{
if(!$oMemberModel->checkPasswordStrength($args->password, $config->password_strength))
{
$message = Context::getLang('about_password_strength');
return new BaseObject(-1, $message[$config->password_strength]);
}
$args->password = $oMemberModel->hashPassword($args->password);
}
elseif(!$args->password)
{
unset($args->password);
}
if($args->find_account_answer && !$password_is_hashed)
{
$args->find_account_answer = $oMemberModel->hashPassword($args->find_account_answer);
}
elseif(!$args->find_account_answer)
{
unset($args->find_account_answer);
}
// Check if ID is prohibited
if($oMemberModel->isDeniedID($args->user_id))
{
return new BaseObject(-1,'denied_user_id');
}
// Check if ID is duplicate
$member_srl = $oMemberModel->getMemberSrlByUserID($args->user_id);
if($member_srl)
{
return new BaseObject(-1,'msg_exists_user_id');
}
// Check if nickname is prohibited
if($oMemberModel->isDeniedNickName($args->nick_name))
{
return new BaseObject(-1,'denied_nick_name');
}
// Check if nickname is duplicate
$member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
if($member_srl)
{
return new BaseObject(-1,'msg_exists_nick_name');
}
// Check if email address is duplicate
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address);
if($member_srl)
{
return new BaseObject(-1,'msg_exists_email_address');
}
// Insert data into the DB
$args->list_order = -1 * $args->member_srl;
if(!$args->user_id) $args->user_id = 't'.$args->member_srl;
if(!$args->user_name) $args->user_name = $args->member_srl;
$oDB = &DB::getInstance();
$oDB->begin();
$output = executeQuery('member.insertMember', $args);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
if(is_array($args->group_srl_list)) $group_srl_list = $args->group_srl_list;
else $group_srl_list = explode('|@|', $args->group_srl_list);
// If no value is entered the default group, the value of group registration
if(!$args->group_srl_list)
{
$columnList = array('site_srl', 'group_srl');
$default_group = $oMemberModel->getDefaultGroup(0, $columnList);
if($default_group)
{
// Add to the default group
$output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
}
// If the value is the value of the group entered the group registration
}
else
{
for($i=0;$i<count($group_srl_list);$i++)
{
$output = $this->addMemberToGroup($args->member_srl,$group_srl_list[$i]);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
}
}
$member_config = $oModuleModel->getModuleConfig('member');
// When using email authentication mode (when you subscribed members denied a) certified mail sent
if($args->denied == 'Y')
{
// Insert data into the authentication DB
$oPassword = new Password();
$auth_args = new stdClass();
$auth_args->user_id = $args->user_id;
$auth_args->member_srl = $args->member_srl;
$auth_args->new_password = $args->password;
$auth_args->auth_key = $oPassword->createSecureSalt(40);
$auth_args->is_register = 'Y';
$output = executeQuery('member.insertAuthMail', $auth_args);
if(!$output->toBool())
{
$oDB->rollback();
return $output;
}
$this->_sendAuthMail($auth_args, $args);
}
// Call a trigger (after)
if($output->toBool())
{
$trigger_output = ModuleHandler::triggerCall('member.insertMember', 'after', $args);
if(!$trigger_output->toBool())
{
$oDB->rollback();
return $trigger_output;
}
}
$oDB->commit(true);
$output->add('member_srl', $args->member_srl);
return $output;
}
이 함수의 마지막 부분(2292번째 줄) return $output;
바로 위에 다음 코드를 삽입한다.
// Send a mail
$oMail = new Mail();
$oMail->setTitle("메일 제목");
$oMail->setContent("메일 내용");
$oMail->setSender( $member_config->webmaster_name?$member_config->webmaster_name:'webmaster', $member_config->webmaster_email );
$oMail->setReceiptor( $member_config->webmaster_name?$member_config->webmaster_name:'webmaster', $member_config->webmaster_email );
$oMail->send();
"메일 제목"
과 "메일 내용"
부분은 알아서 수정한다.
만약 관리자뿐만 아니라 다른 여러 사람들에게 알리려면 숨은 참조 기능을 이용한다. $oMail->setBCC('aaa@aaa.com,bbb@bbb.com');
을 추가로 넣어주면 된다. 각 이메일은 ,
로 구분하여 적는다.
728x90
반응형