info['id'] . '">' . $contest->info['name'] . ''; if ($contest->progress() == CONTEST_NOT_STARTED) { $cur_rest_second = $contest->info['start_time']->getTimestamp() - UOJTime::$time_now->getTimestamp(); if ($cur_rest_second < $rest_second) { $upcoming_contest_name = $contest->info['name']; $upcoming_contest_href = '/contest/' . $contest->info['id']; $rest_second = $cur_rest_second; } if ($contest->userHasRegistered(Auth::user())) { $contest_name_link .= '' . UOJLocale::get('contests::registered') . ''; } else { $contest_name_link .= '' . UOJLocale::get('contests::register') . ''; } } elseif ($contest->progress() == CONTEST_IN_PROGRESS) { if ($contest->allowExtraRegistration() && !$contest->userHasRegistered(Auth::user())) { $contest_name_link .= '' . UOJLocale::get('contests::register') . ' (' . UOJLocale::get('contests::in progress') . ')' . ''; } else { $contest_name_link .= '' . UOJLocale::get('contests::in progress') . ''; } } elseif ($contest->progress() == CONTEST_FINISHED) { $contest_name_link .= '' . UOJLocale::get('contests::ended') . ''; } else { if ($contest->basicRule() == 'OI') { if ($contest->progress() == CONTEST_PENDING_FINAL_TEST) { $contest_name_link .= '' . UOJLocale::get('contests::pending final test') . ''; } elseif ($contest->progress() == CONTEST_TESTING) { $contest_name_link .= '' . UOJLocale::get('contests::final testing') . ''; } } elseif ($contest->basicRule() == 'ACM' || $contest->basicRule() == 'IOI') { $contest_name_link .= '' . UOJLocale::get('contests::official results to be announced') . ''; } } $last_hour = round($contest->info['last_min'] / 60, 2); echo ''; echo '', $contest_name_link, ''; echo '', '' . $contest->info['start_time_str'] . '', ''; echo '', UOJLocale::get('hours', $last_hour), ''; echo '', '', '', ' ×' . $contest->info['player_num'] . '', ''; echo HTML::tag('td', [], $contest->getZanBlock()); echo ''; } ?>

'; $table_header .= '' . UOJLocale::get('contests::contest name') . ''; $table_header .= '' . UOJLocale::get('contests::start time') . ''; $table_header .= '' . UOJLocale::get('contests::duration') . ''; $table_header .= '' . UOJLocale::get('contests::the number of registrants') . ''; $table_header .= '' . UOJLocale::get('appraisal') . ''; $table_header .= ''; $table_config = [ 'page_len' => 40, 'div_classes' => ['card', 'mb-3'], 'table_classes' => ['table', 'uoj-table', 'mb-0', 'text-center'], ]; if (!UOJUser::checkPermission(Auth::user(), 'contests.view')) { $table_config['post_filter'] = function ($info) { return (new UOJContest($info))->userCanView(Auth::user()); }; } echoLongTable( ['*'], 'contests', [["status", "!=", 'finished']], 'order by start_time asc, id asc', $table_header, 'echoContest', $table_config ); if ($rest_second <= 86400) { $notification = json_encode($upcoming_contest_name . " 已经开始了。是否要跳转到比赛页面?"); echo <<
$upcoming_contest_name 倒计时
EOD; } ?>

'finished'], 'order by start_time desc, id desc', $table_header, 'echoContest', $table_config ); ?>