2022-09-20 00:28:38 +00:00
< ? php
if ( ! Auth :: check ()) {
become403Page ( UOJLocale :: get ( 'need login' ));
}
if ( ! isNormalUser ( $myUser )) {
become403Page ();
}
requirePHPLib ( 'form' );
$assignment_id = $_GET [ 'id' ];
$assignment = queryAssignment ( $assignment_id );
if ( ! $assignment ) {
become404Page ();
}
$group = queryGroup ( $assignment [ 'group_id' ]);
$list = queryProblemList ( $assignment [ 'list_id' ]);
?>
< ? php echoUOJPageHeader ( UOJLocale :: get ( 'assignments' )) ?>
< h2 style = " margin-top: 24px " > 作业详细信息 </ h2 >
< div class = " row " >
< div class = " col-sm-12 mt-4 " >
< h5 > 作业信息 </ h5 >
< ul >
< li >< b > 小组 </ b > : < a href = " /group/<?= $group['id'] ?> " >< ? = $group [ 'title' ] ?> </a></li>
< li >< b > 题单 </ b > : < a href = " /problem_list/<?= $list['id'] ?> " >< ? = $list [ 'title' ] ?> </a></li>
< li >< b > 创建时间 </ b > : < ? = $assignment [ 'create_time' ] ?> </li>
< li >< b > 截止时间 </ b > : < ? = $assignment [ 'deadline' ] ?> </li>
</ ul >
</ div >
</ div >
< div class = " row " >
< div class = " col-sm-12 mt-4 " >
< h5 > 完成状况 </ h5 >
< ? php
$query = DB :: query ( " select problem_id from lists_problems where list_id = { $list [ 'id' ] } " );
$problem_ids = [];
while ( $row = DB :: fetch ( $query )) {
$problem_ids [] = $row [ 'problem_id' ];
}
$query = DB :: query ( " select a.username as username, c.problem_id as problem_id from user_info a inner join groups_users b on a.username = b.username and b.group_id = { $group [ 'id' ] } inner join best_ac_submissions c on a.username = c.submitter inner join lists_problems d on c.problem_id = d.problem_id and d.list_id = { $list [ 'id' ] } " );
$finished = [];
while ( $row = DB :: fetch ( $query )) {
$username = $row [ 'username' ];
$problem_id = $row [ 'problem_id' ];
if ( ! isset ( $finished [ $username ])) {
$finished [ $username ] = [];
}
$finished [ $username ][ $problem_id ] = 1 ;
}
$header_row = '' ;
$header_row .= '<tr>' ;
$header_row .= '<th style="width: 14em;">' . UOJLocale :: get ( 'username' ) . '</th>' ;
foreach ( $problem_ids as $problem_id ) {
$header_row .= '<th style="width: 2em;">' . " <a href= \" /problem/ { $problem_id } \" ># { $problem_id } </a> " . '</th>' ;
}
$header_row .= '</tr>' ;
$print_row = function ( $row ) use ( $problem_ids , $finished ) {
$username = $row [ 'username' ];
echo '<tr>' ;
echo '<td>' . getUserLink ( $username ) . '</td>' ;
foreach ( $problem_ids as $problem_id ) {
if ( ! isset ( $finished [ $username ]) || ! isset ( $finished [ $username ][ $problem_id ])) {
2022-09-23 00:03:55 +00:00
echo '<td class="failed"><span class="glyphicon glyphicon-remove"></span></td>' ;
2022-09-20 00:28:38 +00:00
} else {
2022-09-23 00:03:55 +00:00
echo '<td class="success"><span class="glyphicon glyphicon-ok"></span></td>' ;
2022-09-20 00:28:38 +00:00
}
}
echo '</tr>' ;
};
$from = " user_info a inner join groups_users b on (b.group_id = { $group [ 'id' ] } and a.username = b.username) " ;
$col_names = array ( 'a.username as username' );
$cond = " 1 " ;
$tail = " order by a.username asc " ;
$config = array ( 'page_len' => 100 );
echoLongTable ( $col_names , $from , $cond , $tail , $header_row , $print_row , $config );
?>
</ div >
</ div >
< ? php echoUOJPageFooter () ?>