From 866658cded5b92ddb2681dead1ebaf111d712fcc Mon Sep 17 00:00:00 2001 From: cassiopc Date: Mon, 6 Aug 2012 11:09:10 +0200 Subject: init --- boca-1.5.0/src/admin/answer.php | 134 +++++++ boca-1.5.0/src/admin/clar.php | 112 ++++++ boca-1.5.0/src/admin/claredit.php | 171 +++++++++ boca-1.5.0/src/admin/contest.php | 252 +++++++++++++ boca-1.5.0/src/admin/export.php | 121 ++++++ boca-1.5.0/src/admin/files.php | 78 ++++ boca-1.5.0/src/admin/header.php | 88 +++++ boca-1.5.0/src/admin/index.php | 22 ++ boca-1.5.0/src/admin/language.php | 124 ++++++ boca-1.5.0/src/admin/log.php | 76 ++++ boca-1.5.0/src/admin/option.php | 21 ++ boca-1.5.0/src/admin/problem.php | 262 +++++++++++++ boca-1.5.0/src/admin/report.php | 89 +++++ boca-1.5.0/src/admin/report/clar.php | 82 ++++ boca-1.5.0/src/admin/report/header.php | 65 ++++ boca-1.5.0/src/admin/report/icpc.php | 46 +++ boca-1.5.0/src/admin/report/linechart.php | 45 +++ boca-1.5.0/src/admin/report/piechart.php | 60 +++ boca-1.5.0/src/admin/report/run.php | 93 +++++ boca-1.5.0/src/admin/report/score.php | 43 +++ boca-1.5.0/src/admin/report/site.php | 128 +++++++ boca-1.5.0/src/admin/report/stat.php | 337 +++++++++++++++++ boca-1.5.0/src/admin/report/task.php | 68 ++++ boca-1.5.0/src/admin/run.php | 187 +++++++++ boca-1.5.0/src/admin/runedit.php | 331 ++++++++++++++++ boca-1.5.0/src/admin/score.php | 21 ++ boca-1.5.0/src/admin/site.php | 605 ++++++++++++++++++++++++++++++ boca-1.5.0/src/admin/task.php | 147 ++++++++ boca-1.5.0/src/admin/user.php | 444 ++++++++++++++++++++++ 29 files changed, 4252 insertions(+) create mode 100644 boca-1.5.0/src/admin/answer.php create mode 100644 boca-1.5.0/src/admin/clar.php create mode 100644 boca-1.5.0/src/admin/claredit.php create mode 100644 boca-1.5.0/src/admin/contest.php create mode 100644 boca-1.5.0/src/admin/export.php create mode 100644 boca-1.5.0/src/admin/files.php create mode 100644 boca-1.5.0/src/admin/header.php create mode 100644 boca-1.5.0/src/admin/index.php create mode 100644 boca-1.5.0/src/admin/language.php create mode 100644 boca-1.5.0/src/admin/log.php create mode 100644 boca-1.5.0/src/admin/option.php create mode 100644 boca-1.5.0/src/admin/problem.php create mode 100644 boca-1.5.0/src/admin/report.php create mode 100644 boca-1.5.0/src/admin/report/clar.php create mode 100644 boca-1.5.0/src/admin/report/header.php create mode 100644 boca-1.5.0/src/admin/report/icpc.php create mode 100644 boca-1.5.0/src/admin/report/linechart.php create mode 100644 boca-1.5.0/src/admin/report/piechart.php create mode 100644 boca-1.5.0/src/admin/report/run.php create mode 100644 boca-1.5.0/src/admin/report/score.php create mode 100644 boca-1.5.0/src/admin/report/site.php create mode 100644 boca-1.5.0/src/admin/report/stat.php create mode 100644 boca-1.5.0/src/admin/report/task.php create mode 100644 boca-1.5.0/src/admin/run.php create mode 100644 boca-1.5.0/src/admin/runedit.php create mode 100644 boca-1.5.0/src/admin/score.php create mode 100644 boca-1.5.0/src/admin/site.php create mode 100644 boca-1.5.0/src/admin/task.php create mode 100644 boca-1.5.0/src/admin/user.php (limited to 'boca-1.5.0/src/admin') diff --git a/boca-1.5.0/src/admin/answer.php b/boca-1.5.0/src/admin/answer.php new file mode 100644 index 0000000..c2d1fdc --- /dev/null +++ b/boca-1.5.0/src/admin/answer.php @@ -0,0 +1,134 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require('header.php'); + +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("$loc/index.php"); + +if (isset($_GET["delete"]) && is_numeric($_GET["delete"])) { + $param["number"] = $_GET["delete"]; + if(!DBDeleteAnswer($_SESSION["usertable"]["contestnumber"], $param)) { + MSGError('Error deleting answer'); + LogError('Error deleting answer'); + } + ForceLoad("answer.php"); +} + +if (isset($_POST["Submit3"]) && isset($_POST["answernumber"]) && is_numeric($_POST["answernumber"]) && isset($_POST["answername"]) && + $_POST["answername"] != "" && isset($_POST["answeryes"])) { + if ($_POST["confirmation"] == "confirm") { + $param["number"] = $_POST["answernumber"]; + $param["name"] = $_POST["answername"]; + $param["yes"] = $_POST["answeryes"]; + DBNewAnswer ($_SESSION["usertable"]["contestnumber"],$param); + } + ForceLoad("answer.php"); +} +?> +
+ + + + + + + +\n"; + if($ans[$i]["fake"]!="t") { + if($ans[$i]["number"]>7) { + echo " \n"; + } else + echo " \n"; + } else { + echo " \n"; + } + echo " \n"; + if($ans[$i]["yes"]=="t") echo " \n"; + else echo " \n"; + echo " \n"; + $n++; +} +echo "
Answer #DescriptionYes/No
" . $ans[$i]["number"] . "".$ans[$i]["number"]."".$ans[$i]["number"]." (fake)" . $ans[$i]["desc"] . "YesNo
"; +if ($n == 0) echo "
NO ANSWERS DEFINED
"; +?> + +

When allowed, clicking on the answer number will delete it.
+ Inputting with the same number of an existing one will update its description.
+ TAKE CARE: deleting an answer will remove EVERYTHING related to it (ALSO IN OTHER TABLES!!).
+ It is NOT recommended to change anything while the contest is running.
+ To insert a new answer, enter the data below.
+ Note that any changes will overwrite the already defined data.

+
+
+ + + + + + + + + + + + + + +
Number: + +
Description: + +
Type: + +
+
+
+ + +
+ + + + diff --git a/boca-1.5.0/src/admin/clar.php b/boca-1.5.0/src/admin/clar.php new file mode 100644 index 0000000..66a7b0d --- /dev/null +++ b/boca-1.5.0/src/admin/clar.php @@ -0,0 +1,112 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require 'header.php'; +if (isset($_POST["message"]) && isset($_POST["problem"]) && isset($_POST["Submit"])) { + if ($_POST["confirmation"] == "confirm") { + $param['contest']=$_SESSION["usertable"]["contestnumber"]; + $param['site']=$_SESSION["usertable"]["usersitenumber"]; + $param['user']= $_SESSION["usertable"]["usernumber"]; + $param['problem'] = htmlspecialchars($_POST["problem"]); + $param['question'] = htmlspecialchars($_POST["message"]); + DBNewClar($param); + } + ForceLoad("clar.php"); +} +if(isset($_GET["order"]) && $_GET["order"] != "") { + $order = htmlspecialchars($_GET["order"]); + $_SESSION["clarline"] = $order; +} else { + if(isset($_SESSION["clarline"])) + $order = $_SESSION["clarline"]; + else + $order=''; +} +?> +
+ + + + + + + + + + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if ($clar[$i]["judge"] == $_SESSION["usertable"]["usernumber"] && + $clar[$i]["judgesite"] == $_SESSION["usertable"]["usersitenumber"] && $clar[$i]["status"] == "answering") + $color="ff7777"; + else if (strpos($clar[$i]["status"], "answered") !== false) $color="bbbbff"; + else if ($clar[$i]["status"] == "answering") $color="77ff77"; + else if ($clar[$i]["status"] == "openclar") $color="ffff88"; + else $color="ffffff"; + + echo " \n"; + if ($clar[$i]["judge"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $clar[$i]["judgesite"], $clar[$i]["judge"]); + echo " \n"; + } + else + echo " \n"; + + if ($clar[$i]["question"] == "") $clar[$i]["question"] = " "; + + echo " \n"; + if (trim($clar[$i]["answer"]) == "") $clar[$i]["answer"] = "Not answered yet"; + echo " \n"; + + echo " \n"; +} + +echo "
Clar #SiteUserTimeProblemStatusJudge (Site)QuestionAnswer
" . $clar[$i]["number"] . "" . $clar[$i]["site"] . "" . $clar[$i]["user"] . "" . dateconvminutes($clar[$i]["timestamp"]) . "" . $clar[$i]["problem"] . "" . $clar[$i]["status"] . "" . $u["username"] . " (" . $clar[$i]["judgesite"] . ") "; +// echo "
" . $clar[$i]["question"] . "
"; +// echo $clar[$i]["question"]; + echo " \n"; + echo "
"; +// echo "
" . $clar[$i]["answer"] . "
"; +// echo $clar[$i]["answer"]; + echo " \n"; + echo "
"; +if (count($clar) == 0) echo "
NO CLARIFICATIONS AVAILABLE
"; + +?> + + diff --git a/boca-1.5.0/src/admin/claredit.php b/boca-1.5.0/src/admin/claredit.php new file mode 100644 index 0000000..91fae39 --- /dev/null +++ b/boca-1.5.0/src/admin/claredit.php @@ -0,0 +1,171 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require 'header.php'; + +if (isset($_POST["cancel"]) && $_POST["cancel"]=="Cancel") + ForceLoad("clar.php"); + +if (isset($_POST["delete"]) && $_POST["delete"]=="Delete" && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["number"]) && + is_numeric($_POST["sitenumber"])) { + if ($_POST["confirmation"]=="confirm") { + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); + + if (DBClarDelete($number, $sitenumber, $_SESSION["usertable"]["contestnumber"], + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"])) + MSGError("Clarification deleted."); + } + ForceLoad("clar.php"); +} + +if (isset($_POST["answer"]) && isset($_POST["open"]) && $_POST["open"]=="Open the Clar" && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["number"]) && + is_numeric($_POST["sitenumber"])) { + if ($_POST["confirmation"]=="confirm") { + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); + + if (DBChiefClarGiveUp($number, $sitenumber, $_SESSION["usertable"]["contestnumber"])) + MSGError("Clarification returned."); + ForceLoad("clar.php"); + } +} + +if (isset($_POST["answer"]) && isset($_POST["Submit"]) && $_POST["Submit"]=="Answer" && is_numeric($_POST["number"]) && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["sitenumber"])) { + if ($_POST["confirmation"]=="confirm") { + + $ans = myhtmlspecialchars($_POST["answer"]); + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); + + if (isset($_POST["answerall"])) $type='all'; + else if (isset($_POST["answersite"])) $type='site'; + else $type = 'none'; + + if (trim($ans)=="") { + DBClarGiveUp($number, $sitenumber, $_SESSION["usertable"]["contestnumber"], + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + MSGError("Clarification returned."); + } else { + DBChiefUpdateClar($_SESSION["usertable"]["contestnumber"], + $_SESSION["usertable"]["usersitenumber"], + $_SESSION["usertable"]["usernumber"], + $sitenumber, $number, $ans, $type); + } + } + ForceLoad("clar.php"); +} + +if (!isset($_GET["clarnumber"]) || !isset($_GET["clarsitenumber"]) || + !is_numeric($_GET["clarnumber"]) || !is_numeric($_GET["clarsitenumber"])) { + IntrusionNotify("tried to open the admin/claredit.php with wrong parameters."); + ForceLoad("clar.php"); +} + +$clarsitenumber = myhtmlspecialchars($_GET["clarsitenumber"]); +$clarnumber = myhtmlspecialchars($_GET["clarnumber"]); + +if (($a = DBChiefGetClarToAnswer($clarnumber, $clarsitenumber, + $_SESSION["usertable"]["contestnumber"])) === false) { + MSGError("Another judge got it first."); + ForceLoad("clar.php"); +} + +?> +

