From a40420b6762b66bf9421cbb008df5c1c2f204d21 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Wed, 26 Jul 2017 18:23:33 +0100 Subject: adjustments for transfering data between sites --- src/fanswer.php | 7 +++++-- src/fclar.php | 4 ++++ src/fcontest.php | 36 +++++++++++++++++++++++++++--------- src/fextdata.php | 22 ++++++++++------------ src/flanguage.php | 7 ++++++- src/fproblem.php | 12 +++++++++++- src/frun.php | 5 +++++ src/ftask.php | 6 ++++++ src/site/getsite.php | 14 ++++++++------ src/version | 2 +- src/versionnum.php | 4 ++-- 11 files changed, 85 insertions(+), 34 deletions(-) diff --git a/src/fanswer.php b/src/fanswer.php index b689a72..b0e5750 100644 --- a/src/fanswer.php +++ b/src/fanswer.php @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -// Last modified 05/aug/2012 by cassio@ime.usp.br +// Last modified 26/jul/2017 by cassio@ime.usp.br function DBDropAnswerTable() { $c = DBConnect(); @@ -96,7 +96,10 @@ function DBNewAnswer($contest, $param, $c=null) { if(isset($param["action"]) && $param["action"]=="delete") { return DBDeleteAnswer($contestnumber, $param, $c); } - + + if(isset($ac['answernumber']) && !isset($ac['number'])) $ac['number']=$ac['answernumber']; + if(isset($ac['runanswer']) && !isset($ac['name'])) $ac['name']=$ac['runanswer']; + $ac=array('number','name','yes'); $type['number']=1; foreach($ac as $key) { diff --git a/src/fclar.php b/src/fclar.php index 18d41ff..7d5b6bb 100644 --- a/src/fclar.php +++ b/src/fclar.php @@ -226,9 +226,13 @@ function DBClarDelete($number,$site,$contest,$user,$usersite) { function DBNewClar($param,$c=null) { 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['clarsitenumber']) && !isset($param['site'])) $param['site']=$param['clarsitenumber']; if(isset($param['usernumber']) && !isset($param['user'])) $param['user']=$param['usernumber']; if(isset($param['number']) && !isset($param['clarnumber'])) $param['clarnumber']=$param['number']; + if(isset($param['clarproblem']) && !isset($param['problem'])) $param['problem']=$param['clarproblem']; + if(isset($param['clardata']) && !isset($param['question'])) $param['question']=$param['clardata']; + $ac=array('contest','site','user','problem','question'); $ac1=array('clarnumber','clardate','clardatediff','clardatediffans','claranswer','clarstatus','clarjudge','clarjudgesite','updatetime'); $type['contest']=1; diff --git a/src/fcontest.php b/src/fcontest.php index e10c205..fa68b72 100644 --- a/src/fcontest.php +++ b/src/fcontest.php @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -//Last updated 11/nov/2015 by cassio@ime.usp.br +//Last updated 26/jul/2017 by cassio@ime.usp.br // function DBDropContestTable() { $c = DBConnect(); @@ -1027,6 +1027,8 @@ function DBNewSite ($contest, $c=null, $param=array()) { if($ct==null) return false; if(isset($param['sitenumber']) && !isset($param['number'])) $param['number']=$param['sitenumber']; + if(isset($param['siteduration']) && !isset($param['duration'])) $param['duration']=$param['siteduration']; + $ac=array('number','siteip','sitename','sitescorelevel','updatetime','startdate','duration'); $type=array(); $type['startdate']=1; @@ -1048,7 +1050,10 @@ function DBNewSite ($contest, $c=null, $param=array()) { $number=$n; } else { $a = DBGetRow ("select * from sitetable where contestnumber=$contest and sitenumber=$number", 0, $c); - if($a != null) return 1; + if($a != null) { + if($cw) DBExec($c, "commit work"); + return 1; + } } if($duration=='') $duration = $ct["contestduration"]; if($startdate=='') $startdate=$ct["conteststartdate"]; @@ -1057,13 +1062,16 @@ function DBNewSite ($contest, $c=null, $param=array()) { if($sitescorelevel=="") $sitescorelevel=3; $t=time(); if($updatetime=="") $updatetime=$t; - DBExec($c, "insert into sitetable (contestnumber, sitenumber, siteip, sitename, siteactive, sitepermitlogins, ". - "sitelastmileanswer, sitelastmilescore, siteduration, siteautoend, sitejudging, sitetasking, ". - "siteglobalscore, sitescorelevel, ". - "sitenextuser, sitenextclar, sitenextrun, sitenexttask, sitemaxtask, updatetime) values ". - "($contest, $number, '$siteip', '$sitename', 't', 't', ". - $ct["contestlastmileanswer"].",".$ct["contestlastmilescore"]. - ", $duration, 't', '$number', '$number', '$number', $sitescorelevel, 0, 0, 0, 0, 10, $updatetime)"); + if(!DBExecNonStop($c, "insert into sitetable (contestnumber, sitenumber, siteip, sitename, siteactive, sitepermitlogins, ". + "sitelastmileanswer, sitelastmilescore, siteduration, siteautoend, sitejudging, sitetasking, ". + "siteglobalscore, sitescorelevel, ". + "sitenextuser, sitenextclar, sitenextrun, sitenexttask, sitemaxtask, updatetime) values ". + "($contest, $number, '$siteip', '$sitename', 't', 't', ". + $ct["contestlastmileanswer"].",".$ct["contestlastmilescore"]. + ", $duration, 't', '$number', '$number', '$number', $sitescorelevel, 0, 0, 0, 0, 10, $updatetime)")) { + if($cw) DBExec($c, "commit work"); + return 1; + } $cf=globalconf(); $admpass = myhash($cf["basepass"]); @@ -1134,9 +1142,19 @@ function DBUserUpdate($contest, $site, $user, $username, $userfull, $userdesc, $ function DBNewUser($param, $c=null) { 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['usersitenumber']) && !isset($param['site'])) $param['site']=$param['usersitenumber']; if(isset($param['usernumber']) && !isset($param['user'])) $param['user']=$param['usernumber']; if(isset($param['number']) && !isset($param['user'])) $param['user']=$param['number']; + if(isset($param['userpassword']) && !isset($param['pass'])) $param['pass']=$param['userpassword']; + if(isset($param['userenabled']) && !isset($param['enabled'])) $param['enabled']=$param['userenabled']; + if(isset($param['usermultilogin']) && !isset($param['multilogin'])) $param['multilogin']=$param['usermultilogin']; + if(isset($param['userpermitip']) && !isset($param['permitip'])) $param['permitip']=$param['userpermitip']; + if(isset($param['userfullname']) && !isset($param['userfull'])) $param['userfull']=$param['userfullname']; + if(isset($param['usertype']) && !isset($param['type'])) $param['type']=$param['usertype']; + if(isset($param['userpermitip']) && !isset($param['permitip'])) $param['permitip']=$param['userpermitip']; + if(isset($param['userpermitip']) && !isset($param['permitip'])) $param['permitip']=$param['userpermitip']; + $ac=array('contest','site','user'); $ac1=array('updatetime','username','usericpcid','userfull','userdesc','type','enabled','multilogin','pass','permitip','changepass', 'userip','userlastlogin','userlastlogout','usersession','usersessionextra'); diff --git a/src/fextdata.php b/src/fextdata.php index 2be681a..e43d0af 100644 --- a/src/fextdata.php +++ b/src/fextdata.php @@ -286,7 +286,7 @@ function getMainXML() { return true; } -function importFromXML($ar,$contest,$site) { +function importFromXML($ar,$contest,$site,$tomain=false) { $data = implode("",explode("\n",$ar)); $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 1); @@ -310,7 +310,7 @@ function importFromXML($ar,$contest,$site) { DBClose($conn); $conn=null; - $tables = array('contesttable','answertable','langtable','problemtable','sitetable','usertable','clartable','runtable','tasktable'); + $tables = array('answertable','langtable','problemtable','sitetable','usertable','clartable','runtable','tasktable'); foreach($tables as $table) { foreach($tags as $key=>$val) { @@ -341,7 +341,7 @@ function importFromXML($ar,$contest,$site) { if(count($param) < 2) continue; unset($param['number']); - if($key == "answertable") { + if(!$tomain && $key == "answertable") { if(($ret=DBNewAnswer ($contest, $param, $conn))) { if($ret==2) { echo "Answer " . $param["answernumber"] . " updated
"; @@ -353,7 +353,7 @@ function importFromXML($ar,$contest,$site) { return false; } } - if($key == "langtable") { + if(!$tomain && $key == "langtable") { if(($ret=DBNewLanguage ($contest,$param, $conn))) { if($ret==2) { echo "Language " . $param['langnumber'] ." updated
"; @@ -365,7 +365,7 @@ function importFromXML($ar,$contest,$site) { return false; } } - if($key == "problemtable") { + if(!$tomain && $key == "problemtable") { if(($ret=DBNewProblem ($contest,$param, $conn))) { if($ret==2) echo "Problem " . $param['problemnumber'] ." updated
"; @@ -379,13 +379,12 @@ function importFromXML($ar,$contest,$site) { if(!isset($param['sitenumber']) || $param['sitenumber'] != $site) continue; - if($key == "sitetable") { + if($tomain && $key == "sitetable") { if(!DBNewSite($contest, $conn, $param)) { if($conn != null) DBExec($conn,"rollback work"); return false; - } - /* + } if(($ret=DBUpdateSite($param, $conn))) { if($ret==2) { echo "Site " . $param["sitenumber"] . " updated
"; @@ -395,7 +394,6 @@ function importFromXML($ar,$contest,$site) { DBExec($conn,"rollback work"); return false; } - */ } if($key == "usertable") { if(($ret=DBNewUser($param, $conn))) { @@ -447,9 +445,9 @@ function importFromXML($ar,$contest,$site) { return true; } -function genSQLs() { +function genSQLs($contest, $site, $updatetime) { $sql = array(); - $sql['contesttable']="select * from contesttable where contestnumber=$contest and updatetime >= $updatetime"; + // $sql['contesttable']="select * from contesttable where contestnumber=$contest and updatetime >= $updatetime"; $sql['sitetable']="select * from sitetable where contestnumber=$contest and sitenumber=$site and updatetime >= $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"; @@ -463,7 +461,7 @@ function genSQLs() { } function generateSiteXML($contest,$site,$updatetime) { - $sql = genSQL(); + $sql = genSQL($contest, $site, $updatetime); $c = DBConnect(); if ($c==null) return null; DBExec($c, "begin work"); diff --git a/src/flanguage.php b/src/flanguage.php index 120fad2..0523801 100644 --- a/src/flanguage.php +++ b/src/flanguage.php @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -// Last modified 05/aug/2012 by cassio@ime.usp.br +// Last modified 26/jul/2017 by cassio@ime.usp.br function DBDropLangTable() { $c = DBConnect(); $r = DBExec($c, "drop table \"langtable\"", "DBDropLangTable(drop table)"); @@ -97,6 +97,11 @@ function DBNewLanguage($contestnumber, $param, $c=null) { if(isset($param["action"]) && $param["action"]=="delete") { return DBDeleteLanguage($contestnumber, $param, $c); } + + if(isset($ac['langnumber']) && !isset($ac['number'])) $ac['number']=$ac['langnumber']; + if(isset($ac['langname']) && !isset($ac['name'])) $ac['name']=$ac['langname']; + if(isset($ac['langextension']) && !isset($ac['extension'])) $ac['extension']=$ac['langextension']; + $ac=array('number','name'); $ac1=array('updatetime','extension'); $type['number']=1; diff --git a/src/fproblem.php b/src/fproblem.php index 3214a82..8bc981c 100644 --- a/src/fproblem.php +++ b/src/fproblem.php @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . //////////////////////////////////////////////////////////////////////////////// -// Last modified 21/jul/2012 by cassio@ime.usp.br +// Last modified 26/jul/2017 by cassio@ime.usp.br function DBDropProblemTable() { $c = DBConnect(); @@ -281,6 +281,16 @@ function DBNewProblem($contestnumber, $param, $c=null) { return DBDeleteProblem($contestnumber, $param); } + if(isset($ac['problemnumber']) && !isset($ac['number'])) $ac['number']=$ac['problemnumber']; + if(isset($ac['problemname']) && !isset($ac['name'])) $ac['name']=$ac['problemname']; + if(isset($ac['problemfullname']) && !isset($ac['fullname'])) $ac['fullname']=$ac['problemfullname']; + if(isset($ac['problembasefilename']) && !isset($ac['basename'])) $ac['basename']=$ac['problembasefilename']; + if(isset($ac['problemcolorname']) && !isset($ac['colorname'])) $ac['colorname']=$ac['problemcolorname']; + if(isset($ac['problemcolor']) && !isset($ac['color'])) $ac['color']=$ac['problemcolor']; + if(isset($ac['probleminputfile']) && !isset($ac['inputfilepath'])) $ac['inputfilepath']=$ac['probleminputfile']; + if(isset($ac['probleminputfilename']) && !isset($ac['inputfilename'])) $ac['inputfilename']=$ac['probleminputfilename']; + + $ac=array('number','name'); $type['number']=1; $type['updatetime']=1; diff --git a/src/frun.php b/src/frun.php index d7e2a4f..a6406e4 100644 --- a/src/frun.php +++ b/src/frun.php @@ -613,11 +613,16 @@ function DBOpenRunsSNS($contest,$site,$st,$order='run') { function DBNewRun($param,$c=null) { 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['runsitenumber']) && !isset($param['site'])) $param['site']=$param['runsitenumber']; if(isset($param['usernumber']) && !isset($param['user'])) $param['user']=$param['usernumber']; if(isset($param['number']) && !isset($param['runnumber'])) $param['runnumber']=$param['number']; if(isset($param['runlangnumber']) && !isset($param['lang'])) $param['lang']=$param['runlangnumber']; if(isset($param['runproblem']) && !isset($param['problem'])) $param['problem']=$param['runproblem']; + if(isset($param['runfilename']) && !isset($param['filename'])) $param['filename']=$param['runfilename']; + if(isset($param['rundata']) && !isset($param['filepath'])) $param['filepath']=$param['rundata']; + if(isset($param['runlangnumber']) && !isset($param['lang'])) $param['lang']=$param['runlangnumber']; + $ac=array('contest','site','user','problem','lang','filename','filepath'); $ac1=array('runnumber','rundate','rundatediff','rundatediffans','runanswer','runstatus','runjudge','runjudgesite', 'runjudge1','runjudgesite1','runanswer1','runjudge2','runjudgesite2','runanswer2', diff --git a/src/ftask.php b/src/ftask.php index 8ff7bd7..36f272a 100644 --- a/src/ftask.php +++ b/src/ftask.php @@ -288,6 +288,12 @@ function DBNewTask($param, $c=null, $autotask=false) { if(isset($param['usernumber']) && !isset($param['user'])) $param['user']=$param['usernumber']; if(isset($param['number']) && !isset($param['tasknumber'])) $param['tasknumber']=$param['number']; + if(isset($param['taskfilename']) && !isset($param['filename'])) $param['filename']=$param['taskfilename']; + if(isset($param['taskdata']) && !isset($param['filepath'])) $param['filepath']=$param['taskdata']; + if(isset($param['taskstatus']) && !isset($param['status'])) $param['status']=$param['taskstatus']; + if(isset($param['taskdesc']) && !isset($param['desc'])) $param['desc']=$param['taskdesc']; + if(isset($param['tasksystem']) && !isset($param['sys'])) $param['sys']=$param['tasksystem']; + $ac=array('contest','site','user','desc'); $ac1=array('color','colorname','updatetime','filename','filepath','sys','tasknumber','status', 'taskdate','taskdatediff','taskdatediffans','taskstaffnumber','taskstaffsite'); diff --git a/src/site/getsite.php b/src/site/getsite.php index 9cf4905..5e4b621 100644 --- a/src/site/getsite.php +++ b/src/site/getsite.php @@ -39,12 +39,14 @@ if($ct["contestlocalsite"]==$ct["contestmainsite"]) { // $fp=fopen('/tmp/aaa',"w"); fwrite($fp,$_POST['xml']); fclose($fp); $s = decryptData(rawurldecode($_POST['xml']),myhash($_SESSION["usertable"]["userpassword"])); // $fp=fopen('/tmp/aaa1',"w"); fwrite($fp,$s); fclose($fp); - - - if(importSiteFromXML($s,$_SESSION["usertable"]["contestnumber"],$fromsite)) - echo ""; - else - echo ""; + if(strtoupper(substr($s,0,5)) != "") { + echo "\n"; + } else { + if(importFromXML($s,$_SESSION["usertable"]["contestnumber"],$fromsite,true)) + echo ""; + else + echo ""; + } } if(isset($_POST['updatetime']) && is_numeric($_POST['updatetime'])) { $xml = generateSiteXML($_SESSION["usertable"]["contestnumber"],$fromsite,$_POST['updatetime']); diff --git a/src/version b/src/version index cf803d8..2924c77 100644 --- a/src/version +++ b/src/version @@ -1 +1 @@ -boca-1.5.10 +boca-1.5.11 diff --git a/src/versionnum.php b/src/versionnum.php index abad2a7..5cebd5e 100644 --- a/src/versionnum.php +++ b/src/versionnum.php @@ -1,5 +1,5 @@ -- cgit v1.2.3