Beispiel #1
0
 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;
     }
 }