<?php requireLib('bootstrap5'); requirePHPLib('form'); Auth::check() || redirectToLogin(); if (!($user = UOJUser::query($_GET['username']))) { become404Page(); } if (!isSuperUser(Auth::user()) && Auth::id() != $user['username']) { become403Page(); } function newDeleteSystemMsgForm($id) { $form = new UOJBs4Form('remove_system_msg_' . $id); $form->addHidden("msg_id", $id, function ($msg_id) { global $user; if (!validateUInt($msg_id)) { return '消息 ID 不是有效的数字'; } $msg = DB::selectFirst("select * from user_system_msg where id = {$msg_id}"); if (!$msg || $msg['receiver'] != $user['username']) { return '消息不存在'; } return ''; }, null); $form->handle = function () { $msg_id = $_POST["msg_id"]; DB::delete("delete from user_system_msg where id = {$msg_id}"); }; $form->submit_button_config['text'] = '删除'; $form->submit_button_config['class_str'] = 'btn btn-link text-decoration-none text-danger p-0 mt-0'; $form->submit_button_config['align'] = 'inline'; $form->submit_button_config['smart_confirm'] = ''; return $form; } $pag_config = [ 'page_len' => 10, 'col_names' => ['*'], 'table_name' => 'user_system_msg', 'cond' => "receiver = '{$user['username']}'", 'tail' => 'order by send_time desc', ]; $pag = new Paginator($pag_config); $system_msgs = []; foreach ($pag->get() as $idx => $msg) { $system_msgs[$idx] = $msg; if (isSuperUser(Auth::user())) { $delete_form = newDeleteSystemMsgForm($msg['id']); $delete_form->runAtServer(); $system_msgs[$idx]['delete_form'] = $delete_form; } } ?> <?php echoUOJPageHeader('系统消息') ?> <div class="row"> <!-- left col --> <div class="col-lg-9"> <h1>系统消息</h1> <div class="card mb-3"> <ul class="list-group list-group-flush"> <?php foreach ($system_msgs as $msg) : ?> <li class="list-group-item"> <div class="mb-2 d-flex justify-content-between"> <div> <?php if ($msg['title']) : ?> <h4 class="d-inline"><?= $msg['title'] ?></h4> <?php endif ?> <span class="text-muted small ms-2 d-inline-block"> 发送时间: <time><?= $msg['send_time'] ?></time> </span> </div> <?php if (isset($msg['delete_form'])) : ?> <?php $msg['delete_form']->printHTML() ?> <?php endif ?> </div> <div><?= $msg['content'] ?></div> </li> <?php endforeach ?> <?php if ($pag->isEmpty()) : ?> <div class="text-center"> <?= UOJLocale::get('none') ?> </div> <?php endif ?> </ul> </div> <?= $pag->pagination() ?> </div> <!-- end left col --> <!-- right col --> <aside class="col-lg-3 mt-3 mt-lg-0"> <?php uojIncludeView('sidebar') ?> </aside> <!-- end right col --> </div> <?php if (Auth::id() == $user['username']) { DB::update("update user_system_msg set read_time = now() where receiver = '" . $user['username'] . "'"); } ?> <?php echoUOJPageFooter() ?>