휴지통 기능 참조사항

불당   
   조회 4032  

휴지통의 경우 제어를 쉽게 하기위해서 recycle 그룹을 만들고
그 밑에 recycle 게시판을 만들면 좋습니다.
상황에 따라서 휴지통 게시판을 1개가 아니라 여러개 쓸 수도 있거든요.
 
휴지통에는 다수인의 게시글이 들어옵니다.
목록의 읽기 레벨을 낮게 해두면, 모든 사람들이 휴지통을 보게 됩니다.
휴지통의 읽기 레벨은 반드시 관리자와 같은 레벨 (10)으로 해주세요.
 
삭제기간이 지난 게시글은 삭제 mark를 합니다.
이것은 불의의 사고(?)를 막기 위한 임시조치이고,
테이블이 아주 커지면 완전 삭제를 하시면 됩니다.
 
복구된 글의 위치는 최신으로 했습니다.
이것은 삭제하고, 슬그머니 복구하는 것을 막기 위함 입니다.
 
휴지통 게시판은 사용중에 언제든 바꿀 수 있습니다.
recycle_2010, recycle_2011 이렇게 하면 편하겠죠?
 
불당팩에 근거한 것이므로, 원본그누 적용을 위해서는 수정을 해야 합니다.
수정이 어려운 경우에는, 불당팩의 해당 파일을 참조하시기 바랍니다. 
 
수정배포는 자유롭지만, 판매는 절대 허락하지 않습니다.
 
곰순이푸님이 많이 도움을 주셔서, 만들 수 있었습니다.
아이콘은 물한방울님이 협찬해주셨어요.
 
(1) db 수정
 
ALTER TABLE `g4_config` ADD `cf_use_recycle` TINYINT( 4 ) NOT NULL ,
ADD `cf_recycle_table` VARCHAR( 255 ) NOT NULL ;
ALTER TABLE `g4_config` ADD `cf_recycle_days` INT( 11 ) NOT NULL ;
 
ALTER TABLE `g4_board` ADD `bo_use_recycle` TINYINT( 4 ) NOT NULL ;
 
CREATE TABLE `g4_recycle` (
  `rc_no` int(11) NOT NULL auto_increment,
  `rc_mb_id` varchar(255) NOT NULL,
  `rc_bo_table` varchar(255) NOT NULL,
  `rc_wr_id` int(11) NOT NULL,
  `rc_wr_parent` int(11) NOT NULL,
  `rc_parent_mb_id` varchar(255) NOT NULL,
  `rc_delete` tinyint(4) NOT NULL,
  `mb_id` varchar(255) NOT NULL,
  `bo_table` varchar(255) NOT NULL,
  `wr_id` int(11) NOT NULL,
  `wr_is_comment` tinyint(4) NOT NULL,
  `bn_id` int(11) NOT NULL,
  `rc_datetime` datetime NOT NULL,
  PRIMARY KEY  (`rc_no`),
  KEY `mb_id` (`mb_id`),
  KEY `bo_table` (`bo_table`),
  KEY `wr_id` (`wr_id`),
  KEY `bn_id` (`bn_id`),
  KEY `wr_is_comment` (`wr_is_comment`),
  KEY `rc_delete` (`rc_delete`),
  KEY `recycle_table` (`rc_bo_table`)
)
 
(2)
/adm/config.php, /adm/config_update.php를 수정
 
<tr>
    <td colspan=4 align=left><?=subtitle("휴지통 설정")?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
    <td>휴지통 사용</td>
    <td><input type='checkbox' name='cf_use_recycle' value='1' <?=$config[cf_use_recycle]?'checked':'';?>> 사용
        <?=help("휴지통 사용 여부를 설정합니다.")?></td>
    <td></td>
    <td></td>
</tr>
<tr class='ht'>
    <td>휴지통 테이블</td>
    <td colspan=3>
    <input type=text class=ed name='cf_recycle_table' value='<?=$config[cf_recycle_table]?>' size=20>
        <?=help("휴지통 테이블이름 (\$bo_table) 값을 적어줍니다.")?>
    </td>
</tr>
<tr class='ht'>
    <td>휴지통 비우기 일수</td>
    <td colspan=3>
    <input type=text class=ed name='cf_recycle_days' value='<?=$config[cf_recycle_days]?>' size=20>
        <?=help("n일후에 휴지통을 비워줍니다.")?>
    </td>
</tr>
 
...
 
            cf_use_recycle          = '$cf_use_recycle',
            cf_recycle_table        = '$cf_recycle_table',
            cf_recycle_days         = '$cf_recycle_days',
(3) /adm/board_form.php, /adm/board_form_update.php를 수정 합니다
 
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
    <td><input type=checkbox name=chk_bo_use_recycle value=1></td>
    <td>휴지통 사용</td>
    <td><input type=checkbox name=bo_use_recycle value='1' <?=$board[bo_use_recycle]?'checked':'';?>>사용</td>
</tr>
...
 
            bo_use_recycle      = '$bo_use_recycle',

...
 
