/** * 判断用户是否有权限参加此考试,判断包括: * 1.是否在权限列表 0 * 2.考试是否存在或可见 -1 * 3.如果是vip考试,是否在不同机器上登陆过 -2 * 4.可选。是否已经交卷 -3 * @param number $eid 比赛编号 * @param string $user_id 用户ID] * @param boolean $havetaken 是否判断已经参加考试过 * @return number|array 返回数字表示没有权限,否则有 */ public function checkExamPrivilege($eid, $user_id, $havetaken = false) { $hasPrivilege = $this->getPrivilege($user_id, $eid); if (!(checkAdmin(2) || $hasPrivilege)) { return 0; } $field = array('title', 'start_time', 'end_time', 'isvip', 'visible'); $row = ExamBaseModel::instance()->getExamInfoById($eid, $field); if (empty($row)) { return -1; } if (C('OJ_VIP_CONTEST')) { if ($row['isvip'] == 'Y') { $today = date('Y-m-d'); $ip1 = $_SERVER['REMOTE_ADDR']; $sql = "SELECT `user_id` FROM `loginlog` WHERE `user_id`='{$user_id}' AND `time`>='{$today}' AND ip<>'{$ip1}' AND\n\t\t\t\t `user_id` NOT IN( SELECT `user_id` FROM `privilege` WHERE `rightstr`='administrator' or `rightstr`='contest_creator') ORDER BY `time` DESC limit 0,1"; $tmprow = M()->query($sql); if ($tmprow) { return -2; } } } if ($havetaken) { $where = array('user_id' => $user_id, 'exam_id' => $eid); $field = array('score'); $score = StudentBaseModel::instance()->queryOne($where, $field); if (!is_null($score['score']) && $score['score'] >= 0) { return -3; } } return $row; }
public function submitExamPaper($userId, $examId, $scores) { $oldData = StudentBaseModel::instance()->getStudentScoreInfoByExamAndUserId($examId, $userId); if (empty($oldData)) { $scores['user_id'] = $userId; $scores['exam_id'] = $examId; StudentBaseModel::instance()->insertData($scores); } else { StudentBaseModel::instance()->updateStudentScore($examId, $userId, $scores); } }
protected function initExamUserScore() { $allScore = StudentBaseModel::instance()->getStudentScoreInfoByExamAndUserId($this->examId, $this->userInfo['user_id']); if (empty($allScore)) { $this->chooseSumScore = -1; $this->judgeSumScore = -1; $this->fillSumScore = -1; $this->programSumScore = -1; } else { $this->chooseSumScore = $allScore['choosesum']; $this->judgeSumScore = $allScore['judgesum']; $this->fillSumScore = $allScore['fillsum']; $this->programSumScore = $allScore['programsum']; } }