近日发现Discuz x3.0排行榜中的日志列表出现大量未通过审核的广告垃圾信息,这些垃圾日志并未审核,更新缓存后也无效。后发现其实这是Discuz的bug,在缓存数据时并没有限制status状态。另外日志各排行榜的排序也都有问题,Discuz中默认只进行了hot和dateline的排序。
如下图中在source/class/table/table_home_blog.php 第37行
当$status为0时是正常审核通过状态,但此时$wheresql 连接为空,即$wheresql = ‘’,这是就不能这样写。此处可以修改为:
$wheresql .= ' AND '.DB::field('status', $status);
在39行对$orderby处理时也要修改:
if(in_array($orderby, array('hot', 'dateline'))) {
$wheresql .= ' ORDER BY '.DB::order($orderby, $ordersc);
}
修改为:
修改为:
switch ($orderby) {
case 'views':
$orderby = 'viewnum';
break;
case 'replies':
$orderby = 'replynum';
break;
case 1:
$orderby = 'click1';
break;
case 2:
$orderby = 'click2';
break;
case 3:
$orderby = 'click3';
break;
case 4:
$orderby = 'click4';
break;
case 5:
$orderby = 'click5';
break;
}
if(in_array($orderby, array('hot', 'dateline','sharetimes','favtimes','viewnum','replynum','click1','click2','click3','click4','click5'))) {
$wheresql .= ' ORDER BY '.DB::order($orderby, $ordersc);
}
除非注明,均为湛蓝天空原创,转载请注明本文网址:http://skyhome.cn/discuz/499.html