에디터에서 이미지 첨부를 하게 되면, data 폴더 안에 '/cheditor4/년월' 이런식으로 폴더를 만들고,
그 폴더에 파일들을 전부 저장합니다. 그러나, 에디터에 첨부했다가 삭제한 파일들도 그대로 남아있고,
게시글 삭제시에도 업로드 된 파일들이 그대로 남아있게 됩니다.
파일명도 DB에 저장하지 않기 때문에, 임시파일이나 삭제된 파일들 정리도 쉽지 않습니다.
그래서 에디터에서 등록하는 파일들을 게시판별 data 폴더로 이동을 하고,
에디터에서 사용하는 폴더는 아예 사용을 하지 않는게 파일관리가 용이할 것 같아, 몇군데 수정을 해봤습니다.
제가 원래 그누보드 원본 파일은 잘 안건드리고, 스킨 폴더 안에서만 처리하는 걸 좋아라 합니다.^^
수정 부분은 스킨폴더안의
write_update.skin.php
delete.skin.php
delete_all.skin.php
이렇게 3가지 입니다.
1. write_update.skin.php에 추가
---------------------------------------------------------------------------------------------------
$ym = date("ym", $g4[server_time]);
$cheditor_path = $g4[path]."/data/".$g4[cheditor4]."/".$ym."/"; // 에디터에서 생성하는 폴더
$board_path = $g4[path]."/data/file/".$bo_table."/".$wr_id."/"; // 각 게시판별 data 폴더 안에 wr_id 폴더 생성
@mkdir($board_path, 0707);
@chmod($board_path, 0707);
$row = sql_fetch(" select wr_content from $write_table where wr_id = '$wr_id' ");
preg_match_all("/http:\/\/(.*)\.(jp[e]?g|gif|png)/i", $row[wr_content], $match, PREG_SET_ORDER); // wr_content 내용에서 이미지 주소만 추출
// 에디터에서는 이미지 주소가 절대경로로 나옵니다. 파일 이동 후 wr_content 내용 중 이미지 주소를 상대경로로 변경합니다.
for ($i = 0; $i < count($match); $i++)
{
preg_match("/(.*)[\/](.*)/i", $match[$i][0], $file);
$cheditor_file = $cheditor_path.$file[2];
$board_file = $board_path.$file[2];
@copy($cheditor_file, $board_file); // 파일을 data 폴더로 이동
@unlink($cheditor_file); // 에디터에서 저장했던 파일을 삭제
sql_query(" update $write_table set wr_content = replace(wr_content, '$file[0]', '$board_file') where wr_id = '$wr_id' "); // wr_content 내용 중 절대경로를 상대경로로 변경
}
// 에디터에 첨부했다가 지워진 이미지를 data 폴더에서도 삭제
preg_match_all("/(.*)\/(.*)\.(jp[e]?g|gif|png)/i", $row[wr_content], $match, PREG_SET_ORDER);
$content_file = array();
$file_list = scandir($board_path);
for ($i = 0; $i < count($match); $i++) { $content_file[$i] = $match[$i][2].".".$match[$i][3]; }
for ($i = 0; $i < count($file_list); $i++) { $file = $file_list[$i]; if (!in_array($file, $content_file)) { @unlink($board_path.$file); } }
---------------------------------------------------------------------------------------------------
2. delete.skin.php에 추가
---------------------------------------------------------------------------------------------------
$board_path = $g4[path]."/data/file/".$bo_table."/".$wr_id."/";
$file_list = scandir($board_path);
for ($i = 0; $i < count($file_list); $i++) { @unlink($board_path.$file_list[$i]); }
@rmdir($board_path);
---------------------------------------------------------------------------------------------------
3. delete_all.skin.php에 추가
---------------------------------------------------------------------------------------------------
for ($i = count($tmp_array) - 1; $i >= 0; $i--)
{
$board_path = $g4[path]."/data/file/".$bo_table."/".$tmp_array[$i]."/";
$file_list = scandir($board_path);
for ($j = 0; $j < count($file_list); $j++) { @unlink($board_path.$file_list[$j]); }
@rmdir($board_path);
}
---------------------------------------------------------------------------------------------------
이렇게 스킨폴더내 3개 파일 수정하시면, 에디터 임시파일 걱정없이 사용하실 수 있으실 거에요.^^
참고로, 저는 그누보드 4.37.08 - CHEditor 5.1를 사용하고 있습니다.
그누보드 원본에서 에디터 관련부분은 아무것도 손대지 않은 상태에서 수정한 내용입니다.
그 폴더에 파일들을 전부 저장합니다. 그러나, 에디터에 첨부했다가 삭제한 파일들도 그대로 남아있고,
게시글 삭제시에도 업로드 된 파일들이 그대로 남아있게 됩니다.
파일명도 DB에 저장하지 않기 때문에, 임시파일이나 삭제된 파일들 정리도 쉽지 않습니다.
그래서 에디터에서 등록하는 파일들을 게시판별 data 폴더로 이동을 하고,
에디터에서 사용하는 폴더는 아예 사용을 하지 않는게 파일관리가 용이할 것 같아, 몇군데 수정을 해봤습니다.
제가 원래 그누보드 원본 파일은 잘 안건드리고, 스킨 폴더 안에서만 처리하는 걸 좋아라 합니다.^^
수정 부분은 스킨폴더안의
write_update.skin.php
delete.skin.php
delete_all.skin.php
이렇게 3가지 입니다.
1. write_update.skin.php에 추가
---------------------------------------------------------------------------------------------------
$ym = date("ym", $g4[server_time]);
$cheditor_path = $g4[path]."/data/".$g4[cheditor4]."/".$ym."/"; // 에디터에서 생성하는 폴더
$board_path = $g4[path]."/data/file/".$bo_table."/".$wr_id."/"; // 각 게시판별 data 폴더 안에 wr_id 폴더 생성
@mkdir($board_path, 0707);
@chmod($board_path, 0707);
$row = sql_fetch(" select wr_content from $write_table where wr_id = '$wr_id' ");
preg_match_all("/http:\/\/(.*)\.(jp[e]?g|gif|png)/i", $row[wr_content], $match, PREG_SET_ORDER); // wr_content 내용에서 이미지 주소만 추출
// 에디터에서는 이미지 주소가 절대경로로 나옵니다. 파일 이동 후 wr_content 내용 중 이미지 주소를 상대경로로 변경합니다.
for ($i = 0; $i < count($match); $i++)
{
preg_match("/(.*)[\/](.*)/i", $match[$i][0], $file);
$cheditor_file = $cheditor_path.$file[2];
$board_file = $board_path.$file[2];
@copy($cheditor_file, $board_file); // 파일을 data 폴더로 이동
@unlink($cheditor_file); // 에디터에서 저장했던 파일을 삭제
sql_query(" update $write_table set wr_content = replace(wr_content, '$file[0]', '$board_file') where wr_id = '$wr_id' "); // wr_content 내용 중 절대경로를 상대경로로 변경
}
// 에디터에 첨부했다가 지워진 이미지를 data 폴더에서도 삭제
preg_match_all("/(.*)\/(.*)\.(jp[e]?g|gif|png)/i", $row[wr_content], $match, PREG_SET_ORDER);
$content_file = array();
$file_list = scandir($board_path);
for ($i = 0; $i < count($match); $i++) { $content_file[$i] = $match[$i][2].".".$match[$i][3]; }
for ($i = 0; $i < count($file_list); $i++) { $file = $file_list[$i]; if (!in_array($file, $content_file)) { @unlink($board_path.$file); } }
---------------------------------------------------------------------------------------------------
2. delete.skin.php에 추가
---------------------------------------------------------------------------------------------------
$board_path = $g4[path]."/data/file/".$bo_table."/".$wr_id."/";
$file_list = scandir($board_path);
for ($i = 0; $i < count($file_list); $i++) { @unlink($board_path.$file_list[$i]); }
@rmdir($board_path);
---------------------------------------------------------------------------------------------------
3. delete_all.skin.php에 추가
---------------------------------------------------------------------------------------------------
for ($i = count($tmp_array) - 1; $i >= 0; $i--)
{
$board_path = $g4[path]."/data/file/".$bo_table."/".$tmp_array[$i]."/";
$file_list = scandir($board_path);
for ($j = 0; $j < count($file_list); $j++) { @unlink($board_path.$file_list[$j]); }
@rmdir($board_path);
}
---------------------------------------------------------------------------------------------------
이렇게 스킨폴더내 3개 파일 수정하시면, 에디터 임시파일 걱정없이 사용하실 수 있으실 거에요.^^
참고로, 저는 그누보드 4.37.08 - CHEditor 5.1를 사용하고 있습니다.
그누보드 원본에서 에디터 관련부분은 아무것도 손대지 않은 상태에서 수정한 내용입니다.
댓글 10개
게시글 목록
| 번호 | 제목 |
|---|---|
| 33785 | |
| 33781 | |
| 33776 | |
| 33761 | |
| 33753 | |
| 33751 | |
| 33749 | |
| 33731 | |
| 33706 | |
| 33694 | |
| 33690 | |
| 33683 | |
| 33674 | |
| 33672 | |
| 33662 | |
| 33655 | |
| 33608 | |
| 33605 | |
| 33587 | |
| 33581 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기