일정 추천수 도달 시 게시물 이동 구현 문제..

일정 추천수 도달 시 게시물 이동 구현 문제..

QA

일정 추천수 도달 시 게시물 이동 구현 문제..

본문

move_update.php 소스와 그누보드4 때 누군가 제작했던 소스를 참고해서 작성해봤습니다.

 

게시글이 여분필드에 정해놓은 추천수에 도달하면 best 게시판으로 이동하는 기능을 구현하려고 하는데요.

두 가지 문제가 있습니다.

하나는 게시글이 이동은 되는데 기존 게시글이 그대로 남아있습니다. 삭제가 안 되네요.

두 번째는 이동된 게시판의 넘버링이 0부터 -1씩 작아집니다..

 

good.php의

 

// 추천(찬성), 비추천(반대) 카운트 증가

sql_query ( " update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' " ); 

// 내역 생성 

sql_query ( " insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '" . G5_TIME_YMDHIS . "' " );

 

--------------

위 두 구문 사이에 넣었습니다. 오류가 있는지 한번 살펴봐주시면 감사하겠습니다. ^^

--------------


// 추천시 이동할 게시판 설정과 추천수 확인용 쿼리
$sql5 = "select * from {$g5['board_table']} where bo_table = '{$bo_table}'";
$result5 = sql_query ( $sql5 );
while ( $row5 = sql_fetch_array($result5)) {
    if ($row5 ['bo_3'] && $row5 ['bo_4']) {
        // 여분필드3 에 설정된 이동할 게시판 이름 설정
        $move_bo_table = $row5 ['bo_3']; // 테이블 이름 저장
        $move_write_table = $g5 ['write_prefix'] . $move_bo_table; // DB 테이블명 저장
                                                                  
        // 여분필드4 에 설정된 추천수 설정
        $goodCnt = $row5 ['bo_4'];
    } else {
        $goodCnt = '0.3'; // 추천수가 없으면 0.3 세팅(의미 없음)
    }
}
// 해당 게시물 현재 추천수 조회 쿼리
$row = sql_fetch ( "select wr_good from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id'", FALSE );
// 추천수가 이동할 값인지 비교, good(추천) 인지 비교 - 추천수가 안됐거나 good(추천)이 아니면 실행 안됨
if ($row ['wr_good'] == $goodCnt && $good == "good") {
    
    // board_good 테이블, 추천 내역 생성
    sql_query ( " insert {$g5['board_good_table']} set bo_table = '$bo_table', wr_id = '$wr_id', mb_id = '{$member['mb_id']}', bg_flag = '$good', bg_datetime = '" . G5_TIME_YMDHIS . "' " );
    
    $sw = "move"; 
    $act = "이동"; 
    $wr_id_list = $wr_id;
    
    $save = array ();
    $save_count_write = 0;
    $save_count_comment = 0; // 9
    $cnt = 0;
    
    $src_dir = G5_DATA_PATH.'/file/'.$bo_table; // 원본 디렉토리
    $dst_dir = G5_DATA_PATH.'/file/'.$move_bo_table; // 복사본 디렉토리
    
    $count_write = 0;
    $count_comment = 0;
    
    $next_wr_num = get_next_num ($move_write_table);
    
    // 해당 게시물 번호 조회
    $sql4 = "select wr_num from $write_table where wr_id = '$wr_id'";
    $result4 = sql_fetch($sql4);
    $wr_num = $result4['wr_num'];
    
    // 해당 게시물 조회 - 본문, 코멘트, 답글까지
    $sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_comment desc, wr_id ";
    $result2 = sql_query($sql2);
    
    // 게시물 본문과 코멘트, 답글이 다 이동할때까지
    while ($row2 = sql_fetch_array($result2)) {
        
        // 본문 글에 이동 되었다는 메세지 추가
        if (!$row2['wr_is_comment'] && $config['cf_use_copy_log'])
            $row2['wr_content'] .= " \n[이 게시물은 추천수 $goodCnt 이상으로, {$board[bo_subject]} 게시판에서 $move_bo_table 게시판으로 " . ($sw == 'copy' ? '복사' : '이동') . " 됨.]";
        
        // 이동되는 게시판에 추가
        $sql = " insert into $move_write_table
            set wr_num            = '$next_wr_num',
                wr_reply          = '{$row2['wr_reply']}',
                wr_is_comment    = '{$row2['wr_is_comment']}',
                wr_comment        = '{$row2['wr_comment']}',
                wr_comment_reply  = '{$row2['wr_comment_reply']}',
                ca_name          = '" . addslashes ( $row2 ['ca_name'] ) . "',
                wr_option        = '{$row2['wr_option']}',
                wr_subject        = '" . addslashes ( $row2 ['wr_subject'] ) . "',
                wr_content        = '" . addslashes ( $row2 ['wr_content'] ) . "',
                wr_link1          = '" . addslashes ( $row2 ['wr_link1'] ) . "',
                wr_link2          = '" . addslashes ( $row2 ['wr_link2'] ) . "',
                wr_link1_hit      = '{$row2['wr_link1_hit']}',
                wr_link2_hit      = '{$row2['wr_link2_hit']}',
                wr_hit            = '{$row2['wr_hit']}',
                wr_good          = '{$row2['wr_good']}',
                wr_nogood        = '{$row2['wr_nogood']}',
                mb_id            = '{$row2['mb_id']}',
                wr_password      = '{$row2['wr_password']}',
                wr_name          = '" . addslashes ( $row2 ['wr_name'] ) . "',
                wr_email          = '" . addslashes ( $row2 ['wr_email'] ) . "',
                wr_homepage      = '" . addslashes ( $row2 ['wr_homepage'] ) . "',
                wr_datetime      = '{$row2['wr_datetime']}',
                wr_ip            = '{$row2['wr_ip']}',
                wr_1 = '" . addslashes ( $row2 ['wr_1'] ) . "',
                wr_2 = '" . addslashes ( $row2 ['wr_2'] ) . "',
                wr_3 = '" . addslashes ( $row2 ['wr_3'] ) . "',
                wr_4 = '" . addslashes ( $row2 ['wr_4'] ) . "',
                wr_5 = '" . addslashes ( $row2 ['wr_5'] ) . "',
                wr_6 = '" . addslashes ( $row2 ['wr_6'] ) . "',
                wr_7 = '" . addslashes ( $row2 ['wr_7'] ) . "',
                wr_8 = '" . addslashes ( $row2 ['wr_8'] ) . "',
                wr_9 = '" . addslashes ( $row2 ['wr_9'] ) . "',
                wr_10 = '" . addslashes ( $row2 ['wr_10'] ) . "' ";
        sql_query ( $sql );
        
        print_r('[ -2 ]');
        $insert_id = mysql_insert_id ();
        print_r('[ -1 ]');
        // 코멘트가 아니라면
        if(!$row2['wr_is_comment']) {
            print_r('[ 0 ]');
            $save_parent = $insert_id;
            
            $sql3 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' order by bf_no ";
            $result3 = sql_query ( $sql3 );
            for($k = 0; $row3 = sql_fetch_array($result3); $k ++) {
                if ($row3['bf_file']) {
                    // 원본파일을 복사하고 퍼미션을 변경
                    $copy_file_name = ($bo_table !== $move_bo_table) ? $row3['bf_file'] : $row2['wr_id'].'_copy_'.$insert_id.'_'.$row3['bf_file'];
                    ($src_dir.'/'.$row3['bf_file'], $dst_dir.'/'.$copy_file_name);
                    @chmod($dst_dir/$row3['bf_file'], G5_FILE_PERMISSION);
                }
                
                // board_file 테이블 추가
                $sql = " insert into {$g5['board_file_table']}
                    set bo_table = '$move_bo_table',
                        wr_id = '$insert_id',
                        bf_no = '{$row3['bf_no']}',
                        bf_source = '".addslashes($row3['bf_source'])."',
                        bf_file = '$copy_file_name',
                        bf_download = '{$row3['bf_download']}',
                        bf_content = '".addslashes($row3['bf_content'])."',
                        bf_filesize = '{$row3['bf_filesize']}',
                        bf_width = '{$row3['bf_width']}',
                        bf_height = '{$row3['bf_height']}',
                        bf_type = '{$row3['bf_type']}',
                        bf_datetime = '{$row3['bf_datetime']}' ";
                sql_query ( $sql );
                
                if ($sw == "move" && $row3 ['bf_file'])
                    $save[$cnt]['bf_file'][$k] = $src_dir.'/'.$row3['bf_file'];
            }
            
            $count_write ++;
            
            if ($sw == "move" && $i == 0) {
                // 스크랩 이동
                sql_query(" update {$g5['scrap_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
                
                // 최신글 이동
                sql_query(" update {$g5['board_new_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
                
                // 추천데이터 이동
                sql_query(" update {$g5['board_good_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
            }
        } else {
            $count_comment++;
            
            if ($sw == "move") {
                // 최신글 이동
                sql_query(" update {$g5['board_new_table']} set bo_table = '$move_bo_table', wr_id = '$insert_id', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
            }
        }
        
        sql_query(" update $move_write_table set wr_parent = '$save_parent' where wr_id = '$insert_id' ");
        
        if ($sw == "move") {
            $save[$cnt]['wr_id'] = $row2['wr_parent'];
        }
        $cnt++;
    }
    
    sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + '$count_write' where bo_table = '$move_bo_table' ");
    sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment + '$count_comment' where bo_table = '$move_bo_table' ");
    
    delete_cache_latest($move_bo_table);
    
    // '이동' 인경우 원본 게시판의 게시물 삭제
    if ($sw == 'move') {
        for($i = 0; $i < count ( $save ); $i ++) {
            for($k = 0; $k < count ( $save [$i] ['bf_file'] ); $k ++)
                @unlink ( $save [$i] ['bf_file'] [$k] );
            
            sql_query ( " delete from $write_table where wr_parent = '{$save[$i]['wr_id']}' " );
            sql_query ( " delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_id = '{$save[$i]['wr_id']}' " );
            sql_query ( " delete from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$save[$i]['wr_id']}' " );
        }
        sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write - 1, bo_count_comment = bo_count_comment - 1 where bo_table = '$bo_table' ");
    }
} 

            

이 질문에 댓글 쓰기 :

답변 1

답변을 작성하시기 전에 로그인 해주세요.
전체 2,432
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT