This commit is contained in:
Baoshuo Ren 2022-09-19 19:06:16 +08:00
parent 46f6923d97
commit 419be8ab49
Signed by: baoshuo
GPG Key ID: 00CB9680AB29F51A
3 changed files with 6 additions and 3 deletions

View File

@ -269,6 +269,7 @@ UNLOCK TABLES;
CREATE TABLE `contests_problems` ( CREATE TABLE `contests_problems` (
`problem_id` int(11) NOT NULL, `problem_id` int(11) NOT NULL,
`contest_id` int(11) NOT NULL, `contest_id` int(11) NOT NULL,
`dfn` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`problem_id`,`contest_id`) PRIMARY KEY (`problem_id`,`contest_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;

View File

@ -67,6 +67,7 @@
}, },
function($type, $username) { function($type, $username) {
global $contest; global $contest;
if ($type == '+') { if ($type == '+') {
DB::query("insert into contests_permissions (contest_id, username) values (${contest['id']}, '$username')"); DB::query("insert into contests_permissions (contest_id, username) values (${contest['id']}, '$username')");
} elseif ($type == '-') { } elseif ($type == '-') {
@ -99,7 +100,8 @@
$problem_id = $matches[1]; $problem_id = $matches[1];
if ($type == '+') { if ($type == '+') {
DB::insert("insert into contests_problems (contest_id, problem_id) values ({$contest['id']}, '$problem_id')"); $dfn = DB::selectFirst("select max(dfn) from contests_problems where contest_id = {$contest['id']}")['max(dfn)'] + 1;
DB::insert("insert into contests_problems (contest_id, problem_id, dfn) values ({$contest['id']}, '$problem_id', $dfn)");
} elseif ($type == '-') { } elseif ($type == '-') {
DB::delete("delete from contests_problems where contest_id = {$contest['id']} and problem_id = '$problem_id'"); DB::delete("delete from contests_problems where contest_id = {$contest['id']} and problem_id = '$problem_id'");
} }
@ -216,7 +218,7 @@
</thead> </thead>
<tbody> <tbody>
<?php <?php
$result = DB::query("select problem_id from contests_problems where contest_id = ${contest['id']} order by dfn asc"); $result = DB::query("select problem_id from contests_problems where contest_id = ${contest['id']} order by dfn, problem_id");
while ($row = DB::fetch($result, MYSQLI_ASSOC)) { while ($row = DB::fetch($result, MYSQLI_ASSOC)) {
$problem = queryProblemBrief($row['problem_id']); $problem = queryProblemBrief($row['problem_id']);
$problem_config_str = isset($contest['extra_config']["problem_{$problem['id']}"]) ? $contest['extra_config']["problem_{$problem['id']}"] : 'sample'; $problem_config_str = isset($contest['extra_config']["problem_{$problem['id']}"]) ? $contest['extra_config']["problem_{$problem['id']}"] : 'sample';

View File

@ -46,7 +46,7 @@ function queryContestData($contest, $config = array(), $is_after_contest_query =
$problems = []; $problems = [];
$prob_pos = []; $prob_pos = [];
$n_problems = 0; $n_problems = 0;
$result = DB::query("select problem_id from contests_problems where contest_id = {$contest['id']} order by dfn"); $result = DB::query("select problem_id from contests_problems where contest_id = {$contest['id']} order by dfn, problem_id");
while ($row = DB::fetch($result, MYSQLI_NUM)) { while ($row = DB::fetch($result, MYSQLI_NUM)) {
$prob_pos[$problems[] = (int)$row[0]] = $n_problems++; $prob_pos[$problems[] = (int)$row[0]] = $n_problems++;
} }