aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCassio de Campos <cassiopc@gmail.com>2017-10-19 13:04:41 +0000
committerCassio de Campos <cassiopc@gmail.com>2017-10-19 13:04:41 +0000
commitc1e9a742ab8567fc7026a39ea95ae3e95400faf8 (patch)
treed941177ef66345794695298e645004b97d56e0ff /src
parent0fb7637e5b9fff24a7265a27308ea795ec8e3f38 (diff)
downloadboca-c1e9a742ab8567fc7026a39ea95ae3e95400faf8.tar.gz
boca-c1e9a742ab8567fc7026a39ea95ae3e95400faf8.zip
new features
Diffstat (limited to 'src')
-rw-r--r--src/admin/misc.php56
-rw-r--r--src/admin/transfer.php77
-rw-r--r--src/fextdata.php4
3 files changed, 43 insertions, 94 deletions
diff --git a/src/admin/misc.php b/src/admin/misc.php
index 9872f12..3e5df80 100644
--- a/src/admin/misc.php
+++ b/src/admin/misc.php
@@ -27,28 +27,51 @@ require 'header.php';
document.form1.confirmation.value='confirm';
}
}
+ function conf2() {
+ if (confirm("Confirm updating BOCA?")) {
+ if (confirm("This operation will update your BOCA system. Confirm?")) {
+ document.form1.confirmation.value='confirm';
+ }
+ }
+ }
</script>
<center>
<input type="submit" name="Submit1" value="Transfer" onClick="conf()"> &nbsp;
- <input type="submit" name="Submit2" value="Transfer one-way" onClick="conf()"> &nbsp;
+ <input type="submit" name="Submit2" value="Transfer all" onClick="conf()"> &nbsp;
<input type="submit" name="Submit3" value="Transfer scores"> &nbsp;
- <input type="submit" name="Submit4" value="Update BOCA" onClick="conf()">
+ <input type="submit" name="Submit4" value="Update BOCA" onClick="conf2()">
</center>
</form>
<?php
$ds = DIRECTORY_SEPARATOR;
if($ds=="") $ds = "/";
-
+$dotransfer=false;
+$doscore=false;
+$dotransferall=false;
if (isset($_POST["Submit1"]) && $_POST["Submit1"] == "Transfer") {
- $privatedir = $_SESSION['locr'] . $ds . "private";
- $remotedir = $_SESSION['locr'] . $ds . "private" . $ds . "remotescores";
- $destination = $remotedir . $ds ."scores.zip";
- if(is_writable($remotedir)) {
- if(($fp = @fopen($destination . ".lck",'x')) !== false) {
-
+ $dotransfer=true;
+ $doscore=true;
+}
+if (isset($_POST["Submit2"]) && $_POST["Submit2"] == "Transfer all") {
+ $dotransfer=true;
+ $dotransferall=true;
+ $doscore=true;
+}
+if (isset($_POST["Submit3"]) && $_POST["Submit3"] == "Transfer scores") {
+ $doscore=true;
+}
+if (isset($_POST["Submit4"]) && $_POST["Submit4"] == "Update BOCA") {
+ echo "<br><pre>Not implemented</pre>\n";
+}
+$privatedir = $_SESSION['locr'] . $ds . "private";
+$remotedir = $_SESSION['locr'] . $ds . "private" . $ds . "remotescores";
+$destination = $remotedir . $ds ."scores.zip";
+if(is_writable($remotedir)) {
+ if(($fp = @fopen($destination . ".lck",'x')) !== false) {
+ if($doscore) {
if (($s = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null)
ForceLoad("index.php");
- echo "<pre>\n";
+ echo "<br><pre>\n";
echo "Building scores\n";
$level=$s["sitescorelevel"];
$data0 = array();
@@ -83,14 +106,17 @@ if (isset($_POST["Submit1"]) && $_POST["Submit1"] == "Transfer") {
@rename($fname . ".tmp",$destination);
}
@fclose($fp);
+ }
+ if($dotransfer) {
echo "Processing other data\n";
- getMainXML($_SESSION["usertable"]["contestnumber"]);
+ getMainXML($_SESSION["usertable"]["contestnumber"],10,$dotransferall);
echo "</pre>\n";
- @unlink($destination . ".lck");
- } else {
- if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 180)
- @unlink($destination . ".lck");
}
+ @unlink($destination . ".lck");
+ } else {
+ if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 120)
+ @unlink($destination . ".lck");
+ echo "<br><pre>Transfers locked by other process - try again soon</pre>\n";
}
}
?>
diff --git a/src/admin/transfer.php b/src/admin/transfer.php
deleted file mode 100644
index 7f62326..0000000
--- a/src/admin/transfer.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-////////////////////////////////////////////////////////////////////////////////
-//BOCA Online Contest Administrator
-// Copyright (C) 2003-2013 by BOCA System (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 16/oct/2017 by cassio@ime.usp.br
-require 'header.php';
-
-$ds = DIRECTORY_SEPARATOR;
-if($ds=="") $ds = "/";
-
-$privatedir = $_SESSION['locr'] . $ds . "private";
-$remotedir = $_SESSION['locr'] . $ds . "private" . $ds . "remotescores";
-$destination = $remotedir . $ds ."scores.zip";
-if(is_writable($remotedir)) {
- if(($fp = @fopen($destination . ".lck",'x')) !== false) {
-
- if (($s = DBSiteInfo($_SESSION["usertable"]["contestnumber"],$_SESSION["usertable"]["usersitenumber"])) == null)
- ForceLoad("index.php");
- echo "<pre>\n";
- echo "Building scores\n";
- $level=$s["sitescorelevel"];
- $data0 = array();
- if($level>0) {
- list($score,$data0) = DBScoreSite($_SESSION["usertable"]["contestnumber"],
- $_SESSION["usertable"]["usersitenumber"], 0, -1);
- }
- $ct=DBGetActiveContest();
- $localsite=$ct['contestlocalsite'];
- $fname = $privatedir . $ds . "score_localsite_" . $localsite . "_x"; // . md5($_SERVER['HTTP_HOST']);
- @file_put_contents($fname . ".tmp",base64_encode(serialize($data0)));
- @rename($fname . ".tmp",$fname . ".dat");
-
- $data0 = array();
- if($level>0) {
- list($score,$data0) = DBScoreSite($_SESSION["usertable"]["contestnumber"],
- $_SESSION["usertable"]["usersitenumber"], 1, -1);
- }
- $ct=DBGetActiveContest();
- $localsite=$ct['contestlocalsite'];
- $fname = $remotedir . $ds . "score_site" . $localsite . "_" . $localsite . "_x"; // . md5($_SERVER['HTTP_HOST']);
- @file_put_contents($fname . ".tmp",base64_encode(serialize($data0)));
- @rename($fname . ".tmp",$fname . ".dat");
- echo "Transferring scores\n";
- scoretransfer($fname . ".dat", $localsite);
- echo "Saving scores\n";
- if(@create_zip($remotedir,glob($remotedir . '/*.dat'),$fname . ".tmp") != 1) {
- LOGError("Cannot create score zip file");
- if(@create_zip($remotedir,array(),$fname . ".tmp") == 1)
- @rename($fname . ".tmp",$destination);
- } else {
- @rename($fname . ".tmp",$destination);
- }
- @fclose($fp);
- echo "Processing other data\n";
- getMainXML($_SESSION["usertable"]["contestnumber"]);
- echo "</pre>\n";
- @unlink($destination . ".lck");
- } else {
- if(file_exists($destination . ".lck") && filemtime($destination . ".lck") < time() - 180)
- @unlink($destination . ".lck");
- }
-}
-
-?>
diff --git a/src/fextdata.php b/src/fextdata.php
index 3eae683..468c2d3 100644
--- a/src/fextdata.php
+++ b/src/fextdata.php
@@ -212,7 +212,7 @@ function scoretransfer($putname, $localsite, $timeo=5) {
}
-function getMainXML($contest,$timeo=5) {
+function getMainXML($contest,$timeo=5,$upd=false) {
$ds = DIRECTORY_SEPARATOR;
if($ds=="") $ds = "/";
@@ -252,7 +252,7 @@ function getMainXML($contest,$timeo=5) {
LOGError("getMainXML: invalid mainsiteurl entry");
return false;
}
- if(count($sitedata) == 3) {
+ if(count($sitedata) == 3 || $upd) {
$updatetime=0;
} else
$updatetime=trim($sitedata[3]);