if ($chk_bo_use_recycle) $s .= " , bo_use_recycle = '$bo_use_recycle' ";
(4) config.php에 아래 코드를 추가
 
$g4['recycle_table']        = $g4['table_prefix'] . "recycle";            // 휴지통 관련 정보 테이블
(5) admin.memu300.php에 아래 코드를 추가
 
    array("-"),
    array("300700", "휴지통관리", "$g4[admin_path]/recycle_list.php"),
    array("-"),
(6) /bbs/delete.php의 앞에 아래 코드를 추가 합니다.
 
// 불당팩 - 휴지통으로 이동을 위해서 추가한 코드
$recycle = "";
if ($config[cf_use_recycle] && $board[bo_use_recycle]) {
    // 복사/이동에 대한 log를 남기지 않게 설정
    $config[cf_use_copy_log] = 0;
    // 대피할 게시판
    $board['bo_move_bo_table'] = $config[cf_recycle_table];
    // recycle action임을 지정
    $recycle = "recycle";
   
    include_once("./move2_update.php");
   
    // recycle action - 최신글을 지우고
    $bn = sql_fetch(" select * from $g4[board_new_table] where bo_table = '$move_bo_table' and wr_id = '$insert_id' ");
    sql_query(" delete from $g4[board_new_table] where bo_table = '$move_bo_table' and wr_id = '$insert_id' ");
   
    // recycle action - recycle 게시판에 글쓰고
    $sql = " insert into $g4[recycle_table]
                set
                    rc_bo_table     = '$config[cf_recycle_table]',
                    rc_mb_id        = '$member[mb_id]',
                    rc_wr_id        = '$insert_id',
                    rc_wr_parent    = '$bn[wr_parent]',
                    rc_parent_mb_id = '$bn[parent_mb_id]',
                    mb_id           = '$write[mb_id]',
                    bo_table        = '$board[bo_table]',
                    wr_id           = '$write[wr_id]',
                    wr_is_comment   = '$write[wr_is_comment]',
                    bn_id           = '$bn[bn_id]',
                    rc_datetime     = '$g4[time_ymdhis]' ";
    sql_query($sql);
    goto_url($opener_href . $qstr);
}
 
(7) /bbs/move_update.php를 수정 합니다.

            // 불당팩 - 새로 생성된 wr_id를 저장
            $save[$cnt][insert_id] = $insert_id;
 
...
 
        // 불당팩 - 휴지통 기능, 휴지통 사용게시판에서 휴지통으로 move를 할 때, 여기 코드는 bbs/delete.php의 앞부분과 같아야 합니다
        if ($config[cf_use_recycle] && $move_bo_table == $config[cf_recycle_table]) {
            // 삭제할 최신글의 정보를 가져오고
            $sql00 = " select * from $g4[board_new_table] where bo_table = '$move_bo_table' and wr_id = '{$save[$i][insert_id]}' ";
            $bn = sql_fetch($sql00);
            // recycle action - recycle 게시판에 글쓰고
            $sql = " insert into $g4[recycle_table]
                        set
                    rc_bo_table     = '$config[cf_recycle_table]',
                    rc_mb_id        = '$member[mb_id]',
                    rc_wr_id        = '{$save[$i][insert_id]}',
                    rc_wr_parent    = '$bn[wr_parent]',
                    rc_parent_mb_id = '$bn[parent_mb_id]',
                    mb_id           = '$bn[mb_id]',
                    bo_table        = '$bo_table',
                    wr_id           = '{$save[$i][wr_id]}',
                    wr_is_comment   = '$bn[wr_is_comment]',
                    bn_id           = '$bn[bn_id]',
                    rc_datetime     = '$g4[time_ymdhis]' ";
            sql_query($sql);
           
            // 휴지통에 있는 최신글을 지워주고
            $sql09 = " delete from $g4[board_new_table] where bo_table = '$move_bo_table' and wr_id = '{$save[$i][insert_id]}' ";
            sql_query($sql09);
        }
(8) 첨부파일을 업로드 합니다.
- opencode.co.kr -
휴지통 이랜드몰
휴지통, 특별 세일가, 베스트 생활용품, 주방용품 할인, 100% 품질보장!
옥션 휴지통
사업자 회원이 많이 구매한 상품은? 휴지통! 누구나 50%할인, 어서옥션
자주 온라인스토어 SI빌리지
한국형 라이프스타일 브랜드 JAJU, 합리적인 가격과 좋은품질, 풍성한 이벤트까지
파워링크 AD   클릭초이스등록
곰순이푸 2010-06
Ps. 소스는 그누보드 -  곰순이푸님이 협찬해주셨습니다. ㅋㅋ
남세희 2010-07
/adm/config.php, /adm/config_update.php 파일들이 전 없네요
     
불당 2010-07
불당팩에 있는 파일들을 참조해야 합니다.
이후에 수정사항과 추가파일들이 아주 많습니다
따라서, 개별적인 적용은 현재는 별로 추천하지는 않습니다.

adm/config_form.php, adm/config_form_update.php 입니다.