hack.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. requirePHPLib('form');
  3. if (!validateUInt($_GET['id']) || !($hack = queryHack($_GET['id']))) {
  4. become404Page();
  5. }
  6. $submission = querySubmission($hack['submission_id']);
  7. $problem = queryProblemBrief($submission['problem_id']);
  8. $problem_extra_config = getProblemExtraConfig($problem);
  9. if ($submission['contest_id']) {
  10. $contest = queryContest($submission['contest_id']);
  11. genMoreContestInfo($contest);
  12. } else {
  13. $contest = null;
  14. }
  15. if (!isHackVisibleToUser($hack, $problem, $myUser)) {
  16. become403Page();
  17. }
  18. if (isSuperUser($myUser)) {
  19. $delete_form = new UOJForm('delete');
  20. $delete_form->handle = function() {
  21. global $hack;
  22. DB::query("delete from hacks where id = {$hack['id']}");
  23. };
  24. $delete_form->submit_button_config['class_str'] = 'btn btn-danger';
  25. $delete_form->submit_button_config['text'] = '删除此Hack';
  26. $delete_form->submit_button_config['align'] = 'right';
  27. $delete_form->submit_button_config['smart_confirm'] = '';
  28. $delete_form->succ_href = "/hacks";
  29. $delete_form->runAtServer();
  30. }
  31. $should_show_content = hasViewPermission($problem_extra_config['view_content_type'], $myUser, $problem, $submission);
  32. $should_show_all_details = hasViewPermission($problem_extra_config['view_all_details_type'], $myUser, $problem, $submission);
  33. $should_show_details = hasViewPermission($problem_extra_config['view_details_type'], $myUser, $problem, $submission);
  34. $should_show_details_to_me = isSuperUser($myUser);
  35. if ($hack['success'] === null) {
  36. $should_show_all_details = false;
  37. }
  38. if (!isSubmissionFullVisibleToUser($submission, $contest, $problem, $myUser)
  39. || !isHackFullVisibleToUser($hack, $contest, $problem, $myUser)) {
  40. $should_show_content = $should_show_all_details = false;
  41. }
  42. if ($should_show_all_details) {
  43. $styler = new HackDetailsStyler();
  44. if (!$should_show_details) {
  45. $styler->fade_all_details = true;
  46. $styler->show_small_tip = false;
  47. }
  48. }
  49. ?>
  50. <?php
  51. $REQUIRE_LIB['hljs'] = "";
  52. ?>
  53. <?php echoUOJPageHeader(UOJLocale::get('problems::hack').' #'.$hack['id']) ?>
  54. <?php echoHackListOnlyOne($hack, array(), $myUser) ?>
  55. <?php if ($should_show_all_details): ?>
  56. <div class="card border-info shadow my-4">
  57. <div class="card-header bg-info">
  58. <h4 class="card-title"><?= UOJLocale::get('details') ?></h4>
  59. </div>
  60. <div class="card-body">
  61. <?php echoJudgementDetails($hack['details'], $styler, 'details') ?>
  62. <?php if ($should_show_details_to_me): ?>
  63. <?php if ($styler->fade_all_details): ?>
  64. <hr />
  65. <?php echoHackDetails($hack['details'], 'final_details') ?>
  66. <?php endif ?>
  67. <?php endif ?>
  68. </div>
  69. </div>
  70. <?php endif ?>
  71. <?php echoSubmissionsListOnlyOne($submission, array(), $myUser) ?>
  72. <?php if ($should_show_content): ?>
  73. <?php echoSubmissionContent($submission, getProblemSubmissionRequirement($problem)) ?>
  74. <?php endif ?>
  75. <?php if (isset($delete_form)): ?>
  76. <?php $delete_form->printHTML() ?>
  77. <?php endif ?>
  78. <?php echoUOJPageFooter() ?>