Use the following fields to answer the clarification: +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Clarification Site: + " /> + +
Clarification Number: + " /> + +
Clarification Time: + +
Problem: + +
Clarification: + +
Answer: + +
Answer to all users in the site + name="answersite" value="yes"> +
+
+ +
+ + + + + +
+
+ + + diff --git a/boca-1.5.0/src/admin/contest.php b/boca-1.5.0/src/admin/contest.php new file mode 100644 index 0000000..361b55b --- /dev/null +++ b/boca-1.5.0/src/admin/contest.php @@ -0,0 +1,252 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 21/jul/2012 by cassio@ime.usp.br +require 'header.php'; + +$contest=$_SESSION["usertable"]["contestnumber"]; + +if(($ct = DBContestInfo($contest)) == null) + ForceLoad("$loc/index.php"); +if ($ct["contestlocalsite"]==$ct["contestmainsite"]) $main=true; else $main=false; + +if (isset($_POST["Submit3"]) && isset($_POST["penalty"]) && is_numeric($_POST["penalty"]) && + isset($_POST["maxfilesize"]) && isset($_POST["mainsite"]) && isset($_POST["name"]) && + $_POST["name"] != "" && isset($_POST["lastmileanswer"]) && is_numeric($_POST["lastmileanswer"]) && + is_numeric($_POST["mainsite"]) && isset($_POST["lastmilescore"]) && is_numeric($_POST["lastmilescore"]) && + isset($_POST["duration"]) && is_numeric($_POST["duration"]) && isset($_POST['localsite']) && + isset($_POST["startdateh"]) && $_POST["startdateh"] >= 0 && $_POST["startdateh"] <= 23 && + isset($_POST["startdatemin"]) && $_POST["startdatemin"] >= 0 && $_POST["startdatemin"] <= 59 && + isset($_POST["startdated"]) && isset($_POST["startdatem"]) && isset($_POST["startdatey"]) && + checkdate($_POST["startdatem"], $_POST["startdated"], $_POST["startdatey"])) { + if ($_POST["confirmation"] == "confirm") { + $param['number']=$contest; + if($_POST["Submit3"] == "Become Main Site") { + $param['mainsite']=$ct["contestlocalsite"]; + } else { + $at = false; + if(!is_numeric($_POST['localsite']) || $_POST['localsite']<=0) $_POST['localsite']=-1; + if($_POST["Submit3"] == "Update Contest and All Sites") $at = true; + $t = mktime ($_POST["startdateh"], $_POST["startdatemin"], 0, + $_POST["startdatem"], $_POST["startdated"], $_POST["startdatey"]); + $param['localsite']=$_POST['localsite']; + $param['name']=$_POST["name"]; + $param['startdate']=$t; + $param['duration']=$_POST["duration"]*60; + $param['lastmileanswer']=$_POST["lastmileanswer"]*60; + $param['lastmilescore']= $_POST["lastmilescore"]*60; + $param['penalty']=$_POST["penalty"]*60; + $param['maxfilesize']=$_POST["maxfilesize"]*1000; + $param['active']=0; + $param['mainsite']=$_POST["mainsite"]; + $param['mainsiteurl']=$_POST["mainsiteurl"]; + $param['unlockkey']=$_POST["unlockkey"]; + + if (isset($_FILES["keyfile"]) && $_FILES["keyfile"]["name"]!="") { + $type=myhtmlspecialchars($_FILES["keyfile"]["type"]); + $size=myhtmlspecialchars($_FILES["keyfile"]["size"]); + $name=myhtmlspecialchars($_FILES["keyfile"]["name"]); + $temp=myhtmlspecialchars($_FILES["keyfile"]["tmp_name"]); + if (!is_uploaded_file($temp)) { + IntrusionNotify("file upload problem."); + ForceLoad("../index.php"); + } + if (($ar = file($temp)) === false) { + IntrusionNotify("Unable to open the uploaded file."); + ForceLoad("user.php"); + } + $dd=0; + foreach($ar as $val => $key) { + $key=trim($key); + if($key=='') { + unset($ar[$val]); + continue; + } + if(substr($key,10,5) != '#####') { + MSGError('Invalid key in the file -- not importing any keys'); + $dd=0; + break; + } + if(isset($param['unlockkey']) && $param['unlockkey'] != '') { + $pass=decryptData(substr($key,15),$param['unlockkey'],'includekeys'); + if(substr($pass,0,5) != '#####') { + MSGError('Invalid key in the file -- not importing any keys'); + $dd=0; + break; + } + } + $ar[$val]=$key; + $dd++; + } + if($dd > 0) { + $param['keys']=implode(',',$ar); + MSGError(count($ar) . ' keys are being imported from the file'); + } + } + $param['atualizasites']=$at; + } + DBUpdateContest ($param); + if(strlen($param['unlockkey'])>1) DBGetFullProblemData($_SESSION["usertable"]["contestnumber"],true); + } + ForceLoad("contest.php"); +} +?> +
+ +
+ + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Contest number: + +
Name: + name="name" value="" size="50" maxlength="50" /> +
Start date: hh:mm + name="startdateh" value="" size="2" maxlength="2" /> + : + name="startdatemin" value="" size="2" maxlength="2" /> +     dd/mm/yyyy + name="startdated" value="" size="2" maxlength="2" /> + / + name="startdatem" value="" size="2" maxlength="2" /> + / + name="startdatey" value="" size="4" maxlength="4" /> +
Duration (in minutes): + value="" size="20" maxlength="20" /> +
Stop answering (in minutes): + value="" size="20" maxlength="20" /> +
Stop scoreboard (in minutes): + value="" size="20" maxlength="20" /> +
Penalty (in minutes): + value="" size="20" maxlength="20" /> +
Max file size allowed for teams (in KB): + + value="" size="20" maxlength="20" /> +
+ Your PHP config. allows at most: + +
+ +
Main site URL (IP/bocafolder): + " size="40" maxlength="200" /> +
Unlock password (only use it within a secure network): + + 1) echo "<= has been set"; ?> +
Keys (only use it within a secure network): + + 32) echo "<= has been set"; ?> +
Contest main site number: + value="" size="4" maxlength="4" /> +
Contest local site number: + value="" size="4" maxlength="4" /> +
+
+
+ + + + + + + + +
+
+ + + diff --git a/boca-1.5.0/src/admin/export.php b/boca-1.5.0/src/admin/export.php new file mode 100644 index 0000000..2682c94 --- /dev/null +++ b/boca-1.5.0/src/admin/export.php @@ -0,0 +1,121 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +//Change list +// 15/June/2011 by cassio@ime.usp.br: created based on import.php +require('header.php'); + +if(isset($_POST["Submit"]) || isset($_POST['Submit1'])) { + if ($_POST["confirmation"] == "confirm" && isset($_POST['localsite']) && is_numeric($_POST['localsite']) && + isset($_POST['challenge']) && isset($_POST['password'])) { + $localsite=$_POST['localsite']; + + header ("Content-transfer-encoding: binary\n"); + header ("Content-type: application/force-download"); +//header ("Content-type: application/octet-stream"); +//if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) +// header("Content-Disposition: filename=" .$_GET["filename"]); // For IE +//else + header ("Content-Disposition: attachment; filename=export.dat"); + ob_end_flush(); + $reduced = false; + if(isset($_POST["Submit"]) && $_POST['Submit']=="Reduced Export") { + $reduced = true; + } + + $fromsite = $localsite; + $siteinfo = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$fromsite); + $scores = explode(",", $siteinfo['siteglobalscore']); + if(count($scores)==0 || (count($scores)==1 && !is_numeric($scores[0]))) $scores=array($fromsite); + $judges = explode(",", $siteinfo['sitejudging']); + if(count($judges)==0 || (count($judges)==1 && !is_numeric($judges[0]))) $judges=array($fromsite); + $scores = array_unique(array_merge($scores,$judges)); + if(in_array(0,$scores)) $scores=null; + + $xml = generateXML($_SESSION["usertable"]["contestnumber"],$localsite,$scores,$reduced); + if(isset($_POST['nopassword']) && $_POST['nopassword']=='true') + echo $xml; + else + echo rawurlencode($_POST['challenge']) . " " . encryptData($xml,($_POST['password'])); + exit; + } +} +ob_end_flush(); +?> +
+ + + + +
+ + + +
+ + + + + + + + + + + +
Local site number: + +
Challenge string:
Encryption key: + +
+
+ +
+ + + +
+
+ + + diff --git a/boca-1.5.0/src/admin/files.php b/boca-1.5.0/src/admin/files.php new file mode 100644 index 0000000..16f0f2d --- /dev/null +++ b/boca-1.5.0/src/admin/files.php @@ -0,0 +1,78 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); + +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("$loc/index.php"); +if(($st = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null) + ForceLoad("$loc/index.php"); + +if (isset($_GET["delete"]) && is_numeric($_GET["delete"])) { + DBBkpDelete($_GET["delete"],$_GET["usersitenumber"],$_SESSION["usertable"]["contestnumber"], $_GET["usernumber"],$_SESSION["usertable"]["username"]); + ForceLoad("files.php"); +} +?> +
+ + + + + + + + + +\n"; + if(strpos($run[$i]["status"],"deleted")!==false) + echo " \n"; + else + echo " \n"; + + echo " \n"; + echo " \n"; + $if = rawurlencode($run[$i]["filename"]); + if($run[$i]["status"]=="active") { + echo "\n"; + echo "\n"; + echo " \n"; + +} +echo "
Bkp #TimeUser(Site)FileStatus
" . $run[$i]["number"] . "" . $run[$i]["number"] . "" . dateconvsimple($run[$i]["timestamp"]) . "" . $run[$i]["usernumber"] . " (" . $run[$i]["usersitenumber"] . ")"; + echo $run[$i]["filename"] . ""; + } else echo "" . $run[$i]["filename"]; + echo " (" . $run[$i]["size"] . " bytes)"; + echo "" . $run[$i]["status"] . "
"; +if (count($run) == 0) echo "
NO BACKUPS AVAILABLE
"; + +?> + + diff --git a/boca-1.5.0/src/admin/header.php b/boca-1.5.0/src/admin/header.php new file mode 100644 index 0000000..c308059 --- /dev/null +++ b/boca-1.5.0/src/admin/header.php @@ -0,0 +1,88 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 21/jul/2012 by cassio@ime.usp.br + +ob_start(); +header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Cache-Control: no-cache, must-revalidate"); +header ("Pragma: no-cache"); +header ("Content-Type: text/html; charset=utf-8"); +session_start(); +if(!isset($_POST['noflush'])) + ob_end_flush(); +//$loc = $_SESSION['loc']; +//$locr = $_SESSION['locr']; +$loc = $locr = ".."; +$runphp = "run.php"; +$runeditphp = "runedit.php"; + +require_once("$locr/globals.php"); +require_once("$locr/db.php"); + +if(!isset($_POST['noflush'])) { + require_once("$locr/version.php"); + echo "Admin's Page\n"; + echo "\n"; + echo "\n"; +} + +//echo ""; +if(!ValidSession()) { + InvalidSession("admin/index.php"); + ForceLoad("$loc/index.php"); +} +if($_SESSION["usertable"]["usertype"] != "admin") { + IntrusionNotify("admin/index.php"); + ForceLoad("$loc/index.php"); +} + +if(!isset($_POST['noflush'])) { + echo "\n"; + echo "\n"; + echo "
"; + echo "\"\""; + echo "BOCA"; + echo "\n"; + echo "Username: " . $_SESSION["usertable"]["userfullname"] . " (site=".$_SESSION["usertable"]["usersitenumber"].")
\n"; + list($clockstr,$clocktype)=siteclock(); + echo "
 ".$clockstr." 
