[G5] 에디터로 등록한 이미지 삭제 > 기술자료 | 해피정닷컴

[G5] 에디터로 등록한 이미지 삭제 > 기술자료

본문 바로가기

사이트 내 전체검색

[G5] 에디터로 등록한 이미지 삭제 > 기술자료

그누보드 [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);
    }
}
?>

댓글목록

등록된 댓글이 없습니다.


Total 2,640건 38 페이지
  • RSS
기술자료 목록
1900
영카트   13205  2017-02-21 15:53  
1899
JavaScript   16349  2017-02-21 14:10  
1898
JavaScript   39318  2017-02-21 13:23 ~ 2019-09-18 20:55  
열람
그누보드   12363  2017-02-20 19:05  
1896
그누보드   11739  2017-02-20 16:30 ~ 2017-10-10 00:00  
1895
일반   10289  2017-02-18 13:37  
1894
일반   23117  2017-02-18 12:42 ~ 2017-04-19 00:00  
1893
JSP   12855  2017-02-17 23:15  
1892
JSP   10658  2017-02-17 22:59  
1891
JSP   12210  2017-02-17 21:19  
1890
JSP   12697  2017-02-17 21:17  
1889
JSP   14201  2017-02-17 21:02  
1888
MSSQL   13269  2017-02-15 22:27  
1887
JSP   12607  2017-02-15 19:02  
1886
JSP   12804  2017-02-15 12:59  
1885
Java   9350  2017-02-15 01:04  
1884
APP   13725  2017-02-14 21:39  
1883
그누보드   16283  2017-02-13 20:44 ~ 2017-03-02 00:00  
1882
영카트   9258  2017-02-09 15:13 ~ 2017-02-09 00:00  
1881
일반   9701  2017-02-07 01:59  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.