연우, 장을 열다.


그누보드를 이용한 사람이라면  그누보드에서 제공하고 있는 기능 중에서 게시글 복사 하는 기능이 있습니다. 유용합니다만  첨부 파일이 있을 때에는 에러가 뜹니다. 

 

원본의 게시글에 데이타 베이스를 복사하여 새롭게 하나의 로우를 생성하는 것은 좋으나, 소스 파일에서 첨부 파일을 복사해 갈때, 기존의 명칭과 동일하게 복사를 하므로 같은 bo_table을 사용한다면 ! 에러가 뜹니다. 


예를 들자면 기존 글에 aaaa.jpg 라는 파일이 있었고, 그를 복사한다면 똑같이 데이터 베이스가 생성되며 그와 동시에 소스 파일 (파일질라에 들어가 www/data/file/bo_table) 로 보면 aaaa.jpg가 이미 같은 경로에 존재하므로, aaaa-1.jpg 로 파일을 생성해주지 않습니다.


그래서! 결론은, 파일명을 복사를 하든 이동을 하든 ! 무조건 파일첨부 되는 파일명을 바꾸어 같은 사진 및 파일이어도 서로 다른 파일로 인식하게 하는 것입니다. 




www/bbs/move_update.php 에서 

105 라인 에서 "// 코멘트가 아니라면 if(){ ~~~~ }" 내용을 아래로 수정  끝! 


// 코멘트가 아니라면
            if (!$row2['wr_is_comment'])
            {
                $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'])
                    {

$chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));

shuffle($chars_array);
$shuffle = implode('', $chars_array);
$filename = @substr($row3['bf_file'],(strlen($row3[bf_file])-10), strlen($row3[bf_file]));


// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
$tmp_bf_file = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode(str_replace(' ', '_', $filename)));
                        // 원본파일을 복사하고 퍼미션을 변경
                        @copy($src_dir.'/'.$row3['bf_file'], $dst_dir.'/'.$tmp_bf_file);
                        @chmod($dst_dir/$row3['bf_file'], G5_FILE_PERMISSION);
                    }

                    $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 = '{$tmp_bf_file}',
                                     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']}' ");
                }
            }



bold체로 되어 있는 부분이 복사할때 서로 다른 것으로 만들어 준다. 
그 후  생성된 tmp_bf_file을 소스 파일에도 카피 해주고, 데이타 베이스도 업데이트 해준다~ 
끝!