그누보드로 이전후 포인트 레벨 동기화
XE를 그누보드로 이전했습니다. 게시글은 이동하지 않은 상태입니다. 그래서 그런것인지..
예를 들어 XE때의 회원포인트가 1000이지만, 레벨구역3(600~1200)에 해당합니다.
그런데 그누보드로 이전하니 모든 회원이 레벨2입니다. 일일이 기존회원레벨 확인해서 변경해줄 수도 없고,
그누보드의 포인트레벨 정책에 따라 레벨 변경할 수 있는 방법이 있습니까?
답변 4개 / 댓글 5개
$sql = "select * from {$g5['member_table']} where mb_level < 10";
$result = sql_query($sql);
while($row = sql_fetch_array($result)){
// 조건에맞춰서 포인트별 변경할 레벨을 지정하세요
if($row['mb_point']>0 && $row['mb_point'] <=599){
$change_level = 3;
}elseif($row['mb_point']>=600 && $row['mb_point'] <=1200){
$change_level = 4;
}
sql_query("update {$g5['member_table']} set mb_level = '".$change_level."' where mb_id='".$row['mb_id']."'"); // 레벨 변경
}
위처럼 코드를 간단히 짜서 php 파일 실행 시키시면 지정된 범위안에있는
포인트 별로 레벨을 재설정 해서 update 시켜줍니다
우선 xe레벨과 그누보드 레벨 단계가 다르잖아요
그누보드는 최상위레벨이 10이니....
레벨을 xe처럼 10이상을 설정 할 것인지 정해서(그누보드에서 레벨을 더 많은 단계를 만들어 사용할 필요성을 느끼지 못하겠습니다만)
레벨을 10이상으로 설정하는 작업부터하세요<--검색하면 나옵니다
다음처럼 단계별 레벨을 만들어 실행해 주면 됩니다
반드시 회원테이블을 백업 한 후 테스트하세요
<?
include "_common.php";
$tmpArr =array('','',599,1200, 1800, 2400.................);//<--레벨별 최고 포인트
for($i=3; $i< count($tmpArr); $i++){
$p1 = $tmpArr[$i-1]+1; $p2 = $tmpArr[$i];
sql_query("update {$g5['member_table']} set mb_level = $i where mb_point between $p1 and $p2");
}
답변에 대한 댓글 1개
일단 회원테이블이야 아예 비워버려도 됩니다. 다시 이전시키면 되니까요.
그럼 순서를 적어보면,
1. 회원테이블 비운다(관리자빼고)
2. 레벨만든다. 저는 이윰테마를 씌웠는데, 그누레벨은 2부터있고, 이윰테마는 또 1부터 그룹식을 나눠져있더군요. 그래서 동일하게 2부터 8까지만 하던지 하려고 하고요. 아니면 이윰테마의 레벨 설정은 사용하지 않음으로.. (xe 도 10이상 갈 필요성 못느꼈습니다)
3. 회원테이벌 이전( XE--> 그누)
4. 레벨 php 실행
요렇게 하면 되겠지요?
제일 상단에
include_once('./_common.php');
이거 넣어주셔야 합니다
답변에 대한 댓글 2개
DB에는 레벨이 변경이 되어있지만, 그누관리자에 가보면,
1. 일단은 레벨 변경하는 부분이라든가 그런게 혹시 어디에 있을까요?
2. 그누관리자-회원관리에 가보면, 회원포인트옆에 권한이란 부분이 있더군요.권한이 1~3까지만 표시가 되어있는데, 저는 레벨=권한 이라고 첨에 생각을 했습니다. 그런데 그런게 아닌것 같네요.
레벨은 6이지만 권한은 1이고,, 게시판접근은 레벨이 아닌 권한에 따른 접근 여부로 되어있는것 같네요. 권한을 포인트레벨과 같이 1~6까지 변경도 가능한지요? 가능하다면 관리부분에서 가능할까요?
저는 레벨에 따른 게시판 접근을 제한하고 싶은데 말입니다. ㅠㅠ.
답변을 작성하려면 로그인이 필요합니다.
1 <?php
2 $sql = "select * from {$g5['member_table']} where mb_level < 10";
3 $result = sql_query($sql);
.
.
.
.
?>
결과
Fatal error: Uncaught Error: Call to undefined function sql_query() in 내.php:3 Stack trace: #0 {main} thrown in 내.php on line 3