addHidden("blog_id", $blog_id, function($blog_id) {
global $myUser, $problem;
if (!validateUInt($blog_id)) {
return '博客 ID 不是有效的数字';
}
$blog = queryBlog($blog_id);
if (!$blog) {
return '博客不存在';
}
if (!hasProblemPermission($myUser, $problem)) {
if ($blog['poster'] != $myUser['username']) {
return '您只能删除自己的题解';
}
}
return '';
}, null);
$res_form->handle = function() {
global $myUser, $problem;
$blog_id = $_POST["blog_id"];
DB::query("delete from problems_solutions where problem_id = {$problem['id']} and blog_id = {$blog_id}");
$blog = queryBlog($blog_id);
if ($blog['poster'] != $myUser['username']) {
$blog_link = getBlogLink($blog['id']);
$poster_user_link = getUserLink($blog['poster']);
$admin_user_link = isSuperUser($myUser) ? '管理员' : getUserLink($myUser['username']);
$content = <<
您为问题 #{$problem['id']} ({$problem['title']}) 提交的题解 {$blog_link} 已经被 {$admin_user_link} 移除。
EOD; sendSystemMsg($blog['poster'], '题解移除通知', $content); } }; $res_form->submit_button_config['margin_class'] = 'mt-0'; $res_form->submit_button_config['class_str'] = 'btn btn-link text-decoration-none text-danger p-0'; $res_form->submit_button_config['text'] = '移除'; $res_form->submit_button_config['align'] = 'inline'; return $res_form; } if ($solution_submittable) { $add_new_solution_form = new UOJForm('add_new_solution'); $add_new_solution_form->addVInput('blog_id_2', 'text', '博客 ID', '', function ($x) { global $myUser, $problem, $solution_submittable; if (!validateUInt($x)) { return 'ID 不合法'; } $blog = queryBlog($x); if (!$blog) { return '博客不存在'; } if (!isSuperUser($myUser)) { if ($blog['poster'] != $myUser['username']) { if ($blog['is_hidden']) { return '博客不存在'; } return '只能提交本人撰写的博客'; } } if (!hasProblemPermission($myUser, $problem)) { if ($blog['is_hidden']) { return '只能提交公开的博客'; } } if (querySolution($problem['id'], $x)) { return '该题解已提交'; } if (!$solution_submittable) { return '您无权提交题解'; } return ''; }, null ); $add_new_solution_form->submit_button_config['text'] = '发布'; $add_new_solution_form->submit_button_config['align'] = 'center'; $add_new_solution_form->handle = function() { global $problem, $myUser; $blog_id_2 = $_POST['blog_id_2']; $problem_id = $problem['id']; DB::insert("insert into problems_solutions (problem_id, blog_id) values ({$problem_id}, {$blog_id_2})"); }; $add_new_solution_form->runAtServer(); } $pag_config = array('page_len' => 5); $pag_config['col_names'] = array('blog_id', 'content', 'poster', 'post_time', 'zan', 'is_hidden'); $pag_config['table_name'] = "problems_solutions inner join blogs on problems_solutions.blog_id = blogs.id"; $pag_config['cond'] = "problem_id = {$problem['id']}"; // 根据实际使用需要,题目管理员可以通过题解页面看到其他用户提交的题解,并且即使该题解对应的博客是隐藏状态也会照常显示 // 如需仅允许超级管理员查看,请将下一行中 if 语句的条件改为 (!isSuperUser($myUser)) if (!hasProblemPermission($myUser, $problem)) { $pag_config['cond'] .= " and (is_hidden = 0 or poster = '{$myUser['username']}')"; } $pag_config['tail'] = "order by zan desc, post_time desc, id asc"; $pag = new Paginator($pag_config); $rows = []; foreach ($pag->get() as $idx => $row) { $rows[$idx] = $row; if ($row['poster'] == $myUser['username'] || hasProblemPermission($myUser, $problem)) { $removeForm = removeSolutionForm($row['blog_id']); $removeForm->runAtServer(); $rows[$idx]['removeForm'] = $removeForm; } } ?>