웹마스터 팁
레벨에 따라 자동으로 그룹 변경하기
2007.12.29 11:43
현재 제로보드XE는 제로보드4와는 달리 게시판에 대한 접근권한이 레벨별이 아닌 그룹별로 지정이 되어 있습니다. 레벨에 따라 권한을 지정하고 싶으신 분들을 위한 방법중에 하나입니다. |
안녕하세요..
지연아빠입니다.
까오천사님의 "회원에게 만기일주기"와 똑띠님의 로그인스킨중 포인트와 레벨을 표시하는 부분을 참고하였습니다.
이것이 정상적으로 작동하기 위해서는 관리-회원-그룹관리에 준회원이 기본으로 설정되어 있어야 합니다.
modules/member/member.controller.php 파일을 엽니다.
1225라인 아래에 다음과 같은 코드를 추가합니다.
//레벨에 따라 그룹 설정 추가 시작 $oPointModel = &getModel('point'); $point = $oPointModel->getPoint($member_info->member_srl); $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $level = $oPointModel->getLevel($point, $config->level_step); if(intval($level)>0) { $rok_args->member_srl = $member_info->member_srl; $rok_args->group_srl = 3; // 1.관리회원,2.준회원,3.정회원 $output = executeQuery('member.addMemberToGroup',$rok_args); if(!$output->toBool()) return $output; } //레벨에 따라 그룹 설정 추가 끝
코드를 보시면 이해가 갈것으로 생각됩니다.
1233라인에 보시면 level이 0보다 크면 즉 레벨이 1이상이면 정회원 그룹에 추가하도록 설정된 것입니다.
1235라인에 보시면 그룹번호를 지정하는데 1,2,3번은 정해져 있고 추가로 설정한 그룹이 있다면 그룹번호를 입력해주시면 됩니다.
1236라인에 보시면 $output = executeQuery('member.addMemberToGroup',$rok_args); 이라고 있는데 이것은 그룹에 추가하는것이고
원하신다면 member.deleteMemberGroupMember과 같이 써서 반대로 그룹에서 삭제할수 있습니다.
코드가 어렵지 않으니 if문만 잘 사용하신다면 얼마든지 응용이 가능하리라 생각됩니다.
댓글 11
-
hyunwe
2007.12.29 18:14
-
hyunwe
2007.12.29 18:29
소스 보다가 궁금한게 생겼는데
운영자나 관리 그룹은 제외되는거 맞죠?..
저 기능이라면 맨위에 준회원 그룹인지 확인해서
그 그룹만 돌려주는게 좋을것 같은데
저 소스에 그런 기능이 있나요?;; -
지연아빠
2007.12.30 13:05
저 코드에 운영자나 관리그룹은 제외하는 기능은 없습니다.
운영자나 관리그룹은 당연히 정회원 그룹에 포함되어야 하지 않을까요?
저 코드를 그냥 쓰신다면 회원이 로그인을 하게 될때 레벨이 1이상이면 무조건 정회원 그룹에 포함시키도록 하는것입니다.
원하시는대로 코드를 수정하여 쓰시면 될것 같습니다. -
우갱™
2007.12.30 04:41
와우~ 추천합니다! 이 기능이 제로보드xe에 기본기능으로 들어갔으면 좋겠군요.
전부터 이런 기능이 있으면 좋겠다고 생각하던 중이었는데! -
지연아빠
2007.12.30 14:20
http://trac.zeroboard.com/trac/ticket/318
이미 티켓에 등록된 것인데 언제 적용될지는 모르겠습니다.
커미터분들이 문제점에 대한 해결이 끝나면 건의사항에 대한 부분도 신경 써주시겠죠...^^ -
yeosuk
2008.01.05 11:51
님의 도움으로 잘 사용하고 있습니다...우선 감사 드리고요....
그룹이 변경은 되는데...이전에 소속되어 있던 그룹에도 속해 있네요....
이전에 속해 있던 그룹에서는 자동으로 빠져나오게는 못 하나요? -
지연아빠
2008.01.05 15:52
if(intval($level)>0)
{ $rok_args->member_srl = $member_info->member_srl;
$rok_args->group_srl = 3; // 1.관리회원,2.준회원,3.정회원
$output = executeQuery('member.addMemberToGroup',$rok_args); //정회원 그룹에 추가
$rok_args->group_srl = 2; // 1.관리회원,2.준회원,3.정회원
$output = executeQuery('member.deleteMemberGroupMember',$rok_args); //준회원 그룹에서 삭제if(!$output->toBool()) return $output;
}
이렇게 하시면 됩니다. 레벨이 1이상이면 정회원 그룹에 추가하고 준회원 그룹에서 삭제합니다 -
pr_daisy
2008.01.08 09:34
저만 그런지는 모르겠지만;(제가잘못한듯; 처음해보는거라;)
저대로 추가해서 파일을 올렸더니 홈페이지 자체가 안뜨네요;;ㄷㄷ -
지연아빠
2008.01.08 15:06
-
워킹맘
2008.01.14 15:59
좋은 팁 감사합니다...
덕분에 오랜 고민을 해결하였습니다.. ^^ -
지연아빠
2009.01.31 18:21
현재는 자동으로 레벨에 따라 그룹이 변경되는 기능이 구현되어 있습니다.
우오.... 꼭 필요한 팁이었습니다.
이걸 토대로 레벨별로 연구해봐야겠네요...^ ^