그누보드4 아이디 변경 함수 - 모든 테이블의 아이디를 변경

munilive
munilive

그누보드 사용시 아이디값을 이메일등으로 사용하거나 아이디를 변경하게 하도록 하는 사이트들이 존재 한다.
그누보드에서는 아이디 값이 게시판테이블에서나 포인트등 에서 회원을 구분하는 유일한 키값으로 사용하기에 아이디가 변경되면 관련된 모든 테이블의 아이디를 변경해줘야 아이디를 변경한 회원이 이전에 사용하던 내역을 함께 변경하여 관리 할 수 있다.

아래 함수는 그누보드에서 기본적으로 제공되는 테이블만 모아 아이디(mb_id)를 변경할 경우에 함수 호출 한번으로 모든 DB 테이블의 mb_id 값을 원하는 값으로 변경한다.

//아이디를 변경처리 합니다.
function changeMemberID($mb_id, $new_mb_id) {
    global $g4, $member;

    $mb = get_member($mb_id);

    if(empty($mb['mb_id'])) return false;

    //회원테이블 아이디 변경
    $sql_update = " UPDATE {$g4['member_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //관리권한테이블
    $sql_update = " UPDATE {$g4['auth_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //그룹테이블
    $sql_update = " UPDATE {$g4['group_table']} SET gr_admin = '{$new_mb_id}' WHERE gr_admin = '{$mb_id}' ";
    sql_query($sql_update);
    //그룹멤버테이블
    $sql_update = " UPDATE {$g4['group_member_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //게시판설정테이블
    $sql_update = " UPDATE {$g4['board_table']} SET bo_admin = '{$new_mb_id}' WHERE bo_admin = '{$mb_id}' ";
    sql_query($sql_update);
    //추천/비추천 테이블
    $sql_update = " UPDATE {$g4['board_good_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //새글관리 테이블
    $sql_update = " UPDATE {$g4['board_new_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //로그인테이블
    $sql_update = " UPDATE {$g4['login_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //메모테이블
    $sql_update = " UPDATE {$g4['memo_table']} SET me_recv_mb_id = '{$new_mb_id}' WHERE me_recv_mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    $sql_update = " UPDATE {$g4['memo_table']} SET me_send_mb_id = '{$new_mb_id}' WHERE me_send_mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    //게시판스크랩
    $sql_update = " UPDATE {$g4['scrap_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);

    //투표테이블
    $sql = " SELEcT * FROM {$g4['poll_table']} ";
    $qey_result = sql_query($sql);
    while($row = sql_fetch_array($qey_result)) {
        $po_id = $row['po_id'];
        $poll_mb_ids = preg_replace("/{$mb_id}}/", $new_mb_id, $row['mb_ids']);
        $sql_update = " UPDATE {$g4['poll_table']} SET mb_ids = '{$poll_mb_ids}' WHERE po_id = '{$po_id}' ";
        sql_query($sql_update);
    }

    //투표기타의견 테이블
    $sql_update = " UPDATE {$g4['poll_etc_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);

    //포인트테이블
    $sql_update = " UPDATE {$g4['point_table']} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
    sql_query($sql_update);
    $sql_update = " UPDATE {$g4['point_table']} SET po_rel_id = '{$new_mb_id}' WHERE po_rel_id = '{$mb_id}' ";
    sql_query($sql_update);

    //등록되어있는 모든 게시판
    $sql = " SELECT * FROM {$g4['board_table']} ";
    $qey_result = sql_query($sql);
    while($row = sql_fetch_array($qey_result)) {
        $table_name = $g4['write_prefix'].$row['bo_table'];

        $sql_update = " UPDATE {$table_name} SET mb_id = '{$new_mb_id}' WHERE mb_id = '{$mb_id}' ";
        sql_query($sql_update);
    }

    return true;
}

그누보드 4.36.27 버전을 기준으로 작성되었다.

munilive

munilive

Backend Application Developer

Share

Comments

Related Posts

$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

게시판의 Paging 처리 시 QueryString으로 데이터를 전달할 때 paging을 위해 추가한 변수명이 겹치지 않게 하기 위해 만든 함수에 대한 설명이다.

munilive munilive ·
GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기에 기능추가

GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기에 기능추가

GD 라이브러리를 이용한 Thumbnail 생성 클래스 코드 설명입니다.

munilive munilive ·
php 생년월일로 별자리 구하기

php 생년월일로 별자리 구하기

사용자의 생년월일을 이용해서 별자리 코드를 반환하는 PHP 함수 예제입니다.

munilive munilive ·