广告位招租 qq245909083
广告
广告

Discuz X3.* 增加大众审核机制

分享时间:2020-03-08 343 热度℃
本文正在完善中,仅供参考。

说明:在原有审核机制基础上,增加大众审核机制。本文以X3.1为例,其它版本未测试。

1、在前台的版块帖子列表中,让指定用户组可以看到等待审核的帖子。

打开 source/module/forum/forum_forumdisplay.php 文件,查找:

        $_order = "displayorder DESC, $_GET[orderby] $_GET[ascdesc]";
删除其中的 displayorder DESC, ,即替换为:

        $_order = "$_GET[orderby] $_GET[ascdesc]";
说明:取消按 displayorder 值倒序排列(正常帖该值为0,待审帖为-2,详见...),否则待审帖排在整个版块的末尾。

查找:

        $threadlist = array_merge($threadlist, C::t('forum_thread')->fetch_all_search($filterarr, $tableid, $start_limit, $_G['tpp'], $_order, '', $indexadd));
在其前方新增一段:

        if(!in_array($_G['groupid'], array(4,5,6,7,8))) {
                $filterarr['displayorder'] = '1';
                $threadlist = array_merge($threadlist, C::t('forum_thread')->fetch_all_search($filterarr, $tableid, $start_limit, $_G['tpp'], $_order, ''));
                $filterarr['displayorder'] = array(-2, 0);
        }
说明:设定显示待审帖的条件,本示例中是排除用户组,即用户组不为上述ID时显示待审帖。如果要反过来只让这些用户组可见,可去掉前方的感叹号。还可以根据自己的需要设定其它条件,例如持有某种勋章等。

2、完成上一步后,版块帖子列表中会出现待审帖,但点击后提示“……指定的主题不存在……”。

打开 source/function/function_forum.php ,查找:

                        if(!$_G['forum_auditstatuson'] && !empty($_G['thread'])
在其前方新增一段:

                        if(!$_G['forum_auditstatuson']) {
                                $_G['forum_auditstatuson'] = $_G['forum_publicauditstatuson'] = in_array($_G['thread']['displayorder'], array(-3,-2)) && !in_array($_G['groupid'], array(4,5,6,7,8)) ? true : false;
                        }
说明:使指定用户组浏览待审帖子时审核状态为开(使帖子可以正常打开)。

3、解决待审帖下的回帖被删除后,前台用户仍然可见的问题。

打开 source/module/forum/forum_viewthread.php 文件,查找:

        $visibleallflag = 1;
替换为:

        $visibleallflag = $_G['forum_publicauditstatuson'] ? 2 : 1;
打开 source/class/table/table_forum_post.php 文件,查找:

                if(!$visibleallflag) {
                        $return['invisible'] = $alias.DB::field('invisible', 0);
                }
替换为:

                if(!$visibleallflag) {
                        $return['invisible'] = $alias.DB::field('invisible', 0);
                } elseif($visibleallflag == 2) {
                        $return['invisible'] = $alias.DB::field('invisible', array(0, -2, -3));
                }
说明:$_G['forum_publicauditstatuson'] 已在第2步中定义。指定用户组浏览待审帖时,$_G['forum_publicauditstatuson'] 状态为 true,然后 $visibleallflag = 2,显示 invisible 值为 0 / -2 / -3 的回复,否则当 $visibleallflag 存在时将显示所有回复(无法排除状态为-5的回收站内回帖)。

4、可选:禁止他人对待审帖进行回复。

打开 source/module/forum/forum_post.php 文件,查找:

        $thread = C::t('forum_thread')->fetch($_G['tid']);
在其下方新增一段:


        if($thread['displayorder'] == -2 && $thread['authorid'] != $_G['uid'] && !$_G['forum']['ismoderator']) {
                showmessage('此帖正在等待审核,通过后才能回复!');
        }
此时他人已无法提交回帖,但仍然可见回帖按钮和回帖框,可在前台模板中做判断后隐藏。

5、支持和禁止一部分管理操作。

我们无法对待审帖进行删除、移动、分类、加图标等管理操作,按以下说明修改后支持。
打开 source/include/topicadmin/topicadmin_moderate.php 文件,查找:

                        if($thread['closed'] > 1 && $operation && !in_array($operation, array('delete', 'highlight', 'stick', 'digest', 'bump', 'down')) || $thread['displayorder'] < 0 && $thread['displayorder'] != -4) {
                                if($operation == 'recommend_group') {
                                        $recommend_group_count ++;
                                }
                                continue;
                        }
替换为:

                        if($thread['closed'] > 1 && $operation && !in_array($operation, array('delete', 'highlight', 'stick', 'digest', 'bump', 'down')) || $thread['displayorder'] < 0 && !in_array($thread['displayorder'], array(-2, -3, -4))) {
                                if($operation == 'recommend_group') {
                                        $recommend_group_count ++;
                                }
                                continue;
                        } elseif($thread['displayorder'] < 0 && (in_array($operation, array('stick', 'bump', 'down')) || $_GET['optgroup'] == 4)) {
                                showmessage('不能对审核中的帖子进行此项操作。');
                        }
完成以上修改后,除置顶、升降和关闭打开以外的管理操作将可用。注意:必须保持禁止置顶操作,因为置顶会改变 displayorder 值,使帖子离开审核状态(但审核表中数据未清理)。

此外,“修复帖子”功能默认可用,但对审核中的帖子进行修复操作将造成帖子标题丢失等问题,所以必须禁止对待审核进行修复操作。另外“直播”等功能可能存在问题,此处一并关闭。
打开 source/module/forum/forum_topicadmin.php 文件,查找:

        require_once $topicadminfile;
在其上方添加:

        if(!in_array($_GET['action'], array('moderate', 'banpost', 'warn', 'stamp', 'stamplist')) && $_G['thread']['displayorder'] < 0) {
                showmessage('不能对审核中的帖子进行此项操作。', NULL);
        }
以上5步完成后,待审帖在前台可完美展示。接下来就是添加大众审核功能了,让指定用户组或拥有“大众审核员”勋章的用户可以对帖子是否合规进行投票,当正分值到达指定值时自动通过审核,当负分值到达指定值时自动删除。

6、增加大众审核功能。稍后添加……
文章标题:Discuz X3.* 增加大众审核机制

本文地址:http://www.aizhanku.com/t39507

本文标签:
返回顶部