<commit_before><?php
/**
 * PIO Condition Object
 *
 * 判斷文章是否符合刪除條件並列出刪除編號
 * 
 * @package PMCLibrary
 * @version $Id$
 * @date $Date$
 */

/* 以總文章篇數作為刪除判斷 */
class ByPostCountCondition{
	/*public static */function check($type, $limit){
		global $PIO;
		return $PIO->postCount() >= $limit * ($type=='predict' ? 0.95 : 1);
	}

	/*public static */function listee($type, $limit){
		global $PIO;
		return $PIO->fetchPostList(0, intval($limit * ($type=='predict' ? 0.95 : 1)) - 1, $limit);
	}
}

/* 以總討論串數作為刪除判斷 */
class ByThreadCountCondition{
	/*public static */function check($type, $limit){
		global $PIO;
		return $PIO->threadCount() >= ($type=='predict' ? $limit * 0.95 : 1);
	}

	/*public static */function listee($type, $limit){
		global $PIO;
		return $PIO->fetchThreadList(intval($limit * ($type=='predict' ? 0.95 : 1)), $limit);
	}
}
?><commit_msg>-[PIO] 新增 ByThreadAliveTimeCondition 以討論串發文天數作為刪除判斷 (超過指定天數就砍，最大砍到剩一篇)<commit_after><?php
/**
 * PIO Condition Object
 *
 * 判斷文章是否符合刪除條件並列出刪除編號
 * 
 * @package PMCLibrary
 * @version $Id$
 * @date $Date$
 */

/* 以總文章篇數作為刪除判斷 */
class ByPostCountCondition{
	/*public static */function check($type, $limit){
		global $PIO;
		return $PIO->postCount() >= $limit * ($type=='predict' ? 0.95 : 1);
	}

	/*public static */function listee($type, $limit){
		global $PIO;
		return $PIO->fetchPostList(0, intval($limit * ($type=='predict' ? 0.95 : 1)) - 1, $limit);
	}
}

/* 以總討論串數作為刪除判斷 */
class ByThreadCountCondition{
	/*public static */function check($type, $limit){
		global $PIO;
		return $PIO->threadCount() >= ($type=='predict' ? $limit * 0.95 : 1);
	}

	/*public static */function listee($type, $limit){
		global $PIO;
		return $PIO->fetchThreadList(intval($limit * ($type=='predict' ? 0.95 : 1)), $limit);
	}
}

/* 以討論串生存時間作為刪除判斷 */
class ByThreadAliveTimeCondition{
	/*public static */function check($type, $limit){
		global $PIO;
		$oldestThreadNo = $PIO->fetchThreadList($PIO->threadCount() - 1, 1, true); // 最舊討論串編號
		$oldestThread = $PIO->fetchPosts($oldestThreadNo);
		return (time() - substr($oldestThread[0]['tim'], 0, 10) >= 86400 * $limit * ($type=='predict' ? 0.95 : 1));
	}

	/*public static */function listee($type, $limit){
		global $PIO;
		$ThreadNo = $PIO->fetchThreadList(0, 0, true); sort($ThreadNo); // 討論串編號陣列 (由舊到新)
		$NowTime = time();
		$i = 0;
		foreach($ThreadNo as $t){
			$post = $PIO->fetchPosts($t);
			if($NowTime - substr($post[0]['tim'], 0, 10) < 86400 * $limit * ($type=='predict' ? 0.95 : 1)) break; // 時間不符合
			$i++;
		}
		if(count($ThreadNo)===$i){ $i--; } // 保留最新的一篇避免全部刪除
		return array_slice($ThreadNo, 0, $i);
	}
}
?>
{'fraction_non_alphanumeric': 0.21080873898045227, 'fraction_numerical': 0.026063625910310462, 'mean_word_length': 4.209580838323354, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4970321', 'n_tokens_mistral': 1208, 'n_tokens_neox': 1188, 'n_words': 216}