版块开启审核的情况下QQ互联无法自动同步的问题分析

下午排查发现一个站点开启了审核的情况下QQ互联无法自动同步的问题,特整理排查过程。

问题描述:

站点端开启了审核功能,所有发帖都先进入待审核状态,审核通过后才可以正常访问,发帖无法自动同步到空间和微博。

代码分析:

找到source/plugin/qqconnect/connect.class.php文件,可以搜索到如下触发自动同步的代码:

if((!getstatus($_G['forum_thread']['status'], 7) || !getstatus($_G['forum_thread']['status'], 8))
         && $_G['forum_thread']['displayorder'] >= 0 && $_G['member']['conisbind']
         && $_G['uid'] == $_G['forum_thread']['authorid']) {
    $_G['connect']['feed_log'] = DB::fetch_first("SELECT * FROM ".DB::table('connect_feedlog')." WHERE tid='$_G[tid]'");
    if($_G['connect']['feed_log']) {
        $_G['connect']['feed_interval'] = 300;
        $_G['connect']['feed_publish_max'] = 1000;
        if(getstatus($_G['connect']['feed_log']['status'], 1) || (getstatus($_G['connect']['feed_log']['status'], 2)
            && TIMESTAMP - $_G['connect']['feed_log']['lastpublished'] > $_G['connect']['feed_interval']
            && $_G['connect']['feed_log']['publishtimes'] < $_G['connect']['feed_publish_max'])) {
            $_G['connect']['feed_js'] = $feedlogstatus = true;
        }

        if(getstatus($_G['connect']['feed_log']['status'], 3) || (getstatus($_G['connect']['feed_log']['status'], 4)
            && TIMESTAMP - $_G['connect']['feed_log']['lastpublished'] > $_G['connect']['feed_interval']
            && $_G['connect']['feed_log']['publishtimes'] < $_G['connect']['feed_publish_max'])) {
            $_G['connect']['t_js'] = $tlogstatus = true;
        }

        if($feedlogstatus || $tlogstatus) {
            $status = $feedlogstatus ? setstatus(2, 1, $status) : $status;
            $status = $tlogstatus ? setstatus(4, 1, $status) : $status;
            DB::query("UPDATE ".DB::table('connect_feedlog')." SET status='$status', lastpublished='$_G[timestamp]', publishtimes=publishtimes+1 WHERE tid='$_G[tid]'");
        }
    }
}

其中的$_G['connect']['feed_js']和$_G['connect']['t_js']两个变量为控制是否触发自动同步到空间和微博的变量。
注意开头的if判断里的下面这句:

&& $_G['member']['conisbind'] && $_G['uid'] == $_G['forum_thread']['authorid']

这里要求是发帖人自己访问的时候才会触发自动同步的代码。

结论:

前面提到站点开启了审核功能,所有发帖都会先进入待审核状态,由管理人员审核通过后其他人才可以正常访问到。
当帖子被审核通过后,如果发帖人没有重新访问过自己的帖子,那么同样是不会自动同步到空间和微博的。

另外,自动同步的帖子是有时间限制的,如果发帖时间距当前时间超过12个小时,即使发帖人重新访问自己的帖子,这个时候也不会再触发自动同步了。

标签: 云平台, Discuz, QQ互联

添加新评论