\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; +//echo "
RunsScoreClarificationsUsersProblemsLanguagesAnswersExport

\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
TasksSiteContestLogsReportsBackupsOptionsLogout
\n"; +} +?> diff --git a/boca-1.5.0/src/admin/index.php b/boca-1.5.0/src/admin/index.php new file mode 100644 index 0000000..1b35a4c --- /dev/null +++ b/boca-1.5.0/src/admin/index.php @@ -0,0 +1,22 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require_once('header.php'); +?> + + diff --git a/boca-1.5.0/src/admin/language.php b/boca-1.5.0/src/admin/language.php new file mode 100644 index 0000000..b2a7481 --- /dev/null +++ b/boca-1.5.0/src/admin/language.php @@ -0,0 +1,124 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); + +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("../index.php"); + +if (isset($_GET["delete"]) && is_numeric($_GET["delete"])) { + $param["number"] = $_GET["delete"]; + DBDeleteLanguage ($_SESSION["usertable"]["contestnumber"],$param); + ForceLoad("language.php"); +} + +if (isset($_POST["Submit3"]) && isset($_POST["langnumber"]) && is_numeric($_POST["langnumber"]) && + isset($_POST["langname"]) && $_POST["langname"] != "") { + if ($_POST["confirmation"] == "confirm") { + $param = array(); + $param['number'] = $_POST['langnumber']; + $param['name'] = $_POST['langname']; + $param['extension'] = $_POST['langextension']; + DBNewLanguage ($_SESSION["usertable"]["contestnumber"], $param); + } + ForceLoad("language.php"); +} +?> +
+ + + + + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; +} +echo "
Language #NameExtension
" . + $lang[$i]["number"] . "" . $lang[$i]["name"] . "" . $lang[$i]["extension"] . "
"; +if (count($lang) == 0) echo "
NO LANGUAGES DEFINED
"; + +?> + +

Clicking on a language number will DELETE it.
+WARNING: deleting a language will remove EVERYTHING related to it.
+It is NOT recommended to change anything while the contest is running.
+
+ +
+ + +
+To insert/edit a language, enter the data below.
+Note that any changes will overwrite the already defined data.

+
+ + + + + + + + + + + + + +
Number: + +
Name: + +
Extension: + +
+
+
+ + +
+
+ + + diff --git a/boca-1.5.0/src/admin/log.php b/boca-1.5.0/src/admin/log.php new file mode 100644 index 0000000..ff915ea --- /dev/null +++ b/boca-1.5.0/src/admin/log.php @@ -0,0 +1,76 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); + +if(isset($_GET["order"])) +$order = myhtmlspecialchars($_GET["order"]); +else $order=''; +if(isset($_GET["user"])) +$user = myhtmlspecialchars($_GET["user"]); +else $user=''; +if(isset($_GET["site"])) +$site = myhtmlspecialchars($_GET["site"]); +else $site=''; +if(isset($_GET["type"])) +$type = myhtmlspecialchars($_GET["type"]); +else $type=''; +if(isset($_GET["ip"])) +$ip = myhtmlspecialchars($_GET["ip"]); +else $ip=''; +$get="&order=${order}&user=${user}&site=${site}&type=${type}&ip=${ip}"; +if (isset($_GET["limit"]) && $_GET["limit"]>0) + $limit = myhtmlspecialchars($_GET["limit"]); +else $limit = 50; +$log = DBGetLogs($order, $_SESSION["usertable"]["contestnumber"], + $site, $user, $type, $ip, $limit); +?> +
+ + + + + + + + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; +} +echo "
SiteUser #IPTypeDateDescriptionStatus
" . $log[$i]["site"] . "" . $log[$i]["user"] . "" . $log[$i]["ip"] . "" . $log[$i]["type"] . "" . dateconv($log[$i]["date"]) . "" . $log[$i]["data"] . "" . $log[$i]["status"] . "
\n"; + +?> +
+
+50 +200 +1000 +no limit + + diff --git a/boca-1.5.0/src/admin/option.php b/boca-1.5.0/src/admin/option.php new file mode 100644 index 0000000..81e5879 --- /dev/null +++ b/boca-1.5.0/src/admin/option.php @@ -0,0 +1,21 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); +require('../optionlower.php'); +?> diff --git a/boca-1.5.0/src/admin/problem.php b/boca-1.5.0/src/admin/problem.php new file mode 100644 index 0000000..d55ff63 --- /dev/null +++ b/boca-1.5.0/src/admin/problem.php @@ -0,0 +1,262 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 21/jul/2012 by cassio@ime.usp.br +require('header.php'); +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("../index.php"); + +if (isset($_GET["delete"]) && is_numeric($_GET["delete"]) && isset($_GET["input"])) { + $param = array(); + $param['number']=$_GET["delete"]; + $param['inputfilename']=$_GET["input"]; + if(!DBDeleteProblem ($_SESSION["usertable"]["contestnumber"], $param)) { + MSGError('Error deleting problem'); + LogError('Error deleting problem'); + } + ForceLoad("problem.php"); +} + +if (isset($_POST["Submit3"]) && isset($_POST["problemnumber"]) && is_numeric($_POST["problemnumber"]) && + isset($_POST["problemname"]) && $_POST["problemname"] != "") { + if ($_POST["confirmation"] == "confirm") { + if ($_FILES["probleminput"]["name"] != "") { + $type=myhtmlspecialchars($_FILES["probleminput"]["type"]); + $size=myhtmlspecialchars($_FILES["probleminput"]["size"]); + $name=myhtmlspecialchars($_FILES["probleminput"]["name"]); + $temp=myhtmlspecialchars($_FILES["probleminput"]["tmp_name"]); + if (!is_uploaded_file($temp)) { + IntrusionNotify("file upload problem."); + ForceLoad("../index.php"); + } + } else $name = ""; + + $param = array(); + $param['number'] = $_POST["problemnumber"]; + $param['name'] = $_POST["problemname"]; + $param['inputfilename'] = $name; + $param['inputfilepath'] = $temp; + $param['fake'] = 'f'; + $param['colorname'] = $_POST["colorname"]; + $param['color'] = $_POST["color"]; + if($param['color']=='') $param['color']=-1; + DBNewProblem ($_SESSION["usertable"]["contestnumber"], $param); + } + ForceLoad("problem.php"); +} +?> +
+ + + + + + + + + + + + +\n"; + if($prob[$i]["fake"]!='t') { + echo " \n"; + } else { + echo " \n"; + } + echo " \n"; + echo " \n"; + echo " \n"; + if (isset($prob[$i]["descoid"]) && $prob[$i]["descoid"] != null) { + echo " \n"; + } + else + echo " \n"; + if ($prob[$i]["inputoid"] != null) { + $tx = $prob[$i]["inputhash"]; + echo " \n"; + } + else + echo " \n"; +/* + if ($prob[$i]["soloid"] != null) { + $tx = $prob[$i]["solhash"]; + echo " \n"; + } + else + echo " \n"; + if ($prob[$i]["timelimit"]!="") + echo " \n"; + else + echo " \n"; +*/ + if ($prob[$i]["color"]!="") { + echo " \n"; + } else + echo " \n"; + echo " \n"; +} +echo "
Problem #Short NameFullnameBasenameDescfilePackage fileColor
" . $prob[$i]["number"] . "" . $prob[$i]["number"] . " (fake)" . $prob[$i]["name"] . "" . $prob[$i]["fullname"] . " " . $prob[$i]["basefilename"] . " " . + basename($prob[$i]["descfilename"]) . " " . + $prob[$i]["inputfilename"] . " " . + "\"$tx\"" . + " " . + $prob[$i]["solfilename"] . " ". + "\"$tx\"" . + " " . $prob[$i]["timelimit"] . " " . $prob[$i]["colorname"] . + "\"".$prob[$i]["colorname"]."\" 
"; +if (count($prob) == 0) echo "
NO PROBLEMS DEFINED
"; + +?> + +

Clicking on a problem number will delete it.
+WARNING: deleting a problem will remove EVERYTHING related to it.
+It is NOT recommended to change anything while the contest is running.
+To import a problem, fill in the following fields.
+To replace the data of a problem, proceed as if it did not exist (data will be replaced without removing it).
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
Number: + +
Short Name (usually a letter): + +
Problem package (ZIP): + +
Color name: + +
Color (RGB HTML format): + +
+
+
+ + +
+
+ + + diff --git a/boca-1.5.0/src/admin/report.php b/boca-1.5.0/src/admin/report.php new file mode 100644 index 0000000..bb1fc34 --- /dev/null +++ b/boca-1.5.0/src/admin/report.php @@ -0,0 +1,89 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require 'header.php'; + +if (isset($_GET)) { +} +?> +

+
+Logs

\n"; + echo " Scoreboard
\n"; + echo " Detailed Scoreboard
\n"; + echo " Interactive Scoreboard
\n"; + echo " Delayed Scoreboard
\n"; + echo " Run List
\n"; + echo " Clarification List
\n"; + echo " Task List
\n"; + echo " Site Start/Stop Logs
\n"; + echo " ICPC File
\n"; + + echo " Statistics
\n"; + +/* + echo "

