aboutsummaryrefslogtreecommitdiff
path: root/src/admin
diff options
context:
space:
mode:
authorBruno Ribas <brunoribas@gmail.com>2020-11-05 18:23:22 +0000
committerBruno Ribas <brunoribas@gmail.com>2020-11-05 18:23:22 +0000
commit2a58d7472d6550cd578fc417cd0654ebf65a3417 (patch)
tree820d18eb2ed79e00f2763905c506a86023b3080f /src/admin
parent858d1936f6ab3bcb47f572e6f9e077ef869ff4e7 (diff)
downloadboca-2a58d7472d6550cd578fc417cd0654ebf65a3417.tar.gz
boca-2a58d7472d6550cd578fc417cd0654ebf65a3417.zip
admin/report/s4ris.php: update to use with webcast.sep
Signed-off-by: Bruno Ribas <brunoribas@gmail.com>
Diffstat (limited to 'src/admin')
-rw-r--r--src/admin/report/s4ris.php155
1 files changed, 91 insertions, 64 deletions
diff --git a/src/admin/report/s4ris.php b/src/admin/report/s4ris.php
index 7c2908b..6331df5 100644
--- a/src/admin/report/s4ris.php
+++ b/src/admin/report/s4ris.php
@@ -18,19 +18,62 @@
//Last updated 18/oct/2017
require('header.php');
+if(!isset($_GET['webcastcode']) || !ctype_alnum($_GET['webcastcode'])) exit;
+$webcastcode=$_GET['webcastcode'];
-$contest = $_SESSION["usertable"]["contestnumber"];
-$site = $_SESSION["usertable"]["usersitenumber"];
+$ds = DIRECTORY_SEPARATOR;
+if($ds=="") $ds = "/";
+
+if(isset($_SESSION['locr'])) {
+ $webcastdir = $_SESSION['locr'] . $ds . 'private' .$ds. 's4ris.' . $webcastcode;
+ $webcastparentdir = $_SESSION['locr'] . $ds. 'private';
+} else {
+ $webcastdir = $locr . $ds . 'private' . $ds . 's4ris.' . $webcastcode;
+ $webcastparentdir = $locr . $ds . 'private';
+}
+
+$wcdata=@file($webcastparentdir . $ds . 'webcast.sep');
+$wcsite = array();
+$wcloweruser = array();
+$wcupperuser = array();
+for($i=0; $i<count($wcdata);$i++) {
+ $wccode = explode(' ', $wcdata[$i]);
+ if($wccode[0] == $webcastcode && strpos('#',$wccode[0])===false) {
+ for($j=1; $j < count($wccode); $j++) {
+ $temp = explode('/', trim($wccode[$j]));
+ if(is_numeric($temp[0])) {
+ $wcsite[count($wcsite)] = $temp[0];
+ $wcloweruser[count($wcloweruser)] = 0;
+ $wcupperuser[count($wcupperuser)] = -1;
+ if(count($temp) > 1 && is_numeric($temp[1]))
+ $wcloweruser[count($wcloweruser)-1] = $temp[1];
+ if(count($temp) > 2 && is_numeric($temp[2]))
+ $wcupperuser[count($wcupperuser)-1] = $temp[2];
+ }
+ }
+ @file_put_contents($webcastparentdir . $ds . 's4ris.log', $webcastcode . "|Y|" . getIP() . "|" . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND);
+ break;
+ }
+}
+if($i>=count($wcdata)) {
+ @file_put_contents($webcastparentdir . $ds . 's4ris.log', $webcastcode . "|N|" . getIP() . "|" . date(DATE_RFC2822) . "\n", LOCK_EX | FILE_APPEND);
+ exit;
+}
+
+//cleardir($webcastdir);
+@mkdir($webcastdir);
+
+$contest = 1; //$_SESSION["usertable"]["contestnumber"];
+$site = 1; //$_SESSION["usertable"]["usersitenumber"];
$ct = DBContestInfo($contest);
if(($st = DBSiteInfo($contest, $site)) == null)
ForceLoad("../index.php");
-//if(isset($_GET['full']) && $_GET['full'] > 0)
- $freezeTime = $st['siteduration'];
-//else
-// $freezeTime = $st['sitelastmilescore'];
-
+if(isset($_GET['full']) && $_GET['full'] > 0)
+ $freezeTime = $st['siteduration'];
+else
+ $freezeTime = $st['sitelastmilescore'];
$obj = array(
'contestName' => $ct['contestname'],
@@ -53,18 +96,22 @@ for ($i = 0; $i < $numProblems; $i++) {
$obj['problemLetters'] = $problems;
+$sql = 'SELECT * FROM usertable' .
+ ' WHERE contestnumber = ' . $contest .
+ ' AND userenabled = \'t\' AND usertype = \'team\' AND ((0 = 1)';
+// ' AND userenabled = \'t\' AND not (usericpcid = \'\') AND not (usericpcid = \'000000\') AND not (usericpcid = \'0\') AND usertype = \'team\' AND ((0 = 1)';
+for($i=0; $i < count($wcloweruser); $i++)
+ $sql .= ' OR (usersitenumber = ' . $wcsite[$i] . ' AND usernumber >= ' . $wcloweruser[$i] . ' AND usernumber <= ' . $wcupperuser[$i] . ')';
+$sql .= ')';
+$r = DBExec($c,$sql);
-$r = DBExec($c,
- 'SELECT * FROM usertable' .
- ' WHERE contestnumber = ' . $contest .
- ' AND userenabled = \'t\' AND usersitenumber = ' . $site .
- ' AND usertype = \'team\'');
-
+$teamIDs = array();
$contestans = array();
$numTeams = DBnlines($r);
for ($i = 0; $i < $numTeams; $i++) {
$a = cleanuserdesc(DBRow($r, $i));
- //$teamID = $a['username'];
+ $teamID = $a['username'];
+ $teamIDs[count($teamIDs)] = $teamID;
if (isset($a['usershortname']))
$teamName = $a['usershortname'];
@@ -88,75 +135,55 @@ $numRuns = count($run);
$runs = array();
for ($i = 0; $i < $numRuns; $i++) {
+ if($run[$i]['status'] == 'deleted') continue;
$runTime = dateconvminutes($run[$i]['timestamp']);
if ($runTime > $freezeTime) {
continue;
}
$u = DBUserInfo($contest, $site, $run[$i]['user']);
-
- if(isset($u['usershortname']))
- $runTeam = $u['usershortname'];
- else
- $runTeam = $u['userfullname'];
-
- if(isset($u['usershortinstitution'])) {
- $runTeam .= ' @ ' . $u['usershortinstitution'];
- if (isset($u['userflag'])) {
+ $runTeam = $u['username'];
+ if(in_array($runTeam, $teamIDs)) {
+ if(isset($u['usershortname']))
+ $runTeam = $u['usershortname'];
+ else
+ $runTeam = $u['userfullname'];
+
+ if(isset($u['usershortinstitution'])) {
+ $runTeam .= ' @ ' . $u['usershortinstitution'];
+ if (isset($u['userflag'])) {
$runTeam .= '.' . $u['userflag'];
- }
- }
+ }
+ }
- $runProblem = $run[$i]['problem'];
+ $runProblem = $run[$i]['problem'];
- $runs[$i] = array(
- 'contestant' => $runTeam,
- 'problemLetter' => $runProblem,
- 'timeMinutesFromStart' => $runTime,
- 'success' => $run[$i]['yes'] == 't'
- );
+ $runs[$i] = array(
+ 'contestant' => $runTeam,
+ 'problemLetter' => $runProblem,
+ 'timeMinutesFromStart' => $runTime,
+ 'success' => $run[$i]['yes'] == 't'
+ );
+ }
}
$obj['runs'] = $runs;
-$ds = DIRECTORY_SEPARATOR;
-if($ds=="") $ds = "/";
+if(is_writable($webcastdir)) {
+ file_put_contents($webcastdir . $ds . 'results.json', json_encode($obj, JSON_PRETTY_PRINT));
-if(isset($_SESSION['locr'])) {
- $s4risparentdir = $_SESSION['locr'] . $ds. 'private';
- $s4risdir = $s4risparentdir .$ds. 's4ris';
-} else {
- $s4risparentdir = $locr . $ds . 'private';
- $s4risdir = $s4risparentdir . $ds . 's4ris';
-}
-cleardir($s4risdir);
-@mkdir($s4risdir);
-if(is_writable($s4risdir)) {
- file_put_contents($s4risdir . $ds . 'results.json', json_encode($obj, JSON_PRETTY_PRINT));
- if(@create_zip($s4risparentdir,array('s4ris'), $s4risdir . ".tmp") != 1) {
- LOGError("Cannot create score s4risdir.tmp file");
- MSGError("Cannot create score s4risdir.tmp file");
+ if(@create_zip($webcastdir,array('.'),$webcastdir . ".zip") != 1) {
+ LOGError("Cannot create file s4ris.zip file");
+ MSGError("Cannot create file s4ris.zip file");
} else {
- $cf = globalconf();
- file_put_contents($s4risdir . ".tmp", encryptData(file_get_contents($s4risdir . ".tmp"), $cf["key"],false));
- @rename($s4risdir . ".tmp",$s4risdir . '.zip');
+ echo file_get_contents($webcastdir . ".zip");
+ exit;
}
- echo "<br><br><br><center>";
- echo "<a href=\"$locr/filedownload.php?".
- filedownload(-1,$s4risdir . '.zip') . "\">CLICK TO DOWNLOAD</a>";
- echo "</center>";
} else {
- LOGError('Error creating the folder for the ZIP file: '. $s4risdir);
- MSGError('Error creating the folder for the ZIP file: '.$s4risdir);
+ LOGError('Error creating the folder for the ZIP file: '. $webcastdir);
+ MSGError('Error creating the folder for the ZIP file: '.$webcastdir);
ForceLoad("../index.php");
}
-echo "<br><br><br>\n";
-echo "<br><br><br>\n";
-echo "<br><br><br>\n";
-echo "<br><br><br>\n";
-echo "<br><br><br>\n";
-echo "<br><br><br>\n";
?>
-<?php include("$locr/footnote.php"); ?>