aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCassio de Campos <cassiopc@gmail.com>2017-07-31 14:03:20 +0000
committerCassio de Campos <cassiopc@gmail.com>2017-07-31 14:03:20 +0000
commite7a28ba7f59d1155a5eb8303f3f3ec40aa674075 (patch)
tree764172e488e6f98d4573c69dcd7428afe51d98f2 /src
parent394858d0bce7a433d1b12d584b3d37c62629836f (diff)
downloadboca-e7a28ba7f59d1155a5eb8303f3f3ec40aa674075.tar.gz
boca-e7a28ba7f59d1155a5eb8303f3f3ec40aa674075.zip
bf
Diffstat (limited to 'src')
-rw-r--r--src/fcontest.php31
-rw-r--r--src/fextdata.php78
-rw-r--r--src/site/getsite.php4
3 files changed, 78 insertions, 35 deletions
diff --git a/src/fcontest.php b/src/fcontest.php
index 8f636f7..fae2a74 100644
--- a/src/fcontest.php
+++ b/src/fcontest.php
@@ -547,6 +547,37 @@ function DBSiteDeleteAllRuns ($contest, $site, $user, $usersite,$c=null) {
}
return true;
}
+function DBUpdateSiteTime($contest,$param,$dodelete=false,$c=null) {
+ $ac=array('sitenumber','sitestartdate','siteenddate','updatetime');
+ $type['sitenumber']=1;
+ $type['updatetime']=1;
+ $type['sitestartdate']=1;
+ $type['siteenddate']=1;
+ foreach($ac as $key) {
+ if(!isset($param[$key])) {
+ LOGError("DBUpdateSiteTime param error: $key is not set");
+ return false;
+ }
+ $$key = sanitizeText($param[$key]);
+ if(isset($type[$key]) && !is_numeric($param[$key])) {
+ LOGError("DBUpdateSiteTime param error: $key is not numeric");
+ return false;
+ }
+ }
+ if($c==null) {
+ $c = DBConnect();
+ DBExec($c, "begin work", "DBUpdateSiteTime(begin)");
+ $docommit=true;
+ }
+ if($dodelete)
+ DBExec($c, "delete from sitetimetable where contestnumber=$contest and sitenumber=$sitenumber", "DBUpdateSiteTime(delete)");
+ DBExec($c, "insert into sitetimetable (contestnumber, sitenumber, sitestartdate, siteenddate, updatetime) ".
+ "values ($contest,$sitenumber,$sitestartdate,$siteenddate,$updatetime)", "DBRenewSiteTime(insert)");
+ if($docommit)
+ DBExec($c, "commit work", "DBUpdateSiteTime(commit-noupdate)");
+ return true;
+}
+
function DBUpdateSite ($param,$c=null) {
$ac=array('contestnumber','sitenumber','sitename','sitepermitlogins','sitescorelevel');
$ac1=array('updatetime','siteautoend','siteglobalscore','siteip','siteactive','siteduration','sitelastmileanswer','sitelastmilescore',
diff --git a/src/fextdata.php b/src/fextdata.php
index cdb087c..c5125df 100644
--- a/src/fextdata.php
+++ b/src/fextdata.php
@@ -271,25 +271,28 @@ function getMainXML() {
LOGError("xmltransfer: OK");
else
LOGError("xmltransfer: failed (" . $s . ")");
+
+ $s = substr($s, strpos($s, "\n") + 1);
+ LOGError("string: " . substr($s,0,50));
+ $s = decryptData($s,myhash (trim($sitedata[2])),'xml from main not ok');
+ if(strtoupper(substr($s,0,5)) != "<XML>") {
+ return false;
+ }
+ importFromXML($s, $contest, $localsite);
+ $str = $sitedata[0] . ' ' . $sitedata[1] . ' ' . $sitedata[2] . ' ' . $ti;
+ $param = array('contestnumber' => $contest, 'mainsiteurl' => $str, 'updatetime' => $ct['updatetime']);
+ DBUpdateContest ($param, $c);
+ return true;
} else {
LOGError("xmltransfer: failed (" . $ok . ")");
}
-
- $s = decryptData($s,myhash (trim($sitedata[2])),'xml from main not ok');
- if(strtoupper(substr($s,0,5)) != "<XML>") {
- return false;
- }
- importFromXML($s, $contest, $localsite);
- $str = $sitedata[0] . ' ' . $sitedata[1] . ' ' . $sitedata[2] . ' ' . $ti;
- $param = array('contestnumber' => $contest, 'mainsiteurl' => $str, 'updatetime' => $ct['updatetime']);
- DBUpdateContest ($param, $c);
- return true;
+ return false;
}
function importFromXML($ar,$contest,$site,$tomain=false) {
LOGError("importFromXML: contest $contest site $site tomain $tomain");
$data = implode("",explode("\n",$ar));
- $parser = xml_parser_create();
+ $parser = xml_parser_create('');
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 1);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $data, $values, $tags);
@@ -302,7 +305,7 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
// DBExec($conn,"lock","importFromXML(lock)");
$r = DBExec($conn, "select * from contesttable where contestnumber=$contest");
if (DBnLines($r)==0) {
- echo "Unable to find the contest $contest in the database.\n";
+ LOGError("importFromXML: Unable to find the contest $contest in the database.");
// DBExec($conn,"rollback work");
return false;
}
@@ -310,14 +313,14 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
DBClose($conn);
$conn=null;
-
- $tables = array('answertable','langtable','problemtable','sitetable','usertable','clartable','runtable','tasktable');
+ $firsttimetime=true;
+ $tables = array('answertable','langtable','problemtable','sitetable','sitetimetable','usertable','clartable','runtable','tasktable');
foreach($tables as $table) {
foreach($tags as $key=>$val) {
if($values[$val[0]]['type'] != 'open') continue;
if($key == "XML") continue;
- if($key != $table) continue;
+ if($key != strtoupper($table)) continue;
foreach($val as $k=>$v) {
if($values[$v]['type'] != 'open') continue;
@@ -339,13 +342,14 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
// echo "\n";
// print_r($param);
$param['contestnumber'] = $contest;
+ $param['contest'] = $contest;
if(count($param) < 2) continue;
unset($param['number']);
- if(!$tomain && $key == "answertable") {
+ if(!$tomain && $table == "answertable") {
if(($ret=DBNewAnswer ($contest, $param, $conn))) {
if($ret==2) {
- echo "Answer " . $param["answernumber"] . " updated<br>";
+ LOGError("Answer " . $param["answernumber"] . " updated");
}
}
else {
@@ -354,10 +358,10 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
- if(!$tomain && $key == "langtable") {
+ if(!$tomain && $table == "langtable") {
if(($ret=DBNewLanguage ($contest,$param, $conn))) {
if($ret==2) {
- echo "Language " . $param['langnumber'] ." updated<br>";
+ LOGError("Language " . $param['langnumber'] ." updated");
}
}
else {
@@ -366,10 +370,10 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
- if(!$tomain && $key == "problemtable") {
+ if(!$tomain && $table == "problemtable") {
if(($ret=DBNewProblem ($contest,$param, $conn))) {
if($ret==2)
- echo "Problem " . $param['problemnumber'] ." updated<br>";
+ LOGError("Problem " . $param['problemnumber'] ." updated");
}
else {
if($conn != null)
@@ -377,10 +381,10 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
-
+ if(isset($param['usersitenumber']) && !isset($param['sitenumber'])) $param['sitenumber']=$param['usersitenumber'];
if(!isset($param['sitenumber']) || $param['sitenumber'] != $site) continue;
- if($tomain && $key == "sitetable") {
+ if($tomain && $table == "sitetable") {
if(!DBNewSite($contest, $conn, $param)) {
if($conn != null)
DBExec($conn,"rollback work");
@@ -388,7 +392,7 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
}
if(($ret=DBUpdateSite($param, $conn))) {
if($ret==2) {
- echo "Site " . $param["sitenumber"] . " updated<br>";
+ LOGError("Site " . $param["sitenumber"] . " updated");
}
} else {
if($conn != null)
@@ -396,10 +400,18 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
- if($key == "usertable") {
+ if($tomain && $table == "sitetimetable") {
+ if(!DBUpdateSiteTime($contest, $param, $firsttimetime, $conn)) {
+ if($conn != null)
+ DBExec($conn,"rollback work");
+ return false;
+ }
+ $firsttimetime=false;
+ }
+ if($table == "usertable") {
if(($ret=DBNewUser($param, $conn))) {
if($ret==2) {
- echo "User " . $param["usernumber"]."/".$param['sitenumber']. " updated<br>";
+ LOGError("User " . $param["usernumber"]."/".$param['sitenumber']. " updated");
}
} else {
if($conn != null)
@@ -407,10 +419,10 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
- if($key == "tasktable") {
+ if($table == "tasktable") {
if(($ret=DBNewTask ($param, $conn))) {
if($ret==2)
- echo "Task " . $param['tasknumber']."/".$param['sitenumber']." updated<br>";
+ LOGError("Task " . $param['tasknumber']."/".$param['sitenumber']." updated");
}
else {
if($conn != null)
@@ -418,10 +430,10 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
- if($key == "clartable") {
+ if($table == "clartable") {
if(($ret=DBNewClar ($param, $conn))) {
if($ret==2)
- echo "Clarification " . $param['clarnumber']."/".$param['sitenumber'] ." updated<br>";
+ LOGError("Clarification " . $param['clarnumber']."/".$param['sitenumber'] ." updated");
}
else {
if($conn != null)
@@ -429,10 +441,10 @@ function importFromXML($ar,$contest,$site,$tomain=false) {
return false;
}
}
- if($key == "runtable") {
+ if($table == "runtable") {
if(($ret=DBNewRun ($param, $conn))) {
if($ret==2)
- echo "Run " . $param['runnumber'] ."/".$param['sitenumber']." updated<br>";
+ LOGError("Run " . $param['runnumber'] ."/".$param['sitenumber']." updated");
}
else {
if($conn != null)
@@ -453,7 +465,7 @@ function genSQLs($contest, $site, $updatetime) {
$sql['answertable']="select * from answertable where contestnumber=$contest and fake='f' and updatetime >= $updatetime";
$sql['langtable']="select * from langtable where contestnumber=$contest and updatetime >= $updatetime";
$sql['problemtable']="select * from problemtable where contestnumber=$contest and fake='f' and updatetime >= $updatetime";
- // $sql['sitetimetable']="select * from sitetimetable where contestnumber=$contest and sitenumber=$site and updatetime >= $updatetime";
+ $sql['sitetimetable']="select * from sitetimetable where contestnumber=$contest and sitenumber=$site and updatetime >= $updatetime";
$sql['usertable']="select * from usertable where contestnumber=$contest and usersitenumber=$site and updatetime >= $updatetime";
$sql['clartable']="select * from clartable where contestnumber=$contest and clarsitenumber=$site and updatetime >= $updatetime";
$sql['runtable']="select * from runtable where contestnumber=$contest and runsitenumber=$site and updatetime >= $updatetime";
diff --git a/src/site/getsite.php b/src/site/getsite.php
index 27d581e..4cb247d 100644
--- a/src/site/getsite.php
+++ b/src/site/getsite.php
@@ -31,8 +31,8 @@ if($ct["contestlocalsite"]==$ct["contestmainsite"]) {
",session=".session_id(),2);
if($fromsite != '' && is_numeric($fromsite) && $fromsite > 0) {
if(isset($_POST)) {
+ $u = DBUserInfo($_SESSION["usertable"]["contestnumber"], $_SESSION["usertable"]["usersitenumber"], $_SESSION["usertable"]["usernumber"],null,false);
if(isset($_POST['xml'])) {
- $u = DBUserInfo($_SESSION["usertable"]["contestnumber"], $_SESSION["usertable"]["usersitenumber"], $_SESSION["usertable"]["usernumber"],null,false);
// $fp=fopen('/tmp/aaa',"w"); fwrite($fp,$_POST['xml']); fclose($fp);
$s = decryptData(rawurldecode($_POST['xml']),$u["userpassword"],'xml from local not ok');
// $fp=fopen('/tmp/aaa1',"w"); fwrite($fp,$s); fclose($fp);
@@ -47,7 +47,7 @@ if($ct["contestlocalsite"]==$ct["contestmainsite"]) {
}
if(isset($_POST['updatetime']) && is_numeric($_POST['updatetime'])) {
$xml = generateSiteXML($_SESSION["usertable"]["contestnumber"],$fromsite,$_POST['updatetime']);
- echo encryptData($xml,myhash($_SESSION["usertable"]["userpassword"]));
+ echo encryptData($xml,$u["userpassword"]);
}
} else {
echo "<!-- <ERROR3> ".session_id() . " " . session_id() . " -->\n";