[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 458건 10 페이지
  • RSS
기술자료 목록
278
그누보드   196162  2017-03-08 21:08 ~ 2019-02-25 19:29  
277
그누보드   15252  2017-03-08 18:12 ~ 2018-08-29 01:50  
276
그누보드   19844  2017-03-07 23:56 ~ 2022-05-10 11:20  
275
그누보드   17222  2017-03-04 22:50 ~ 2019-12-12 05:41  
열람
그누보드   12361  2017-02-20 19:05  
273
그누보드   11738  2017-02-20 16:30 ~ 2017-10-10 00:00  
272
그누보드   16281  2017-02-13 20:44 ~ 2017-03-02 00:00  
271
그누보드   12390  2017-01-17 07:52 ~ 2022-04-15 19:47  
270
그누보드   14286  2017-01-17 02:10  
269
그누보드   11681  2017-01-09 15:27  
268
그누보드   13719  2017-01-06 17:39  
267
그누보드   21835  2017-01-05 20:00 ~ 2021-08-02 21:43  
266
그누보드   21069  2016-12-06 11:58 ~ 2018-12-25 12:43  
265
그누보드   14205  2016-12-05 19:45 ~ 2021-01-05 12:01  
264
그누보드   14255  2016-11-14 12:58  
263
그누보드   26712  2016-11-03 15:42 ~ 2021-06-11 18:36  
262
그누보드   16275  2016-09-12 16:29 ~ 2021-02-26 16:55  
261
그누보드   15776  2016-09-06 12:59 ~ 2022-04-18 15:02  
260
그누보드   12985  2016-07-26 17:10 ~ 2020-09-26 09:26  
259
그누보드   12663  2016-07-25 15:14  

검색

해피정닷컴 정보

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

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