<?php requirePHPLib('form'); if (!validateUInt($_GET['id']) || !($contest = queryContest($_GET['id']))) { become404Page(); } genMoreContestInfo($contest); $has_contest_permission = hasContestPermission($myUser, $contest); $show_ip = $has_contest_permission; if ($contest['cur_progress'] == CONTEST_NOT_STARTED) { $iHasRegistered = $myUser != null && hasRegistered($myUser, $contest); if ($iHasRegistered) { $unregister_form = new UOJForm('unregister'); $unregister_form->handle = function() { global $myUser, $contest; mysql_query("delete from contests_registrants where username = '{$myUser['username']}' and contest_id = {$contest['id']}"); updateContestPlayerNum($contest); }; $unregister_form->submit_button_config['class_str'] = 'btn btn-danger btn-xs'; $unregister_form->submit_button_config['text'] = '取消报名'; $unregister_form->succ_href = "/contests"; $unregister_form->runAtServer(); } if ($has_contest_permission) { $pre_rating_form = new UOJForm('pre_rating'); $pre_rating_form->handle = function() { global $contest; foreach (DB::selectAll("select * from contests_registrants where contest_id = {$contest['id']}") as $reg) { $user = queryUser($reg['username']); DB::update("update contests_registrants set user_rating = {$user['rating']} where contest_id = {$contest['id']} and username = '{$user['username']}'"); } }; $pre_rating_form->submit_button_config['align'] = 'right'; $pre_rating_form->submit_button_config['class_str'] = 'btn btn-warning'; $pre_rating_form->submit_button_config['text'] = '重新计算参赛前的 rating'; $pre_rating_form->submit_button_config['smart_confirm'] = ''; $pre_rating_form->runAtServer(); } } ?> <?php echoUOJPageHeader(HTML::stripTags($contest['name']) . ' - ' . UOJLocale::get('contests::contest registrants')) ?> <h1 class="text-center"><?= $contest['name'] ?></h1> <?php if ($contest['cur_progress'] == CONTEST_NOT_STARTED): ?> <?php if ($iHasRegistered): ?> <div class="pull-right"> <?php $unregister_form->printHTML(); ?> </div> <div><a style="color:green">已报名</a></div> <?php else: ?> <div>当前尚未报名,您可以<a style="color:red" href="/contest/<?= $contest['id'] ?>/register">报名</a>。</div> <?php endif ?> <div class="top-buffer-sm"></div> <?php endif ?> <?php if ($show_ip) { $header_row = '<tr><th>#</th><th>'.UOJLocale::get('username').'</th><th>remote_addr</th><th>rating</th></tr>'; $ip_owner = array(); foreach (DB::selectAll("select * from contests_registrants where contest_id = {$contest['id']} order by user_rating asc") as $reg) { $user = queryUser($reg['username']); $ip_owner[$user['remote_addr']] = $reg['username']; } } else { $header_row = '<tr><th>#</th><th>'.UOJLocale::get('username').'</th><th>rating</th></tr>'; } echoLongTable(array('*'), 'contests_registrants', "contest_id = {$contest['id']}", 'order by user_rating desc', $header_row, function($contest, $num) { global $myUser; global $show_ip, $ip_owner; $user = queryUser($contest['username']); $user_link = getUserLink($contest['username'], $contest['user_rating']); if (!$show_ip) { echo '<tr>'; } else { if ($ip_owner[$user['remote_addr']] != $user['username']) { echo '<tr class="danger">'; } else { echo '<tr>'; } } echo '<td>'.$num.'</td>'; echo '<td>'.$user_link.'</td>'; if ($show_ip) { echo '<td>'.$user['remote_addr'].'</td>'; } echo '<td>'.$contest['user_rating'].'</td>'; echo '</tr>'; }, array('page_len' => 100, 'get_row_index' => '', 'print_after_table' => function() { global $pre_rating_form; if (isset($pre_rating_form)) { $pre_rating_form->printHTML(); } } ) ); ?> <?php echoUOJPageFooter() ?>