aboutsummaryrefslogtreecommitdiff
path: root/boca-1.5.0/old/import.php
diff options
context:
space:
mode:
authorcassiopc <cassiopc@gmail.com>2012-08-06 09:09:10 +0000
committercassiopc <cassiopc@gmail.com>2012-08-06 09:09:10 +0000
commit866658cded5b92ddb2681dead1ebaf111d712fcc (patch)
treecf7534c4726a142189e096ce82f8d73b2a398ecc /boca-1.5.0/old/import.php
downloadboca-866658cded5b92ddb2681dead1ebaf111d712fcc.tar.gz
boca-866658cded5b92ddb2681dead1ebaf111d712fcc.zip
init
Diffstat (limited to 'boca-1.5.0/old/import.php')
-rw-r--r--boca-1.5.0/old/import.php280
1 files changed, 280 insertions, 0 deletions
diff --git a/boca-1.5.0/old/import.php b/boca-1.5.0/old/import.php
new file mode 100644
index 0000000..45dd4bd
--- /dev/null
+++ b/boca-1.5.0/old/import.php
@@ -0,0 +1,280 @@
+<?php
+//////////////////////////////////////////////////////////////////////////////////////////
+//BOCA Online Contest Administrator. Copyright (c) 2003- Cassio Polpo de Campos.
+//It may be distributed under the terms of the Q Public License version 1.0. A copy of the
+//license can be found with this software or at http://www.opensource.org/licenses/qtpl.php
+//
+//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+//INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+//PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER
+//OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR
+//CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+//PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+//OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+///////////////////////////////////////////////////////////////////////////////////////////
+//Change list
+// 17/aug/2007 by cassio@ime.usp.br: created
+// 25/aug/2007 by cassio@ime.usp.br: php initial tag changed to complete form
+
+require 'header.php';
+
+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("../index.php");
+ }
+ echo "<br>Starting to create the contest<br>";
+ $asep = trim($ar[0]);
+ $i=1;
+
+ for (; $i<count($ar) && strpos($ar[$i], "[contest]") === false; $i++) ;
+ for ($i++; $i<count($ar) && $ar[$i][0] != "["; $i++) {
+ $x = trim($ar[$i]);
+ //contestname, startdate, duration, lastmileanswer, lastmilescore, penalty, contestactive
+ $tmp = explode("=", $x, 2);
+ $param[trim($tmp[0])]=trim($tmp[1]);
+ }
+ $nc = DBNewContest($param);
+ echo "<br>Contest $nc created<br>";
+
+ for (; $i<count($ar) && strpos($ar[$i], "[site]") === false; $i++) ;
+ while(strpos($ar[$i],"[site]") === true) {
+ for ($i++; $i<count($ar) && $ar[$i][0] != "["; $i++) {
+ $x = trim($ar[$i]);
+ // sitenumber, siteip, sitename, scorelevel
+ $tmp = explode("=", $x, 2);
+ $param[trim($tmp[0])]=trim($tmp[1]);
+ }
+ DBNewSite($nc, null, $param);
+ echo "New site created<br>";
+ }
+
+ for (; $i<count($ar) && strpos($ar[$i], "[answer]") === false; $i++) ;
+ for ($i++; $i<count($ar) && $ar[$i][0] != "["; $i++) {
+ echo "<br>Searching for answers<br>\n";
+ $x = trim($ar[$i]);
+ if (strpos($x, "answ") !== false && strpos($x, "answ") == 0) {
+ unset($answnumber);
+ unset($answname);
+ unset($answyes);
+ while (strpos($x, "answ") !== false && strpos($x, "answ") == 0) {
+ $tmp = explode ("=", $x, 2);
+ switch (trim($tmp[0])) {
+ case "answernumber": $answnumber =trim($tmp[1]); break;
+ case "answername": $answname =trim($tmp[1]); break;
+ case "answeryes": $answyes =trim($tmp[1]); break;
+ }
+ $i++;
+ if ($i>=count($ar)) break;
+ $x = trim($ar[$i]);
+ }
+ if (isset($answnumber) && is_numeric($answnumber) && isset($answname)) {
+ DBNewAnswer ($nc, $answnumber, $answname, $answyes);
+ echo "Answer $answnumber created<br>";
+ }
+ }
+ }
+
+ for (; $i<count($ar) && strpos($ar[$i], "[language]") === false; $i++) ;
+ for ($i++; $i<count($ar) && $ar[$i][0] != "["; $i++) {
+ echo "<br>Searching for languages<br>\n";
+ $x = trim($ar[$i]);
+ if (strpos($x, "lang") !== false && strpos($x, "lang") == 0) {
+ unset($langnumber);
+ unset($langname);
+ unset($langproblem);
+ unset($script);
+ unset($compscript);
+ unset($langscript);
+ unset($langcompscript);
+ unset($langscripthash);
+ unset($langcompscripthash);
+ while (strpos($x, "lang") !== false && strpos($x, "lang") == 0) {
+ $tmp = explode ("=", $x, 2);
+ switch (trim($tmp[0])) {
+ case "langnumber": $langnumber =trim($tmp[1]); break;
+ case "langname": $langname =trim($tmp[1]); break;
+ case "langproblem": $langproblem =trim($tmp[1]); break;
+ case "langscripthash": $langscripthash =trim($tmp[1]); break;
+ case "langscript": $langscript =trim($tmp[1]);
+ $i++;
+ for ($j=1; trim($ar[$i]) != "***$asep***"; $j++) {
+ if(substr($langscript,0,7)!="base64:") $script .= $ar[$i];
+ else $script .= trim($ar[$i]);
+ $i++;
+ }
+ if(substr($langscript,0,7)=="base64:") {
+ $langscript = substr($langscript,7);
+ $script = base64_decode($script);
+ }
+ if(trim($langscripthash) != "" && myshorthash($script) != trim($langscripthash))
+ echo "ERROR: Hash of $langscript does not match $langscripthash, ".myshorthash($script)."<br>\n";
+ break;
+ case "langcompscripthash": $langcompscripthash=trim($tmp[1]); break;
+ case "langcompscript": $langcompscript =trim($tmp[1]);
+ $i++;
+ for ($j=1; trim($ar[$i]) != "***$asep***"; $j++) {
+ if(substr($langcompscript,0,7)!="base64:") $compscript .= $ar[$i];
+ else $compscript .= trim($ar[$i]);
+ $i++;
+ }
+ if(substr($langcompscript,0,7)=="base64:") {
+ $langcompscript = substr($langcompscript,7);
+ $compscript = base64_decode($compscript);
+ }
+ if(trim($langcompscripthash) != "" && myshorthash($compscript) != trim($langcompscripthash))
+ echo "ERROR: Hash of $langcompscript does not match<br>\n";
+ break;
+ }
+ $i++;
+ if ($i>=count($ar)) break;
+ $x = trim($ar[$i]);
+ }
+ if (isset($langnumber) && is_numeric($langnumber) && isset($langname)) {
+ DBNewLanguage ($nc,
+ $langnumber, $langname, $langproblem, '', '',
+ $langshowingoutput, $script, $langscript, $compscript, $langcompscript, 1, 1);
+ echo "Language $langnumber created<br>";
+ }
+ }
+ }
+
+ for (; $i<count($ar) && strpos($ar[$i], "[problem]") === false; $i++) ;
+ for ($i++; $i<count($ar) && $ar[$i][0] != "["; $i++) {
+ echo "<br>Searching for problems<br>\n";
+ $x = trim($ar[$i]);
+ if (strpos($x, "prob") !== false && strpos($x, "prob") == 0) {
+ unset($probnumber);
+ unset($probname);
+ unset($probfullname);
+ unset($probbasename);
+ unset($probinputfile);
+ unset($probinputfilehash);
+ unset($probinputfilepath);
+ unset($probsolfile);
+ unset($probsolfilehash);
+ unset($probsolfilepath);
+ unset($probdescfile);
+ unset($probdescfilehash);
+ unset($probdescfilepath);
+ unset($probtimelimit);
+ unset($probcolorname);
+ unset($probcolor);
+ while (strpos($x, "prob") !== false && strpos($x, "prob") == 0) {
+ $tmp = explode ("=", $x, 2);
+ switch (trim($tmp[0])) {
+ case "probnumber": $probnumber =trim($tmp[1]); break;
+ case "probname": $probname =trim($tmp[1]); break;
+ case "probfullname": $probfullname =trim($tmp[1]); break;
+ case "probbasename": $probbasename =trim($tmp[1]); break;
+ case "probtimelimit": $probtimelimit =trim($tmp[1]); break;
+ case "probcolorname": $probcolorname =trim($tmp[1]); break;
+ case "probcolor": $probcolor =trim($tmp[1]); break;
+ case "probinputfilehash": $probinputfilehash =trim($tmp[1]); break;
+ case "probinputfile": $probinputfile =trim($tmp[1]);
+ $i++;
+ for ($j=1; trim($ar[$i]) != "***$asep***"; $j++) {
+ if(substr($probinputfile,0,7)!="base64:") $probinputfilepath .= $ar[$i];
+ else $probinputfilepath .= trim($ar[$i]);
+ $i++;
+ }
+ if(substr($probinputfile,0,7)=="base64:") {
+ $probinputfile = substr($probinputfile,7);
+ $probinputfilepath = base64_decode($probinputfilepath);
+ }
+ if(trim($probinputfilehash) != "" && myshorthash($probinputfilepath) != trim($probinputfilehash))
+ echo "ERROR: Hash of $probinputfile does not match<br>\n";
+ break;
+ case "probsolfilehash": $probsolfilehash =trim($tmp[1]); break;
+ case "probsolfile": $probsolfile =trim($tmp[1]);
+ $i++;
+ for ($j=1; trim($ar[$i]) != "***$asep***"; $j++) {
+ if(substr($probsolfile,0,7)!="base64:") $probsolfilepath .= $ar[$i];
+ else $probsolfilepath .= trim($ar[$i]);
+ $i++;
+ }
+ if(substr($probsolfile,0,7)=="base64:") {
+ $probsolfile = substr($probsolfile,7);
+ $probsolfilepath = base64_decode($probsolfilepath);
+ }
+ if(trim($probsolfilehash) != "" && myshorthash($probsolfilepath) != trim($probsolfilehash))
+ echo "ERROR: Hash of $probsolfile does not match<br>\n";
+ break;
+ case "probdescfilehash": $probdescfilehash=trim($tmp[1]); break;
+ case "probdescfile": $probdescfile =trim($tmp[1]);
+ $i++;
+ for ($j=1; trim($ar[$i]) != "***$asep***"; $j++) {
+ if(substr($probdescfile,0,7)!="base64:") $probdescfilepath .= $ar[$i];
+ else $probdescfilepath .= trim($ar[$i]);
+ $i++;
+ }
+ if(substr($probdescfile,0,7)=="base64:") {
+ $probdescfile = substr($probdescfile,7);
+ $probdescfilepath = base64_decode($probdescfilepath);
+ }
+ if(trim($probdescfilehash) != "" && myshorthash($probdescfilepath) != trim($probdescfilehash))
+ echo "ERROR: Hash of $probdescfile does not match<br>\n";
+ break;
+ }
+ $i++;
+ if ($i>=count($ar)) break;
+ $x = trim($ar[$i]);
+ }
+ if (isset($probnumber) && is_numeric($probnumber) && isset($probname) &&
+ isset($probfullname) && isset($probbasename) &&
+ isset($probtimelimit) && isset($probcolorname) && isset($probcolor)) {
+ DBNewProblem ($nc,
+ $probnumber, $probname, $probfullname, $probbasename, $probinputfile,
+ $probinputfilepath, $probsolfile, $probsolfilepath, 'f', $probdescfile, $probdescfilepath,
+ $probtimelimit, $probcolorname, $probcolor, 1, 1, 1);
+ echo "Problem $probnumber created<br>";
+ }
+ }
+ }
+ }
+ echo "</body></html>";
+ exit;
+}
+?>
+<br>
+<br>
+<center><b>
+To import a pre-defined contest, just fill in the import file field.</b></center>
+<br>
+<form name="form1" enctype="multipart/form-data" method="post" action="import.php">
+ <input type=hidden name="confirmation" value="noconfirm" />
+ <center>
+ <table border="0">
+ <tr>
+ <td width="25%" align=right>Import file:</td>
+ <td width="75%">
+ <input type="file" name="importfile" size="40">
+ </td>
+ </tr>
+ </table>
+ </center>
+ <script language="javascript">
+ function conf() {
+ if (confirm("Confirm?")) {
+ document.form1.confirmation.value='confirm';
+ }
+ }
+ </script>
+ <center>
+ <input type="submit" name="Submit" value="Import" onClick="conf()">
+ <input type="reset" name="Submit2" value="Clear">
+ </center>
+</form>
+
+</body>
+</html>
+