belongsToUserBlog() || UOJResponse::page404(); UOJBlog::cur()->userCanView(Auth::user()) || UOJResponse::page403(); $blog = UOJBlog::info(); function getCommentContentToDisplay($comment) { if (!$comment['is_hidden']) { return $comment['content']; } else { return '【' . HTML::escape($comment['reason_to_hide']) . '】'; } } $comment_form = new UOJForm('comment'); $comment_form->addTextArea('comment', [ 'label' => '内容', 'validator_php' => function ($comment) { if (!Auth::check()) { return '请先登录'; } if (!$comment) { return '评论不能为空'; } if (strlen($comment) > 1000) { return '不能超过1000个字节'; } return ''; }, ]); $comment_form->handle = function () { global $blog, $comment_form; $comment = HTML::escape($_POST['comment']); list($comment, $referrers) = uojHandleAtSign($comment, "/post/{$blog['id']}"); DB::insert([ "insert into blogs_comments", "(poster, blog_id, content, reply_id, post_time)", "values", DB::tuple([Auth::id(), $blog['id'], $comment, 0, DB::now()]) ]); $comment_id = DB::insert_id(); $rank = DB::selectCount([ "select count(*) from blogs_comments", "where", [ "blog_id" => $blog['id'], "reply_id" => 0, ["id", "<", $comment_id] ] ]); $page = floor($rank / 20) + 1; $uri = getLongTablePageUri($page) . '#' . "comment-{$comment_id}"; $user_link = UOJUser::getLink(Auth::user()); foreach ($referrers as $referrer) { $content = $user_link . ' 在博客 ' . $blog['title'] . ' 的评论里提到你:点击此处查看'; sendSystemMsg($referrer, '有人提到你', $content); } if ($blog['poster'] !== Auth::id()) { $content = $user_link . ' 回复了您的博客 ' . $blog['title'] . ' :点击此处查看'; sendSystemMsg($blog['poster'], '博客新回复通知', $content); } UOJBlog::cur()->updateActiveTime(); $comment_form->succ_href = getLongTablePageRawUri($page); }; $comment_form->config['ctrl_enter_submit'] = true; $comment_form->runAtServer(); $reply_form = new UOJForm('reply'); $reply_form->addHidden( 'reply_id', '0', function ($reply_id, &$vdata) { global $blog; if (!validateUInt($reply_id) || $reply_id == 0) { return '您要回复的对象不存在'; } $comment = UOJBlogComment::query($reply_id); if (!$comment || $comment['blog_id'] != $blog['id']) { return '您要回复的对象不存在'; } $vdata['parent'] = $comment; return ''; }, null ); $reply_form->addTextArea('reply_comment', [ 'label' => '内容', 'validator_php' => function ($comment) { if (!Auth::check()) { return '请先登录'; } if (!$comment) { return '评论不能为空'; } if (strlen($comment) > 140) { return '不能超过140个字节'; } return ''; }, ]); $reply_form->handle = function (&$vdata) { global $blog, $reply_form; $comment = HTML::escape($_POST['reply_comment']); list($comment, $referrers) = uojHandleAtSign($comment, "/post/{$blog['id']}"); $reply_id = $_POST['reply_id']; DB::insert([ "insert into blogs_comments", "(poster, blog_id, content, reply_id, post_time)", "values", DB::tuple([Auth::id(), $blog['id'], $comment, $reply_id, DB::now()]) ]); $comment_id = DB::insert_id(); $rank = DB::selectCount([ "select count(*) from blogs_comments", "where", [ "blog_id" => $blog['id'], "reply_id" => 0, ["id", "<", $reply_id] ] ]); $page = floor($rank / 20) + 1; $uri = getLongTablePageUri($page) . '#' . "comment-{$reply_id}"; $user_link = UOJUser::getLink(Auth::user()); foreach ($referrers as $referrer) { $content = $user_link . ' 在博客 ' . $blog['title'] . ' 的评论里提到你:点击此处查看'; sendSystemMsg($referrer, '有人提到你', $content); } $parent = $vdata['parent']; $notified = []; if ($parent->info['poster'] !== Auth::id()) { $notified[] = $parent->info['poster']; $content = $user_link . ' 回复了您在博客 ' . $blog['title'] . ' 下的评论 :点击此处查看'; sendSystemMsg($parent->info['poster'], '评论新回复通知', $content); } if ($blog['poster'] !== Auth::id() && !in_array($blog['poster'], $notified)) { $notified[] = $blog['poster']; $content = $user_link . '回复了您的博客 ' . $blog['title'] . ' :点击此处查看'; sendSystemMsg($blog['poster'], '博客新回复通知', $content); } UOJBlog::cur()->updateActiveTime(); $reply_form->succ_href = getLongTablePageRawUri($page); }; $reply_form->config['ctrl_enter_submit'] = true; $reply_form->runAtServer(); $comments_pag = new Paginator([ 'col_names' => ['*'], 'table_name' => 'blogs_comments', 'cond' => 'blog_id = ' . $blog['id'] . ' and reply_id = 0', 'tail' => 'order by id asc', 'page_len' => 20 ]); ?> echoView(['show_title_only' => isset($_GET['page']) && $_GET['page'] != 1]) ?>

评论

isEmpty()) : ?>
暂无评论
get() as $comment) : $poster = UOJUser::query($comment['poster']); $esc_email = HTML::escape($poster['email']); $asrc = HTML::avatar_addr($poster, 80); $replies = DB::selectAll([ "select id, poster, content, post_time, is_hidden, reason_to_hide from blogs_comments", "where", ["reply_id" => $comment['id']], "order by id" ]); foreach ($replies as $idx => $reply) { $reply_user = UOJUser::query($reply['poster']); $replies[$idx]['poster_realname'] = $reply_user['realname']; $replies[$idx]['poster_username_color'] = UOJUser::getUserColor($reply_user); $replies[$idx]['content'] = getCommentContentToDisplay($reply); } $replies_json = json_encode($replies); ?>
pagination() ?>

发表评论

可以用 @mike 来提到 mike 这个用户,mike 会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。

printHTML() ?>