\n"; + echo "Statistics

\n"; + + echo " Problems
\n"; + echo " Answers
\n"; + echo " Users
\n"; + echo " Languages
\n"; + echo " Runs
\n"; + echo " Clarifications
\n"; +*/ +?> +
+ + + + diff --git a/boca-1.5.0/src/admin/report/clar.php b/boca-1.5.0/src/admin/report/clar.php new file mode 100644 index 0000000..66bd4cd --- /dev/null +++ b/boca-1.5.0/src/admin/report/clar.php @@ -0,0 +1,82 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require('header.php'); +?> +
+

Clarification List

+ + + + + + + + + + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + + echo " \n"; + if ($clar[$i]["judge"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $clar[$i]["judgesite"], $clar[$i]["judge"]); + echo " \n"; + } + else + echo " \n"; + + if ($clar[$i]["question"] == "") $clar[$i]["question"] = " "; + + echo " \n"; + if (trim($clar[$i]["answer"]) == "") $clar[$i]["answer"] = "Not answered yet"; + echo " \n"; + + echo " \n"; +} + +echo "
#SiteUserTimeProblemStatusJudge (Site)QuestionAnswer
" . $clar[$i]["number"] . "" . $clar[$i]["site"] . "" . $clar[$i]["user"] . "" . dateconvminutes($clar[$i]["timestamp"]) . "" . $clar[$i]["problem"] . "" . $clar[$i]["status"] . "" . $u["username"] . " (" . $clar[$i]["judgesite"] . ") "; +// echo "
" . $clar[$i]["question"] . "
"; +// echo $clar[$i]["question"]; + echo " \n"; + echo "
"; +// echo "
" . $clar[$i]["answer"] . "
"; +// echo $clar[$i]["answer"]; + echo " \n"; + echo "
"; +if (count($clar) == 0) echo "
NO CLARIFICATIONS AVAILABLE
"; + +include("$locr/footnote.php"); +?> diff --git a/boca-1.5.0/src/admin/report/header.php b/boca-1.5.0/src/admin/report/header.php new file mode 100644 index 0000000..1d191de --- /dev/null +++ b/boca-1.5.0/src/admin/report/header.php @@ -0,0 +1,65 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +ob_start(); +header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Cache-Control: no-cache, must-revalidate"); +header ("Pragma: no-cache"); +header ("Content-Type: text/html; charset=utf-8"); +session_start(); +ob_end_flush(); +//$locr = $_SESSION['locr']; +//$loc = $_SESSION['loc']; +$loc = $locr = "../.."; + +require $locr.'/version.php'; +require_once($locr . "/globals.php"); +if(!ValidSession()) { + InvalidSession($_SERVER['PHP_SELF']); + ForceLoad($loc."/index.php"); +} +if($_SESSION["usertable"]["usertype"] != "admin") { + IntrusionNotify($_SERVER['PHP_SELF']); + ForceLoad($loc."/index.php"); +} + +require_once($locr."/db.php"); +require_once($locr."/freport.php"); + +echo "Report Page\n"; +echo "\n"; + +echo "\n"; + +$contest=$_SESSION["usertable"]["contestnumber"]; +if(($ct = DBContestInfo($contest)) == null) + ForceLoad($loc."/index.php"); +$site=$_SESSION["usertable"]["usersitenumber"]; +if(($st = DBSiteInfo($contest,$site)) == null) + ForceLoad($loc."/index.php"); + +echo "\n"; +echo "\n"; +echo "
"; +echo "\"\""; +echo "BOCA"; +echo "\n"; +echo $ct["contestname"] . " - " . $st["sitename"] . "
\n"; +?> diff --git a/boca-1.5.0/src/admin/report/icpc.php b/boca-1.5.0/src/admin/report/icpc.php new file mode 100644 index 0000000..1bf2b86 --- /dev/null +++ b/boca-1.5.0/src/admin/report/icpc.php @@ -0,0 +1,46 @@ +. +//////////////////////////////////////////////////////////////////////////////// +//Last updated 10/jul/2012 by cassio@ime.usp.br + +require('header.php'); + +$score = DBScore($_SESSION["usertable"]["contestnumber"], false, -1, $st["siteglobalscore"]); + +echo "

ICPC Output

