From 2a58d7472d6550cd578fc417cd0654ebf65a3417 Mon Sep 17 00:00:00 2001 From: Bruno Ribas Date: Thu, 5 Nov 2020 15:23:22 -0300 Subject: admin/report/s4ris.php: update to use with webcast.sep Signed-off-by: Bruno Ribas --- src/admin/report/s4ris.php | 155 ++++++++++++++++++++++++++------------------- 1 file changed, 91 insertions(+), 64 deletions(-) (limited to 'src/admin/report/s4ris.php') 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 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 "


"; - echo "CLICK TO DOWNLOAD"; - echo "
"; } 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 "


\n"; -echo "


\n"; -echo "


\n"; -echo "


\n"; -echo "


\n"; -echo "


\n"; ?> - -- cgit v1.2.3