Пример #1
0
 /**
  * Start the controller.
  */
 public function start()
 {
     global $template;
     if ($this->dataSubmitted()) {
         $this->validateInput();
     }
     try {
         $model = new QuizModel($this->getLanguage());
     } catch (QuizSourceParseException $e) {
         message_die(GENERAL_ERROR, "An internal error occured while parsing the quiz file: " . $e->getMessage() . "<br>\n" . "Please contact an administrator.");
     } catch (QuizIllegalLanguageException $e) {
         message_die(GENERAL_ERROR, "Illegal language specified: " . htmlspecialchars($this->getLanguage()));
     }
     $this->model = $model;
     if ($this->dataSubmitted()) {
         $this->validateInput2();
         $this->selectItems(explode(',', $_POST['questions']));
     } else {
         $model->selectRandomItems(QuizModel::NUM_ITEMS);
     }
     if ($model->done()) {
         $this->validateRedirectionInput();
         $model->saveUserSetting();
         $this->completed();
     } else {
         $this->view = new QuizView($model, $template, !$this->dataSubmitted());
     }
 }
Пример #2
0
 /**
  * ������ �� ���� ������ ������
  * @return $this
  */
 public function find()
 {
     $this->_model = QuizModel::find($this->_quizId);
     $this->_question = $this->_model->question();
     $answers = $this->_model->answers()->get();
     // �������� ����� ���������� �������
     $this->_totalResponses = $this->_model->total_responses;
     foreach ($answers as $a) {
         $this->_answers[$a->id]['title'] = $a->title();
         $this->_answers[$a->id]['count'] = $a->responses_count;
         $this->_answers[$a->id]['percent'] = $this->getPercent($a->responses_count);
     }
     return $this;
 }
Пример #3
0
 public function anyIndex()
 {
     // todo: CORRECT
     $item = \QuizModel::find(1);
     $this->layout->content = View::make('back/quiz/list')->with('item', $item);
 }
Пример #4
0
 /**
  * A handler of each state.
  * @param int state code
  */
 public function state($state)
 {
     eval(USER);
     $cm = new ContestModel();
     $contest = $cm->getCurrentContest();
     $contest = $contest[0];
     $qm = new QuizModel();
     $this->assign('contestname', $contest['name']);
     $this->assign('contest', $contest);
     $team = DBModel::getTeamDetail(DBModel::getTeamByUser(session('userid')));
     $states = DBModel::selectDB('cernet_statepage');
     $this->assign('statepage', $states[$state - 1]['html']);
     switch ($state) {
         case 1:
             // dump($qm);
             $this->assign('total', $qm->getTotalOnce());
             $this->assign('pass', $qm->getPass());
             break;
         case 2:
             $conf = array();
             $conf['user_id'] = session('userid');
             $conf['statecode'] = 0;
             $model = D('cernet_teammate');
             $invitations = $model->where($conf)->select();
             $list = array();
             foreach ($invitations as $invitation) {
                 array_push($list, DBModel::getFullInvitation($invitation));
             }
             $this->assign('list', $list);
             $this->assign('invitation', json_encode($invitations));
         case 3:
             // invitation
             $conf = array();
             $conf['user_id'] = session('userid');
             $conf['statecode'] = 0;
             $model = D('cernet_teammate');
             $invitations = $model->where($conf)->select();
             $teamsize = $cm->getTeamSize();
             $list = array();
             foreach ($invitations as $invitation) {
                 array_push($list, DBModel::getFullInvitation($invitation));
             }
             $this->assign('list', $list);
             $this->assign('invitation', json_encode($invitations));
             // inteam
             $this->assign('inteam', DBModel::inteam(session('userid')) ? 1 : '');
             // get the team
             $this->assign('teamname', $team['team']['name']);
             $this->assign('leadername', getNameById('cernet_user', $team['team']['leader']));
             $this->assign('isleader', DBModel::isLeader(session('userid')));
             $this->assign('teamsize', $teamsize);
             $contest = $cm->getCurrentContest();
             $contest = $contest[0];
             $model = D('cernet_user');
             $team_id = DBModel::getTeamByUser(session('userid'));
             $map['cernet_teammate.statecode'] = array(array('neq', 1), array('exp', 'is NULL'), 'OR');
             $map['cernet_teammate.team_id'] = array(array('neq', $team_id), array('exp', 'is NULL'), 'OR');
             $map['cernet_user.statecode'] = array(array('gt', 1), array('lt', 4));
             // $map['cernet_user.statecode'] = 3;
             $userlist = $model->join('LEFT JOIN cernet_teammate ON cernet_user.id = cernet_teammate.user_id')->where($map)->field('cernet_teammate.statecode,id,name')->select();
             $model = D('cernet_teammate');
             unset($map['cernet_teammate.statecode']);
             $map['cernet_teammate.team_id'] = $team_id;
             $map['cernet_user.id'] = array('NEQ', session('userid'));
             $candidate = $model->join('LEFT JOIN cernet_user ON cernet_user.id = cernet_teammate.user_id')->field('cernet_teammate.statecode,id,name')->where($map)->select();
             // dump($map);
             // dump($candidate);
             // die();
             $team = DBModel::getTeamDetail($team_id);
             $this->assign('banner', $cm->getBanner());
             $this->assign('team', $team);
             $this->assign('userlist', json_encode($userlist));
             $this->assign('candidate', json_encode($candidate));
             $this->assign('teamsize', $cm->getTeamSize());
             $this->assign('contest', $contest);
             $this->assign("less", "buildteam" . ".less");
             break;
         case 4:
             $this->assign('team', $team);
             $this->assign('mates', $team['teammate']);
             break;
         case 5:
             $team_id = DBModel::getTeamByUser(session('userid'));
             $teamdetail = DBModel::getTeamDetail($team_id)['team'];
             $post['post_time'] = $teamdetail['post_time'];
             $post['post_company'] = $teamdetail['post_company'];
             $post['post_id'] = $teamdetail['post_id'];
             $post['post_status'] = $teamdetail['post_status'];
             $this->assign('post', $post);
             $this->assign('team', $team['team']);
             break;
         case 6:
             break;
         case 8:
             $this->assign('prize', $team['team']['prize']);
             break;
         case 7:
             $this->assign('team', $team);
             $this->assign('mates', $team['teammate']);
             break;
     }
 }
Пример #5
0
 public function upload_quiz_()
 {
     eval(ADMIN);
     try {
         $upload = uploadExcel();
         // dump($upload);
         if (is_string($upload)) {
             throw new Exception($upload);
         }
         #var_dump($upload);
         $data["filepath"] = "/" . $upload[0]["savepath"] . $upload[0]["savename"];
         $model = D("cernet_quiz_meta");
         $model->where(array("id" => 1))->save($data);
         if ($result != 0 && $result == false) {
             throw new Exception("请检查数据库连接是否正确。");
         }
         $qm = new QuizModel();
         $qm->readQuizFromExcelNSave();
         $this->success(Success("upload"), "__URL__/manage_quiz");
     } catch (Exception $e) {
         #$this->error(Error("upload"), $e->getMessage());
         throw_exception($e->getMessage());
     }
 }