"; +echo "
";
+$n=0;
+$class=1;
+while(list($e, $c) = each($score)) {
+	if(isset($score[$e]["site"]) && isset($score[$e]["user"])) {
+		$r = DBUserInfo($_SESSION["usertable"]["contestnumber"], 
+						$score[$e]["site"], $score[$e]["user"]);
+		echo $r["usericpcid"] . ",";
+		echo $class++ . ",";
+		echo $score[$e]["totalcount"] . ",";
+		echo $score[$e]["totaltime"] . ",";
+		
+		if($score[$e]["first"])
+			echo $score[$e]["first"] . "\n";
+		else echo "0\n";
+		$n++;
+	}
+}
+echo "
"; +?> + + diff --git a/boca-1.5.0/src/admin/report/linechart.php b/boca-1.5.0/src/admin/report/linechart.php new file mode 100644 index 0000000..fa47b17 --- /dev/null +++ b/boca-1.5.0/src/admin/report/linechart.php @@ -0,0 +1,45 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +ob_start(); +header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Cache-Control: no-cache, must-revalidate"); +header ("Pragma: no-cache"); +session_start(); +$locr = $_SESSION['locr']; +$loc = $_SESSION['loc']; + +require_once($locr . "/libchart/libchart.php"); +header ("Content-type: image/png"); +ob_end_flush(); + +$v = explode(chr(1),rawurldecode($_GET['dados']),100); + +$chart = new VerticalChart(1000, 300); + +$chart->setUpperBound($v[1]); + +for($i=2;$iaddPoint(new Point($v[$i], $v[$i+1])); + +$chart->setTitle($v[0]); +$chart->setLogo($locr. "/images/poweredbyboca.png"); +$chart->render(); +?> diff --git a/boca-1.5.0/src/admin/report/piechart.php b/boca-1.5.0/src/admin/report/piechart.php new file mode 100644 index 0000000..18d8d04 --- /dev/null +++ b/boca-1.5.0/src/admin/report/piechart.php @@ -0,0 +1,60 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +ob_start(); +header ("Expires: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); +header ("Cache-Control: no-cache, must-revalidate"); +header ("Pragma: no-cache"); +session_start(); +$locr = $_SESSION['locr']; +$loc = $_SESSION['loc']; + +require_once($locr . "/libchart/libchart.php"); +header("Content-type: image/png"); +ob_end_flush(); + +$v = explode(chr(1),rawurldecode($_GET['dados']),100); +$cor = null; +if(isset($_GET['color'])) + $cor = explode("-",rawurldecode($_GET['color']),100); + +if(count($v)/2 > 8) + $chart = new PieChart(450, 300); +else + $chart = new PieChart(400, 250); + +if(isset($_GET['order'])) $chart->order=true; + +for($i=1;$iaddPoint(new Point($v[$i], $v[$i+1], $color)); +} + +$chart->setTitle($v[0]); +$chart->setLogo($locr. "/images/poweredbyboca.png"); +$chart->render(); + +?> diff --git a/boca-1.5.0/src/admin/report/run.php b/boca-1.5.0/src/admin/report/run.php new file mode 100644 index 0000000..422200d --- /dev/null +++ b/boca-1.5.0/src/admin/report/run.php @@ -0,0 +1,93 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require('header.php'); +?> +
+

Run List

+ + + + + + + + + + + + + +\n"; + echo " \n"; + echo " \n"; + if ($run[$i]["user"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["site"], $run[$i]["user"]); + echo " \n"; + } + echo " \n"; + + if($run[$i]["status"] == "deleted") { + echo "\n"; + echo "\n"; + echo "\n"; + echo " \n"; + if ($run[$i]["judge"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["judgesite"], $run[$i]["judge"]); + echo " \n"; + } else + echo " \n"; + echo "\n"; + echo ""; + continue; + } + + echo " \n"; + echo " \n"; + echo " \n"; + + echo " \n"; + if ($run[$i]["judge"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["judgesite"], $run[$i]["judge"]); + echo " \n"; + } else + echo " \n"; + + if ($run[$i]["answer"] == "") $run[$i]["answer"] = " "; + echo " \n"; + echo " \n"; +} + +echo "
#SiteUserTimeProblemLanguageFilenameStatusJudge (Site)Answer
" . $run[$i]["number"] . "" . $run[$i]["site"] . "" . $u["userfullname"] . "" . dateconvminutes($run[$i]["timestamp"]) . "   " . $run[$i]["status"] . "" . $u["username"] . " (" . $run[$i]["judgesite"] . ")  
" . $run[$i]["problem"]; + if($run[$i]["colorname"] != "") + echo "(".$run[$i]["colorname"].")"; + echo "" . $run[$i]["language"] . "" . $run[$i]["filename"] . "" . $run[$i]["status"] . "" . $u["username"] . " (" . $run[$i]["judgesite"] . ") " . $run[$i]["answer"] . "
"; +if (count($run) == 0) echo "
NO RUNS AVAILABLE
"; + +include("$locr/footnote.php"); +?> diff --git a/boca-1.5.0/src/admin/report/score.php b/boca-1.5.0/src/admin/report/score.php new file mode 100644 index 0000000..0196b3a --- /dev/null +++ b/boca-1.5.0/src/admin/report/score.php @@ -0,0 +1,43 @@ +. +//////////////////////////////////////////////////////////////////////////////// +//Last updated 10/jul/2012 by cassio@ime.usp.br + +require('header.php'); + +$final = true; +$s = $st; +$des = true; +$detail=true; +if($_GET["p"] == "0") $ver = false; +else if($_GET["p"] == "2") $detail=false; +else { + $ver = true; + $des = false; +} +if(isset($_GET["hor"])) $hor = $_GET["hor"]; +else $hor = -1; + +if ($s["currenttime"] >= $s["sitelastmilescore"] && $ver) { + $togo = (int) (($s['siteduration'] - $s["sitelastmilescore"])/60); + echo"

Scoreboard (as of $togo minutes to go)

\n"; +} else + echo"

Final Scoreboard

\n"; + +require("$locr/scoretable.php"); +include("$locr/footnote.php"); +?> diff --git a/boca-1.5.0/src/admin/report/site.php b/boca-1.5.0/src/admin/report/site.php new file mode 100644 index 0000000..001d48e --- /dev/null +++ b/boca-1.5.0/src/admin/report/site.php @@ -0,0 +1,128 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require('header.php'); + +$sitetime = DBAllSiteTime($_SESSION["usertable"]["contestnumber"], $site); +?> +
+

Site Start/Stop Logs

+ + +Start date (contest=" . dateconv($ct["conteststartdate"]) . "):"; +echo "\n"; +echo ""; +if (!$st["siterunning"]) { + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if($st["siteautoended"]) { + $w = (int) ($st["siteduration"]/60); + $ww = $st["siteduration"] % 60; + } + else { + $w = (int) ($st["currenttime"]/60); + $ww = $st["currenttime"] % 60; + } + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; +} +echo "\n"; +echo " "; +?> + + + +Stop answering (contest="; +echo $ct["contestlastmileanswer"]/60; +echo "):"; +?> + + + +Stop scoreboard (contest="; +echo $ct["contestlastmilescore"]/60; +echo "):"; +?> + + + + + + + + + + + + + + +
" . dateconv($st["sitestartdate"]) . "
Finished at:" . dateconv($st["siteendeddate"]); + if($st["siteautoended"]) echo " (auto)"; + echo "
Real duration:$w minutes"; + if($ww != 0) echo " plus $ww seconds"; + echo "
Planned Duration (contest="; +echo $ct["contestduration"]/60; +echo "): + +
+ +
+ +
Number of Clars: +
Number of Runs: +
Number of Tasks: +
+
+
+
+ + + + +"; + echo ""; + echo ""; + echo ""; +} +?> +
Starting atEnding at
"; + echo dateconv($sitetime[$i]["sitestartdate"]); + echo ""; + if($sitetime[$i]["siteenddate"] == 0) { + if($st["siterunning"]) + echo "still open"; + else echo "auto-ended"; + } + else + echo dateconv($sitetime[$i]["siteenddate"]); + echo "
+
+ + diff --git a/boca-1.5.0/src/admin/report/stat.php b/boca-1.5.0/src/admin/report/stat.php new file mode 100644 index 0000000..7d99cb3 --- /dev/null +++ b/boca-1.5.0/src/admin/report/stat.php @@ -0,0 +1,337 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br + +require('header.php'); + +$d = DBRunReport($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"]); + +echo "

Statistics

\n"; +//---------------------------------------------------------- +echo "

Runs by Problem

\n"; +echo "
\n"; +echo ""; + +echo ""; +echo "\n"; + +$str="All Runs by Problem"; +$str2="Accepted Runs by Problem"; +reset($d['problem']); +$cor = ""; +while (list($keya, $val) = each($d['problem'])) { + $val = $d['problemyes'][$keya]; if($val=="") $val=0; + $str2 .= chr(1) . $keya . "(" . $val . ")" . chr(1) . $val; + $cor .= "-" . $d['color'][$keya]; +} +$cor = substr($cor,1); + +reset($d['problem']); +while (list($keya, $val) = each($d['problem'])) { + $str .= chr(1) . $keya . "(" . $val . ")" . chr(1) . $val; + echo ""; + echo ""; + if(isset($d['problemyes'][$keya])) { + echo ""; + } + else + echo ""; + echo ""; +} +echo "
ProblemsTotalAccepted
$keya "; + echo "\"balloon\"\n"; + echo "$val".$d['problemyes'][$keya]; + if($val != 0) { + $p = round(100*$d['problemyes'][$keya] / $val); + echo " (".$p."%)"; + } + echo "0 (0%)
"; + +echo "
"; +echo "\n"; +echo "
\"\"\"\"
\n"; + +//---------------------------------------------------------- +echo "

Runs by Problem and Answer

\n"; +echo "
\n"; +echo ""; +reset($d['answer']); +while (list($key, $val) = each($d['answer'])) + echo ""; +echo "\n"; + +reset($d['problem']); +while (list($keya, $vala) = each($d['problem'])) { + echo ""; + reset($d['answer']); + while (list($key, $val) = each($d['answer'])) { + if(!isset($d['pa'][$keya][$key])) + echo ""; + else { + $p = round(100*$d['pa'][$keya][$key] / $vala); + echo ""; + } + } + echo ""; + echo ""; +} +echo "
Problems x Answers$keyTotal
$keya "; + echo "\"balloon\"\n"; + echo "0".$d['pa'][$keya][$key]." (".$p."%)$vala
"; + +//---------------------------------------------------------- +echo "

Runs by Problem and Language

\n"; +echo "
\n"; +echo ""; +reset($d['language']); +while (list($key, $val) = each($d['language'])) + echo ""; +echo "\n"; + +reset($d['problem']); +while (list($keya, $vala) = each($d['problem'])) { + echo ""; + reset($d['language']); + while (list($key, $val) = each($d['language'])) { + if(!isset($d['pl'][$keya][$key])) + echo ""; + else { + $p = round(100*$d['pl'][$keya][$key] / $vala); + echo ""; + } + } + echo ""; + echo ""; +} +echo "
Problems x Languages$keyTotal
$keya "; + echo "\"balloon\"\n"; + echo "0".$d['pl'][$keya][$key]." (".$p."%)$vala
"; + +//---------------------------------------------------------- +echo "
"; +echo "
"; +echo "

Runs by Language

\n"; +echo "
\n"; +echo ""; + +echo ""; +echo "\n"; + +$str="All Runs by Language"; +$str2="Accepted Runs by Language"; +reset($d['language']); +while (list($keya, $val) = each($d['language'])) { + $val = $d['languageyes'][$keya]; if($val=="") $val=0; + $str2 .= chr(1) . $keya . "(" . $val . ")" . chr(1) . $val; +} + +reset($d['language']); +while (list($keya, $val) = each($d['language'])) { + $str .= chr(1) . $keya . "(" . $val . ")" . chr(1) . $val; + echo ""; + echo ""; + if(isset($d['languageyes'][$keya])) { + $p = round(100*$d['languageyes'][$keya] / $val); + echo ""; + } + else + echo ""; + echo ""; +} +echo "
LanguagesTotalAccepted
$keya$val".$d['languageyes'][$keya]." (".$p."%)0 (0%)
"; + +echo "
"; +echo "\n"; +echo "
\"\"\"\"
\n"; + +//---------------------------------------------------------- +echo "

Runs by Language and Answer

\n"; +echo "
\n"; +echo ""; +reset($d['answer']); +while (list($key, $val) = each($d['answer'])) + echo ""; +echo "\n"; + +reset($d['language']); +while (list($keya, $vala) = each($d['language'])) { + echo ""; + reset($d['answer']); + while (list($key, $val) = each($d['answer'])) { + if(!isset($d['la'][$keya][$key])) + echo ""; + else { + $p = round(100*$d['la'][$keya][$key] / $vala); + echo ""; + } + } + echo ""; + echo ""; +} +echo "
Languages x Answers$keyTotal
$keya0".$d['la'][$keya][$key]." (".$p."%)$vala
"; + +//---------------------------------------------------------- +echo "
"; +echo "
"; +echo "

Runs by Answer

\n"; + +echo "
"; +echo ""; +echo "
"; + +echo "
\n"; +echo ""; + +echo ""; +echo "\n"; + +$str="All Runs by Answer"; +reset($d['answer']); +while (list($keya, $val) = each($d['answer'])) { + $str .= chr(1) . $keya . "(" . $val . ")" . chr(1) . $val; + echo ""; + echo ""; + echo ""; +} +echo "
AnswersAnswers
$keya$val
"; + +echo "
\"\"
\n"; + +//---------------------------------------------------------- +echo "
"; +echo "
"; +echo "

Runs by User and Problem

\n"; +echo "
\n"; +echo ""; +reset($d['problem']); +while (list($key, $val) = each($d['problem'])) { + echo ""; +} +echo "\n"; + +reset($d['username']); +while (list($keya, $vala) = each($d['username'])) { + $keya = $d['username'][$keya]; + $vala = $d['user'][$keya]; + echo ""; + reset($d['problem']); + while (list($key, $val) = each($d['problem'])) { + if(!isset($d['up'][$keya][$key])) + echo ""; + else { + $q = $d['up'][$keya][$key]; + $color = "ff5555"; + if($q < 0) { + $q = - $q; + $color = "22ee22"; + } + echo ""; + } + } + if($vala != "") + echo ""; + else + echo ""; + if(isset($d['useryes'][$keya])) { + if($vala != 0) { + $p = round(100*$d['useryes'][$keya] / $vala); + echo ""; + } else + echo ""; + } else + echo ""; + + echo ""; +} +echo "
Users x Problems$key "; + echo "\"balloon\"\n"; + echo "TotalAccepted
".$d['userfull'][$keya]."0".$q; + if($vala != 0) { + $p = round(100*$q / $vala); + echo " (".$p."%)"; + } + echo "$vala0".$d['useryes'][$keya]." (".$p."%)".$d['useryes'][$keya]."0
"; + +//---------------------------------------------------------- +echo "
"; +echo "
"; +echo "

Runs by Time Period

\n"; + +$vezes = 30; +$passo = $st['siteduration']/$vezes; +$atual = 0; +$pos = 0; +$res = array(); +$m = 0; +sort($d['timestamp']); +reset($d['timestamp']); +while (list($keya, $val) = each($d['timestamp'])) { + while($atual+$passo < $val) { + $atual += $passo; + $pos++; + } + $res[$pos]++; + if($res[$pos] > $m) $m=$res[$pos]; +} + +$str="Runs by Time Period" . chr(1) . $m; +$atual=0; +for($pos=0; $pos<$vezes; $pos++) { + if($res[$pos]=="") $res[$pos] = 0; + $q = (int) ($atual/60); + $atual += $passo; + $qq = (int) ($atual/60); + $str .= chr(1) . $q . "-" .$qq . chr(1) . $res[$pos]; +} + +echo "
\"\"
\n"; + +//------------------------------------------------ +$vezes = 30; +$passo = $st['siteduration']/$vezes; +$atual = 0; +$pos = 0; +$res = array(); +sort($d['timestampyes']); +reset($d['timestampyes']); +while (list($keya, $val) = each($d['timestampyes'])) { + while($atual+$passo < $val) { + $atual += $passo; + $pos++; + } + $res[$pos]++; +} + +$str="Accepted Runs by Time Period" . chr(1) . $m; +$atual=0; +for($pos=0; $pos<$vezes; $pos++) { + if($res[$pos]=="") $res[$pos] = 0; + $q = (int) ($atual/60); + $atual += $passo; + $qq = (int) ($atual/60); + $str .= chr(1) . $q . "-" .$qq . chr(1) . $res[$pos]; +} + +echo "
\"\"
\n"; + +include("$locr/footnote.php"); +?> diff --git a/boca-1.5.0/src/admin/report/task.php b/boca-1.5.0/src/admin/report/task.php new file mode 100644 index 0000000..59ca0e2 --- /dev/null +++ b/boca-1.5.0/src/admin/report/task.php @@ -0,0 +1,68 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); + +?> +
+

Task List

+ + + + + + + + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if ($task[$i]["oid"] != null) { + echo " \n"; + + } + else + echo " \n"; + if($st != "opentask") + echo " \n"; + else + echo " \n"; + + echo " \n"; +} +echo "
#TimeUser / SiteDescriptionFileStaff / SiteStatus
" . $task[$i]["number"] . "" . dateconvminutes($task[$i]["timestamp"]) . "".$task[$i]["username"]." / ".$task[$i]["site"]."" . $task[$i]["description"] . "" . $task[$i]["filename"]; + echo " ". $task[$i]["staffname"] . "(" . $task[$i]["staff"] .") / ".$task[$i]["staffsite"]." $st
"; +if (count($task) == 0) echo "
NO TASKS FOUND
"; + +include("$locr/footnote.php"); +?> diff --git a/boca-1.5.0/src/admin/run.php b/boca-1.5.0/src/admin/run.php new file mode 100644 index 0000000..4ec0eca --- /dev/null +++ b/boca-1.5.0/src/admin/run.php @@ -0,0 +1,187 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require 'header.php'; +if(isset($_GET["order"]) && $_GET["order"] != "") { +$order = myhtmlspecialchars($_GET["order"]); + $_SESSION["runline"] = $order; +} else { + if(isset($_SESSION["runline"])) + $order = $_SESSION["runline"]; +else + $order = ''; +} +?> + +
+ +
+ + + + + + + + + + + + + + + + + 0) { + MSGError($nrenew . " runs renewed for autojudging."); + ForceLoad($runphp); + } + if($nreopen > 0) { + MSGError($nreopen . " runs reopened."); + ForceLoad($runphp); + } +} + + +for ($i=0; $i\n"; + else echo "\n"; + echo " \n"; + + echo " \n"; + if($runphp == "run.php") { + if ($run[$i]["user"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["site"], $run[$i]["user"]); + echo " \n"; + } + } + echo " \n"; + echo " \n"; + echo " \n"; +// echo " \n"; + if ($run[$i]["judge"] == $_SESSION["usertable"]["usernumber"] && + $run[$i]["judgesite"] == $_SESSION["usertable"]["usersitenumber"] && $run[$i]["status"] == "judging") + $color="ff7777"; + else if ($run[$i]["status"]== "judged+" && $run[$i]["judge"]=="") $color="ffff00"; + else if ($run[$i]["status"]== "judged") $color="bbbbff"; + else if ($run[$i]["status"] == "judging" || $run[$i]["status"]== "judged+") $color="77ff77"; + else if ($run[$i]["status"] == "openrun") $color="ffff88"; + else $color="ffffff"; + + echo " \n"; + if ($run[$i]["judge"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["judgesite"], $run[$i]["judge"]); + echo " \n"; + + if ($run[$i]["autoend"] != "") { + $color="bbbbff"; + if ($run[$i]["autoanswer"]=="") $color="ff7777"; + } + else if ($run[$i]["autobegin"]=="") $color="ffff88"; + else $color="77ff77"; + echo "\n"; + + if ($run[$i]["answer"] == "") { + echo " \n"; + } else { + echo " \n"; + } + echo " \n"; +} + +echo "
Run #SiteUserTimeProblemLanguageStatusJudge (Site)AJAnswer
"; + } + else { + echo "
"; + } + echo ""; + echo " " . $run[$i]["number"] . "" . $run[$i]["site"] . "" . $u["username"] . "" . dateconvminutes($run[$i]["timestamp"]) . "" . $run[$i]["problem"] . "" . $run[$i]["language"] . "" . $run[$i]["filename"] . "" . $run[$i]["status"] . "" . $u["username"] . " (" . $run[$i]["judgesite"] . ")"; + } else + echo "  "; + + if ($run[$i]["judge1"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["judgesite1"], $run[$i]["judge1"]); + echo " [" . $u["username"] . " (" . $run[$i]["judgesite1"] . ")]"; + } + if ($run[$i]["judge2"] != "") { + $u = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $run[$i]["judgesite2"], $run[$i]["judge2"]); + echo " [" . $u["username"] . " (" . $run[$i]["judgesite2"] . ")]"; + } + + echo "   " . $run[$i]["answer"]; + if($run[$i]['yes']=='t') { + echo " \"".$run[$i]["colorname"]."\""; + } + echo "
"; +if (count($run) == 0) echo "
NO RUNS AVAILABLE
"; +else { +?> +
+ +
+Click on the number of a run to edit it or select them with
the checkboxes and use the buttons to work on multiple runs:


