aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fclar.php58
-rw-r--r--src/frun.php79
-rw-r--r--src/ftask.php61
3 files changed, 119 insertions, 79 deletions
diff --git a/src/fclar.php b/src/fclar.php
index 7d5b6bb..39084bc 100644
--- a/src/fclar.php
+++ b/src/fclar.php
@@ -296,8 +296,12 @@ function DBNewClar($param,$c=null) {
exit;
}
$a = DBRow($r,0);
- $n = $a["nextclar"] + 1;
- $clarnumber = $n;
+ $clarnumber = $a["nextclar"] + 1;
+ DBExec($c, "update sitetable set sitenextclar=$clarnumber" .
+ " where sitenumber=$site and contestnumber=$contest and sitenextclar<$clarnumber",
+ "DBNewClar(update site)");
+ $clarnumber = myunique();
+ $clarinc = $clarnumber;
} else {
$sql = "select * from clartable as t where t.contestnumber=$contest and " .
"t.clarsitenumber=$site and t.clarnumber=$clarnumber";
@@ -308,11 +312,8 @@ function DBNewClar($param,$c=null) {
$lr = DBRow($r,0);
$t = $lr['updatetime'];
}
- $n = $clarnumber;
+ $clarinc = $clarnumber - 1;
}
- DBExec($c, "update sitetable set sitenextclar=$clarnumber" .
- " where sitenumber=$site and contestnumber=$contest and sitenextclar<$clarnumber",
- "DBNewClar(update site)");
if($clardatediff < 0) {
$b = DBSiteInfo($contest, $site, $c);
@@ -336,25 +337,34 @@ function DBNewClar($param,$c=null) {
$ret=1;
if($insert) {
- $n = myunique();
- $clarinc = $n;
- while(!DBExecNonStop($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
- "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
- "($contest, $site, $n, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
- "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
- "DBNewClar(insert clar)")) {
- $n++;
- if($n > $clarinc + 3) break;
- }
- if($n > $clarinc + 3) {
- DBExec($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
- "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
- "($contest, $site, $n, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
- "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
- "DBNewClar(insert clar)");
+ if($clarinc >= $clarnumber) {
+ while(!DBExecNonStop($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
+ "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
+ "($contest, $site, $clarnumber, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
+ "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
+ "DBNewClar(insert clar)")) {
+ $clarnumber++;
+ if($clarnumber > $clarinc + 3) break;
+ }
+ if($clarnumber > $clarinc + 3) {
+ DBExec($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
+ "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
+ "($contest, $site, $clarnumber, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
+ "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
+ "DBNewClar(insert clar)");
+ }
+ } else {
+ if(!DBExecNonStop($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
+ "clardatediff, clardatediffans, clarproblem, clardata, claranswer, clarjudge, clarjudgesite, clarstatus, updatetime) VALUES " .
+ "($contest, $site, $clarnumber, $user, $clardate, $clardatediff, $clardatediffans, $problem, '$question', " .
+ "'$claranswer', $clarjudge, $clarjudgesite, '$clarstatus', $updatetime)",
+ "DBNewClar(insert clar)")) {
+ if($cw) DBExec($c, "commit work", "DBNewClar(commit-insert-error)");
+ return false;
+ }
}
if($cw) DBExec($c, "commit work", "DBNewClar(commit-insert)");
- LOGLevel("User $user submitted a clarification (#$n) on site #$site " .
+ LOGLevel("User $user submitted a clarification (#$clarnumber) on site #$site " .
"(problem=$problem, contest=$contest).",2);
$ret=2;
} else {
@@ -377,7 +387,7 @@ function DBNewClar($param,$c=null) {
fwrite($fp, $question);
fclose($fp);
} else
- LOGLevel("Clarification not saved as file (clar=$n,site=$site,contest=$contest)", 1);
+ LOGLevel("Clarification not saved as file (clar=$clarnumber,site=$site,contest=$contest)", 1);
*/
}
//pega uma clarification para responder. Recebe o numero da clar, o numero do site e o numero do contest.
diff --git a/src/frun.php b/src/frun.php
index a6406e4..9cf4bf9 100644
--- a/src/frun.php
+++ b/src/frun.php
@@ -712,8 +712,7 @@ function DBNewRun($param,$c=null) {
MSGError("Unable to find a unique site/contest in the database.");
return false;
}
- $a = DBRow($r,0);
- $n = $a["nextrun"] + 1;
+ $a = DBRow($r,0);
if($runnumber > 0) {
$sql = "select * from runtable as t where t.contestnumber=$contest and " .
"t.runsitenumber=$site and t.runnumber=$runnumber";
@@ -728,9 +727,16 @@ function DBNewRun($param,$c=null) {
if(isset($lr['autostderr']))
$oid2 = $lr['autostderr'];
}
- $n = $runnumber;
+ $runinc = $runnumber - 1;
+ // if($updatetime > $t) {
+ //DBExec($c, "update sitetable set sitenextrun=$runnumber" .
+ // " where sitenumber=$site and contestnumber=$contest and sitenextrun<$runnumber", "DBNewRun(update site)");
} else {
- $runnumber = $n;
+ $runnumber = $a["nextrun"] + 1;
+ DBExec($c, "update sitetable set sitenextrun=$runnumber" .
+ " where sitenumber=$site and contestnumber=$contest and sitenextrun<$runnumber", "DBNewRun(update site)");
+ $runnumber = myunique();
+ $runinc = $runnumber;
}
if($rundatediff < 0) {
@@ -753,10 +759,6 @@ function DBNewRun($param,$c=null) {
$dif = $rundatediff;
}
- if($updatetime > $t || $insert) {
- DBExec($c, "update sitetable set sitenextrun=$runnumber" .
- " where sitenumber=$site and contestnumber=$contest and sitenextrun<$runnumber", "DBNewRun(update site)");
-
// LOGError($autostdout);
if(substr($autostdout,0,7)=="base64:") {
$autostdout = base64_decode(substr($autostdout,7));
@@ -815,32 +817,45 @@ function DBNewRun($param,$c=null) {
}
}
- $n = myunique();
- $runinc = $n;
- while(!DBExecNonStop($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
- "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
- "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
- "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
- "VALUES ($contest, $site, $n, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
- "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
- "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
- "DBNewRun(insert run)")) {
- $n++;
- if($n > $runinc + 3) break;
- }
- if($n > $runinc + 3) {
- DBExec($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
- "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
- "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
- "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
- "VALUES ($contest, $site, $n, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
- "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
- "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
- "DBNewRun(insert run)");
+ if($runinc >= $runnumber) {
+ while(!DBExecNonStop($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
+ "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
+ "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
+ "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
+ "VALUES ($contest, $site, $runnumber, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
+ "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
+ "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
+ "DBNewRun(insert run)")) {
+ $runnumber++;
+ if($runnumber > $runinc + 3) break;
+ }
+ if($runnumber > $runinc + 3) {
+ DBExec($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
+ "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
+ "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
+ "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
+ "VALUES ($contest, $site, $runnumber, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
+ "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
+ "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
+ "DBNewRun(insert run)");
+ }
+ } else {
+ if(!DBExecNonStop($c, "INSERT INTO runtable (contestnumber, runsitenumber, runnumber, usernumber, rundate, " .
+ "rundatediff, rundatediffans, runproblem, runfilename, rundata, runanswer, runstatus, runlangnumber, " .
+ "runjudge, runjudgesite, runanswer1, runjudge1, runjudgesite1, runanswer2, runjudge2, runjudgesite2, ".
+ "autoip, autobegindate, autoenddate, autoanswer, autostdout, autostderr, updatetime) " .
+ "VALUES ($contest, $site, $runnumber, $user, $rundate, $rundatediff, $rundatediffans, $problem, '$filename', $oid, $runanswer, " .
+ "'$runstatus', $lang, $runjudge, $runjudgesite, $runanswer1, $runjudge1, $runjudgesite1, $runanswer2, $runjudge2, " .
+ "$runjudgesite2, '$autoip', $autobegindate, $autoenddate, '$autoanswer', $oid1, $oid2, $updatetime)",
+ "DBNewRun(insert run)")) {
+ if($cw)
+ DBExec($c, "commit work", "DBNewRun(commit-error)");
+ return false;
+ }
}
if($cw) {
DBExec($c, "commit work", "DBNewRun(commit)");
- LOGLevel("User $user submitted a run (#$n) on site #$site " .
+ LOGLevel("User $user submitted a run (#$runnumber) on site #$site " .
"(problem=$problem,filename=$filename,lang=$lang,contest=$contest,date=$t,datedif=$dif,oid=$oid).",2);
}
$ret=2;
@@ -868,7 +883,7 @@ function DBNewRun($param,$c=null) {
@mkdir("/tmp/boca");
if (!move_uploaded_file ($filepath,
"/tmp/boca/contest${contest}.site${site}.run${n}.user${user}.problem${problem}.time${t}.${filename}"))
- LOGLevel("Run not saved as file (run=$n,site=$site,contest=$contest", 1);
+ LOGLevel("Run not saved as file (run=$runnumber,site=$site,contest=$contest", 1);
*/
}
//recebe o numero do contest, o numero do site e o numero do usuario
diff --git a/src/ftask.php b/src/ftask.php
index 36f272a..fc2cd48 100644
--- a/src/ftask.php
+++ b/src/ftask.php
@@ -386,6 +386,12 @@ function DBNewTask($param, $c=null, $autotask=false) {
exit;
}
$tasknumber = $a["nexttask"] + 1;
+ DBExec($c, "update sitetable set sitenexttask=$tasknumber" .
+ " where sitenumber=$site and contestnumber=$contest and sitenexttask<$tasknumber", "DBNewTask(update site)");
+ $taskinc = myunique();
+ if(($taskinc % 2) == 0) $taskinc--;
+ if($autotask) $taskinc++;
+ $tasknumber = $taskinc;
} else {
$sql = "select * from tasktable as t where t.contestnumber=$contest and " .
"t.sitenumber=$site and t.tasknumber=$tasknumber";
@@ -396,9 +402,9 @@ function DBNewTask($param, $c=null, $autotask=false) {
$lr = DBRow($r,0);
$t = $lr['updatetime'];
}
+ $taskinc = $tasknumber - 1;
}
- DBExec($c, "update sitetable set sitenexttask=$tasknumber" .
- " where sitenumber=$site and contestnumber=$contest and sitenexttask<$tasknumber", "DBNewTask(update site)");
+
$ret=1;
if($insert) {
if($filename!="" && $filepath!="") {
@@ -420,28 +426,37 @@ function DBNewTask($param, $c=null, $autotask=false) {
}
} else $oid="NULL";
- $taskinc = myunique();
- if(($taskinc % 2) == 0) $taskinc--;
- if($autotask) $taskinc++;
- $tasknumber = $taskinc;
- while(!DBExecNonStop($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
- "taskdatediff, taskdatediffans, taskfilename, taskdata, taskstatus, taskdesc, tasksystem, ".
- "color, colorname, updatetime) " .
- "VALUES ($contest, $site, $tasknumber, $user, $taskdate, $taskdatediff, $taskdatediffans, '$filename', $oid, '$status', " .
- "'$desc', '$sys', '$color', '$colorname', $updatetime)",
- "DBNewTask(insert task)")) {
- $tasknumber+=2;
- if($tasknumber > $taskinc + 6) break;
- }
- if($tasknumber > $taskinc + 6) {
- DBExec($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
- "taskdatediff, taskdatediffans, taskfilename, taskdata, taskstatus, taskdesc, tasksystem, ".
- "color, colorname, updatetime) " .
- "VALUES ($contest, $site, $tasknumber, $user, $taskdate, $taskdatediff, $taskdatediffans, '$filename', $oid, '$status', " .
- "'$desc', '$sys', '$color', '$colorname', $updatetime)",
- "DBNewTask(insert task)");
+ if($taskinc >= $tasknumber) {
+ while(!DBExecNonStop($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
+ "taskdatediff, taskdatediffans, taskfilename, taskdata, taskstatus, taskdesc, tasksystem, ".
+ "color, colorname, updatetime) " .
+ "VALUES ($contest, $site, $tasknumber, $user, $taskdate, $taskdatediff, $taskdatediffans, '$filename', $oid, '$status', " .
+ "'$desc', '$sys', '$color', '$colorname', $updatetime)",
+ "DBNewTask(insert task)")) {
+ $tasknumber+=2;
+ if($tasknumber > $taskinc + 6) {
+ DBExec($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
+ "taskdatediff, taskdatediffans, taskfilename, taskdata, taskstatus, taskdesc, tasksystem, ".
+ "color, colorname, updatetime) " .
+ "VALUES ($contest, $site, $tasknumber, $user, $taskdate, $taskdatediff, $taskdatediffans, '$filename', $oid, '$status', " .
+ "'$desc', '$sys', '$color', '$colorname', $updatetime)",
+ "DBNewTask(insert task)");
+ break;
+ }
+ }
+ } else {
+ if(!DBExecNonStop($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
+ "taskdatediff, taskdatediffans, taskfilename, taskdata, taskstatus, taskdesc, tasksystem, ".
+ "color, colorname, updatetime) " .
+ "VALUES ($contest, $site, $tasknumber, $user, $taskdate, $taskdatediff, $taskdatediffans, '$filename', $oid, '$status', " .
+ "'$desc', '$sys', '$color', '$colorname', $updatetime)",
+ "DBNewTask(insert task)")) {
+ if($cw)
+ DBExec($c, "commit work", "DBNewTask(commit-insert-error)");
+ return false;
+ }
}
- if($sys=="t") $u="System";
+ if($sys=="t") $u="System";
else $u = "User $user";
if($cw) {