8.0交卷时候不能记录错题,看了代码,好像有问题,打分的时候不会返回错题集id 返回
-
-
是的,在添加新功能的时候误删了此处的代码,打开app/exam/cls/exam.cls.php文件,找到 makescore 方法,更换为以下代码:
public function markscore($sessionvars,$questypes)
{
if(!$sessionvars['examsessionid'])return false;
$token = $this->ev->get('token');
if(!$token || $token != md5($sessionvars['examsessionid'].'-'.$sessionvars['examsessionuserid'].'-'.$sessionvars['examsessiontoken']))
{
$message = array(
'statusCode' => 300,
"message" => "系统检测到试卷错误,请联系监考老师!"
);
$this->G->R($message);
}
if(!$sessionvars['examsessiontype'])
{
foreach($questypes as $questype)
{
$sessionvars['examsessionsetting']['examsetting']['questype'][$questype['questid']]['score'] = 1;
}
}
foreach($sessionvars['examsessionquestion']['questions'] as $key => $tmp)
{
if(!empty($tmp))
{
if(!$questypes[$key]['questsort'])
{
foreach($tmp as $p)
{
$thisscore = $sessionvars['examsessionsetting']['examsetting']['scores'][$p['questionid']];
if(!$thisscore)$thisscore = $sessionvars['examsessionsetting']['examsetting']['questype'][$key]['score'];
if(is_array($sessionvars['examsessionuseranswer'][$p['questionid']]))
{
$nanswer = '';
$answer = $sessionvars['examsessionuseranswer'][$p['questionid']];
asort($answer);
$nanswer = implode("",$answer);
if($nanswer == $p['questionanswer'])
{
$score = $thisscore;
}
else
{
if($questypes[$key]['questchoice'] == 3)
{
$alen = strlen($p['questionanswer']);
$rlen = 0;
foreach($answer as $t)
{
if(strpos($p['questionanswer'],$t) === false)
{
$rlen = 0;
break;
}
else
{
$rlen ++;
}
}
$score = floatval($thisscore * $rlen/$alen);
}
else $score = 0;
$wrongids[] = $p['questionid'];
}
}
else
{
$answer = $sessionvars['examsessionuseranswer'][$p['questionid']];
if($answer == $p['questionanswer'])
{
$score = $thisscore;
}
else
{
$score = 0;
$wrongids[] = $p['questionid'];
}
}
$scorelist[$p['questionid']] = $score;
}
}
else
{
$needhand = 1;
}
}
}
foreach($sessionvars['examsessionquestion']['questionrows'] as $key => $tmp)
{
if(!empty($tmp))
{
foreach($tmp as $tmp2)
{
foreach ($tmp2['data'] as $p)
{
$thisscore = $sessionvars['examsessionsetting']['examsetting']['scores'][$p['questionid']];
if(!$thisscore)$thisscore = $sessionvars['examsessionsetting']['examsetting']['questype'][$key]['score'];
if (!$questypes[$p['questiontype']]['questsort'])
{
if (is_array($sessionvars['examsessionuseranswer'][$p['questionid']]))
{
$answer = $sessionvars['examsessionuseranswer'][$p['questionid']];
asort($answer);
$nanswer = implode("", $answer);
if ($nanswer == $p['questionanswer'])
{
$score = $thisscore;
}
else
{
if ($questypes[$key]['questchoice'] == 3)
{
$alen = strlen($p['questionanswer']);
$rlen = 0;
foreach ($answer as $t)
{
if (strpos($p['questionanswer'], $t) === false)
{
$rlen = 0;
break;
}
else
{
$rlen++;
}
}
$score = $thisscore * $rlen / $alen;
}
else
{
$score = 0;
}
$wrongids[] = $p['questionid'];
}
}
else
{
$answer = $sessionvars['examsessionuseranswer'][$p['questionid']];
if ($answer == $p['questionanswer'])
{
$score = $thisscore;
}
else
{
$score = 0;
$wrongids[] = $p['questionid'];
}
}
$scorelist[$p['questionid']] = $score;
}
else
{
$needhand = 1;
}
}
}
}
}
$sessionvars['examsessionscorelist'] = $scorelist;
$sessionvars['examsessionscore'] = array_sum($scorelist);
if($needhand)$ehid = $this->favor->addExamHistory($sessionvars,0);
else $ehid = $this->favor->addExamHistory($sessionvars);
if($ehid)
{
$this->delExamSession($sessionvars['examsessionid']);
}
else
{
$message = array(
'statusCode' => 300,
"message" => "试卷异常,请联系监考老师后台收卷!"
);
$this->G->R($message);
}
return array('ehid' => $ehid,'needhand' => $needhand,'wrongids' => $wrongids);
} -