discuz X3評分流程分析

discuz X3評分流程分析php



1、涉及到的文件數組


discuzX3/source/template/default/forum/rate.htmide

discuzX3/forum.phpspa

discuzX3/source/module/forum/forum_misc.phphtm


2、流程(注意:流程順序也是按照上面文件依次向下)blog


如上圖評分->進入到forum_misc.php文件中處理。大約第606行開發

elseif($_GET['action'] == 'rate' && $_GET['pid']) {


rate方法即爲評分分值的加減操做。大約在672行get

foreach($_G['group']['raterange'] as $id => $rating) {
    $score = intval($_GET['score'.$id]);
    if(isset($_G['setting']['extcredits'][$id]) && !empty($score)) {
                                                                                                                                     
        //showmessage($id);
        $arr_goldId[]=$id;
        $arr_goldValue[]=$score;
                                                                                                                                     
        if($rating['isself'] && (intval($_G['member']['extcredits'.$id]) - $score < 0)) {
            showmessage('thread_rate_range_self_invalid', '', array('extcreditstitle' => $_G['setting']['extcredits'][$id]['title']));
        }
        if(abs($score) <= $maxratetoday[$id]) {
            if($score > $rating['max'] || $score < $rating['min']) {
                showmessage('thread_rate_range_invalid');
            } else {
                $creditsarray[$id] = $score;
                if($rating['isself']) {
                    $sub_self_credit[$id] = -abs($score);
                }
                $rate += $score;
                $ratetimes += ceil(max(abs($rating['min']), abs($rating['max'])) / 5);
            }
        } else {
            showmessage('thread_rate_ctrl');
        }
    }
}

這裏DZ經過foreach循環分別獲取用戶的評分種類及相應分值。 it

//showmessage($id);
$arr_goldId[]=$id;
$arr_goldValue[]=$score;

數組$arr_goldId評分種類id;數組$arr_goldValue評分分值。io

這裏對「金錢」作二次開發:


if($arr_goldId[0] == 2){
    $goldValue=$arr_goldValue[0];
}
elseif($arr_goldId[0] == 1 && $arr_goldId[1] == 2){
    $goldValue=$arr_goldValue[1];
}      
if($arr_goldId[0] == 2 || ($arr_goldId[0] != 2 && $arr_goldId[1] == 2)){
                    
    /*****************************
    /*
    /******   To do something
    /*
    /******************************/
                    
    //showmessage($goldValue); 
}
showmessage('thread_rate_succeed', dreferer());
相關文章
相關標籤/搜索