2016-07-18 16:39:37 +00:00
< ? php
2022-10-07 09:29:26 +00:00
if ( ! Auth :: check () && UOJConfig :: $data [ 'switch' ][ 'force-login' ]) {
2022-10-06 12:28:43 +00:00
redirectToLogin ();
2022-03-17 04:00:03 +00:00
}
2022-10-07 09:29:26 +00:00
if ( ! isNormalUser ( $myUser ) && UOJConfig :: $data [ 'switch' ][ 'force-login' ]) {
2022-04-03 10:18:17 +00:00
become403Page ();
}
2016-07-18 16:39:37 +00:00
$username = $_GET [ 'username' ];
2022-03-25 05:16:37 +00:00
2022-09-28 07:39:39 +00:00
if ( ! validateUsername ( $username ) || ! ( $user = queryUser ( $username ))) {
become404Page ();
}
2022-09-18 04:58:35 +00:00
?>
2022-09-28 07:39:39 +00:00
< ? php
if ( ! isset ( $_COOKIE [ 'bootstrap4' ])) {
$REQUIRE_LIB [ 'bootstrap5' ] = '' ;
$REQUIRE_LIB [ 'calendar_heatmap' ] = '' ;
} else {
$REQUIRE_LIB [ 'github_contribution_graph' ] = '' ;
}
?>
< ? php echoUOJPageHeader ( $user [ 'username' ] . ' - ' . UOJLocale :: get ( 'user profile' )) ?>
< ? php if ( isset ( $REQUIRE_LIB [ 'bootstrap5' ])) : ?>
2022-10-05 10:53:51 +00:00
< ? php uojIncludeView ( 'user-info' , array ( 'user' => $user , 'myUser' => $myUser )) ?>
2022-09-28 07:39:39 +00:00
< ? php else : ?>
< ? php
2022-10-02 12:47:53 +00:00
$esc_sex = HTML :: escape ( $user [ 'sex' ]);
2022-09-28 07:39:39 +00:00
$col_sex = " color:blue " ;
2022-10-02 12:47:53 +00:00
if ( $esc_sex == " M " ) {
$esc_sex = " ♂ " ;
$col_sex = " color:blue " ;
} elseif ( $esc_sex == " F " ) {
$esc_sex = " ♀ " ;
$col_sex = " color:red " ;
} else {
$esc_sex = " " ;
$col_sex = " color:black " ;
}
?>
2022-09-28 07:39:39 +00:00
< div class = " card border-info " >
< h5 class = " card-header bg-info " >< ? = UOJLocale :: get ( 'user profile' ) ?> </h5>
< div class = " card-body " >
< div class = " row mb-4 " >
< div class = " col-md-4 order-md-9 " >
< img class = " media-object img-thumbnail d-block mx-auto " alt = " <?= $user['username'] ?> Avatar " src = " <?= HTML::avatar_addr( $user , 256) ?> " />
</ div >
< div class = " col-md-8 order-md-1 " >
< h2 >< span class = " uoj-honor " data - realname = " <?= $user['realname'] ?> " >< ? = $user [ 'username' ] ?> </span> <span><strong style="<?= $col_sex ?>"><?= $esc_sex ?></strong></span></h2>
< div class = " list-group " >
< div class = " list-group-item " >
< h4 class = " list-group-item-heading " >< ? = UOJLocale :: get ( 'email' ) ?> </h4>
< p class = " list-group-item-text " >< ? = HTML :: escape ( $user [ 'email' ]) ?> </p>
</ div >
< div class = " list-group-item " >
< h4 class = " list-group-item-heading " >< ? = UOJLocale :: get ( 'QQ' ) ?> </h4>
< p class = " list-group-item-text " >< ? = HTML :: escape ( $user [ 'qq' ] != 0 ? $user [ 'qq' ] : 'Unfilled' ) ?> </p>
</ div >
< div class = " list-group-item " >
< h4 class = " list-group-item-heading " >< ? = UOJLocale :: get ( 'motto' ) ?> </h4>
2022-09-28 23:41:45 +00:00
< ? php $motto_id = uniqid ( " motto- { $user [ 'username' ] } - " ); ?>
2022-09-28 07:39:39 +00:00
< p class = " list-group-item-text " id = " <?= $motto_id ?> " ></ p >
< script type = " text/javascript " >
2022-09-28 23:41:45 +00:00
$ ( function () { $ ( '#<?= $motto_id ?>' ) . html ( DOMPurify . sanitize ( '<?= addslashes($user[' motto ']) ?>' , < ? = DOM_SANITIZE_CONFIG ?> )); });
2022-09-28 07:39:39 +00:00
</ script >
</ div >
< ? php if ( isSuperUser ( $myUser )) : ?>
< div class = " list-group-item " >
< h4 class = " list-group-item-heading " > register time </ h4 >
< p class = " list-group-item-text " >< ? = $user [ 'register_time' ] ?> </p>
</ div >
< div class = " list-group-item " >
< h4 class = " list-group-item-heading " > remote_addr </ h4 >
< p class = " list-group-item-text " >< ? = $user [ 'remote_addr' ] ?> </p>
2016-07-18 16:39:37 +00:00
</ div >
2022-09-28 07:39:39 +00:00
< div class = " list-group-item " >
< h4 class = " list-group-item-heading " > http_x_forwarded_for </ h4 >
< p class = " list-group-item-text " >< ? = $user [ 'http_x_forwarded_for' ] ?> </p>
</ div >
< ? php endif ?>
2016-07-18 16:39:37 +00:00
</ div >
</ div >
2022-09-28 07:39:39 +00:00
</ div >
< ? php if ( Auth :: check ()) : ?>
< ? php if ( Auth :: id () != $user [ 'username' ]) : ?>
< a type = " button " class = " btn btn-info btn-sm " href = " /user/msg?enter=<?= $user['username'] ?> " >< span class = " glyphicon glyphicon-envelope " ></ span > < ? = UOJLocale :: get ( 'send private message' ) ?> </a>
< ? php else : ?>
< a type = " button " class = " btn btn-info btn-sm " href = " /user/modify-profile " >< span class = " glyphicon glyphicon-pencil " ></ span > < ? = UOJLocale :: get ( 'modify my profile' ) ?> </a>
< ? php endif ?>
< ? php endif ?>
< a type = " button " class = " btn btn-success btn-sm " href = " <?= HTML::blog_url( $user['username'] , '/') ?> " >< span class = " glyphicon glyphicon-arrow-right " ></ span > < ? = UOJLocale :: get ( 'visit his blog' , $username ) ?> </a>
< a type = " button " class = " btn btn-success btn-sm " href = " <?= HTML::blog_url( $user['username'] , '/self_reviews') ?> " >< span class = " glyphicon glyphicon-arrow-right " ></ span > 查看 < ? = $username ?> 的所有赛后总结</a>
< div class = " top-buffer-lg " ></ div >
< div class = " list-group " >
< div class = " list-group-item " >
< ? php
2022-10-02 12:47:53 +00:00
$_result = DB :: query ( " select date(submit_time), problem_id from submissions where submitter = ' { $username } ' and score = 100 and date(submit_time) between date_sub(curdate(), interval 1 year) and curdate() " );
2022-09-18 04:58:35 +00:00
$result = [];
$vis = [];
while ( $row = DB :: fetch ( $_result )) {
$id = $row [ 'date(submit_time)' ] . ':' . $row [ 'problem_id' ];
if ( ! $vis [ $id ]) {
$vis [ $id ] = 1 ;
$result [ strtotime ( $row [ 'date(submit_time)' ]) * 1000 ] ++ ;
}
}
?>
2022-09-28 07:39:39 +00:00
< h4 class = " list-group-item-heading " >< ? = UOJLocale :: get ( 'n accepted in last year' , count ( $result )) ?> </h4>
< div id = " accepted-graph " ></ div >
< script >
var accepted_graph_data = [
< ? php
foreach ( $result as $key => $val ) {
echo " { timestamp: { $key } , count: { $val } }, " ;
}
2022-09-18 04:58:35 +00:00
?>
2022-09-28 07:39:39 +00:00
];
2022-03-25 05:16:37 +00:00
2022-09-28 07:39:39 +00:00
$ ( document ) . ready ( function () {
$ ( '#accepted-graph' ) . github_graph ({
data : accepted_graph_data ,
texts : [ 'AC' , 'AC' ],
h_days : [ 'Tue' , 'Thu' , 'Sat' ],
2022-03-25 05:16:37 +00:00
});
2022-09-28 07:39:39 +00:00
});
</ script >
</ div >
< div class = " list-group-item " >
< ? php
2022-03-24 05:30:00 +00:00
$ac_problems = DB :: selectAll ( " select a.problem_id as problem_id, b.title as title from best_ac_submissions a inner join problems b on a.problem_id = b.id where submitter = ' { $user [ 'username' ] } '; " );
2022-09-18 04:58:35 +00:00
?>
2022-09-28 07:39:39 +00:00
< h4 class = " list-group-item-heading " >< ? = UOJLocale :: get ( 'accepted problems' ) . ': ' . UOJLocale :: get ( 'n problems in total' , count ( $ac_problems )) ?> </h4>
< ul class = " list-group-item-text nav " >
< ? php
2022-09-20 10:23:18 +00:00
foreach ( $ac_problems as $problem ) {
2022-09-21 05:58:53 +00:00
echo '<li class="mr-1 mb-1"><a href="/problem/' , $problem [ 'problem_id' ], '" role="button" class="btn btn-light h-100" style="width: 12rem;">#' , $problem [ 'problem_id' ], '. ' , $problem [ 'title' ], '</a></li>' ;
2022-09-20 10:23:18 +00:00
}
if ( empty ( $ac_problems )) {
echo UOJLocale :: get ( 'none' );
}
2022-09-18 04:58:35 +00:00
?>
2022-09-28 07:39:39 +00:00
</ ul >
2016-07-18 16:39:37 +00:00
</ div >
</ div >
</ div >
2022-09-28 07:39:39 +00:00
</ div >
2016-07-18 16:39:37 +00:00
< ? php endif ?>
< ? php echoUOJPageFooter () ?>