aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fclar.php28
-rw-r--r--src/fextdata.php4
-rw-r--r--src/frun.php63
-rw-r--r--src/ftask.php26
-rwxr-xr-xsrc/globals.php13
5 files changed, 96 insertions, 38 deletions
diff --git a/src/fclar.php b/src/fclar.php
index 7c73975..18d41ff 100644
--- a/src/fclar.php
+++ b/src/fclar.php
@@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
////////////////////////////////////////////////////////////////////////////////
-// Last modified 06/sep/2013 by cassio@ime.usp.br
+// Last modified 26/jul/2017 by cassio@ime.usp.br
function DBDropClarTable() {
$c = DBConnect();
@@ -306,7 +306,7 @@ function DBNewClar($param,$c=null) {
}
$n = $clarnumber;
}
- DBExec($c, "update sitetable set sitenextclar=$clarnumber, updatetime=" . $t .
+ DBExec($c, "update sitetable set sitenextclar=$clarnumber" .
" where sitenumber=$site and contestnumber=$contest and sitenextclar<$clarnumber",
"DBNewClar(update site)");
@@ -332,15 +332,27 @@ function DBNewClar($param,$c=null) {
$ret=1;
if($insert) {
- DBExec($c, "INSERT INTO clartable (contestnumber, clarsitenumber, clarnumber, usernumber, clardate, " .
+ $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)");
- if($cw) DBExec($c, "commit work", "DBNewClar(commit-insert)");
- LOGLevel("User $user submitted a clarification (#$n) on site #$site " .
- "(problem=$problem, contest=$contest).",2);
- $ret=2;
+ "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($cw) DBExec($c, "commit work", "DBNewClar(commit-insert)");
+ LOGLevel("User $user submitted a clarification (#$n) on site #$site " .
+ "(problem=$problem, contest=$contest).",2);
+ $ret=2;
} else {
if($updatetime > $t) {
$ret=2;
diff --git a/src/fextdata.php b/src/fextdata.php
index 3db5a3b..8c80bc9 100644
--- a/src/fextdata.php
+++ b/src/fextdata.php
@@ -386,6 +386,7 @@ function importFromXML($ar,$contest,$site) {
DBExec($conn,"rollback work");
return false;
}
+ /*
if(($ret=DBUpdateSite($param, $conn))) {
if($ret==2) {
echo "Site " . $param["sitenumber"] . " updated<br>";
@@ -394,7 +395,8 @@ function importFromXML($ar,$contest,$site) {
if($conn != null)
DBExec($conn,"rollback work");
return false;
- }
+ }
+ */
}
if($key == "usertable") {
if(($ret=DBNewUser($param, $conn))) {
diff --git a/src/frun.php b/src/frun.php
index 5c5c2ec..d7e2a4f 100644
--- a/src/frun.php
+++ b/src/frun.php
@@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
////////////////////////////////////////////////////////////////////////////////
-// Last modified 09/sep/2015 by cassio@ime.usp.br
+// Last modified 26/jul/2017 by cassio@ime.usp.br
function DBDropRunTable() {
$c = DBConnect();
@@ -186,9 +186,9 @@ function DBUpdateRunC($contest, $usersite, $usernumber, $runsite, $runnumber, $a
if($u['usertype']=='team') {
$p = DBGetProblemData ($contest, $temp["runproblem"],$c);
DBNewTask_old ($contest, $runsite, $team,
- escape_string("\"" . $u["username"] ."\" must have a balloon for problem " .
- $p[0]["problemname"] . ": " . $p[0]["fullname"]),
- "", "", "t", $p[0]["color"], $p[0]["colorname"], $c);
+ escape_string("\"" . $u["username"] ."\" must have a balloon for problem " .
+ $p[0]["problemname"] . ": " . $p[0]["fullname"]),
+ "", "", "t", $p[0]["color"], $p[0]["colorname"], $c);
}
} else {
LOGError("DBUpdateRunC: HIDDEN: user=$team,site=$runsite,contest=$contest would have a balloon for problem=" . $temp["runproblem"]);
@@ -198,9 +198,9 @@ function DBUpdateRunC($contest, $usersite, $usernumber, $runsite, $runnumber, $a
if($u['usertype']=='team') {
$p = DBGetProblemData ($contest, $temp["runproblem"],$c);
DBNewTask_old ($contest, $runsite, $team, escape_string("\"" .
- $u["username"] ."\" must have _NO_ balloon for problem " . $p[0]["problemname"] .
- ": " . $p[0]["fullname"]). ". Please verify and remove it, if needed.", "", "",
- "t", $p[0]["color"], $p[0]["colorname"], $c);
+ $u["username"] ."\" must have _NO_ balloon for problem " . $p[0]["problemname"] .
+ ": " . $p[0]["fullname"]). ". Please verify and remove it, if needed.", "", "",
+ "t", $p[0]["color"], $p[0]["colorname"], $c);
}
}
// }
@@ -279,8 +279,8 @@ function DBRunGiveUp($number,$site,$contest,$usernumber,$usersite) {
if($u['usertype']=='team') {
$p = DBGetProblemData ($contest, $temp["runproblem"],$c);
DBNewTask_old ($contest, $site, $temp["usernumber"], escape_string("\"" .
- $u["username"] ."\" must have _NO_ balloon for problem " . $p[0]["problemname"] .
- ": " . $p[0]["fullname"]), "", "", "t", $p[0]["color"], $p[0]["colorname"], $c);
+ $u["username"] ."\" must have _NO_ balloon for problem " . $p[0]["problemname"] .
+ ": " . $p[0]["fullname"]), "", "", "t", $p[0]["color"], $p[0]["colorname"], $c);
}
}
@@ -316,8 +316,8 @@ function DBRunDelete($number,$site,$contest,$user,$usersite) {
if($u['usertype']=='team') {
$p = DBGetProblemData ($contest, $temp["runproblem"],$c);
DBNewTask_old ($contest, $site, $temp["usernumber"], escape_string("\"" .
- $u["username"] . "\" must have _NO_ balloon for problem " . $p[0]["problemname"] .
- ": " . $p[0]["fullname"]), "", "", "t", $p[0]["color"], $p[0]["colorname"], $c);
+ $u["username"] . "\" must have _NO_ balloon for problem " . $p[0]["problemname"] .
+ ": " . $p[0]["fullname"]), "", "", "t", $p[0]["color"], $p[0]["colorname"], $c);
}
}
@@ -707,7 +707,7 @@ function DBNewRun($param,$c=null) {
MSGError("Unable to find a unique site/contest in the database.");
return false;
}
- $a = DBRow($r,0);
+ $a = DBRow($r,0);
$n = $a["nextrun"] + 1;
if($runnumber > 0) {
$sql = "select * from runtable as t where t.contestnumber=$contest and " .
@@ -724,9 +724,10 @@ function DBNewRun($param,$c=null) {
$oid2 = $lr['autostderr'];
}
$n = $runnumber;
- } else
+ } else {
$runnumber = $n;
-
+ }
+
if($rundatediff < 0) {
$b = DBSiteInfo($contest, $site, $c);
$dif = $b["currenttime"];
@@ -748,7 +749,7 @@ function DBNewRun($param,$c=null) {
}
if($updatetime > $t || $insert) {
- DBExec($c, "update sitetable set sitenextrun=$runnumber, updatetime=".$t.
+ DBExec($c, "update sitetable set sitenextrun=$runnumber" .
" where sitenumber=$site and contestnumber=$contest and sitenextrun<$runnumber", "DBNewRun(update site)");
// LOGError($autostdout);
@@ -808,14 +809,30 @@ function DBNewRun($param,$c=null) {
return false;
}
}
- 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)");
+
+ $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($cw) {
DBExec($c, "commit work", "DBNewRun(commit)");
LOGLevel("User $user submitted a run (#$n) on site #$site " .
diff --git a/src/ftask.php b/src/ftask.php
index 86417b2..8ff7bd7 100644
--- a/src/ftask.php
+++ b/src/ftask.php
@@ -279,10 +279,10 @@ function DBNewTask_old ($contest, $site, $user, $desc, $filename, $filepath, $sy
'color'=>$color,
'colorname'=>$colorname,
'sys'=>$sys);
- return DBNewTask($param,$c);
+ return DBNewTask($param,$c,true);
}
-function DBNewTask($param, $c=null) {
+function DBNewTask($param, $c=null, $autotask=false) {
if(isset($param['contestnumber']) && !isset($param['contest'])) $param['contest']=$param['contestnumber'];
if(isset($param['sitenumber']) && !isset($param['site'])) $param['site']=$param['sitenumber'];
if(isset($param['usernumber']) && !isset($param['user'])) $param['user']=$param['usernumber'];
@@ -391,7 +391,7 @@ function DBNewTask($param, $c=null) {
$t = $lr['updatetime'];
}
}
- DBExec($c, "update sitetable set sitenexttask=$tasknumber, updatetime=".$t.
+ DBExec($c, "update sitetable set sitenexttask=$tasknumber" .
" where sitenumber=$site and contestnumber=$contest and sitenexttask<$tasknumber", "DBNewTask(update site)");
$ret=1;
if($insert) {
@@ -413,12 +413,28 @@ function DBNewTask($param, $c=null) {
}
}
} else $oid="NULL";
- DBExec($c, "INSERT INTO tasktable (contestnumber, sitenumber, tasknumber, usernumber, taskdate, " .
+
+ $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)");
+ "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($sys=="t") $u="System";
else $u = "User $user";
diff --git a/src/globals.php b/src/globals.php
index d87db56..2391a8f 100755
--- a/src/globals.php
+++ b/src/globals.php
@@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
////////////////////////////////////////////////////////////////////////////////
-// Last modified 07/sep/2015 by cassio@ime.usp.br
+// Last modified 26/jul/2017 by cassio@ime.usp.br
require_once('db.php');
define("dbcompat_1_4_1",true);
@@ -254,6 +254,17 @@ function LOGLevel($msg,$level,$dodb=true) {
DBNewLog($_SESSION["usertable"]["contestnumber"], $_SESSION["usertable"]["usersitenumber"],
$_SESSION["usertable"]["usernumber"], $type, getIP(), $msga, "");
}
+function mytime() {
+ return time();
+}
+function mymtime() {
+ list($usec, $sec) = explode(" ", microtime());
+ return (float) (((int) (1000*$usec))/1000 + $sec);
+}
+function myunique() {
+ list($usec, $sec) = explode(" ", microtime());
+ return (int) ((int)($usec * 100)) + ($sec % 1000000);
+}
//retorna data e hora atuais
function now () {
return date('H\:i:s T \- d/M/Y');