示例#1
0
 public function updateJudgeStatus()
 {
     try {
         $op = strtolower(trim(fRequest::get('status', 'string')));
         $judge_message = base64_decode(fRequest::get('judgeMessage', 'string'));
         $verdict = fRequest::get('verdict', 'integer');
         $id = fRequest::get('id', 'integer');
         $r = new Record($id);
         if ($op == 'running') {
             $r->setJudgeStatus(JudgeStatus::RUNNING);
             $r->setJudgeMessage($r->getJudgeMessage() . "\n{$judge_message}");
             $r->store();
         } else {
             if ($op == 'done') {
                 $r->setJudgeStatus(JudgeStatus::DONE);
                 if (!empty($judge_message)) {
                     $r->setJudgeMessage($judge_message);
                 }
                 $r->setVerdict($verdict);
                 $r->store();
             }
         }
         echo "{$op}\n";
         echo "{$judge_message}\n";
         echo "{$verdict}\n";
         echo "{$id}\n";
     } catch (fException $e) {
         echo -1;
     }
 }
示例#2
0
 public function submit($problem_id)
 {
     try {
         $problem = new Problem($problem_id);
         $language = fRequest::get('language', 'integer');
         if (!array_key_exists($language, static::$languages)) {
             throw new fValidationException('Invalid language.');
         }
         fSession::set('last_language', $language);
         $code = trim(fRequest::get('code', 'string'));
         if (strlen($code) == 0) {
             throw new fValidationException('Code cannot be empty.');
         }
         if ($problem->isSecretNow()) {
             if (!User::can('view-any-problem')) {
                 throw new fAuthorizationException('Problem is secret now. You are not allowed to submit this problem.');
             }
         }
         $record = new Record();
         $record->setOwner(fAuthorization::getUserToken());
         $record->setProblemId($problem->getId());
         $record->setSubmitCode($code);
         $record->setCodeLanguage($language);
         $record->setSubmitDatetime(Util::currentTime());
         $record->setJudgeStatus(JudgeStatus::PENDING);
         $record->setJudgeMessage('Judging... PROB=' . $problem->getId() . ' LANG=' . static::$languages[$language]);
         $record->setVerdict(Verdict::UNKNOWN);
         $record->store();
         Util::redirect('/status');
     } catch (fException $e) {
         fMessaging::create('error', $e->getMessage());
         fMessaging::create('code', '/submit', fRequest::get('code', 'string'));
         Util::redirect("/submit?problem={$problem_id}");
     }
 }
示例#3
0
 public function store()
 {
     global $g_pdo;
     if (($guest = Guest::get_from_email($this->get_value("email"))) != null) {
         $this->id = $guest->id;
     } else {
         parent::store();
     }
     $this->link_to_event();
 }
示例#4
0
 /**
  * createRoot
  *
  * @return  boolean
  */
 public function createRoot()
 {
     $record = new Record($this->table);
     $key = $this->getKeyName();
     $record->parent_id = 0;
     $record->lft = 0;
     $record->rgt = 1;
     $record->level = 0;
     $record->title = 'root';
     $record->alias = 'root';
     $record->access = 1;
     static::$rootId = $record->{$key};
     return $record->store();
 }
示例#5
0
 public function manjudge($id, $score)
 {
     try {
         if (!User::can('rejudge-record')) {
             throw new fAuthorizationException('You are not allowed to rejudge records.');
         }
         if ($score < 0) {
             throw new fValidationException('Score cannot be negative.');
         }
         $record = new Record($id);
         $record->manjudge($score);
         $record->store();
         fMessaging::create('success', "Record {$id} manually judged.");
     } catch (fException $e) {
         fMessaging::create('error', $e->getMessage());
     }
     fURL::redirect(Util::getReferer());
 }