일정 추천수 도달 시 게시물 이동 구현 문제..
본문
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'];
@copy($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' ");
}
}
!-->
답변을 작성하시기 전에 로그인 해주세요.