+ + +

+
+
+ + + diff --git a/boca-1.5.0/src/admin/runedit.php b/boca-1.5.0/src/admin/runedit.php new file mode 100644 index 0000000..c0090f9 --- /dev/null +++ b/boca-1.5.0/src/admin/runedit.php @@ -0,0 +1,331 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require 'header.php'; + +if (isset($_POST["cancel"]) && $_POST["cancel"]=="Cancel editing") + ForceLoad($runphp); + +if (isset($_POST["giveup"]) && $_POST["giveup"]=="Renew" && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["number"]) && + is_numeric($_POST["sitenumber"])) { + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); + if (DBGiveUpRunAutojudging($_SESSION["usertable"]["contestnumber"], $sitenumber, $number)) + MSGError("Run renewed."); + ForceLoad($runphp); +} + +if (isset($_POST["delete"]) && $_POST["delete"]=="Delete" && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["number"]) && + is_numeric($_POST["sitenumber"])) { + if ($_POST["confirmation"]=="confirm") { + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); + + if (DBRunDelete($number, $sitenumber, $_SESSION["usertable"]["contestnumber"], + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"])) + MSGError("Run deleted."); + } + ForceLoad($runphp); +} + +if (isset($_POST["answer"]) && isset($_POST["open"]) && $_POST["open"]=="Open run for rejudging" && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["number"]) && + is_numeric($_POST["sitenumber"])) { + + if ($_POST["confirmation"] == "confirm") { + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); + + DBGiveUpRunAutojudging($_SESSION["usertable"]["contestnumber"], $sitenumber, $number); + if (DBChiefRunGiveUp($_POST["number"], $_POST["sitenumber"], $_SESSION["usertable"]["contestnumber"])) + MSGError("Run returned."); + ForceLoad($runphp); + } +} + +if (isset($_POST["answer"]) && isset($_POST["Submit"]) && $_POST["Submit"]=="Judge" && is_numeric($_POST["answer"]) && + isset($_POST["sitenumber"]) && isset($_POST["number"]) && is_numeric($_POST["sitenumber"]) && + is_numeric($_POST["number"])) { // && isset($_POST["notifyuser"]) && isset($_POST["updatescore"])) { + + if ($_POST["confirmation"] == "confirm") { + $answer = myhtmlspecialchars($_POST["answer"]); + $sitenumber = myhtmlspecialchars($_POST["sitenumber"]); + $number = myhtmlspecialchars($_POST["number"]); +// $notuser = myhtmlspecialchars($_POST["notifyuser"]); +// $updscore = myhtmlspecialchars($_POST["updatescore"]); + + DBChiefUpdateRun($_SESSION["usertable"]["contestnumber"], + $_SESSION["usertable"]["usersitenumber"], + $_SESSION["usertable"]["usernumber"], + $sitenumber, $number, $answer); //, $notuser, updscore); + } + ForceLoad($runphp); +} + +if (!isset($_GET["runnumber"]) || !isset($_GET["runsitenumber"]) || + !is_numeric($_GET["runnumber"]) || !is_numeric($_GET["runsitenumber"])) { + IntrusionNotify("tried to open the admin/runedit.php with wrong parameters."); + ForceLoad($runphp); +} + +// ??? +$runsitenumber = myhtmlspecialchars($_GET["runsitenumber"]); +$runnumber = myhtmlspecialchars($_GET["runnumber"]); + +if (($a = DBChiefGetRunToAnswer($runnumber, $runsitenumber, + $_SESSION["usertable"]["contestnumber"])) === false) { + MSGError("Another judge got it first."); + ForceLoad($runphp); +} + +$b = DBGetProblemData($_SESSION["usertable"]["contestnumber"], $a["problemnumber"]); +$c = DBGetLanguageData($_SESSION["usertable"]["contestnumber"], $a["langnumber"], $a["problemnumber"]); +?> +

Use the following fields to judge the run: +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Site: + " /> + +
Number: + " /> + +
Time: + +
Problem : +Problem package:"; + echo $b[$i]["inputfilename"] . ""; + echo " view  "; +/* + echo "Sol:"; + echo $b[$i]["solfilename"] . ""; + echo " view"; +*/ +} +?> +  
Language : +Compilation Line: ".$c["compilation"]. "
"; + if (isset($c["execution"]) && $c["execution"]!="") echo "Execution Line: ".$c["execution"]. "
"; + if (isset($c["showoutput"]) && $c["showoutput"]!="") echo "Showing Output Line: ". $c["showoutput"]. "
"; + + if (isset($c["scriptname"]) && $c["scriptname"]!="") { + echo "Script for judging: "; + echo $c["scriptname"] . ""; + } +?> +  
Team's code: +" . $a["sourcename"] . "\n"; +echo "view\n"; +?> +
Answer: + "; +// if(!$isfak) { + if($a["judgesite"] != "" && $a["judge"] != "") { + $uu = DBUserInfo ($_SESSION["usertable"]["contestnumber"], $a["judgesite"], $a["judge"]); + echo " [judge=" . $uu["username"] . " (" . $a["judgesite"] . ")]"; + } +?> +
Answer 1: + +
Answer 2: + +
+
+
+ +
+ + + + + +

+
+ +
+
+Autojudging: + +

+ + + + + + + +". $a["autoip"] ." since ". dateconvsimple($a["autobegin"]) .""; +else if($a["autoend"]!="") + echo ""; +else + echo ""; +?> + + + + + + + + + +
Autojudging answer: + +
Autojudged by:". $a["autoip"] ." from ". dateconvsimple($a["autobegin"]) ." to ". dateconvsimple($a["autoend"]) ."unavailable
Standard output: +stdout\n"; + echo "view\n"; +} else + echo "unavailable"; +?> +
Standard error: +stderr\n"; + echo "view\n"; +} else + echo "unavailable"; +?> +
+ +
+ + diff --git a/boca-1.5.0/src/admin/score.php b/boca-1.5.0/src/admin/score.php new file mode 100644 index 0000000..ef9675d --- /dev/null +++ b/boca-1.5.0/src/admin/score.php @@ -0,0 +1,21 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); +require('../scorelower.php'); +?> diff --git a/boca-1.5.0/src/admin/site.php b/boca-1.5.0/src/admin/site.php new file mode 100644 index 0000000..67a9ebe --- /dev/null +++ b/boca-1.5.0/src/admin/site.php @@ -0,0 +1,605 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require 'header.php'; + +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("../index.php"); +if($ct["contestlocalsite"]==$ct["contestmainsite"]) $main=true; else $main=false; + +if ($main) { + if(isset($_GET["new"]) && $_GET["new"]=="1") { + $n = DBNewSite($_SESSION["usertable"]["contestnumber"]); + ForceLoad("site.php?site=$n"); + } +} +if (isset($_GET["site"]) && is_numeric($_GET["site"])) + $site=$_GET["site"]; +else if (isset($_POST["site"]) && is_numeric($_POST["site"])) + $site=$_POST["site"]; +else + $site=$ct["contestlocalsite"]; + +if(($st = DBSiteInfo($_SESSION["usertable"]["contestnumber"], $site)) == null) + ForceLoad("../index.php"); +$sitetime = DBAllSiteTime($_SESSION["usertable"]["contestnumber"], $site); + +if (isset($_POST["Logoff"]) && $_POST["Logoff"] == "Logoff all users") { + if ($_POST["confirmation"] == "confirm") { + DBSiteLogoffAll ($_SESSION["usertable"]["contestnumber"], $site); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["Logins"]) && $_POST["Logins"] == "Enable logins") { + if ($_POST["confirmation"] == "confirm") { + DBSiteLogins ($_SESSION["usertable"]["contestnumber"], $site, "t"); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["Logins"]) && $_POST["Logins"] == "Disable logins") { + if ($_POST["confirmation"] == "confirm") { + DBSiteLogins ($_SESSION["usertable"]["contestnumber"], $site, "f"); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["Submit2"]) && $_POST["Submit2"] == "Start Now") { + if ($_POST["confirmation"] == "confirm") { + if(!DBSiteStartNow ($_SESSION["usertable"]["contestnumber"], $site)) + MSGError("Site is already running"); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["SubmitDC"]) && $_POST["SubmitDC"] == "Delete ALL site clars") { + if ($_POST["confirmation"] == "confirm") { + DBSiteDeleteAllClars ($_SESSION["usertable"]["contestnumber"], $site, + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["SubmitDR"]) && $_POST["SubmitDR"] == "Delete ALL site runs") { + if ($_POST["confirmation"] == "confirm") { + DBSiteDeleteAllRuns ($_SESSION["usertable"]["contestnumber"], $site, + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["SubmitDT"]) && $_POST["SubmitDT"] == "Delete ALL site tasks") { + if ($_POST["confirmation"] == "confirm") { + DBSiteDeleteAllTasks ($_SESSION["usertable"]["contestnumber"], $site, + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["SubmitDB"]) && $_POST["SubmitDB"] == "Delete ALL site bkps") { + if ($_POST["confirmation"] == "confirm") { + DBSiteDeleteAllBkps ($_SESSION["usertable"]["contestnumber"], $site, + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["Submit3"]) && $_POST["Submit3"] == "Stop Now") { + if ($_POST["confirmation"] == "confirm") { + if(DBSiteEndNow ($_SESSION["usertable"]["contestnumber"], $site)) + MSGError("Site has been finished"); + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["endat"]) && $_POST["endat"] == "Stop At") { + if ($_POST["confirmation"] == "confirm" && + isset($_POST["enddateh"]) && $_POST["enddateh"] >= 0 && $_POST["enddateh"] <= 23 && + isset($_POST["enddatemin"]) && $_POST["enddatemin"] >= 0 && $_POST["enddatemin"] <= 59 && + isset($_POST["enddated"]) && isset($_POST["enddatem"]) && isset($_POST["enddatey"]) && + checkdate($_POST["enddatem"], $_POST["enddated"], $_POST["enddatey"])) { + $te = mktime ($_POST["enddateh"], $_POST["enddatemin"], 0, $_POST["enddatem"], $_POST["enddated"], $_POST["enddatey"]); + if($te > time()) + MSGError("Impossible to stop at a future time. Still running"); + else { + if(DBSiteEndNow ($_SESSION["usertable"]["contestnumber"], $site, $te)) + MSGError("Site has been finished"); + } + } + ForceLoad("site.php?site=$site"); +} +if (isset($_POST["Submit1"]) && $_POST["Submit1"] == "Send" && isset($_POST["name"]) && isset($_POST["site"]) && is_numeric($_POST["site"]) && + $_POST["name"] != "" && isset($_POST["lastmileanswer"]) && isset($_POST["scorelevel"]) && + is_numeric($_POST["lastmileanswer"]) && isset($_POST["lastmilescore"]) && + is_numeric($_POST["lastmilescore"]) && is_numeric($_POST["scorelevel"]) && + isset($_POST["chiefname"]) && + isset($_POST["startdateh"]) && $_POST["startdateh"] >= 0 && $_POST["startdateh"] <= 23 && + isset($_POST["startdatemin"]) && $_POST["startdatemin"] >= 0 && $_POST["startdatemin"] <= 59 && + isset($_POST["startdated"]) && isset($_POST["startdatem"]) && isset($_POST["startdatey"]) && + + checkdate($_POST["startdatem"], $_POST["startdated"], $_POST["startdatey"])) { + if ($_POST["confirmation"] == "confirm") { + $t = mktime ($_POST["startdateh"], $_POST["startdatemin"], 0, $_POST["startdatem"], $_POST["startdated"], $_POST["startdatey"]); + + $param['contestnumber']=$_SESSION["usertable"]["contestnumber"]; + $param['sitenumber']=$_POST["site"]; + $param['sitename']=$_POST["name"]; + $param['siteip']=$_POST["ip"]; + $param['siteduration']=$_POST["duration"]*60; + $param['sitelastmileanswer']= $_POST["lastmileanswer"]*60; + $param['sitelastmilescore']= $_POST["lastmilescore"]*60; + $param['sitejudging']= $_POST["judging"]; + $param['sitetasking']= $_POST["tasking"]; + if(isset($_POST["autoend"])) + $param['siteautoend']= $_POST["autoend"]; + if(isset($_POST["globalscore"])) + $param['siteglobalscore']= $_POST["globalscore"]; + if(isset($_POST["active"])) + $param['siteactive']=$_POST["active"]; + $param['sitescorelevel']=$_POST["scorelevel"]; + $param['sitepermitlogins']=''; + if(isset($_POST["autojudge"])) + $param['siteautojudge']=$_POST["autojudge"]; + $param['sitechiefname']=$_POST["chiefname"]; + DBUpdateSite ($param); + $st1 = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_POST["site"]); + if($t != $st1["sitestartdate"]) { + $param = array('contest'=>$_SESSION["usertable"]["contestnumber"], + 'site'=>$_POST["site"], + 'start'=>$t); + DBRenewSiteTime($param); + } + } + ForceLoad("site.php?site=".$_POST["site"]); +} + + +if ($main && isset($_FILES["importfile"]) && isset($_POST["Submit"]) && $_POST["Submit"]=='Import' && $_FILES["importfile"]["name"]!="") { + if ($_POST["confirmation"] == "confirm") { + $type=myhtmlspecialchars($_FILES["importfile"]["type"]); + $size=myhtmlspecialchars($_FILES["importfile"]["size"]); + $name=myhtmlspecialchars($_FILES["importfile"]["name"]); + $temp=myhtmlspecialchars($_FILES["importfile"]["tmp_name"]); + if (!is_uploaded_file($temp)) { + IntrusionNotify("file upload problem."); + ForceLoad("../index.php"); + } + + if (($ar = file($temp)) === false) { + IntrusionNotify("Unable to open the uploaded file."); + ForceLoad("site.php"); + } + $userlist=array(); + if(strtolower(substr($name,-4))==".tsv") { + for ($i=0; $i= $count($ar)) MSGError('File format not recognized'); + $oklines=0; + for ($i++; $i 0) { +?> +
+
TAKE NOTE OF THE USERS AND PASSWORDS AND KEEP THEM SECRET

+ + + + + + $pass) { + echo "\n"; + } +?> +
UsernamePassword
$user$pass


TAKE NOTE OF THE USERS AND PASSWORDS AND KEEP THEM SECRET
+ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + +Start date (contest=" . dateconv($ct["conteststartdate"]) . "):"; +?> + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + if($st["siteautoended"]) + $w = (int) ($st["siteduration"]/60); + else + $w = (int) ($st["currenttime"]/60); + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; +} +?> + +Duration (contest="; +echo $ct["contestduration"]/60; +echo "):"; +?> + + + +Stop answering (contest="; +echo $ct["contestlastmileanswer"]/60; +echo "):"; +?> + + + +Stop scoreboard (contest="; +echo $ct["contestlastmilescore"]/60; +echo "):"; +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Site number: +\n"; +$cs = DBAllSiteInfo($_SESSION["usertable"]["contestnumber"]); +for ($i=0; $i" . $cs[$i]["sitenumber"] . "\n"; +} +if($main) { + echo "\n"; +} +echo "\n"; + +//else +// echo "\n"; + +if($ct["contestlocalsite"]==$site) echo "(local site)"; +?> +
Name: + " size="50" maxlength="50" /> +
IP (plus boca path): + " size="50" maxlength="200" /> +
IP (plus boca path): + +
hh:mm + " size="2" maxlength="2" /> + : + " size="2" maxlength="2" /> + dd/mm/yyyy + " size="2" maxlength="2" /> + / + " size="2" maxlength="2" /> + / + " size="4" maxlength="4" /> +
Site finished at:" . dateconv($st["siteendeddate"]) . "
Real duration:" . $w . " minutes
+ " size="20" maxlength="20" /> +
+ " size="20" maxlength="20" /> +
+ " size="20" maxlength="20" /> +
Runs/clars that will be judged here (comma sep): + " size="20" maxlength="200" /> +
Tasks that will be treated here (comma sep): + " size="20" maxlength="200" /> +
Username of the chief judge (if any): + " size="20" maxlength="20" /> +
Active: +"; + else + echo ""; +?> +
Autoend: +"; + else + echo ""; +?> +
Global score: + " size="20" maxlength="50" /> +
Autojudge (without human interaction): +"; + else + echo ""; + echo " <- experimental"; +?> +
Logins are: + +
Score level: + " size="2" maxlength="2" /> +
Number of Clars: +
Number of Runs: +
Number of Tasks: +
+
+
+ + + + + +
+ + + +


+ + + + + + +
+
+
+ + + + +"; + echo ""; + echo ""; + echo ""; +} +?> +
Starting atEnding at
"; + echo dateconv($sitetime[$i]["sitestartdate"]); + echo ""; + if($sitetime[$i]["siteenddate"] == 0) { + if($st["siterunning"]) + echo "still open"; + else echo "auto-ended"; + } + else + echo dateconv($sitetime[$i]["siteenddate"]); + echo "
+
+ + +
+ + + + + + +
+(Do not use this button unless really necessary) + : + hh:mm + " size="2" maxlength="2" /> + : + " size="2" maxlength="2" /> + dd/mm/yyyy + " size="2" maxlength="2" /> + / + " size="2" maxlength="2" /> + / + " size="4" maxlength="4" /> +
+
+ +

+
+ + + + + +
Import file: + +
+ +
+ +
+ + + + diff --git a/boca-1.5.0/src/admin/task.php b/boca-1.5.0/src/admin/task.php new file mode 100644 index 0000000..95aca10 --- /dev/null +++ b/boca-1.5.0/src/admin/task.php @@ -0,0 +1,147 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require_once('header.php'); +if(isset($_GET["order"]) && $_GET["order"] != "") { +$order = myhtmlspecialchars($_GET["order"]); + $_SESSION["taskline"] = $order; +} else { + if(isset($_SESSION["taskline"])) + $order = $_SESSION["taskline"]; + else + $order=''; +} + +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("../index.php"); + +if (isset($_GET["delete"]) && is_numeric($_GET["delete"]) && isset($_GET["site"]) && is_numeric($_GET["site"])) { + DBTaskDelete ($_GET["delete"], $_GET["site"], $_SESSION["usertable"]["contestnumber"], + $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + ForceLoad("task.php"); +} + +if (isset($_GET["return"]) && is_numeric($_GET["return"]) && isset($_GET["site"]) && is_numeric($_GET["site"])) { + DBTaskGiveUp ($_GET["return"], $_GET["site"], $_SESSION["usertable"]["contestnumber"], -1, -1); +// $_SESSION["usertable"]["usernumber"], $_SESSION["usertable"]["usersitenumber"]); + ForceLoad("task.php"); +} + +if (isset($_GET["get"]) && is_numeric($_GET["get"]) && isset($_GET["site"]) && is_numeric($_GET["site"])) { + DBGetTaskToAnswer($_GET["get"], $_GET["site"], $_SESSION["usertable"]["contestnumber"]); + ForceLoad("task.php"); +} + +if (isset($_GET["done"]) && is_numeric($_GET["done"]) && isset($_GET["site"]) && is_numeric($_GET["site"])) { + DBChiefUpdateTask( $_SESSION["usertable"]["contestnumber"], $_SESSION["usertable"]["usersitenumber"], + $_SESSION["usertable"]["usernumber"], $_GET["site"], $_GET["done"], 'done'); + ForceLoad("task.php"); +} + + + +?> +
+ + + + + + + + + + + + +\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if ($task[$i]["oid"] != null) { + $msg = $task[$i]["username"]." ".$task[$i]["username"]." ".$task[$i]["username"]." ". + $task[$i]["username"]." ".$task[$i]["username"]." ".$task[$i]["username"]; + echo " \n"; + } + else + echo " \n"; + if($st != "opentask") + echo " \n"; + else + echo " \n"; + + if ($mine) $color="ff7777"; + else if ($st == "done") $color="bbbbff"; + else if ($st == "processing") $color="77ff77"; + else if ($st == "opentask") $color="ffff88"; + else $color="ffffff"; + + echo " \n \n"; +} +echo "
Task #TimeUser / SiteDescriptionFileStaff / SiteStatusActions
" . $task[$i]["number"] . "" . dateconvminutes($task[$i]["timestamp"]) . "".$task[$i]["username"]."(" . $task[$i]["user"] . ") / ".$task[$i]["site"]."" . $task[$i]["description"]; + if($task[$i]["color"] != "") { + echo " \"".$task[$i]["colorname"]."\""; + + } + echo "" . $task[$i]["filename"] . ""; + echo " view"; + echo " ". $task[$i]["staffname"] . "(" . $task[$i]["staff"] .") / ".$task[$i]["staffsite"]." $st"; + + if($st != "deleted") + echo " delete\n"; + if($st == "opentask") + echo " get\n"; + if($st != "opentask") + echo " return\n"; + if($st == "processing") + echo " done\n"; + echo "
"; +if (count($task) == 0) echo "
NO TASKS FOUND
"; + +?> + + + diff --git a/boca-1.5.0/src/admin/user.php b/boca-1.5.0/src/admin/user.php new file mode 100644 index 0000000..88cc148 --- /dev/null +++ b/boca-1.5.0/src/admin/user.php @@ -0,0 +1,444 @@ +. +//////////////////////////////////////////////////////////////////////////////// +// Last modified 05/aug/2012 by cassio@ime.usp.br +require('header.php'); + +if (isset($_GET["site"]) && isset($_GET["user"]) && is_numeric($_GET["site"]) && is_numeric($_GET["user"]) && + isset($_GET["logout"]) && $_GET["logout"] == 1) { + DBLogOut($_SESSION["usertable"]["contestnumber"], $_GET["site"], $_GET["user"]); + ForceLoad("user.php"); +} +if (isset($_POST["usersitenumber"]) && isset($_POST["usernumber"]) && is_numeric($_POST["usersitenumber"]) && + is_numeric($_POST["usernumber"]) && isset($_POST["confirmation"]) && $_POST["confirmation"] == "delete") { + if (!DBDeleteUser($_SESSION["usertable"]["contestnumber"], $_POST["usersitenumber"], $_POST["usernumber"])) + MSGError("User could not be removed."); + ForceLoad("user.php"); +} + +if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null) + ForceLoad("../index.php"); +if($ct["contestlocalsite"]==$ct["contestmainsite"]) $main=true; else $main=false; + +if (isset($_POST["username"]) && isset($_POST["userfullname"]) && isset($_POST["userdesc"]) && isset($_POST["userip"]) && + isset($_POST["usernumber"]) && isset($_POST["usersitenumber"]) && isset($_POST["userenabled"]) && isset($_POST["usericpcid"]) && + isset($_POST["usermultilogin"]) && isset($_POST["usertype"]) && isset($_POST["confirmation"]) && + isset($_POST["passwordn1"]) && isset($_POST["passwordn2"]) && $_POST["confirmation"] == "confirm") { + $param['user'] = htmlspecialchars($_POST["usernumber"]); + $param['site'] = htmlspecialchars($_POST["usersitenumber"]); + $param['username'] = htmlspecialchars($_POST["username"]); + $param['usericpcid'] = htmlspecialchars($_POST["usericpcid"]); + $param['enabled'] = htmlspecialchars($_POST["userenabled"]); + $param['multilogin'] = htmlspecialchars($_POST["usermultilogin"]); + $param['userfull'] = htmlspecialchars($_POST["userfullname"]); + $param['userdesc'] = htmlspecialchars($_POST["userdesc"]); + $param['type'] = htmlspecialchars($_POST["usertype"]); + $param['pass'] = htmlspecialchars($_POST["passwordn1"]); + $param['permitip'] = htmlspecialchars($_POST["userip"]); + $param['contest'] = $_SESSION["usertable"]["contestnumber"]; + if ($_POST["passwordn1"] == $_POST["passwordn2"]) { + DBNewUser($param); + } + else MSGError ("Passwords don't match."); + ForceLoad("user.php"); +} +else if (isset($_FILES["importfile"]) && isset($_POST["Submit"]) && $_FILES["importfile"]["name"]!="") { + if ($_POST["confirmation"] == "confirm") { + $type=myhtmlspecialchars($_FILES["importfile"]["type"]); + $size=myhtmlspecialchars($_FILES["importfile"]["size"]); + $name=myhtmlspecialchars($_FILES["importfile"]["name"]); + $temp=myhtmlspecialchars($_FILES["importfile"]["tmp_name"]); + if (!is_uploaded_file($temp)) { + IntrusionNotify("file upload problem."); + ForceLoad("../index.php"); + } + + if (($ar = file($temp)) === false) { + IntrusionNotify("Unable to open the uploaded file."); + ForceLoad("user.php"); + } + $userlist=array(); + if(strtolower(substr($name,-4))==".tsv") { + for ($i=0; $i= $count($ar)) MSGError('File format not recognized'); + $oklines=0; + for ($i++; $i= $count($ar)) MSGError('File format not recognized'); + for ($i++; $i=count($ar)) break; + $x = trim($ar[$i]); + } + $param['contest']=$_SESSION["usertable"]["contestnumber"]; + if($_SESSION["usertable"]["usersitenumber"] == $param['site'] || $main) + DBNewUser($param); + } + } + } + if(count($userlist) > 0) { +?> +
+
TAKE NOTE OF THE USERS AND PASSWORDS AND KEEP THEM SECRET

+ + + + + + $pass) { + $x = explode('-',$user); + echo "\n"; + } +?> +
SiteUser #Password
" . $x[0] . "" . $x[1] . "$pass


TAKE NOTE OF THE USERS AND PASSWORDS AND KEEP THEM SECRET
+ + + +
+ + + + + + + + + + + + + + + +\n"; + if(($usr[$i]["usersitenumber"] == $_SESSION["usertable"]["usersitenumber"] || $main==true) && + //$usr[$i]["usertype"] != 'site' && + ($usr[$i]["usernumber"] != $_SESSION["usertable"]["usernumber"] || + $usr[$i]["usersitenumber"] != $_SESSION["usertable"]["usersitenumber"])) + echo " \n"; + else + echo " \n"; + + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + if ($usr[$i]["userpermitip"]!="") + echo " \n"; + else + echo " \n"; + if ($usr[$i]["userlastlogin"] < 1) + echo " \n"; + else + echo " \n"; + if ($usr[$i]["usersession"] != "") + echo " \n"; + else { + if ($usr[$i]["userlastlogout"] < 1) + echo " \n"; + else + echo " \n"; + } + if ($usr[$i]["userenabled"] == "t") + echo " \n"; + else + echo " \n"; + if ($usr[$i]["usermultilogin"] == "t") + echo " \n"; + else + echo " \n"; + echo " \n"; + echo " \n"; + echo ""; +} +echo "
User #SiteUsernameICPC IDTypeIPLastLoginLastLogoutEnabledMultiFullnameDescription
" . $usr[$i]["usernumber"] . "" . $usr[$i]["usernumber"] . "" . $usr[$i]["usersitenumber"] . "" . $usr[$i]["username"] . " " . $usr[$i]["usericpcid"] . " " . $usr[$i]["usertype"] . " " . $usr[$i]["userpermitip"] . "* " . $usr[$i]["userip"] . " never" . dateconv($usr[$i]["userlastlogin"]) . "Force Logoutnever" . dateconv($usr[$i]["userlastlogout"]) . "YesNoYesNo" . $usr[$i]["userfullname"] . " " . $usr[$i]["userdesc"] . " 
\n"; + +unset($u); +if (isset($_GET["site"]) && isset($_GET["user"]) && is_numeric($_GET["site"]) && is_numeric($_GET["user"])) + $u = DBUserInfo($_SESSION["usertable"]["contestnumber"], $_GET["site"], $_GET["user"]); + +?> + + + + +

Clicking on a user number will bring the user data for edition.
+To import the users, just fill in the import file field.
+The file must be in the format defined in the admin's manual.
+ +
+ +
+ + + + + +
Import file: + +
+
+ +
+ + +
+
+ +

+
+To create/edit one user, enter the data below.
+Note that any changes will overwrite the already defined data.
+(Specially care if you use a user number that is already existent.)
+
+
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
User Site Number: + size="20" maxlength="20" /> +
User Number: + " size="20" maxlength="20" /> +
Username: + " size="20" maxlength="20" /> +
ICPC ID: + " size="20" maxlength="50" /> +
Type: + +
Enabled: + +
MultiLogins (local teams should be set to No): + +
User Full Name: + " size="50" maxlength="200" /> +
User Description: + " size="50" maxlength="300" /> +
User IP: + " size="20" maxlength="20" /> +
Password: + +
Retype Password: + +
+
+
+ + + + + + +

WARNING: deleting a user will completely remove EVERYTHING related to it (including runs, clarifications, etc).
+ +
+ + + + -- cgit v1.2.3