2016-07-18 16:39:37 +00:00
< ? 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 ;
2017-11-25 15:29:18 +00:00
DB :: query ( " delete from contests_registrants where username = ' { $myUser [ 'username' ] } ' and contest_id = { $contest [ 'id' ] } " );
2016-07-18 16:39:37 +00:00
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 ) : ?>
2019-09-10 02:15:20 +00:00
< div class = " float-right " >
2016-07-18 16:39:37 +00:00
< ? 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 ();
}
}
)
);
?>
2017-11-25 15:29:18 +00:00
< ? php echoUOJPageFooter () ?>