diff options
Diffstat (limited to 'src/admin/report/s4ris.php')
| -rw-r--r-- | src/admin/report/s4ris.php | 155 |
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"); ?> |