S2OJ/web/app/controllers/submissions_list.php

127 lines
4.4 KiB
PHP
Raw Normal View History

2016-07-18 16:39:37 +00:00
<?php
2022-03-17 04:00:03 +00:00
if (!Auth::check()) {
2022-04-02 10:01:26 +00:00
become403Page(UOJLocale::get('need login'));
2022-03-17 04:00:03 +00:00
}
2022-04-03 10:18:17 +00:00
if (!isNormalUser($myUser)) {
become403Page();
}
2016-07-18 16:39:37 +00:00
$conds = array();
$q_problem_id = isset($_GET['problem_id']) && validateUInt($_GET['problem_id']) ? $_GET['problem_id'] : null;
$q_submitter = isset($_GET['submitter']) && validateUsername($_GET['submitter']) ? $_GET['submitter'] : null;
$q_min_score = isset($_GET['min_score']) && validateUInt($_GET['min_score']) ? $_GET['min_score'] : null;
$q_max_score = isset($_GET['max_score']) && validateUInt($_GET['max_score']) ? $_GET['max_score'] : null;
$q_language = isset($_GET['language']) ? $_GET['language'] : null;
2020-06-25 12:41:16 +00:00
if ($q_problem_id != null) {
2016-07-18 16:39:37 +00:00
$conds[] = "problem_id = $q_problem_id";
}
2020-06-25 12:41:16 +00:00
if ($q_submitter != null) {
2016-07-18 16:39:37 +00:00
$conds[] = "submitter = '$q_submitter'";
}
if ($q_min_score != null) {
$conds[] = "score >= $q_min_score";
}
if ($q_max_score != null) {
$conds[] = "score <= $q_max_score";
}
if ($q_language != null) {
$conds[] = sprintf("language = '%s'", DB::escape($q_language));
2016-07-18 16:39:37 +00:00
}
$html_esc_q_language = htmlspecialchars($q_language);
if ($conds) {
$cond = join($conds, ' and ');
} else {
$cond = '1';
}
2022-09-24 00:13:39 +00:00
2022-09-24 00:26:39 +00:00
2022-09-24 02:18:55 +00:00
if (!isset($_COOKIE['bootstrap4'])) {
2022-09-24 00:26:39 +00:00
$REQUIRE_LIB['bootstrap5'] = '';
}
2022-09-18 04:58:35 +00:00
?>
2016-07-18 16:39:37 +00:00
<?php echoUOJPageHeader(UOJLocale::get('submissions')) ?>
<div class="d-none d-sm-block">
2016-07-18 16:39:37 +00:00
<?php if ($myUser != null): ?>
<div class="float-right">
2016-07-18 16:39:37 +00:00
<a href="/submissions?submitter=<?= $myUser['username'] ?>" class="btn btn-primary btn-sm"><?= UOJLocale::get('problems::my submissions') ?></a>
</div>
<?php endif ?>
<form id="form-search" class="form-inline" method="get">
2022-09-24 00:13:39 +00:00
<div id="form-group-problem_id" class="form-group
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
d-inline-block
<?php endif ?>
">
2016-07-18 16:39:37 +00:00
<label for="input-problem_id" class="control-label"><?= UOJLocale::get('problems::problem id')?>:</label>
<input type="text" class="form-control input-sm" name="problem_id" id="input-problem_id" value="<?= $q_problem_id ?>" maxlength="4" style="width:4em" />
</div>
2022-09-24 00:13:39 +00:00
<div id="form-group-submitter" class="form-group
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
d-inline-block
<?php endif ?>
">
2016-07-18 16:39:37 +00:00
<label for="input-submitter" class="control-label"><?= UOJLocale::get('username')?>:</label>
<input type="text" class="form-control input-sm" name="submitter" id="input-submitter" value="<?= $q_submitter ?>" maxlength="20" style="width:10em" />
</div>
2022-09-24 00:13:39 +00:00
<div id="form-group-score" class="form-group
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
d-inline-block
<?php endif ?>
">
2016-07-18 16:39:37 +00:00
<label for="input-min_score" class="control-label"><?= UOJLocale::get('score range')?>:</label>
<input type="text" class="form-control input-sm" name="min_score" id="input-min_score" value="<?= $q_min_score ?>" maxlength="3" style="width:4em" placeholder="0" />
<label for="input-max_score" class="control-label">~</label>
<input type="text" class="form-control input-sm" name="max_score" id="input-max_score" value="<?= $q_max_score ?>" maxlength="3" style="width:4em" placeholder="100" />
</div>
2022-09-24 00:13:39 +00:00
<div id="form-group-language" class="form-group
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
d-inline-block
<?php endif ?>
">
2016-07-18 16:39:37 +00:00
<label for="input-language" class="control-label"><?= UOJLocale::get('problems::language')?>:</label>
<input type="text" class="form-control input-sm" name="language" id="input-language" value="<?= $html_esc_q_language ?>" maxlength="10" style="width:8em" />
</div>
<button type="submit" id="submit-search" class="btn btn-secondary btn-sm ml-2"><?= UOJLocale::get('search')?></button>
2016-07-18 16:39:37 +00:00
</form>
<script type="text/javascript">
$('#form-search').submit(function(e) {
e.preventDefault();
url = '/submissions';
qs = [];
$(['problem_id', 'submitter', 'min_score', 'max_score', 'language']).each(function () {
if ($('#input-' + this).val()) {
qs.push(this + '=' + encodeURIComponent($('#input-' + this).val()));
}
});
if (qs.length > 0) {
url += '?' + qs.join('&');
}
location.href = url;
});
</script>
<div class="top-buffer-sm"></div>
</div>
2022-09-24 00:13:39 +00:00
2016-07-18 16:39:37 +00:00
<?php
2022-09-24 00:13:39 +00:00
echoSubmissionsList($cond,
'order by id desc',
array(
'judge_time_hidden' => '',
'table_config' => (isset($REQUIRE_LIB['bootstrap5'])
? array(
'div_classes' => array('card', 'mb-3'),
2022-09-24 03:55:34 +00:00
'table_classes' => array('table', 'mb-0', 'uoj-table', 'text-center')
2022-09-24 00:13:39 +00:00
)
: array()
),
),
$myUser);
2022-09-18 04:58:35 +00:00
?>
2022-09-24 00:13:39 +00:00
2016-07-18 16:39:37 +00:00
<?php echoUOJPageFooter() ?>