aboutsummaryrefslogtreecommitdiff
path: root/boca-1.5.0/src/site/putfile.php
diff options
context:
space:
mode:
authorcassio <cassiopc@gmail.com>2013-07-02 05:44:46 +0000
committercassio <cassiopc@gmail.com>2013-07-02 05:44:46 +0000
commita9aa438ea0558eb0044cf1e54a9190ddb41b65e5 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /boca-1.5.0/src/site/putfile.php
parent94caebadeb66ad7b453d4258a796979cafb758b0 (diff)
downloadboca-a9aa438ea0558eb0044cf1e54a9190ddb41b65e5.tar.gz
boca-a9aa438ea0558eb0044cf1e54a9190ddb41b65e5.zip
restructuring of boca's git
Diffstat (limited to 'boca-1.5.0/src/site/putfile.php')
-rw-r--r--boca-1.5.0/src/site/putfile.php171
1 files changed, 0 insertions, 171 deletions
diff --git a/boca-1.5.0/src/site/putfile.php b/boca-1.5.0/src/site/putfile.php
deleted file mode 100644
index d320a1a..0000000
--- a/boca-1.5.0/src/site/putfile.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-////////////////////////////////////////////////////////////////////////////////
-//BOCA Online Contest Administrator
-// Copyright (C) 2003-2012 by BOCA Development Team (bocasystem@gmail.com)
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-////////////////////////////////////////////////////////////////////////////////
-//Last updated 10/jul/2012 by cassio@ime.usp.br
-//
-//PC^2 integration developed by Fabio Antonio Avellaneda Pachon
-$quiet=true;
-require 'header.php';
-$ds = DIRECTORY_SEPARATOR;
-if($ds=="") $ds = "/";
-$remotedir=$ds . "private" . $ds . "remotescores";
-
-if(($ct = DBContestInfo($_SESSION["usertable"]["contestnumber"])) == null)
-exit;
-if(($st = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null)
-exit;
-
-if(is_writable($_SESSION["locr"] . $remotedir)) {
- if(isset($_POST['PC2']) && is_numeric($_POST['PC2']) && $_POST['PC2'] > 0) {
- $site = $_POST['PC2'];
- $problemCount = 4;
- for($i=0;$i<$problemCount;$i++) {
- $problems[$i]["name"]=chr($i+ord("A"));
- $problems[$i]["color"]="FFFFFF";
- $problems[$i]["colorname"]="white";
- $problems[$i]["solved"]=0;
- $problems[$i]["judging"]=false;
- $problems[$i]["time"]=0;
- $problems[$i]["penalty"]=0;
- $problems[$i]["count"]=0;
- }
-
- /*** Load PC2 summary.html **/
- $board=base64_decode($_POST['data']);
-
- /*** a new dom object ***/
- $dom = new domDocument;
-
- /*** load the html into the object ***/
- $dom->loadHTML($board);
-
- /*** discard white space ***/
- $dom->preserveWhiteSpace = false;
-
- /*** the table by its tag name ***/
- $tables = $dom->getElementsByTagName('table');
-
- /*** get all rows from the table ***/
- $rows = $tables->item(0)->getElementsByTagName('tr');
-
- /*** loop over the table rows ***/
- $userCount = 1;
- $firstProblem=-1;
- foreach ($rows as $row)
- {
- //teams are always being renumbered since their number is not important... just they have to be different
- $team["user"]=(string)$userCount;
- $team["site"]=(string)$site;
-
- /*** get each column by tag name ***/
- $cols = $row->getElementsByTagName('td');
- $colCount=0;
- $probCount=1;
- //Ignore empty cols
- if($cols->item(0)->nodeValue=="")
- {
- continue;
- }
- foreach ($cols as $col)
- {
- switch($colCount)
- {
- //First column, start the problem counter and by default, the team hasnt solved a problem
- case 0;
- $probCount=1;
- $firstProblem=-1;
- break;
- //First column: team name
- case 1:
- $team["username"]=$col->nodeValue;
-// echo "username: $col->nodeValue\n";
- $team["usertype"]="team";
- $team["userfullname"]=$col->nodeValue;
- break;
- //Second column: How many problems does the team solved at this time
- case 2:
- $team["totalcount"]=(int)$col->nodeValue;
- // echo "totalcount: $col->nodeValue\n";
- break;
- //Third column: Elapsed time, including penalisations
- case 3:
- $team["totaltime"]=$col->nodeValue;
- // echo "totaltime: $col->nodeValue\n";
- break;
- //No more problems to process
- case $problemCount+4:
- $total[$userCount-1]=$team;
- //If firstProblem is different to -1 is because the team has solved at least one problem
- if($firstProblem!=-1)
- {
- $total[$userCount-1]["first"]=$firstProblem;
- }
- break;
- //Problems columns
- default:
- list($count, $time) = split('/', $col->nodeValue);
- //echo "Sol: $solved / time: $count";
- if($time=="--")
- {
- $solved=false;
- $time="";
- }else
- {
- $solved=true;
- }
- $team["problem"][$probCount]=$problems[$probCount];
- $team["problem"][$probCount]["solved"]=$solved;
- $team["problem"][$probCount]["time"]=$time;
- //I can calculate the effective time and the penalisation time, if needed
- $team["problem"][$probCount]["penalty"]=$time;
- $team["problem"][$probCount]["count"]=$count;
- //look for the time which first problem was solved
- if($firstProblem==-1 && $solved)
- {
- $firstProblem=$time;
- }else
- {
- if($solved && $time<$firstProblem)
- {
- $firstProblem=$time;
- }
- }
- $probCount++;
- }//end switch
-
- $colCount++; //echo $col->nodeValue."\t";
- }//end col for
-
- $userCount++;
-// echo '<hr />';
- } //end row col
-//echo print_r($total);
- $total=base64_encode(serialize($total));
- } else
- $total=$_POST['data'];
-
- $fn = tempnam($_SESSION["locr"] . $remotedir,"score_");
- $fout = fopen($fn,"wb");
- fwrite($fout,$total,10000000);
- fclose($fout);
-
- if(@rename($fn, $_SESSION["locr"] . $remotedir . $ds . "score_" . $_SESSION["usertable"]["username"] . "_" . md5(getIP()) . ".dat"))
- echo "SCORE UPLOADED OK\n";
- else
- echo "FAILED: UPDATE SCORE ERROR\n";
-} else echo "FAILED: PERMISSION DENIED IN THE SERVER\n";
-?>