Beispiel #1
0
 /**
  * 判断用户是否有权限参加此考试,判断包括:
  * 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;
 }
Beispiel #2
0
 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'];
     }
 }