좀 전에 질문 올렸다가 살짝 지웠는데요. (갑자기 성공한 줄 알고요ㅋㅋㅋ)
제목 그대로 회원가입 받을 때,
가입자가 선택한 확장변수(예. univ)의 변수값(예. NYU)과 일치하는
회원그룹으로 자동 분류(예. 'NYU' 그룹)하는 애드온입니다.
오토씽님의 회원가입시 그룹 선택 애드온이 있긴 합니다만, 제 사이트에선 뭔가 작동을 안 하는 것 같아 따로 좀 만들어봤어요 :)
<?php if ( !defined('__XE__') ) exit(); if ( $called_position !== 'after_module_proc' || ( Context::get('act') !== 'procMemberInsert' && Context::get('act') !== 'procSocialxeInputAddInfo' ) ) return; $gid = $addon_info->extra_key; if ( !$gid ) return; $obj = Context::getRequestVars(); $oMemberModel = getModel('member'); $groups = $oMemberModel->getGroups(); $group_srl_list = array(); foreach ( $groups as $group ) { if ( $group->is_admin !== 'Y' && $group->title === $obj->$gid ) { $group_srl_list[] = $group->group_srl; } } if ( empty($group_srl_list) ) return; $member_srl = $oMemberModel->getMemberSrlByNickName($obj->nick_name); debugPrint($member_srl); $args = new stdClass; $args->member_srl = $member_srl; $oDB = &DB::getInstance(); $oDB->begin(); $output = executeQuery('member.deleteMemberGroupMember', $args); if( !$output->toBool() ) { $oDB->rollback(); return $output; } $oMemberController = getController('member'); foreach ( $group_srl_list as $group_srl ) { $oMemberController->addMemberToGroup($member_srl, $group_srl); if( !$output->toBool() ) { $oDB->rollback(); return $output; } } $oDB->commit(); $oMemberController->_clearMemberCache($member_srl, 0); ?>
그런데 이게 일반회원 가입 때는 잘 되는데,
소셜XE로 가입하면 member_srl을 받아오질 못하더라구요.
위에 하이라이트된 29행 디버깅 결과, 일반가입 때는 값이 찍히고 소셜XE 때는 값이 비어 있어요.
어째서 이런 차이가 생기는 걸까요 흐음..