本帖最后由 viswow 于 2011-5-16 13:46 编辑
首先,请熟悉下如何判断一个帖子是否处于审核状态
在 X15 的时候,所有的审核信息是存放在自己的表内,比如帖子就是存在 post 表,日志就是存在 blog 表,在读取需要审核的信息的列表的时候就要利用这个表去联合其他的相关信息的表再加上判断相应的字段才能够将对应的数据筛选出来,所以在某些情况下会造成服务器的高负载,造成慢查询。在 X2 中,独立出来一个审核表 pre_common_moderate,用来记录各种需要审核的信息的 ID,在查看的时候就减少了查询的负担,只要根据审核表中的 id 来查询信息就可以了。审核表数据字典:
同时,各个部分信息的代码也已经分离,在 source\admincp\moderate 目录中的文件根据不同类型的数据分离了每个部分的代码。
同时,在后台首页显示的待审核项目数也是根据 pre_common_moderate 表计数而来。这就需要在二次开发的时候注意,如果需要修改信息的审核状态,那么就要将原来信息的审核状态与审核表的状态相对应。
具体函数为:source\function\function_core.php 里的:
- function updatemoderate($idtype, $ids, $status = 0) {
- global $_G;
- $ids = is_array($ids) ? $ids : array($ids);
- if(!$ids) {
- return;
- }
- if(!$status) {
- foreach($ids as $id) {
- DB::insert('common_moderate', array('id' => $id, 'idtype' => $idtype, 'status' => 0, 'dateline' => $_G['timestamp']), false, true);
- }
- } elseif($status == 1) {
- DB::update('common_moderate', array('status' => 1), "id IN (".dimplode($ids).") AND idtype='$idtype'");
- } elseif($status == 2) {
- DB::delete('common_moderate', "id IN (".dimplode($ids).") AND idtype='$idtype'");
- }
- }
复制代码 具体的 idtype 是什么可以在开发过程中看一下,用的比较多的有:
主题id:tid
帖子id:postid
日志id:blogid
如果没有同步修改审核表的话,就会导致待审核数与实际的数目不相同。
|