function qa_limits_remaining($userid, $action)
{
    if (qa_to_override(__FUNCTION__)) {
        $args = func_get_args();
        return qa_call_override(__FUNCTION__, $args);
    }
    require_once QA_INCLUDE_DIR . 'qa-db-limits.php';
    $dblimits = qa_db_limits_get($userid, qa_remote_ip_address(), $action);
    return qa_limits_calc_remaining($action, @$dblimits['user'], @$dblimits['ip']);
}
示例#2
0
function qa_limits_remaining($userid, $action)
{
    if (qa_to_override(__FUNCTION__)) {
        $args = func_get_args();
        return qa_call_override(__FUNCTION__, $args);
    }
    require_once QA_INCLUDE_DIR . 'qa-app-options.php';
    require_once QA_INCLUDE_DIR . 'qa-db-limits.php';
    $period = (int) (qa_opt('db_time') / 3600);
    $dblimits = qa_db_limits_get($userid, qa_remote_ip_address(), $action);
    switch ($action) {
        case QA_LIMIT_QUESTIONS:
            $userlimit = qa_opt('max_rate_user_qs');
            $iplimit = qa_opt('max_rate_ip_qs');
            break;
        case QA_LIMIT_ANSWERS:
            $userlimit = qa_opt('max_rate_user_as');
            $iplimit = qa_opt('max_rate_ip_as');
            break;
        case QA_LIMIT_COMMENTS:
            $userlimit = qa_opt('max_rate_user_cs');
            $iplimit = qa_opt('max_rate_ip_cs');
            break;
        case QA_LIMIT_VOTES:
            $userlimit = qa_opt('max_rate_user_votes');
            $iplimit = qa_opt('max_rate_ip_votes');
            break;
        case QA_LIMIT_REGISTRATIONS:
            $userlimit = 1;
            // not really relevant
            $iplimit = qa_opt('max_rate_ip_registers');
            break;
        case QA_LIMIT_LOGINS:
            $userlimit = 1;
            // not really relevant
            $iplimit = qa_opt('max_rate_ip_logins');
            break;
        case QA_LIMIT_UPLOADS:
            $userlimit = qa_opt('max_rate_user_uploads');
            $iplimit = qa_opt('max_rate_ip_uploads');
            break;
        case QA_LIMIT_FLAGS:
            $userlimit = qa_opt('max_rate_user_flags');
            $iplimit = qa_opt('max_rate_ip_flags');
            break;
        case QA_LIMIT_MESSAGES:
            $userlimit = qa_opt('max_rate_user_messages');
            $iplimit = qa_opt('max_rate_ip_messages');
            break;
        default:
            qa_fatal_error('Unknown limit code in qa_limits_remaining: ' . $action);
            break;
    }
    return max(0, min($userlimit - (@$dblimits['user']['period'] == $period ? $dblimits['user']['count'] : 0), $iplimit - (@$dblimits['ip']['period'] == $period ? $dblimits['ip']['count'] : 0)));
}
示例#3
0
function qa_limits_remaining($userid, $actioncode)
{
    require_once QA_INCLUDE_DIR . 'qa-app-options.php';
    require_once QA_INCLUDE_DIR . 'qa-db-limits.php';
    $period = (int) (qa_opt('db_time') / 3600);
    $dblimits = qa_db_limits_get($userid, qa_remote_ip_address(), $actioncode);
    switch ($actioncode) {
        case 'Q':
            $userlimit = qa_opt('max_rate_user_qs');
            $iplimit = qa_opt('max_rate_ip_qs');
            break;
        case 'A':
            $userlimit = qa_opt('max_rate_user_as');
            $iplimit = qa_opt('max_rate_ip_as');
            break;
        case 'C':
            $userlimit = qa_opt('max_rate_user_cs');
            $iplimit = qa_opt('max_rate_ip_cs');
            break;
        case 'V':
            $userlimit = qa_opt('max_rate_user_votes');
            $iplimit = qa_opt('max_rate_ip_votes');
            break;
        case 'L':
            $userlimit = 1;
            // not really relevant
            $iplimit = qa_opt('max_rate_ip_logins');
            break;
        case 'U':
            $userlimit = qa_opt('max_rate_user_uploads');
            $iplimit = qa_opt('max_rate_ip_uploads');
            break;
        case 'F':
            $userlimit = qa_opt('max_rate_user_flags');
            $iplimit = qa_opt('max_rate_ip_flags');
            break;
        case 'M':
            $userlimit = qa_opt('max_rate_user_messages');
            $iplimit = qa_opt('max_rate_ip_messages');
            break;
    }
    return max(0, min($userlimit - (@$dblimits['user']['period'] == $period ? $dblimits['user']['count'] : 0), $iplimit - (@$dblimits['ip']['period'] == $period ? $dblimits['ip']['count'] : 0)));
}