Discuz!X2 新審覈機制改進解析

 在 X15 的時候,所有的審覈信息是存放在自己的表內,比如發表一個3D電影下載的帖子就是存在 post 表,日誌就是存在 blog 表,在讀取需要審覈的信息的列表的時候就要利用這個表去聯合其他的相關信息的表再加上判斷相應的字段才能夠將對應的數據篩選出來,所以在某些情況下會造成服務器的高負載,造成慢查詢。在 X2 中,獨立出來一個審覈表 pre_common_moderate,用來記錄各種需要審覈的信息的 ID,在查看的時候就減少了查詢的負擔,只要根據審覈表中的 id 來查詢信息就可以了。審覈表數據字典:

 
 
同時,各個部分信息的代碼也已經分離,在 source\admincp\moderate 目錄中的文件根據不同類型的數據分離了每個部分的代碼。
 
 
同時,在後臺首頁顯示的待審覈項目數也是根據 pre_common_moderate 表計數而來。這就需要在二次開發的時候注意,如果需要修改信息的審覈狀態,那麼就要將原來信息的審覈狀態與審覈表的狀態相對應。
 
具體函數爲:source\function\function_core.php 裏的:
 
  1. function updatemoderate($idtype, $ids, $status = 0) { 
  2.         global $_G; 
  3.         $ids = is_array($ids) ? $ids : array($ids); 
  4.         if(!$ids) { 
  5.                 return; 
  6.         } 
  7.         if(!$status) { 
  8.                 foreach($ids as $id) { 
  9.                         DB::insert('common_moderate', array('id' => $id, 'idtype' => $idtype, 'status' => 0, 'dateline' => $_G['timestamp']), false, true); 
  10.                 } 
  11.         } elseif($status == 1) { 
  12.                 DB::update('common_moderate', array('status' => 1), "id IN (".dimplode($ids).") AND idtype='$idtype'"); 
  13.         } elseif($status == 2) { 
  14.                 DB::delete('common_moderate', "id IN (".dimplode($ids).") AND idtype='$idtype'"); 
  15.         } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章