답변 6개
공지가 풀린 글을 다시 공지로 지정할 수도 있어야 한다면..
1. 예비필드를 하나 이용합니다. (wr_1)
글 수정시 해당필드에 수정일자를 등록하게 합니다.
write_update.php 파일에서 업데이트 구문중 wr_1 = {$wr_1}, ==> wr_1 = '".G5_TIME_YMDHIS."', 로 변경
글수정시 수정일자가 등록되게됨
2. /lib/common.lib.php 파일에 function 변경
function notice_delete($bo_table,$wr_id,$day){ global $g5;
$write_table = $g5['write_prefix'].$bo_table;
$notice = ""; $notice_array = explode(",", $wr_id);
for($i=0;$i $sql = "select count(wr_id) as cnt from $write_table where wr_id='{$notice_array[$i]}' and (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(wr_1)) > '{$day}' ";
$row = sql_fetch($sql); if($row['cnt']>0){
$bo_notice = board_notice($wr_id, $notice_array[$i], $notice);
sql_query("update {$g5['board_table']} set bo_notice = '{$bo_notice}' where bo_table = '{$bo_table}'");
}
} } 날짜를 비교하는 필드를 해당 게시판테이블의 wr_1 필드로 변경.. 일케하면 재공지로 등록된 공지글은 수정일로부터 10일 후에 다시 공지가 풀리게 됩니다. 그럼 수고하세요.
댓글을 작성하려면 로그인이 필요합니다.
db_table.optimize.php
// 10일이 지난 공지글 삭제 $sql = " select bo_table,bo_notice from {$g5['board_table']} where bo_notice <> '' and bo_table in ('a1','a3') "; $result = sql_query($sql); while ($row=sql_fetch_array($result)) { notice_delete($row['bo_table'],$row['bo_notice'],1); }
확인할점
1. 해당 게시판 공지글에 wr_11 필드에 날짜가 들어가 있는지 확인
wr_11 은 추가로 만드신건가요? 그렇다면 /bbs/write_update.php 파일에도 해당 필드값에 대한 쿼리를 추가하셨는지 여부
아마도 기본테이블은 wr_10까지만 있을꺼에요..
2. 환경설정 날짜필드 확인
g5_config 테이블의 cf_optimize_date 필드를 확인해 보세요..
날짜가 오늘날짜로 되어있다면 db_table.optimize.php 파일이 실행되지 않습니다.
db_table.optimize.php 파일 위쪽에 보시면
// 실행일 비교 if(isset($config['cf_optimize_date']) && $config['cf_optimize_date'] >= G5_TIME_YMD) return;
cf_optimize_date 필드의 날짜가 오늘날짜보다 크거나 같으면 return 합니다.
테스트 해보시려면 g5_config 테이블의 cf_optimize_date 날짜를 오늘 이전 날짜로 수정하신 후 확인해보셔야 합니다.
함 해보시고 안되면 쪽지 주세요....
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
db_table.optimize.php
// 10일이 지난 공지글 삭제 $sql = " select bo_table,bo_notice from {$g5['board_table']} where bo_notice <> '' "; $result = sql_query($sql); while ($row=sql_fetch_array($result)) { if($row['bo_table']=='a1' || $row['bo_table']=='a3'){ notice_delete($row['bo_table'],$row['bo_notice'],1); } }
common.lib.php
function notice_delete($bo_table,$wr_id,$day){ global $g5; $write_table = $g5['write_prefix'].$bo_table;
$notice = ""; $notice_array = explode(",", $wr_id);
for($i=0;$i $sql = "select count(wr_id) as cnt from $write_table where wr_id='{$notice_array[$i]}' and (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(wr_11)) > '{$day}' ";
$row = sql_fetch($sql); if($row['cnt']>0){
$bo_notice = board_notice($wr_id, $notice_array[$i], $notice);
sql_query("update {$g5['board_table']} set bo_notice = '{$bo_notice}' where bo_table = '{$bo_table}'");
}
}
} 답변 감사드립니다. 하루로 잡고 설정해보니 하루지나도 공지가 해제되지 않습니다. db에는 wr_1대신 wr_11에 정상적으로 값이 쓰여지는데 공지해제가 되지 않네요.;;
댓글을 작성하려면 로그인이 필요합니다.
1. db_table.optimize.php 파일에 추가
// 10일이 지난 공지글 삭제 $sql = " select bo_table,bo_notice from {$g5['board_table']} where bo_notice <> '' "; $result = sql_query($sql); while ($row=sql_fetch_array($result)) { notice_delete($row['bo_table'],$row['bo_notice'],10); }
위 사항은 반드시
// 실행일 기록 if(isset($config['cf_optimize_date'])) { sql_query(" update {$g5['config_table']} set cf_optimize_date = '".G5_TIME_YMD."' "); }
위에 추가하셔야 합니다.
2. /lib/common.lib.php 파일에 function 추가
function notice_delete($bo_table,$wr_id,$day){ global $g5;
$notice = ""; $notice_array = explode(",", $wr_id);
for($i=0;$i $sql = "select count(wr_id) as cnt from {$g5['board_new_table']} where bo_table='{$bo_table}' and wr_id='{$notice_array[$i]}' and (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(bn_datetime)) > '{$day}' ";
$row = sql_fetch($sql); if($row['cnt']>0){
$bo_notice = board_notice($wr_id, $notice_array[$i], $notice);
sql_query("update {$g5['board_table']} set bo_notice = '{$bo_notice}' where bo_table = '{$bo_table}'");
}
} }
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>$sql = " select bo_table, bo_notice from g5_board ";
$result = sql_query($sql);
while($row=sql_fetch_array($result)){
if($row['bo_notice']=="")
continue;
$sql1 = "select wr_id from g5_write_{$row['bo_table']} where wr_id in ({$row['bo_notice']}) and now() < adddate(wr_datetime, interval 10 day) ";
$result1 = sql_query($sql1);
$new = array();
while($row1=sql_fetch_array($result1)){
$new[] = $row1['wr_id'];
}
$new_notice = implode(",", $new);
sql_query("update g5_board set bo_notice = '$new_notice' where bo_table = '{$row['bo_table']}' ");
unset($new);
}</p>
<p>
로또루와님 말씀처럼 db_table.optimize.php파일에
위처럼 하면 되지 않을까 생각합니다. 테스트는 해보지 않았습니다. 글쓴날짜 기준입니다.
(공지체크한 날짜를 기준으로 하려면 게시판 글쓰기에 추가 작업이 필요합니다.)
잘되면 좋겠네요
답변에 대한 댓글 1개
공지가 되지않고 일반글로만 되네요. 암튼 감사드립니다.^^
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인