<?php requireLib('bootstrap5'); requireLib('mathjax'); requireLib('hljs'); requirePHPLib('form'); Auth::check() || redirectToLogin(); UOJUserBlog::userIsOwner(Auth::user()) || UOJUser::checkPermission(Auth::user(), 'blogs.view') || UOJResponse::page403(); $blogs_conds = [ "poster" => UOJUserBlog::id(), ]; if (!UOJUserBlog::userCanManage(Auth::user())) { $blogs_conds["is_hidden"] = false; } $display_blogs_conds = $blogs_conds; if (isset($_GET['tag'])) { $blog_tag_required = $_GET['tag']; $display_blogs_conds[] = [ DB::rawvalue($blog_tag_required), "in", DB::rawbracket([ "select tag from blogs_tags", "where", ["blogs_tags.blog_id" => DB::raw("blogs.id")] ]) ]; } else { $blog_tag_required = null; } $blogs_pag = new Paginator([ 'col_names' => ['*'], 'table_name' => 'blogs', 'cond' => $display_blogs_conds, 'tail' => 'order by post_time desc', 'page_len' => 15 ]); $all_tags = DB::selectAll([ "select distinct tag from blogs_tags", "where", [ [ "blog_id", "in", DB::rawbracket([ "select id from blogs", "where", $blogs_conds ]) ] ] ]); ?> <?php echoUOJPageHeader('日志') ?> <div class="row"> <div class="col-md-9"> <?php if (!$blog_tag_required) : ?> <?php if ($blogs_pag->isEmpty()) : ?> <div class="text-muted">此人很懒,什么博客也没留下。</div> <?php else : ?> <div class="card"> <div class="card-body"> <table class="table uoj-table"> <thead> <tr> <th>标题</th> <th style="width: 20%">发表时间</th> <th class="text-center" style="width: 50px">评价</th> </tr> </thead> <tbody> <?php $cnt = 0; ?> <?php foreach ($blogs_pag->get() as $blog_info) : ?> <?php $blog = new UOJBlog($blog_info); $cnt++; ?> <tr> <td> <?php if ($blog->info['is_hidden']) : ?> <span class="text-danger">[隐藏]</span> <?php endif ?> <?= $blog->getLink() ?> <?php foreach ($blog->queryTags() as $tag) : ?> <?php echoBlogTag($tag) ?> <?php endforeach ?> </td> <td><?= $blog->info['post_time'] ?></td> <td><?= ClickZans::getCntBlock($blog->info['zan']) ?></td> </tr> <?php endforeach ?> </tbody> </table> </div> <div class="card-footer bg-transparent text-end text-muted"> 第 <?= $blogs_pag->cur_start + 1 ?> - <?= $blogs_pag->cur_start + $cnt ?> 篇,共 <?= $blogs_pag->n_rows ?> 篇博客 </div> </div> <?php endif ?> <?php else : ?> <?php if ($blogs_pag->isEmpty()) : ?> <div class="alert alert-danger"> 没有找到包含 “<?= HTML::escape($blog_tag_required) ?>” 标签的博客: </div> <?php else : ?> <div class="alert alert-success"> 共找到 <?= $blogs_pag->n_rows ?> 篇包含 “<?= HTML::escape($blog_tag_required) ?>” 标签的博客: </div> <div class="card"> <div class="card-body"> <table class="table uoj-table mb-0"> <thead> <tr> <th>标题</th> <th style="width: 20%">发表时间</th> <th class="text-center" style="width: 100px">评价</th> </tr> </thead> <tbody> <?php foreach ($blogs_pag->get() as $blog_info) : ?> <?php $blog = new UOJBlog($blog_info); ?> <tr> <td> <?php if ($blog->info['is_hidden']) : ?> <span class="text-danger">[隐藏]</span> <?php endif ?> <?= $blog->getLink() ?> <?php foreach ($blog->queryTags() as $tag) : ?> <?php echoBlogTag($tag) ?> <?php endforeach ?> </td> <td><?= $blog->info['post_time'] ?></td> <td><?= ClickZans::getBlock('B', $blog->info['id'], $blog->info['zan'], null, false) ?></td> </tr> <?php endforeach ?> </tbody> </table> </div> </div> <?php endif ?> <?php endif ?> <div class="text-center mt-3"> <?= $blogs_pag->pagination() ?> </div> </div> <div class="col-md-3"> <?php if (UOJUserBlog::userCanManage(Auth::user()) && UOJUser::checkPermission(Auth::user(), 'blogs.create')) : ?> <div class="btn-group d-flex"> <a href="<?= HTML::blog_url(UOJUserBlog::id(), '/post/new/write') ?>" class="btn btn-primary"> <i class="bi bi-pencil-square"></i> 写新博客 </a> <a href="<?= HTML::blog_url(UOJUserBlog::id(), '/slide/new/write') ?>" class="btn btn-primary"> <i class="bi bi-file-earmark-slides"></i> 写新幻灯片 </a> </div> <?php endif ?> <div class="card border-info mt-3"> <div class="card-header bg-info">标签</div> <div class="card-body"> <?php if ($all_tags) : ?> <?php foreach ($all_tags as $tag) : ?> <?php echoBlogTag($tag['tag']) ?> <?php endforeach ?> <?php else : ?> <div class="text-muted">暂无</div> <?php endif ?> </div> </div> </div> </div> <?php echoUOJPageFooter() ?>