그누보드 [G5] 에디터로 등록한 이미지 삭제
페이지 정보
본문
아래 내용 적용하기 전에 첨부된 이미지는 삭제되지 않습니다.
원저작자 : 왕계란
원글출처 : https://sir.kr/g5_tip/3534
하나씩 글을 삭제하면 첨부된 이미지가 깨끗이 삭제됩니다.
관리자 > 선택삭제 하는 경우엔 delete_all.skin.php 가 필요합니다.
관리자 > 이동 및 선택이동 일때는 첨부파일 g5_image 테이블에 업데이트 안됩니다
1. 이미지 관리 테이블 생성
phpMyAdmin 등의 프로그램 쿼리창에서 아래 내용 실행
그누보드5 설치할때 g5 가 아닌 다른 값을 넣었다면 그것으로 변경합니다.
CREATE TABLE `g5_images` (
`idx` int(11) NOT NULL AUTO_INCREMENT,
`bo_table` varchar(100) NOT NULL DEFAULT '' COMMENT '게시판 이름',
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '첨부 이미지',
`wr_id` int(11) NOT NULL DEFAULT '0' COMMENT '게시물 번호',
`reg_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록 시간',
PRIMARY KEY (`idx`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2. 그누보드5 / bbs / move_update.php
3. 그누보드5 / skin / board / 폴더 / delete.skin.php 파일 생성
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 이전에 등록한 이미지가 있는지 검색
$query = "select * from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
$image_count = sql_fetch($query);
if($image_count['wr_id']) {
// 이전에 등록한 이미지가 있을 경우 전체를 삭제
$res = sql_query($query);
while($rows = sql_fetch_array($res)) {
// 큰 이미지 삭제
$remove_image = unlink("../".$rows['path']);
// 썸네일 삭제
$thumbs = explode("/", $rows['path']);
$thumbs_ext = explode(".", $thumbs[4]);
$thumbnail = glob("../".$thumbs[1]."/".$thumbs[2]."/".$thumbs[3]."/thumb-".$thumbs_ext[0]."*");
unlink($thumbnail[0]);
if($remove_image) {
$remove = "delete from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
sql_query($remove);
}
}
}
?>
4. 그누보드5 / skin / board / 폴더 / delete_all.skin.php 파일 생성
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
5. 그누보드5 / skin / board / 폴더 / write_update.skin.php 파일 생성
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
function getImagesUrl($url) {
$img_path = array();
foreach($url as $value) {
$img = parse_url($value);
$img_path[] = $img['path'];
}
return $img_path;
}
// 에디터로 등록한 이미지가 있는지 검색
$query = "select * from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
$is_images = sql_fetch($query);
// 에디터로 등록한 글에 이미지가 포함되어 있는지 체크
$contents = stripslashes($_POST['wr_content']);
preg_match_all('@src="([^"]+)"@', $contents, $match);
if($is_images['wr_id']) { // $is_images['wr_id'] 값이 있을 경우 수정이라고 간주함
$image_count = sql_fetch($query);
if($image_count['wr_id']) {
$res = sql_query($query);
while($rows = sql_fetch_array($res)) {
if(!in_array($rows['path'], getImagesUrl($match[1]))) {
unlink("../".$rows['path']);
// 썸네일 삭제 추가
$thumbs = explode("/", $rows['path']);
$thumbs_ext = explode(".", $thumbs[4]);
$thumbnail = glob("../".$thumbs[1]."/".$thumbs[2]."/".$thumbs[3]."/thumb-".$thumbs_ext[0]."*");
unlink($thumbnail[0]);
}
}
// 이전에 등록한 이미지가 있을 경우 전체를 삭제
$remove = "delete from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
sql_query($remove);
}
}
if(sizeof($match[1]) > 0) { // 에디터로 추가한 이미지가 있을 경우
foreach($match[1] as $value) {
$img = parse_url($value);
$insert = "insert into ".G5_TABLE_PREFIX."images set bo_table = '".$bo_table."', path = '".$img['path']."', wr_id = ".$wr_id.", reg_date = now()";
sql_query($insert);
}
}
?>
원저작자 : 왕계란
원글출처 : https://sir.kr/g5_tip/3534
하나씩 글을 삭제하면 첨부된 이미지가 깨끗이 삭제됩니다.
관리자 > 선택삭제 하는 경우엔 delete_all.skin.php 가 필요합니다.
관리자 > 이동 및 선택이동 일때는 첨부파일 g5_image 테이블에 업데이트 안됩니다
1. 이미지 관리 테이블 생성
phpMyAdmin 등의 프로그램 쿼리창에서 아래 내용 실행
그누보드5 설치할때 g5 가 아닌 다른 값을 넣었다면 그것으로 변경합니다.
CREATE TABLE `g5_images` (
`idx` int(11) NOT NULL AUTO_INCREMENT,
`bo_table` varchar(100) NOT NULL DEFAULT '' COMMENT '게시판 이름',
`path` varchar(255) NOT NULL DEFAULT '' COMMENT '첨부 이미지',
`wr_id` int(11) NOT NULL DEFAULT '0' COMMENT '게시물 번호',
`reg_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록 시간',
PRIMARY KEY (`idx`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2. 그누보드5 / bbs / move_update.php
3. 그누보드5 / skin / board / 폴더 / delete.skin.php 파일 생성
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 이전에 등록한 이미지가 있는지 검색
$query = "select * from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
$image_count = sql_fetch($query);
if($image_count['wr_id']) {
// 이전에 등록한 이미지가 있을 경우 전체를 삭제
$res = sql_query($query);
while($rows = sql_fetch_array($res)) {
// 큰 이미지 삭제
$remove_image = unlink("../".$rows['path']);
// 썸네일 삭제
$thumbs = explode("/", $rows['path']);
$thumbs_ext = explode(".", $thumbs[4]);
$thumbnail = glob("../".$thumbs[1]."/".$thumbs[2]."/".$thumbs[3]."/thumb-".$thumbs_ext[0]."*");
unlink($thumbnail[0]);
if($remove_image) {
$remove = "delete from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
sql_query($remove);
}
}
}
?>
4. 그누보드5 / skin / board / 폴더 / delete_all.skin.php 파일 생성
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
5. 그누보드5 / skin / board / 폴더 / write_update.skin.php 파일 생성
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
function getImagesUrl($url) {
$img_path = array();
foreach($url as $value) {
$img = parse_url($value);
$img_path[] = $img['path'];
}
return $img_path;
}
// 에디터로 등록한 이미지가 있는지 검색
$query = "select * from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
$is_images = sql_fetch($query);
// 에디터로 등록한 글에 이미지가 포함되어 있는지 체크
$contents = stripslashes($_POST['wr_content']);
preg_match_all('@src="([^"]+)"@', $contents, $match);
if($is_images['wr_id']) { // $is_images['wr_id'] 값이 있을 경우 수정이라고 간주함
$image_count = sql_fetch($query);
if($image_count['wr_id']) {
$res = sql_query($query);
while($rows = sql_fetch_array($res)) {
if(!in_array($rows['path'], getImagesUrl($match[1]))) {
unlink("../".$rows['path']);
// 썸네일 삭제 추가
$thumbs = explode("/", $rows['path']);
$thumbs_ext = explode(".", $thumbs[4]);
$thumbnail = glob("../".$thumbs[1]."/".$thumbs[2]."/".$thumbs[3]."/thumb-".$thumbs_ext[0]."*");
unlink($thumbnail[0]);
}
}
// 이전에 등록한 이미지가 있을 경우 전체를 삭제
$remove = "delete from ".G5_TABLE_PREFIX."images where bo_table = '".$bo_table."' and wr_id = ".$wr_id;
sql_query($remove);
}
}
if(sizeof($match[1]) > 0) { // 에디터로 추가한 이미지가 있을 경우
foreach($match[1] as $value) {
$img = parse_url($value);
$insert = "insert into ".G5_TABLE_PREFIX."images set bo_table = '".$bo_table."', path = '".$img['path']."', wr_id = ".$wr_id.", reg_date = now()";
sql_query($insert);
}
}
?>
댓글목록
등록된 댓글이 없습니다.