<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

// 최고관리자일 때만 실행
if($is_admin != 'super')
    return;

// 안전장치: 웹 요청에서 무거운 정리 작업이 반복 실행되지 않도록 하루 1회 파일 락 사용
$optimize_lock_file = G5_DATA_PATH.'/cache/optimize_run_'.G5_TIME_YMD.'.lock';
if (is_file($optimize_lock_file)) {
    return;
}
@file_put_contents($optimize_lock_file, G5_TIME_YMDHIS);

// 실행일 비교
if(isset($config['cf_optimize_date']) && $config['cf_optimize_date'] >= G5_TIME_YMD)
    return;

// 설정일이 지난 접속자로그 삭제
if($config['cf_visit_del'] > 0) {
    $tmp_before_date = date("Y-m-d", G5_SERVER_TIME - ($config['cf_visit_del'] * 86400));
    $sql = " delete from {$g5['visit_table']} where vi_date < '$tmp_before_date' ";
    sql_query($sql);
    sql_query(" OPTIMIZE TABLE `{$g5['visit_table']}`, `{$g5['visit_sum_table']}` ");
}

// 설정일이 지난 인기검색어 삭제
if($config['cf_popular_del'] > 0) {
    $tmp_before_date = date("Y-m-d", G5_SERVER_TIME - ($config['cf_popular_del'] * 86400));
    $sql = " delete from {$g5['popular_table']} where pp_date < '$tmp_before_date' ";
    sql_query($sql);
    sql_query(" OPTIMIZE TABLE `{$g5['popular_table']}` ");
}

// 설정일이 지난 최근게시물 삭제 -
if($config['cf_new_del'] > 0) {
    $sql = " delete from {$g5['board_new_table']} where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(bn_datetime)) > '{$config['cf_new_del']}' and as_publish <> '1' and as_type <> '1'";
    sql_query($sql, false);
    sql_query(" OPTIMIZE TABLE `{$g5['board_new_table']}` ");
}

// 설정일이 지난 쪽지 삭제
if($config['cf_memo_del'] > 0) {
    $sql = " delete from {$g5['memo_table']} where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(me_send_datetime)) > '{$config['cf_memo_del']}' ";
    sql_query($sql);
    sql_query(" OPTIMIZE TABLE `{$g5['memo_table']}` ");
}

// 탈퇴회원 자동 삭제
if($config['cf_leave_day'] > 0) {
    $sql = " select mb_id from {$g5['member_table']}
                where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(mb_leave_date)) > '{$config['cf_leave_day']}'
                  and mb_memo not regexp '^[0-9]{8}.*삭제함' ";
    $result = sql_query($sql);
    while ($row=sql_fetch_array($result))
    {
        // 회원자료 삭제
        member_delete($row['mb_id']);
    }
}

// 내글반응삭제 - 60일
$sql = " delete from {$g5['apms_response']} where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(regdate)) > '60' ";
sql_query($sql, false);
sql_query(" OPTIMIZE TABLE `{$g5['apms_response']}` ", false);

// 음성 캡챠 파일 삭제
$captcha_mp3 = glob(G5_DATA_PATH.'/cache/kcaptcha-*.mp3');
if($captcha_mp3 && is_array($captcha_mp3)) {
    foreach ($captcha_mp3 as $file) {
        if (filemtime($file) + 86400 < G5_SERVER_TIME) {
            @unlink($file);
        }
    }
}

// 실행일 기록
if(isset($config['cf_optimize_date'])) {
    sql_query(" update {$g5['config_table']} set cf_optimize_date = '".G5_TIME_YMD."' ");
}
?>