복사/이동을 현재 게시판에 할수 있게 하기 (수정1) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

복사/이동을 현재 게시판에 할수 있게 하기 (수정1) 정보

복사/이동을 현재 게시판에 할수 있게 하기 (수정1)

본문

원본 소스를 건드려야 하고, 꼭 필요한 팁이라고는 할 수 없지만, 혹여나 필요하신 분은 간단히 수정하여 쓸 수 있는 팁입니다. 물론 필요하지 않으신 분은 손댈 이유가 없겠습니다.

[목적] - 오래된 게시물을 현재 위치의 본 게시판에 이동 또는 복사시켜 최상단으로 올린 후 약간의 수정만으로 최신게시물의 변모를 꾀한다. 이에 따른 첨부화일 겹치는 문제를 해결한다.


수정 2006.4.14 : 현재 게시판으로 복사,이동시에는 새로운 날짜를 부여

==========================================================
move.php와 move_update.php를 두개 수정해야 합니다.

move.php에서는 현재 게시판으로도 복사와 이동이 가능하도록, 리스트에 현재게시판도 출력되게만 하면 됩니다.

move_update.php에서는 ..
1) 현재 게시판으로 복사,이동시에는 내용 밑에 붙는 메시지를 생략합니다. (중요한건 아니므로 안해도 상관 없음)
2) 현재 게시판으로 복사,이동시에는 새로운 날짜를 부여합니다. (중요한건 아니므로 안해도 상관 없음)
3) 복사나 이동시에 동일한 게시물이 2번이상 복사 또는 이동되면, 포함된 실제파일명이 중복되어, 어느 한쪽 게시물을 삭제하거나, 포함된 파일을 삭제할 경우 중복된 파일이므로 똑같이 삭제되어 버립니다. 또한 동일한 게시판으로 복사/이동되어도 마찬가지 실제파일이 중복되기 때문에 복사나 이동시에 실제파일명을 새로 생성해서 복사,이동되게 수정했습니다.

간혹, 오래 묵었던 게시물을 최상단으로 끌어 올려야 할 경우가 종종 있어서, 새로 게시물 작성을 하자니, 포함된 파일들과 기타등등 옮겨야 할께 있어 불편(?)하더군요;; (게으름) 그래서 이동으로 끌어 올리면 너무 편리하길래 수정해 보았습니다. move_update.php를 아래처럼 손보지 않으면 같은 게시판으로 복사나 이동시, 포함된 파일이 날아가 버리므로 별 의미가 없습니다.

↓작업시작
==========================================================
작업1)
move.php의 34줄쯤에서

and bo_table <> '$bo_table'

위 코드를 제거합니다.
==========================================================
작업2)
move_update.php 에서

if (!$row2[wr_is_comment] && $config[cf_use_copy_log])
▶위 코드를 아래 코드로 바꿉니다.
if (!$row2[wr_is_comment] && $config[cf_use_copy_log] && $bo_table != $move_bo_table)


▶그 다음, 2줄 아래의
$sql = " insert into $move_write_table
▶위 코드 바로 윗줄에
if ($bo_table == $move_bo_table) $row2[wr_datetime] = $g4[time_ymdhis]; //★대상과 원본 게시판이 같을땐 새로운 날짜를 부여한다.
▶위 코드를 삽입합니다.


▶그 다음, 약간 아래로 내려갑니다.
▶아래 소스처럼  별표(★) 내용부분의 코드를 추가해 줍니다. (업데이트시 파일명에 변화를 주는 코드를 그대로 가져옴) 그리고 $row3[bf_file] 를 $new_bf_file 이걸로 세군데 바꿔줍니다.

                    if ($row3[bf_file])
                    {
                       
                        //★추가시작-복사나 이동시 실제파일명을 새롭게 바꿔주므로 겹치는 일이 없게 한다.
                        $filename = $row3[bf_source];
                        // 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
                        $filename = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc|reg)/i", "$0-x", $filename);
                        // 달빛온도님 수정 : 한글파일은 urlencode($filename) 처리를 할경우 '%'를 붙여주게 되는데 '%'표시는 미디어플레이어가 인식을 못하기 때문에 재생이 안됩니다. 그래서 변경한 파일명에서 '%'부분을 빼주면 해결됩니다.
                        $new_bf_file = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.str_replace('%', '', urlencode($filename));
                        //★추가끝

                        // 원본파일을 복사하고 퍼미션을 변경
                        @copy("$src_dir/$row3[bf_file]", "$dst_dir/$new_bf_file");
                        @chmod("$dst_dir/$new_bf_file", 0606);
                    }

                    $sql = " insert into $g4[board_file_table]
                                set bo_table = '$move_bo_table',
                                    wr_id = '$insert_id',
                                    bf_no = '$row3[bf_no]',
                                    bf_source = '$row3[bf_source]',
                                    bf_file = '$new_bf_file',
                                    bf_download = '$row3[bf_download]',
                                    bf_content = '$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);

==========================================================
↑작업끝

★ 언급했듯이 위에 보시면 $row3[bf_file] 이게 $new_bf_file 이걸로 바뀐 부분들이 3곳 있습니다. 주의하세요.
추천
4

댓글 6개

스크랩해놨다가 오늘에서야.. 부랴부랴 제작중인 사이트에 적용해봤는데...

가려운 곳을 정말 박박 긁어주는 멋진 팁이었습니다. 아쵸오님의 내공에 감탄하면서...

다시금 감사의 말씀을 전합니다.
전체 14 |RSS
그누4 팁자료실 내용 검색

회원로그인

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