public static function DoGarbageCollect() { $db = DBManager::get(); if (!Config::GetInstance()->getValue('NEWS_DISABLE_GARBAGE_COLLECT')) { $result = $db->query("SELECT news.news_id FROM news where (date+expire)<UNIX_TIMESTAMP()\n UNION DISTINCT\n SELECT news_range.news_id FROM news_range LEFT JOIN news USING (news_id) WHERE ISNULL(news.news_id)\n UNION DISTINCT\n SELECT news.news_id FROM news LEFT JOIN news_range USING (news_id) WHERE range_id IS NULL")->fetchAll(PDO::FETCH_COLUMN, 0); if (count($result) > 0) { $query = "DELETE FROM news WHERE news_id IN (?)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($result)); $killed = $statement->rowCount(); $query = "DELETE FROM news_range WHERE news_id IN (?)"; $statement = DBManager::get()->prepare($query); $statement->execute(array($result)); object_kill_visits(null, $result); object_kill_views($result); StudipComment::DeleteCommentsByObject($result); } return $killed; } }