<?php $purifier = HTML::purifier_inline(); $parsedown = HTML::parsedown(['username_with_color' => true]); ?> <?php if (Auth::check()) : ?> <?php if (!Auth::property('email')) : ?> <div class="alert alert-warning d-flex align-items-center mb-2" role="alert"> <div class="flex-shrink-0 me-3"> <i class="fs-4 bi bi-exclamation-triangle-fill"></i> </div> <div> <div class="fw-bold mb-2">请完善个人资料</div> <div class="small">您还没有填写您的电子邮件地址,请前往 <a href="/user/<?= Auth::id() ?>/edit">个人资料编辑</a> 页面补全信息,以便接收最新的安全和功能通知。</div> </div> </div> <?php endif ?> <?php if (!isset($groups_hidden)) : ?> <?php $groups = UOJGroup::queryGroupsOfUser(Auth::user()); ?> <?php if (!empty($groups)) : ?> <div class="card card-default mb-2" id="group-user-announcements"> <div class="card-header fw-bold"> <?= UOJLocale::get('groups') ?> </div> <ul class="list-group list-group-flush"> <?php foreach ($groups as $group) : ?> <li class="list-group-item"> <?= $group->getLink(['class' => 'fw-bold']) ?> <?php if ($group->info['announcement']) : ?> <div class="text-break"> <?= $purifier->purify($parsedown->line($group->info['announcement'])) ?> </div> <?php else : ?> <div class="text-muted"> <?= UOJLocale::get('none') ?> </div> <?php endif ?> </li> <?php endforeach ?> </ul> </div> <?php if (!isset($assignments_hidden)) : ?> <?php $assignments = []; foreach ($groups as $group) { $assignments = array_merge($assignments, array_map(fn ($x) => UOJGroupAssignment::query($x, $group), $group->getActiveAssignmentIds())); } usort($assignments, fn ($a, $b) => $a->info['end_time']->getTimestamp() - $b->info['end_time']->getTimestamp()); ?> <?php if (!empty($assignments)) : ?> <div class="card card-default mb-2" id="group-assignments"> <div class="card-header fw-bold"> <?= UOJLocale::get('assignments') ?> </div> <ul class="list-group list-group-flush"> <?php foreach ($assignments as $assignment) : ?> <li class="list-group-item"> <?= $assignment->getLink(['class' => 'fw-bold', 'with' => 'sup']) ?> <div class="text-end small text-muted"> 截止时间: <?= $assignment->info['end_time']->format('Y-m-d H:i') ?> </div> </li> <?php endforeach ?> </ul> </div> <?php endif ?> <?php endif ?> <?php endif ?> <?php endif ?> <?php endif ?> <?php if (Auth::check()) : ?> <?php if (!isset($upcoming_contests_hidden)) : ?> <?php $upcoming_contests = UOJContest::queryUpcomingContests(Auth::user(), 5); ?> <div class="card card-default mb-2" id="group-user-announcements"> <div class="card-header fw-bold"> <?= UOJLocale::get('contests::upcoming contests') ?> </div> <ul class="list-group list-group-flush"> <?php foreach ($upcoming_contests as $contest) : ?> <?php if ($contest->info['cur_progress'] == CONTEST_NOT_STARTED || $contest->info['cur_progress'] == CONTEST_IN_PROGRESS) : ?> <li class="list-group-item text-center"> <?= $contest->getLink(['class' => 'fw-bold']) ?> <div class="small"> <?php if ($contest->info['cur_progress'] == CONTEST_IN_PROGRESS) : ?> <?= UOJLocale::get('contests::in progress') ?> <?php else : ?> <?php $rest_seconds = $contest->info['start_time']->getTimestamp() - UOJTime::$time_now->getTimestamp(); ?> <?php if ($rest_seconds > 86400) : ?> <?= UOJLocale::get('contests::will start in x days', ceil($rest_seconds / 86400)) ?> <?php else : ?> <div id="contest-<?= $contest->info['id'] ?>-countdown"></div> <script> $('#contest-<?= $contest->info['id'] ?>-countdown').countdown(<?= $rest_seconds ?>, function() {}, 'inherit', false); </script> <?php endif ?> <?php endif ?> </div> </li> <?php endif ?> <?php endforeach ?> <?php if (empty($upcoming_contests)) : ?> <li class="list-group-item text-center"> <?= UOJLocale::get('none') ?> </li> <?php endif ?> </ul> <div class="card-footer bg-transparent text-center small"> <a class="text-decoration-none" href="<?= HTML::url('/contests?all=true') ?>"> <?= UOJLocale::get('view all') ?> </a> </div> </div> <?php endif ?> <?php else : ?> <div class="card"> <div class="card-body"> 请 <a href="<?= HTML::url('/login') ?>">登录</a> 查看更多内容。 </div> </div> <?php endif ?>