그누보드 [G5] 게시글 일정 시간 지난후 자동 삭제
페이지 정보
본문
본 팁은 테스트하지 않은 내용이므로 적용시 주의가 필요합니다.
그누보드5 / extend / daypass_del.php 를 생성하고 그속에 내용을 추가
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 특정게시판에 적용하고 싶을때 Start
$ttable = array('게시판1', '게시판2', '게시판3');
foreach($ttable as $t) {
$tbo_table = $t;
// 특정게시판에 적용하고 싶을때 End
/*
// 전체게시판에 적용하고 싶을때 Start
$sql = "select * from `{$g5['board_table']}` order by bo_table asc ";
$result = sql_query($sql);
while($data = sql_fetch_array($result)) {
$tbo_table = $data["bo_table"];
// 전체게시판에 적용하고 싶을때 End
*/
sql_query(" delete from `{$g5['write_prefix']}{$tbo_table}` where wr_datetime < date_add(now(), interval -1 day) ");
sql_query(" delete from `{$g5['board_new_table']}` where bn_datetime < date_add(now(), interval -1 day) and bo_table = '{$tbo_table}' ");
// 게시판의 글 수
$sql = " select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_is_comment = 0 ";
$row = sql_fetch($sql);
$bo_count_write = $row['cnt'];
// 게시판의 코멘트 수
$sql = " select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_is_comment = 1 ";
$row = sql_fetch($sql);
$bo_count_comment = $row['cnt'];
if (isset($_POST['proc_count'])) {
// 원글을 얻습니다.
//$sql = " select wr_id from `{$g5['write_prefix']}{$tbo_table}` where wr_is_comment = 0 ";
$sql = " select a.wr_id, (count(b.wr_parent) - 1) as cnt from `{$g5['write_prefix']}{$tbo_table}` a, {$g5['write_prefix']}{$tbo_table} b where a.wr_id=b.wr_parent and a.wr_is_comment=0 group by a.wr_id ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
/*
// 코멘트수를 얻습니다.
$sql2 = " select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_parent = '{$row['wr_id']}' and wr_is_comment = 1 ";
$row2 = sql_fetch($sql2);
*/
sql_query(" update `{$g5['write_prefix']}{$tbo_table}` set wr_comment = '{$row['cnt']}' where wr_id = '{$row['wr_id']}' ");
}
}
// 공지사항에는 등록되어 있지만 실제 존재하지 않는 글 아이디는 삭제합니다.
$bo_notice = "";
$tmp_notice = "";
if ($board['bo_notice']) {
$tmp_array = explode(",", $board['bo_notice']);
for ($i=0; $i<count($tmp_array); $i++) {
$tmp_wr_id = trim($tmp_array[$i]);
$row = sql_fetch(" select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_id = '{$tmp_wr_id}' ");
if ($row['cnt']) {
$bo_notice .= $tmp_notice . $tmp_wr_id;
$tmp_notice = ",";
}
}
}
$sql = " update `{$g5['board_table']}` set ";
if ($bo_notice) $sql .= " bo_notice = '{$bo_notice}', ";
$sql .= " bo_count_write = '{$bo_count_write}', ";
$sql .= " bo_count_comment = '{$bo_count_comment}' ";
$sql .= " where bo_table = '{$tbo_table}' ";
sql_query($sql);
}
참고자료
https://sir.kr/qa/149890
그누보드5 / extend / daypass_del.php 를 생성하고 그속에 내용을 추가
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 특정게시판에 적용하고 싶을때 Start
$ttable = array('게시판1', '게시판2', '게시판3');
foreach($ttable as $t) {
$tbo_table = $t;
// 특정게시판에 적용하고 싶을때 End
/*
// 전체게시판에 적용하고 싶을때 Start
$sql = "select * from `{$g5['board_table']}` order by bo_table asc ";
$result = sql_query($sql);
while($data = sql_fetch_array($result)) {
$tbo_table = $data["bo_table"];
// 전체게시판에 적용하고 싶을때 End
*/
sql_query(" delete from `{$g5['write_prefix']}{$tbo_table}` where wr_datetime < date_add(now(), interval -1 day) ");
sql_query(" delete from `{$g5['board_new_table']}` where bn_datetime < date_add(now(), interval -1 day) and bo_table = '{$tbo_table}' ");
// 게시판의 글 수
$sql = " select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_is_comment = 0 ";
$row = sql_fetch($sql);
$bo_count_write = $row['cnt'];
// 게시판의 코멘트 수
$sql = " select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_is_comment = 1 ";
$row = sql_fetch($sql);
$bo_count_comment = $row['cnt'];
if (isset($_POST['proc_count'])) {
// 원글을 얻습니다.
//$sql = " select wr_id from `{$g5['write_prefix']}{$tbo_table}` where wr_is_comment = 0 ";
$sql = " select a.wr_id, (count(b.wr_parent) - 1) as cnt from `{$g5['write_prefix']}{$tbo_table}` a, {$g5['write_prefix']}{$tbo_table} b where a.wr_id=b.wr_parent and a.wr_is_comment=0 group by a.wr_id ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
/*
// 코멘트수를 얻습니다.
$sql2 = " select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_parent = '{$row['wr_id']}' and wr_is_comment = 1 ";
$row2 = sql_fetch($sql2);
*/
sql_query(" update `{$g5['write_prefix']}{$tbo_table}` set wr_comment = '{$row['cnt']}' where wr_id = '{$row['wr_id']}' ");
}
}
// 공지사항에는 등록되어 있지만 실제 존재하지 않는 글 아이디는 삭제합니다.
$bo_notice = "";
$tmp_notice = "";
if ($board['bo_notice']) {
$tmp_array = explode(",", $board['bo_notice']);
for ($i=0; $i<count($tmp_array); $i++) {
$tmp_wr_id = trim($tmp_array[$i]);
$row = sql_fetch(" select count(*) as cnt from `{$g5['write_prefix']}{$tbo_table}` where wr_id = '{$tmp_wr_id}' ");
if ($row['cnt']) {
$bo_notice .= $tmp_notice . $tmp_wr_id;
$tmp_notice = ",";
}
}
}
$sql = " update `{$g5['board_table']}` set ";
if ($bo_notice) $sql .= " bo_notice = '{$bo_notice}', ";
$sql .= " bo_count_write = '{$bo_count_write}', ";
$sql .= " bo_count_comment = '{$bo_count_comment}' ";
$sql .= " where bo_table = '{$tbo_table}' ";
sql_query($sql);
}
참고자료
https://sir.kr/qa/149890