<?php
	requirePHPLib('form');

	if (!Auth::check()) {
		become403Page(UOJLocale::get('need login'));
	}

	if (!isNormalUser($myUser)) {
		become403Page();
	}

	if (!validateUInt($_GET['id']) || !($hack = queryHack($_GET['id']))) {
		become404Page();
	}
	$submission = querySubmission($hack['submission_id']);	
	$problem = queryProblemBrief($submission['problem_id']);
	$problem_extra_config = getProblemExtraConfig($problem);

	if ($submission['contest_id']) {
		$contest = queryContest($submission['contest_id']);
		genMoreContestInfo($contest);
	} else {
		$contest = null;
	}

	if (!isHackVisibleToUser($hack, $problem, $myUser)) {
		become403Page();
	}
	
	if (isSuperUser($myUser)) {
		$delete_form = new UOJForm('delete');
		$delete_form->handle = function() {
			global $hack;
			DB::query("delete from hacks where id = {$hack['id']}");
		};
		$delete_form->submit_button_config['class_str'] = 'btn btn-danger';
		$delete_form->submit_button_config['text'] = '删除此Hack';
		$delete_form->submit_button_config['align'] = 'right';
		$delete_form->submit_button_config['smart_confirm'] = '';
		$delete_form->succ_href = "/hacks";
		$delete_form->runAtServer();
	}
	
	$should_show_content = hasViewPermission($problem_extra_config['view_content_type'], $myUser, $problem, $submission);
	$should_show_all_details = hasViewPermission($problem_extra_config['view_all_details_type'], $myUser, $problem, $submission);
	$should_show_details = hasViewPermission($problem_extra_config['view_details_type'], $myUser, $problem, $submission);
	$should_show_details_to_me = isSuperUser($myUser);
	if ($hack['success'] === null) {
		$should_show_all_details = false;
	}
	if (!isSubmissionFullVisibleToUser($submission, $contest, $problem, $myUser)
		|| !isHackFullVisibleToUser($hack, $contest, $problem, $myUser)) {
		$should_show_content = $should_show_all_details = false;
	}
	
	if ($should_show_all_details) {
		$styler = new HackDetailsStyler();
		if (!$should_show_details) {
			$styler->fade_all_details = true;
			$styler->show_small_tip = false;
		}
	}
	?>
<?php
	$REQUIRE_LIB['shjs'] = "";
	?>
<?php echoUOJPageHeader(UOJLocale::get('problems::hack').' #'.$hack['id']) ?>

<?php echoHackListOnlyOne($hack, array(), $myUser) ?>
<?php if ($should_show_all_details): ?>
	<div class="card border-info">
		<div class="card-header bg-info">
			<h4 class="card-title"><?= UOJLocale::get('details') ?></h4>
		</div>
		<div class="card-body">
			<?php echoJudgementDetails($hack['details'], $styler, 'details') ?>
			<?php if ($should_show_details_to_me): ?>
				<?php if ($styler->fade_all_details): ?>
					<hr />
					<?php echoHackDetails($hack['details'], 'final_details') ?>
				<?php endif ?>
			<?php endif ?>
		</div>
	</div>
<?php endif ?>
<?php echoSubmissionsListOnlyOne($submission, array(), $myUser) ?>
<?php if ($should_show_content): ?>
	<?php echoSubmissionContent($submission, getProblemSubmissionRequirement($problem)) ?>
<?php endif ?>

<?php if (isset($delete_form)): ?>
	<?php $delete_form->printHTML() ?>
<?php endif ?>
<?php echoUOJPageFooter() ?>