problem_statement_manage.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. requirePHPLib('form');
  3. if (!validateUInt($_GET['id']) || !($problem = queryProblemBrief($_GET['id']))) {
  4. become404Page();
  5. }
  6. if (!hasProblemCtrlPermission($myUser, $problem)) {
  7. become403Page();
  8. }
  9. $problem_content = queryProblemContent($problem['id']);
  10. $problem_tags = queryProblemTags($problem['id']);
  11. $problem_editor = new UOJBlogEditor();
  12. $problem_editor->name = 'problem';
  13. $problem_editor->blog_url = "/problem/{$problem['id']}";
  14. $problem_editor->cur_data = array(
  15. 'title' => $problem['title'],
  16. 'content_md' => $problem_content['statement_md'],
  17. 'content' => $problem_content['statement'],
  18. 'tags' => $problem_tags,
  19. 'is_hidden' => $problem['is_hidden']
  20. );
  21. $problem_editor->label_text = array_merge($problem_editor->label_text, array(
  22. 'view blog' => '查看题目',
  23. 'blog visibility' => '题目可见性'
  24. ));
  25. $problem_editor->save = function($data) {
  26. global $problem, $problem_tags;
  27. DB::update("update problems set title = '".DB::escape($data['title'])."' where id = {$problem['id']}");
  28. DB::update("update problems_contents set statement = '".DB::escape($data['content'])."', statement_md = '".DB::escape($data['content_md'])."' where id = {$problem['id']}");
  29. if ($data['tags'] !== $problem_tags) {
  30. DB::delete("delete from problems_tags where problem_id = {$problem['id']}");
  31. foreach ($data['tags'] as $tag) {
  32. DB::insert("insert into problems_tags (problem_id, tag) values ({$problem['id']}, '".DB::escape($tag)."')");
  33. }
  34. }
  35. if ($data['is_hidden'] != $problem['is_hidden'] ) {
  36. DB::update("update problems set is_hidden = {$data['is_hidden']} where id = {$problem['id']}");
  37. DB::update("update submissions set is_hidden = {$data['is_hidden']} where problem_id = {$problem['id']}");
  38. DB::update("update hacks set is_hidden = {$data['is_hidden']} where problem_id = {$problem['id']}");
  39. }
  40. };
  41. $problem_editor->runAtServer();
  42. ?>
  43. <?php echoUOJPageHeader(HTML::stripTags($problem['title']) . ' - 编辑 - 题目管理') ?>
  44. <h1 class="page-header" align="center">#<?=$problem['id']?> : <?=$problem['title']?> 管理</h1>
  45. <ul class="nav nav-tabs" role="tablist">
  46. <li class="nav-item"><a class="nav-link active" href="/problem/<?= $problem['id'] ?>/manage/statement" role="tab">编辑</a></li>
  47. <li class="nav-item"><a class="nav-link" href="/problem/<?= $problem['id'] ?>/manage/managers" role="tab">管理者</a></li>
  48. <li class="nav-item"><a class="nav-link" href="/problem/<?= $problem['id'] ?>/manage/data" role="tab">数据</a></li>
  49. <li class="nav-item"><a class="nav-link" href="/problem/<?=$problem['id']?>" role="tab">返回</a></li>
  50. </ul>
  51. <?php $problem_editor->printHTML() ?>
  52. <?php echoUOJPageFooter() ?>