首页| 版块| 我的| 发帖| 消息
主题:追踪“评分超时,你不能对此帖进行评分!”(系统组,特殊组,用户组) [电脑版]
为你守候发表于 2017-02-05 10:51
后台设置:
论坛模式-界面设置-阅读页
评分时间限制[小时]  0 帖子发表后超过此时间限制其他用户将不能对此帖评分,系统组不受限制,0 为不限制

设置后,进行评分测试,提示信息为:评分超时,你不能对此帖进行评分!

通过提示信息,检索文件,得到:
'pingtime_over'            => '评分超时,你不能对此帖进行评分!',

继续搜索“pingtime_over”,lib/forum/ping.class.php 文件内代码:
function pingCheck($checkType = '') {
        global $db_pingtime,$timestamp,$gp_gptype,$winduid,$windid,$manager,$_G;
        $pids = array_keys($this->postData);
        foreach ($pids as $k => $v) {
            !is_numeric($v) && $pids[$k] = 0;
        }
        foreach ($this->postData as $pid => $post) {
            if ($db_pingtime && $timestamp - $post['postdate'] > $db_pingtime*3600 && $gp_gptype != 'system') {
                return 'pingtime_over';
            }
            if ($winduid == $post['authorid'] && $checkType == 1 && !CkInArray($windid,$manager)) {
                return 'masigle_manager';
            }
        }
        if ($checkType == '1' && $_G['markable'] < 2 && $this->isPing($this->tid, $pids)) {
            return 'no_markagain';
        }
        if ($checkType == '2' && $this->isNotPing($this->tid, $pids)) {
            return 'have_not_showping';
        }
        return true;
    }
看样子,是定义了一个评分检测的函数,继续查一查那几个提示信息:

'masigle_manager'      => '抱歉,不能给自己评分',
'no_markagain'             => '你已经评过分了,你所属的用户组没有重复评分的权限.',
'have_not_showping'    => '错误操作,你没有给该帖评分!',

如此看来,这个“系统组不受限制”应该在前面的几行代码之中,细看之下,应该就是:
if ($db_pingtime && $timestamp - $post['postdate'] > $db_pingtime*3600 && $gp_gptype != 'system') {
里的: && $gp_gptype != 'system'

这行代码能理解是什么意思!如果设置了评分时间限制,并且现在的时间减去发帖时间大于后台设置的评分时间限制*3600(因为单位是小时,所以需要乘以3600,转化成秒),并且不是系统组,那么就会提示:评分超时,你不能对此帖进行评分!
下一页 (1/2)
回帖(4):
4楼:这个权限判断似乎无用,或者有些错乱,比如在第一行加上&& $gp_gptype == 'member&# ..(为你守候)
3楼:global.php
if ($db_refreshtime && SCR != 'register' && str_rep ..(为你守候)
2楼:if ($GLOBALS['gp_gptype'] != 'system' && $GLOBALS['gp_gptype&# ..(为你守候)

全部回帖(4)» | 最新回帖
收藏本主题 | 发表新主题